diff --git a/video/adaptation/video_stream_encoder_resource_manager.cc b/video/adaptation/video_stream_encoder_resource_manager.cc index 8caeceb97d..1c2e5839f2 100644 --- a/video/adaptation/video_stream_encoder_resource_manager.cc +++ b/video/adaptation/video_stream_encoder_resource_manager.cc @@ -720,16 +720,20 @@ bool VideoStreamEncoderResourceManager::IsSimulcast( const VideoEncoderConfig& encoder_config) { const std::vector& simulcast_layers = encoder_config.simulcast_layers; + if (simulcast_layers.size() <= 1) { + return false; + } + + if (simulcast_layers[0].active) { + // We can't distinguish between simulcast and singlecast when only the + // lowest spatial layer is active. Treat this case as simulcast. + return true; + } - bool is_simulcast = simulcast_layers.size() > 1; - bool is_lowest_layer_active = simulcast_layers[0].active; int num_active_layers = std::count_if(simulcast_layers.begin(), simulcast_layers.end(), [](const VideoStream& layer) { return layer.active; }); - - // We can't distinguish between simulcast and singlecast when only the - // lowest spatial layer is active. Treat this case as simulcast. - return is_simulcast && (num_active_layers > 1 || is_lowest_layer_active); + return num_active_layers > 1; } } // namespace webrtc