diff --git a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc index e7288374db..ab6ac7c929 100644 --- a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc +++ b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc @@ -64,8 +64,7 @@ int GetCpuSpeed(int width, int height, int number_of_cores) { class LibaomAv1Encoder final : public VideoEncoder { public: - explicit LibaomAv1Encoder( - std::unique_ptr svc_controller); + LibaomAv1Encoder(); ~LibaomAv1Encoder(); int InitEncode(const VideoCodec* codec_settings, @@ -132,14 +131,10 @@ int32_t VerifyCodecSettings(const VideoCodec& codec_settings) { return WEBRTC_VIDEO_CODEC_OK; } -LibaomAv1Encoder::LibaomAv1Encoder( - std::unique_ptr svc_controller) - : svc_controller_(std::move(svc_controller)), - inited_(false), +LibaomAv1Encoder::LibaomAv1Encoder() + : inited_(false), frame_for_encode_(nullptr), - encoded_image_callback_(nullptr) { - RTC_DCHECK(svc_controller_); -} + encoded_image_callback_(nullptr) {} LibaomAv1Encoder::~LibaomAv1Encoder() { Release(); @@ -173,11 +168,11 @@ int LibaomAv1Encoder::InitEncode(const VideoCodec* codec_settings, return result; } absl::string_view scalability_mode = encoder_settings_.ScalabilityMode(); - // When scalability_mode is not set, keep using svc_controller_ created - // at construction of the encoder. - if (!scalability_mode.empty()) { - svc_controller_ = CreateScalabilityStructure(scalability_mode); + if (scalability_mode.empty()) { + RTC_LOG(LS_WARNING) << "Scalability mode is not set."; + return WEBRTC_VIDEO_CODEC_ERROR; } + svc_controller_ = CreateScalabilityStructure(scalability_mode); if (svc_controller_ == nullptr) { RTC_LOG(LS_WARNING) << "Failed to set scalability mode " << scalability_mode; @@ -689,13 +684,7 @@ VideoEncoder::EncoderInfo LibaomAv1Encoder::GetEncoderInfo() const { const bool kIsLibaomAv1EncoderSupported = true; std::unique_ptr CreateLibaomAv1Encoder() { - return std::make_unique( - std::make_unique()); -} - -std::unique_ptr CreateLibaomAv1Encoder( - std::unique_ptr svc_controller) { - return std::make_unique(std::move(svc_controller)); + return std::make_unique(); } } // namespace webrtc diff --git a/modules/video_coding/codecs/av1/libaom_av1_encoder.h b/modules/video_coding/codecs/av1/libaom_av1_encoder.h index 04a2b65f54..4b0ee28d40 100644 --- a/modules/video_coding/codecs/av1/libaom_av1_encoder.h +++ b/modules/video_coding/codecs/av1/libaom_av1_encoder.h @@ -14,15 +14,12 @@ #include "absl/base/attributes.h" #include "api/video_codecs/video_encoder.h" -#include "modules/video_coding/svc/scalable_video_controller.h" namespace webrtc { ABSL_CONST_INIT extern const bool kIsLibaomAv1EncoderSupported; std::unique_ptr CreateLibaomAv1Encoder(); -std::unique_ptr CreateLibaomAv1Encoder( - std::unique_ptr controller); } // namespace webrtc diff --git a/modules/video_coding/codecs/av1/libaom_av1_encoder_unittest.cc b/modules/video_coding/codecs/av1/libaom_av1_encoder_unittest.cc index 146397ffea..cd86f5adbe 100644 --- a/modules/video_coding/codecs/av1/libaom_av1_encoder_unittest.cc +++ b/modules/video_coding/codecs/av1/libaom_av1_encoder_unittest.cc @@ -54,6 +54,7 @@ TEST(LibaomAv1EncoderTest, InitAndRelease) { std::unique_ptr encoder = CreateLibaomAv1Encoder(); ASSERT_TRUE(encoder); VideoCodec codec_settings = DefaultCodecSettings(); + codec_settings.SetScalabilityMode("NONE"); EXPECT_EQ(encoder->InitEncode(&codec_settings, DefaultEncoderSettings()), WEBRTC_VIDEO_CODEC_OK); EXPECT_EQ(encoder->Release(), WEBRTC_VIDEO_CODEC_OK); @@ -61,9 +62,9 @@ TEST(LibaomAv1EncoderTest, InitAndRelease) { TEST(LibaomAv1EncoderTest, NoBitrateOnTopLayerRefecltedInActiveDecodeTargets) { // Configure encoder with 2 temporal layers. - std::unique_ptr encoder = - CreateLibaomAv1Encoder(std::make_unique()); + std::unique_ptr encoder = CreateLibaomAv1Encoder(); VideoCodec codec_settings = DefaultCodecSettings(); + codec_settings.SetScalabilityMode("L1T2"); ASSERT_EQ(encoder->InitEncode(&codec_settings, DefaultEncoderSettings()), WEBRTC_VIDEO_CODEC_OK); diff --git a/modules/video_coding/codecs/av1/libaom_av1_unittest.cc b/modules/video_coding/codecs/av1/libaom_av1_unittest.cc index 78725ab626..18bf883733 100644 --- a/modules/video_coding/codecs/av1/libaom_av1_unittest.cc +++ b/modules/video_coding/codecs/av1/libaom_av1_unittest.cc @@ -55,6 +55,7 @@ constexpr int kFramerate = 30; VideoCodec DefaultCodecSettings() { VideoCodec codec_settings; + codec_settings.SetScalabilityMode("NONE"); codec_settings.width = kWidth; codec_settings.height = kHeight; codec_settings.maxFramerate = kFramerate; @@ -250,10 +251,10 @@ TEST_P(LibaomAv1SvcTest, SetRatesMatchMeasuredBitrate) { kv.second.bps()); } - std::unique_ptr encoder = - CreateLibaomAv1Encoder(CreateScalabilityStructure(param.name)); + std::unique_ptr encoder = CreateLibaomAv1Encoder(); ASSERT_TRUE(encoder); VideoCodec codec_settings = DefaultCodecSettings(); + codec_settings.SetScalabilityMode(param.name); codec_settings.maxBitrate = allocation.get_sum_kbps(); codec_settings.maxFramerate = 30; ASSERT_EQ(encoder->InitEncode(&codec_settings, DefaultEncoderSettings()), diff --git a/modules/video_coding/codecs/test/videocodec_test_libaom.cc b/modules/video_coding/codecs/test/videocodec_test_libaom.cc index 18852e0646..a87b8fd0a5 100644 --- a/modules/video_coding/codecs/test/videocodec_test_libaom.cc +++ b/modules/video_coding/codecs/test/videocodec_test_libaom.cc @@ -42,6 +42,7 @@ TEST(VideoCodecTestLibaom, HighBitrateAV1) { auto config = CreateConfig("foreman_cif"); config.SetCodecSettings(cricket::kAv1CodecName, 1, 1, 1, false, true, true, kCifWidth, kCifHeight); + config.codec_settings.SetScalabilityMode("NONE"); config.num_frames = kNumFramesLong; auto fixture = CreateVideoCodecTestFixture(config); @@ -59,6 +60,7 @@ TEST(VideoCodecTestLibaom, VeryLowBitrateAV1) { auto config = CreateConfig("foreman_cif"); config.SetCodecSettings(cricket::kAv1CodecName, 1, 1, 1, false, true, true, kCifWidth, kCifHeight); + config.codec_settings.SetScalabilityMode("NONE"); auto fixture = CreateVideoCodecTestFixture(config); std::vector rate_profiles = {{50, 30, 0}}; @@ -78,6 +80,7 @@ TEST(VideoCodecTestLibaom, HdAV1) { auto config = CreateConfig("ConferenceMotion_1280_720_50"); config.SetCodecSettings(cricket::kAv1CodecName, 1, 1, 1, false, true, true, kHdWidth, kHdHeight); + config.codec_settings.SetScalabilityMode("NONE"); config.num_frames = kNumFramesLong; auto fixture = CreateVideoCodecTestFixture(config);