diff --git a/api/video_codecs/vp8_frame_buffer_controller.h b/api/video_codecs/vp8_frame_buffer_controller.h index bcfbd9763f..a0e1c786a1 100644 --- a/api/video_codecs/vp8_frame_buffer_controller.h +++ b/api/video_codecs/vp8_frame_buffer_controller.h @@ -174,8 +174,18 @@ class Vp8FrameBufferControllerFactory { public: virtual ~Vp8FrameBufferControllerFactory() = default; + // TODO(bugs.webrtc.org/10720): Update downstream and remove. virtual std::unique_ptr Create( - const VideoCodec& codec) = 0; + const VideoCodec& codec) { + return nullptr; + } + + // TODO(bugs.webrtc.org/10720): Update downstream and make pure-virtual. + virtual std::unique_ptr Create( + const VideoCodec& codec, + const VideoEncoder::Settings& settings) { + return nullptr; + } }; } // namespace webrtc diff --git a/api/video_codecs/vp8_temporal_layers_factory.cc b/api/video_codecs/vp8_temporal_layers_factory.cc index 2eb7bb9416..878fa79bed 100644 --- a/api/video_codecs/vp8_temporal_layers_factory.cc +++ b/api/video_codecs/vp8_temporal_layers_factory.cc @@ -23,7 +23,8 @@ namespace webrtc { std::unique_ptr Vp8TemporalLayersFactory::Create( - const VideoCodec& codec) { + const VideoCodec& codec, + const VideoEncoder::Settings& settings) { std::vector> controllers; const int num_streams = SimulcastUtility::NumberOfSimulcastStreams(codec); RTC_DCHECK_GE(num_streams, 1); diff --git a/api/video_codecs/vp8_temporal_layers_factory.h b/api/video_codecs/vp8_temporal_layers_factory.h index 9c65d4c2fc..fd5e5d6d3d 100644 --- a/api/video_codecs/vp8_temporal_layers_factory.h +++ b/api/video_codecs/vp8_temporal_layers_factory.h @@ -22,7 +22,8 @@ class Vp8TemporalLayersFactory : public Vp8FrameBufferControllerFactory { ~Vp8TemporalLayersFactory() override = default; std::unique_ptr Create( - const VideoCodec& codec) override; + const VideoCodec& codec, + const VideoEncoder::Settings& settings) override; }; } // namespace webrtc diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc index 06cf870944..70a00d2096 100644 --- a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc +++ b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc @@ -486,10 +486,11 @@ int LibvpxVp8Encoder::InitEncode(const VideoCodec* inst, RTC_DCHECK(!frame_buffer_controller_); if (frame_buffer_controller_factory_) { - frame_buffer_controller_ = frame_buffer_controller_factory_->Create(*inst); + frame_buffer_controller_ = + frame_buffer_controller_factory_->Create(*inst, settings); } else { Vp8TemporalLayersFactory factory; - frame_buffer_controller_ = factory.Create(*inst); + frame_buffer_controller_ = factory.Create(*inst, settings); } RTC_DCHECK(frame_buffer_controller_); diff --git a/modules/video_coding/video_codec_initializer_unittest.cc b/modules/video_coding/video_codec_initializer_unittest.cc index 09b01f6336..5cac795c06 100644 --- a/modules/video_coding/video_codec_initializer_unittest.cc +++ b/modules/video_coding/video_codec_initializer_unittest.cc @@ -98,7 +98,9 @@ class VideoCodecInitializerTest : public ::testing::Test { // Make sure temporal layers instances have been created. if (codec_out_.codecType == VideoCodecType::kVideoCodecVP8) { Vp8TemporalLayersFactory factory; - frame_buffer_controller_ = factory.Create(codec_out_); + const VideoEncoder::Settings settings(VideoEncoder::Capabilities(false), + 1, 1000); + frame_buffer_controller_ = factory.Create(codec_out_, settings); } return true; } diff --git a/test/fake_vp8_encoder.cc b/test/fake_vp8_encoder.cc index ee7a7ab7c1..9d8d510ea3 100644 --- a/test/fake_vp8_encoder.cc +++ b/test/fake_vp8_encoder.cc @@ -58,7 +58,7 @@ int32_t FakeVP8Encoder::InitEncode(const VideoCodec* config, } Vp8TemporalLayersFactory factory; - frame_buffer_controller_ = factory.Create(*config); + frame_buffer_controller_ = factory.Create(*config, settings); return WEBRTC_VIDEO_CODEC_OK; } diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc index 1486606d46..12e2163e85 100644 --- a/video/video_stream_encoder_unittest.cc +++ b/video/video_stream_encoder_unittest.cc @@ -726,7 +726,7 @@ class VideoStreamEncoderTest : public ::testing::Test { // Simulate setting up temporal layers, in order to validate the life // cycle of these objects. Vp8TemporalLayersFactory factory; - frame_buffer_controller_ = factory.Create(*config); + frame_buffer_controller_ = factory.Create(*config, settings); } if (force_init_encode_failed_) { initialized_ = EncoderState::kInitializationFailed;