Use NONE if scalability mode is not specified
Bug: none
Change-Id: I8ffdb7fc41dec3c5b37483a6dcbb8fe7f03b59da
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/238984
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35418}
diff --git a/modules/video_coding/codecs/av1/av1_svc_config.cc b/modules/video_coding/codecs/av1/av1_svc_config.cc
index b15443c..2f1026b 100644
--- a/modules/video_coding/codecs/av1/av1_svc_config.cc
+++ b/modules/video_coding/codecs/av1/av1_svc_config.cc
@@ -24,17 +24,19 @@
bool SetAv1SvcConfig(VideoCodec& video_codec) {
RTC_DCHECK_EQ(video_codec.codecType, kVideoCodecAV1);
- if (video_codec.ScalabilityMode().empty()) {
- RTC_LOG(LS_INFO) << "No scalability mode set.";
- return false;
+ absl::string_view scalability_mode = video_codec.ScalabilityMode();
+ if (scalability_mode.empty()) {
+ RTC_LOG(LS_WARNING) << "Scalability mode is not set, using 'NONE'.";
+ scalability_mode = "NONE";
}
+
std::unique_ptr<ScalableVideoController> structure =
- CreateScalabilityStructure(video_codec.ScalabilityMode());
+ CreateScalabilityStructure(scalability_mode);
if (structure == nullptr) {
- RTC_LOG(LS_INFO) << "Failed to create structure "
- << video_codec.ScalabilityMode();
+ RTC_LOG(LS_WARNING) << "Failed to create structure " << scalability_mode;
return false;
}
+
ScalableVideoController::StreamLayersConfig info = structure->StreamConfig();
for (int sl_idx = 0; sl_idx < info.num_spatial_layers; ++sl_idx) {
SpatialLayer& spatial_layer = video_codec.spatialLayers[sl_idx];
diff --git a/modules/video_coding/codecs/av1/av1_svc_config_unittest.cc b/modules/video_coding/codecs/av1/av1_svc_config_unittest.cc
index e603532..d8aec65 100644
--- a/modules/video_coding/codecs/av1/av1_svc_config_unittest.cc
+++ b/modules/video_coding/codecs/av1/av1_svc_config_unittest.cc
@@ -21,9 +21,6 @@
VideoCodec video_codec;
video_codec.codecType = kVideoCodecAV1;
- video_codec.SetScalabilityMode("");
- EXPECT_FALSE(SetAv1SvcConfig(video_codec));
-
video_codec.SetScalabilityMode("Unknown");
EXPECT_FALSE(SetAv1SvcConfig(video_codec));
@@ -31,6 +28,18 @@
EXPECT_TRUE(SetAv1SvcConfig(video_codec));
}
+TEST(Av1SvcConfigTest, TreatsEmptyAsNone) {
+ VideoCodec video_codec;
+ video_codec.codecType = kVideoCodecAV1;
+
+ video_codec.SetScalabilityMode("");
+ EXPECT_TRUE(SetAv1SvcConfig(video_codec));
+
+ EXPECT_TRUE(video_codec.spatialLayers[0].active);
+ EXPECT_EQ(video_codec.spatialLayers[0].numberOfTemporalLayers, 1);
+ EXPECT_FALSE(video_codec.spatialLayers[1].active);
+}
+
TEST(Av1SvcConfigTest, SetsActiveSpatialLayersFromScalabilityMode) {
VideoCodec video_codec;
video_codec.codecType = kVideoCodecAV1;