diff --git a/modules/video_coding/codecs/test/video_codec_test.cc b/modules/video_coding/codecs/test/video_codec_test.cc index fc6378d7c7..2ab1106a59 100644 --- a/modules/video_coding/codecs/test/video_codec_test.cc +++ b/modules/video_coding/codecs/test/video_codec_test.cc @@ -210,6 +210,8 @@ std::unique_ptr RunEncodeDecodeTest( RTC_LOG(LS_WARNING) << "No " << decoder_impl << " decoder for video format " << sdp_video_format.ToString() << ". Trying built-in decoder."; + // TODO(ssilkin): No H264 support in ffmpeg on ARM. Consider trying HW + // decoder. decoder_factory = CreateDecoderFactory("builtin"); if (!decoder_factory ->QueryCodecSupport(sdp_video_format, diff --git a/test/BUILD.gn b/test/BUILD.gn index dc703aaf9b..2a37b78c7c 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -1404,6 +1404,7 @@ rtc_library("video_codec_tester") { "../media:media_constants", "../modules/video_coding:video_codec_interface", "../modules/video_coding:video_coding_utility", + "../modules/video_coding:webrtc_h264", "../modules/video_coding:webrtc_vp9_helpers", "../modules/video_coding/codecs/av1:av1_svc_config", "../modules/video_coding/svc:scalability_mode_util", diff --git a/test/video_codec_tester.cc b/test/video_codec_tester.cc index 094cba6c0e..f5fdc07a6b 100644 --- a/test/video_codec_tester.cc +++ b/test/video_codec_tester.cc @@ -23,11 +23,13 @@ #include "api/video/video_bitrate_allocator.h" #include "api/video/video_codec_type.h" #include "api/video/video_frame.h" +#include "api/video_codecs/h264_profile_level_id.h" #include "api/video_codecs/simulcast_stream.h" #include "api/video_codecs/video_decoder.h" #include "api/video_codecs/video_encoder.h" #include "media/base/media_constants.h" #include "modules/video_coding/codecs/av1/av1_svc_config.h" +#include "modules/video_coding/codecs/h264/include/h264.h" #include "modules/video_coding/codecs/vp9/svc_config.h" #include "modules/video_coding/include/video_codec_interface.h" #include "modules/video_coding/include/video_error_codes.h" @@ -1448,14 +1450,24 @@ std::map VideoCodecTester::CreateEncodingSettings( } } + SdpVideoFormat sdp_video_format = SdpVideoFormat(codec_type); + if (codec_type == "H264") { + const std::string packetization_mode = + "1"; // H264PacketizationMode::SingleNalUnit + sdp_video_format.parameters = + CreateH264Format(H264Profile::kProfileConstrainedBaseline, + H264Level::kLevel3_1, packetization_mode, + /*add_scalability_modes=*/false) + .parameters; + } + std::map frames_settings; uint32_t timestamp_rtp = first_timestamp_rtp; for (int frame_num = 0; frame_num < num_frames; ++frame_num) { frames_settings.emplace( - timestamp_rtp, - EncodingSettings{.sdp_video_format = SdpVideoFormat(codec_type), - .scalability_mode = scalability_mode, - .layers_settings = layers_settings}); + timestamp_rtp, EncodingSettings{.sdp_video_format = sdp_video_format, + .scalability_mode = scalability_mode, + .layers_settings = layers_settings}); timestamp_rtp += k90kHz / Frequency::MilliHertz(1000 * framerate_fps); }