diff --git a/media/BUILD.gn b/media/BUILD.gn index 0179462cc7..00a0745721 100644 --- a/media/BUILD.gn +++ b/media/BUILD.gn @@ -794,9 +794,17 @@ if (rtc_include_tests) { "../api/video:video_codec_constants", "../api/video:video_frame", "../api/video:video_rtp_headers", - "../api/video_codecs:builtin_video_decoder_factory", - "../api/video_codecs:builtin_video_encoder_factory", "../api/video_codecs:video_codecs_api", + "../api/video_codecs:video_decoder_factory_template", + "../api/video_codecs:video_decoder_factory_template_dav1d_adapter", + "../api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter", + "../api/video_codecs:video_decoder_factory_template_libvpx_vp9_adapter", + "../api/video_codecs:video_decoder_factory_template_open_h264_adapter", + "../api/video_codecs:video_encoder_factory_template", + "../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter", + "../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter", + "../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter", + "../api/video_codecs:video_encoder_factory_template_open_h264_adapter", "../audio", "../call:call_interfaces", "../common_video", diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc index c86ceb6176..7f77a12e78 100644 --- a/media/engine/webrtc_video_engine_unittest.cc +++ b/media/engine/webrtc_video_engine_unittest.cc @@ -36,13 +36,21 @@ #include "api/video/builtin_video_bitrate_allocator_factory.h" #include "api/video/i420_buffer.h" #include "api/video/video_bitrate_allocation.h" -#include "api/video_codecs/builtin_video_decoder_factory.h" -#include "api/video_codecs/builtin_video_encoder_factory.h" #include "api/video_codecs/h264_profile_level_id.h" #include "api/video_codecs/sdp_video_format.h" #include "api/video_codecs/video_decoder_factory.h" +#include "api/video_codecs/video_decoder_factory_template.h" +#include "api/video_codecs/video_decoder_factory_template_dav1d_adapter.h" +#include "api/video_codecs/video_decoder_factory_template_libvpx_vp8_adapter.h" +#include "api/video_codecs/video_decoder_factory_template_libvpx_vp9_adapter.h" +#include "api/video_codecs/video_decoder_factory_template_open_h264_adapter.h" #include "api/video_codecs/video_encoder.h" #include "api/video_codecs/video_encoder_factory.h" +#include "api/video_codecs/video_encoder_factory_template.h" +#include "api/video_codecs/video_encoder_factory_template_libaom_av1_adapter.h" +#include "api/video_codecs/video_encoder_factory_template_libvpx_vp8_adapter.h" +#include "api/video_codecs/video_encoder_factory_template_libvpx_vp9_adapter.h" +#include "api/video_codecs/video_encoder_factory_template_open_h264_adapter.h" #include "call/flexfec_receive_stream.h" #include "media/base/fake_frame_source.h" #include "media/base/fake_network_interface.h" @@ -122,6 +130,34 @@ constexpr size_t kNumSimulcastStreams = 3; static const char kUnsupportedExtensionName[] = "urn:ietf:params:rtp-hdrext:unsupported"; +class FuzzyMatchedVideoEncoderFactory : public webrtc::VideoEncoderFactory { + public: + std::vector GetSupportedFormats() const override { + return factory_.GetSupportedFormats(); + } + + std::unique_ptr CreateVideoEncoder( + const webrtc::SdpVideoFormat& format) override { + absl::optional matched_format = + webrtc::FuzzyMatchSdpVideoFormat(factory_.GetSupportedFormats(), + format); + return factory_.CreateVideoEncoder(matched_format.value_or(format)); + } + + CodecSupport QueryCodecSupport( + const webrtc::SdpVideoFormat& format, + absl::optional scalability_mode) const override { + return factory_.QueryCodecSupport(format, scalability_mode); + } + + private: + webrtc::VideoEncoderFactoryTemplate + factory_; +}; + cricket::VideoCodec RemoveFeedbackParams(cricket::VideoCodec&& codec) { codec.feedback_params = cricket::FeedbackParams(); return std::move(codec); @@ -1593,7 +1629,7 @@ class WebRtcVideoChannelEncodedFrameCallbackTest : public ::testing::Test { video_bitrate_allocator_factory_( webrtc::CreateBuiltinVideoBitrateAllocatorFactory()), engine_( - webrtc::CreateBuiltinVideoEncoderFactory(), + std::make_unique(), std::make_unique( []() { return std::make_unique(); }, kSdpVideoFormats), @@ -1727,8 +1763,12 @@ class WebRtcVideoChannelBaseTest : public ::testing::Test { : task_queue_factory_(webrtc::CreateDefaultTaskQueueFactory()), video_bitrate_allocator_factory_( webrtc::CreateBuiltinVideoBitrateAllocatorFactory()), - engine_(webrtc::CreateBuiltinVideoEncoderFactory(), - webrtc::CreateBuiltinVideoDecoderFactory(), + engine_(std::make_unique(), + std::make_unique>(), field_trials_) {} void SetUp() override {