From fcc3d9aea48ea64a19dda1067561776a4e4ce1eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Spr=C3=A5ng?= Date: Fri, 30 Sep 2022 17:52:43 +0200 Subject: [PATCH] Populate ScalabilityMode of subcodecs in SimulcastEncoderAdapter. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:14511 Change-Id: I2c20ececa7c1e20c7c1e7be4ce7196edf702c833 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/277623 Auto-Submit: Erik Språng Reviewed-by: Florent Castelli Commit-Queue: Erik Språng Cr-Commit-Position: refs/heads/main@{#38265} --- media/engine/simulcast_encoder_adapter.cc | 1 + .../simulcast_encoder_adapter_unittest.cc | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/media/engine/simulcast_encoder_adapter.cc b/media/engine/simulcast_encoder_adapter.cc index 4a53b8027c..e7f6205ab6 100644 --- a/media/engine/simulcast_encoder_adapter.cc +++ b/media/engine/simulcast_encoder_adapter.cc @@ -771,6 +771,7 @@ webrtc::VideoCodec SimulcastEncoderAdapter::MakeStreamCodec( codec_params.maxFramerate = stream_params.maxFramerate; codec_params.qpMax = stream_params.qpMax; codec_params.active = stream_params.active; + codec_params.SetScalabilityMode(stream_params.GetScalabilityMode()); // Settings that are based on stream/resolution. if (is_lowest_quality_stream) { // Settings for lowest spatial resolutions. diff --git a/media/engine/simulcast_encoder_adapter_unittest.cc b/media/engine/simulcast_encoder_adapter_unittest.cc index 1962a590cd..e0e3ea86ec 100644 --- a/media/engine/simulcast_encoder_adapter_unittest.cc +++ b/media/engine/simulcast_encoder_adapter_unittest.cc @@ -1777,5 +1777,24 @@ TEST_F(TestSimulcastEncoderAdapterFake, adapter_->InitEncode(&codec_, kSettings)); } +TEST_F(TestSimulcastEncoderAdapterFake, PopulatesScalabilityModeOfSubcodecs) { + SimulcastTestFixtureImpl::DefaultSettings( + &codec_, static_cast(kTestTemporalLayerProfile), + kVideoCodecVP8); + codec_.numberOfSimulcastStreams = 3; + codec_.simulcastStream[0].numberOfTemporalLayers = 1; + codec_.simulcastStream[1].numberOfTemporalLayers = 2; + codec_.simulcastStream[2].numberOfTemporalLayers = 3; + + EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + ASSERT_EQ(3u, helper_->factory()->encoders().size()); + EXPECT_EQ(helper_->factory()->encoders()[0]->codec().GetScalabilityMode(), + ScalabilityMode::kL1T1); + EXPECT_EQ(helper_->factory()->encoders()[1]->codec().GetScalabilityMode(), + ScalabilityMode::kL1T2); + EXPECT_EQ(helper_->factory()->encoders()[2]->codec().GetScalabilityMode(), + ScalabilityMode::kL1T3); +} + } // namespace test } // namespace webrtc