Replace BuiltinVideo{Encoder,Decoder}Factory with Video{Encoder,Decoder}FactoryTemplate.
Bug: webrtc:13573 Change-Id: I4eb5bb99bfde9c38c1d4072b933ef11a9ca32f53 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/299703 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Philip Eliasson <philipel@webrtc.org> Cr-Commit-Position: refs/heads/main@{#39743}
This commit is contained in:
parent
d549e4b6ce
commit
44437d35cd
@ -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",
|
||||
|
||||
@ -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<webrtc::SdpVideoFormat> GetSupportedFormats() const override {
|
||||
return factory_.GetSupportedFormats();
|
||||
}
|
||||
|
||||
std::unique_ptr<webrtc::VideoEncoder> CreateVideoEncoder(
|
||||
const webrtc::SdpVideoFormat& format) override {
|
||||
absl::optional<webrtc::SdpVideoFormat> matched_format =
|
||||
webrtc::FuzzyMatchSdpVideoFormat(factory_.GetSupportedFormats(),
|
||||
format);
|
||||
return factory_.CreateVideoEncoder(matched_format.value_or(format));
|
||||
}
|
||||
|
||||
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_;
|
||||
};
|
||||
|
||||
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<FuzzyMatchedVideoEncoderFactory>(),
|
||||
std::make_unique<webrtc::test::FunctionVideoDecoderFactory>(
|
||||
[]() { return std::make_unique<webrtc::test::FakeDecoder>(); },
|
||||
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<FuzzyMatchedVideoEncoderFactory>(),
|
||||
std::make_unique<webrtc::VideoDecoderFactoryTemplate<
|
||||
webrtc::LibvpxVp8DecoderTemplateAdapter,
|
||||
webrtc::LibvpxVp9DecoderTemplateAdapter,
|
||||
webrtc::OpenH264DecoderTemplateAdapter,
|
||||
webrtc::Dav1dDecoderTemplateAdapter>>(),
|
||||
field_trials_) {}
|
||||
|
||||
void SetUp() override {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user