From 2cafacfe86fdd408facbc1ee3449e532add195c6 Mon Sep 17 00:00:00 2001 From: philipel Date: Mon, 3 Apr 2023 15:17:17 +0200 Subject: [PATCH] Replace BuiltinVideo{Encoder,Decoder}Factory with Video{Encoder,Decoder}FactoryTemplate. Bug: webrtc:13573 Change-Id: Ie10bdd78dc4c39def83a4dc7806fda3556eb5c2e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/299707 Reviewed-by: Mirko Bonadei Reviewed-by: Per Kjellander Commit-Queue: Philip Eliasson Cr-Commit-Position: refs/heads/main@{#39750} --- pc/BUILD.gn | 7 ++++- pc/test/peer_connection_test_wrapper.cc | 41 +++++++++++++++++++++++-- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/pc/BUILD.gn b/pc/BUILD.gn index 1ac1a01079..417f82977d 100644 --- a/pc/BUILD.gn +++ b/pc/BUILD.gn @@ -2791,19 +2791,24 @@ if (rtc_include_tests && !build_with_chromium) { "../api/video:resolution", "../api/video:video_frame", "../api/video:video_rtp_headers", - "../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", "../call:call_interfaces", "../media:media_channel", "../media:media_channel_impl", "../media:rtc_media", "../media:rtc_media_base", "../media:rtc_media_tests_utils", + "../media:rtc_simulcast_encoder_adapter", "../modules/audio_device", "../modules/audio_processing", "../modules/audio_processing:api", diff --git a/pc/test/peer_connection_test_wrapper.cc b/pc/test/peer_connection_test_wrapper.cc index 9b22aea0bc..cd66eaec78 100644 --- a/pc/test/peer_connection_test_wrapper.cc +++ b/pc/test/peer_connection_test_wrapper.cc @@ -21,7 +21,6 @@ #include "api/audio/audio_mixer.h" #include "api/create_peerconnection_factory.h" #include "api/sequence_checker.h" -#include "api/video_codecs/builtin_video_encoder_factory.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" @@ -29,6 +28,12 @@ #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_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 "media/engine/simulcast_encoder_adapter.h" #include "modules/audio_device/include/audio_device.h" #include "modules/audio_processing/include/audio_processing.h" #include "p2p/base/fake_port_allocator.h" @@ -62,6 +67,38 @@ const char kAudioTrackLabelBase[] = "audio_track"; constexpr int kMaxWait = 10000; constexpr int kTestAudioFrameCount = 3; constexpr int kTestVideoFrameCount = 3; + +class FuzzyMatchedVideoEncoderFactory : public webrtc::VideoEncoderFactory { + public: + std::vector GetSupportedFormats() const override { + return factory_.GetSupportedFormats(); + } + + std::unique_ptr CreateVideoEncoder( + const webrtc::SdpVideoFormat& format) override { + if (absl::optional original_format = + webrtc::FuzzyMatchSdpVideoFormat(factory_.GetSupportedFormats(), + format)) { + return std::make_unique( + &factory_, *original_format); + } + + return nullptr; + } + + CodecSupport QueryCodecSupport( + const webrtc::SdpVideoFormat& format, + absl::optional scalability_mode) const override { + return factory_.QueryCodecSupport(format, scalability_mode); + } + + private: + webrtc::VideoEncoderFactoryTemplate + factory_; +}; } // namespace void PeerConnectionTestWrapper::Connect(PeerConnectionTestWrapper* caller, @@ -122,7 +159,7 @@ bool PeerConnectionTestWrapper::CreatePc( network_thread_, worker_thread_, rtc::Thread::Current(), rtc::scoped_refptr(fake_audio_capture_module_), audio_encoder_factory, audio_decoder_factory, - webrtc::CreateBuiltinVideoEncoderFactory(), + std::make_unique(), std::make_unique