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 <mbonadei@webrtc.org> Reviewed-by: Per Kjellander <perkj@webrtc.org> Commit-Queue: Philip Eliasson <philipel@webrtc.org> Cr-Commit-Position: refs/heads/main@{#39750}
This commit is contained in:
parent
7d9cf9a537
commit
2cafacfe86
@ -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",
|
||||
|
||||
@ -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<webrtc::SdpVideoFormat> GetSupportedFormats() const override {
|
||||
return factory_.GetSupportedFormats();
|
||||
}
|
||||
|
||||
std::unique_ptr<webrtc::VideoEncoder> CreateVideoEncoder(
|
||||
const webrtc::SdpVideoFormat& format) override {
|
||||
if (absl::optional<webrtc::SdpVideoFormat> original_format =
|
||||
webrtc::FuzzyMatchSdpVideoFormat(factory_.GetSupportedFormats(),
|
||||
format)) {
|
||||
return std::make_unique<webrtc::SimulcastEncoderAdapter>(
|
||||
&factory_, *original_format);
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CodecSupport QueryCodecSupport(
|
||||
const webrtc::SdpVideoFormat& format,
|
||||
absl::optional<std::string> scalability_mode) const override {
|
||||
return factory_.QueryCodecSupport(format, scalability_mode);
|
||||
}
|
||||
|
||||
private:
|
||||
webrtc::VideoEncoderFactoryTemplate<webrtc::LibvpxVp8EncoderTemplateAdapter,
|
||||
webrtc::LibvpxVp9EncoderTemplateAdapter,
|
||||
webrtc::OpenH264EncoderTemplateAdapter,
|
||||
webrtc::LibaomAv1EncoderTemplateAdapter>
|
||||
factory_;
|
||||
};
|
||||
} // namespace
|
||||
|
||||
void PeerConnectionTestWrapper::Connect(PeerConnectionTestWrapper* caller,
|
||||
@ -122,7 +159,7 @@ bool PeerConnectionTestWrapper::CreatePc(
|
||||
network_thread_, worker_thread_, rtc::Thread::Current(),
|
||||
rtc::scoped_refptr<webrtc::AudioDeviceModule>(fake_audio_capture_module_),
|
||||
audio_encoder_factory, audio_decoder_factory,
|
||||
webrtc::CreateBuiltinVideoEncoderFactory(),
|
||||
std::make_unique<FuzzyMatchedVideoEncoderFactory>(),
|
||||
std::make_unique<webrtc::VideoDecoderFactoryTemplate<
|
||||
webrtc::LibvpxVp8DecoderTemplateAdapter,
|
||||
webrtc::LibvpxVp9DecoderTemplateAdapter,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user