From ea8dfd50112fb7b1e5d65c1093568d722f0f7022 Mon Sep 17 00:00:00 2001 From: Zhaoliang Ma Date: Fri, 11 Feb 2022 12:54:06 +0800 Subject: [PATCH] Handle null structure for invalid scalability mode case The scalability mode could be something invalid set by user, in this case, |num_spatial_layers| should not be updated. Bug: chromium:1292923 Change-Id: I78e1a6f12cf6d165597205608e4c124117a3d01b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251560 Reviewed-by: Ilya Nikolaevskiy Commit-Queue: Zhaoliang Ma Cr-Commit-Position: refs/heads/main@{#35985} --- video/frame_encode_metadata_writer.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/video/frame_encode_metadata_writer.cc b/video/frame_encode_metadata_writer.cc index 51f09b09c4..9305779832 100644 --- a/video/frame_encode_metadata_writer.cc +++ b/video/frame_encode_metadata_writer.cc @@ -70,8 +70,13 @@ void FrameEncodeMetadataWriter::OnEncoderInit(const VideoCodec& codec) { codec_settings_.ScalabilityMode() != "") { std::unique_ptr structure = CreateScalabilityStructure(codec_settings_.ScalabilityMode()); - RTC_DCHECK(structure); - num_spatial_layers = structure->StreamConfig().num_spatial_layers; + if (structure) { + num_spatial_layers = structure->StreamConfig().num_spatial_layers; + } else { + // |structure| maybe nullptr if the scalability mode is invalid. + RTC_LOG(LS_WARNING) << "Cannot create ScalabilityStructure, since the " + "scalability mode is invalid"; + } } num_spatial_layers_ = std::max(num_spatial_layers, size_t{1}); }