Populate ScalabilityMode of subcodecs in SimulcastEncoderAdapter.
Bug: webrtc:14511
Change-Id: I2c20ececa7c1e20c7c1e7be4ce7196edf702c833
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/277623
Auto-Submit: Erik Språng <sprang@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38265}
diff --git a/media/engine/simulcast_encoder_adapter.cc b/media/engine/simulcast_encoder_adapter.cc
index 4a53b80..e7f6205 100644
--- a/media/engine/simulcast_encoder_adapter.cc
+++ b/media/engine/simulcast_encoder_adapter.cc
@@ -771,6 +771,7 @@
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 1962a59..e0e3ea8 100644
--- a/media/engine/simulcast_encoder_adapter_unittest.cc
+++ b/media/engine/simulcast_encoder_adapter_unittest.cc
@@ -1777,5 +1777,24 @@
adapter_->InitEncode(&codec_, kSettings));
}
+TEST_F(TestSimulcastEncoderAdapterFake, PopulatesScalabilityModeOfSubcodecs) {
+ SimulcastTestFixtureImpl::DefaultSettings(
+ &codec_, static_cast<const int*>(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