diff --git a/modules/video_coding/codecs/h264/h264.cc b/modules/video_coding/codecs/h264/h264.cc index 23580d7a4a..5b9f0338a9 100644 --- a/modules/video_coding/codecs/h264/h264.cc +++ b/modules/video_coding/codecs/h264/h264.cc @@ -121,6 +121,10 @@ std::vector SupportedH264DecoderCodecs() { return supportedCodecs; } +std::unique_ptr H264Encoder::Create() { + return Create(cricket::CreateVideoCodec(cricket::kH264CodecName)); +} + std::unique_ptr H264Encoder::Create( const cricket::VideoCodec& codec) { RTC_DCHECK(H264Encoder::IsSupported()); diff --git a/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc b/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc index 2acb629a76..e191f51f0a 100644 --- a/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc +++ b/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc @@ -24,7 +24,7 @@ namespace { std::unique_ptr CreateSpecificSimulcastTestFixture() { std::unique_ptr encoder_factory = std::make_unique( - []() { return H264Encoder::Create(cricket::VideoCodec("H264")); }); + []() { return H264Encoder::Create(); }); std::unique_ptr decoder_factory = std::make_unique( []() { return H264Decoder::Create(); }); diff --git a/modules/video_coding/codecs/h264/include/h264.h b/modules/video_coding/codecs/h264/include/h264.h index 2635b53842..025a6ba1f0 100644 --- a/modules/video_coding/codecs/h264/include/h264.h +++ b/modules/video_coding/codecs/h264/include/h264.h @@ -52,6 +52,7 @@ std::vector SupportedH264DecoderCodecs(); class RTC_EXPORT H264Encoder : public VideoEncoder { public: static std::unique_ptr Create(const cricket::VideoCodec& codec); + static std::unique_ptr Create(); // If H.264 is supported (any implementation). static bool IsSupported(); static bool SupportsScalabilityMode(ScalabilityMode scalability_mode); diff --git a/modules/video_coding/codecs/h264/test/h264_impl_unittest.cc b/modules/video_coding/codecs/h264/test/h264_impl_unittest.cc index 595e627bcc..b8dc859c37 100644 --- a/modules/video_coding/codecs/h264/test/h264_impl_unittest.cc +++ b/modules/video_coding/codecs/h264/test/h264_impl_unittest.cc @@ -34,7 +34,7 @@ namespace webrtc { class TestH264Impl : public VideoCodecUnitTest { protected: std::unique_ptr CreateEncoder() override { - return H264Encoder::Create(cricket::VideoCodec(cricket::kH264CodecName)); + return H264Encoder::Create(); } std::unique_ptr CreateDecoder() override { diff --git a/test/testsupport/ivf_video_frame_generator_unittest.cc b/test/testsupport/ivf_video_frame_generator_unittest.cc index ca5e0b50e2..d6227b9986 100644 --- a/test/testsupport/ivf_video_frame_generator_unittest.cc +++ b/test/testsupport/ivf_video_frame_generator_unittest.cc @@ -202,9 +202,7 @@ TEST_F(IvfVideoFrameGeneratorTest, Vp9) { #if defined(WEBRTC_USE_H264) TEST_F(IvfVideoFrameGeneratorTest, H264) { - CreateTestVideoFile( - VideoCodecType::kVideoCodecH264, - H264Encoder::Create(cricket::VideoCodec(cricket::kH264CodecName))); + CreateTestVideoFile(VideoCodecType::kVideoCodecH264, H264Encoder::Create()); IvfVideoFrameGenerator generator(file_name_); for (size_t i = 0; i < video_frames_.size(); ++i) { auto& expected_frame = video_frames_[i]; diff --git a/video/BUILD.gn b/video/BUILD.gn index 0fec262826..54291e46bb 100644 --- a/video/BUILD.gn +++ b/video/BUILD.gn @@ -841,6 +841,7 @@ if (rtc_include_tests) { "../call/adaptation:resource_adaptation_test_utilities", "../common_video", "../common_video/test:utilities", + "../media:codec", "../media:media_constants", "../media:rtc_audio_video", "../media:rtc_internal_video_codecs", diff --git a/video/end_to_end_tests/codec_tests.cc b/video/end_to_end_tests/codec_tests.cc index c56e7c5e8b..60a0bc8a15 100644 --- a/video/end_to_end_tests/codec_tests.cc +++ b/video/end_to_end_tests/codec_tests.cc @@ -15,6 +15,8 @@ #include "api/video/color_space.h" #include "api/video/video_rotation.h" #include "common_video/test/utilities.h" +#include "media/base/codec.h" +#include "media/base/media_constants.h" #include "media/engine/internal_decoder_factory.h" #include "media/engine/internal_encoder_factory.h" #include "modules/video_coding/codecs/h264/include/h264.h" @@ -245,7 +247,7 @@ INSTANTIATE_TEST_SUITE_P( TEST_P(EndToEndTestH264, SendsAndReceivesH264) { test::FunctionVideoEncoderFactory encoder_factory( - []() { return H264Encoder::Create(cricket::VideoCodec("H264")); }); + []() { return H264Encoder::Create(); }); test::FunctionVideoDecoderFactory decoder_factory( []() { return H264Decoder::Create(); }); CodecObserver test(500, kVideoRotation_0, absl::nullopt, "H264", @@ -255,7 +257,7 @@ TEST_P(EndToEndTestH264, SendsAndReceivesH264) { TEST_P(EndToEndTestH264, SendsAndReceivesH264VideoRotation90) { test::FunctionVideoEncoderFactory encoder_factory( - []() { return H264Encoder::Create(cricket::VideoCodec("H264")); }); + []() { return H264Encoder::Create(); }); test::FunctionVideoDecoderFactory decoder_factory( []() { return H264Decoder::Create(); }); CodecObserver test(5, kVideoRotation_90, absl::nullopt, "H264", @@ -264,7 +266,8 @@ TEST_P(EndToEndTestH264, SendsAndReceivesH264VideoRotation90) { } TEST_P(EndToEndTestH264, SendsAndReceivesH264PacketizationMode0) { - cricket::VideoCodec codec = cricket::VideoCodec("H264"); + cricket::VideoCodec codec = + cricket::CreateVideoCodec(cricket::kH264CodecName); codec.SetParam(cricket::kH264FmtpPacketizationMode, "0"); test::FunctionVideoEncoderFactory encoder_factory( [codec]() { return H264Encoder::Create(codec); }); @@ -276,7 +279,8 @@ TEST_P(EndToEndTestH264, SendsAndReceivesH264PacketizationMode0) { } TEST_P(EndToEndTestH264, SendsAndReceivesH264PacketizationMode1) { - cricket::VideoCodec codec = cricket::VideoCodec("H264"); + cricket::VideoCodec codec = + cricket::CreateVideoCodec(cricket::kH264CodecName); codec.SetParam(cricket::kH264FmtpPacketizationMode, "1"); test::FunctionVideoEncoderFactory encoder_factory( [codec]() { return H264Encoder::Create(codec); }); diff --git a/video/end_to_end_tests/multi_codec_receive_tests.cc b/video/end_to_end_tests/multi_codec_receive_tests.cc index e850a1114f..377209b8a5 100644 --- a/video/end_to_end_tests/multi_codec_receive_tests.cc +++ b/video/end_to_end_tests/multi_codec_receive_tests.cc @@ -207,7 +207,7 @@ void MultiCodecReceiveTest::RunTestWithCodecs( return VP9Encoder::Create(); } if (format.name == "H264") { - return H264Encoder::Create(cricket::VideoCodec("H264")); + return H264Encoder::Create(); } RTC_DCHECK_NOTREACHED() << format.name; return nullptr; diff --git a/video/quality_scaling_tests.cc b/video/quality_scaling_tests.cc index b6f15757fb..c31e6b21fb 100644 --- a/video/quality_scaling_tests.cc +++ b/video/quality_scaling_tests.cc @@ -93,7 +93,7 @@ class ScalingObserver : public test::SendTest { if (format.name == "VP9") return VP9Encoder::Create(); if (format.name == "H264") - return H264Encoder::Create(cricket::VideoCodec("H264")); + return H264Encoder::Create(); RTC_DCHECK_NOTREACHED() << format.name; return nullptr; }), diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc index 2800f2b049..b9d376d92b 100644 --- a/video/video_stream_encoder_unittest.cc +++ b/video/video_stream_encoder_unittest.cc @@ -8772,8 +8772,7 @@ class VideoStreamEncoderWithRealEncoderTest encoder = CreateLibaomAv1Encoder(); break; case kVideoCodecH264: - encoder = - H264Encoder::Create(cricket::VideoCodec(cricket::kH264CodecName)); + encoder = H264Encoder::Create(); break; case kVideoCodecMultiplex: mock_encoder_factory_for_multiplex_ =