diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn index 182f6cb9a9..b8022e7294 100644 --- a/modules/video_coding/BUILD.gn +++ b/modules/video_coding/BUILD.gn @@ -803,6 +803,7 @@ if (rtc_include_tests) { "../../api:video_frame_api_i420", "../../api/video_codecs:video_codecs_api", "../../common_video:common_video", + "../../media:rtc_media_base", "../../rtc_base:checks", "../../rtc_base:rtc_base", "../../rtc_base:rtc_base_approved", diff --git a/modules/video_coding/codecs/test/test_config.cc b/modules/video_coding/codecs/test/test_config.cc index 4a262fb737..70a88dcbec 100644 --- a/modules/video_coding/codecs/test/test_config.cc +++ b/modules/video_coding/codecs/test/test_config.cc @@ -104,7 +104,7 @@ std::string CodecSpecificToString(const VideoCodec& codec) { } // namespace -void TestConfig::SetCodecSettings(VideoCodecType codec_type, +void TestConfig::SetCodecSettings(std::string codec_name, size_t num_simulcast_streams, size_t num_spatial_layers, size_t num_temporal_layers, @@ -114,6 +114,8 @@ void TestConfig::SetCodecSettings(VideoCodecType codec_type, bool resilience_on, size_t width, size_t height) { + this->codec_name = codec_name; + VideoCodecType codec_type = PayloadStringToCodecType(codec_name); webrtc::test::CodecSettings(codec_type, &codec_settings); // TODO(brandtr): Move the setting of |width| and |height| to the tests, and @@ -166,7 +168,6 @@ void TestConfig::SetCodecSettings(VideoCodecType codec_type, codec_settings.H264()->keyFrameInterval = kBaseKeyFrameInterval; break; default: - RTC_NOTREACHED(); break; } @@ -240,44 +241,37 @@ std::string TestConfig::ToString() const { } SdpVideoFormat TestConfig::ToSdpVideoFormat() const { - switch (codec_settings.codecType) { - case kVideoCodecVP8: - return SdpVideoFormat(cricket::kVp8CodecName); - - case kVideoCodecVP9: - return SdpVideoFormat(cricket::kVp9CodecName); - - case kVideoCodecH264: { - const char* packetization_mode = - h264_codec_settings.packetization_mode == - H264PacketizationMode::NonInterleaved - ? "1" - : "0"; - return SdpVideoFormat( - cricket::kH264CodecName, - {{cricket::kH264FmtpProfileLevelId, - *H264::ProfileLevelIdToString(H264::ProfileLevelId( - h264_codec_settings.profile, H264::kLevel3_1))}, - {cricket::kH264FmtpPacketizationMode, packetization_mode}}); - } - default: - RTC_NOTREACHED(); - return SdpVideoFormat(""); + if (codec_settings.codecType == kVideoCodecH264) { + const char* packetization_mode = + h264_codec_settings.packetization_mode == + H264PacketizationMode::NonInterleaved + ? "1" + : "0"; + return SdpVideoFormat( + codec_name, + {{cricket::kH264FmtpProfileLevelId, + *H264::ProfileLevelIdToString(H264::ProfileLevelId( + h264_codec_settings.profile, H264::kLevel3_1))}, + {cricket::kH264FmtpPacketizationMode, packetization_mode}}); } + return SdpVideoFormat(codec_name); } std::string TestConfig::CodecName() const { - std::string codec_name = CodecTypeToPayloadString(codec_settings.codecType); + std::string name = codec_name; + if (name.empty()) { + name = CodecTypeToPayloadString(codec_settings.codecType); + } if (codec_settings.codecType == kVideoCodecH264) { if (h264_codec_settings.profile == H264::kProfileConstrainedHigh) { - codec_name += "-CHP"; + return name + "-CHP"; } else { RTC_DCHECK_EQ(h264_codec_settings.profile, H264::kProfileConstrainedBaseline); - codec_name += "-CBP"; + return name + "-CBP"; } } - return codec_name; + return name; } std::string TestConfig::FilenameWithParams() const { diff --git a/modules/video_coding/codecs/test/test_config.h b/modules/video_coding/codecs/test/test_config.h index d4d703ad3d..4c66e45ca5 100644 --- a/modules/video_coding/codecs/test/test_config.h +++ b/modules/video_coding/codecs/test/test_config.h @@ -31,7 +31,7 @@ struct TestConfig { const EncodedImage& encoded_frame) const = 0; }; - void SetCodecSettings(VideoCodecType codec_type, + void SetCodecSettings(std::string codec_name, size_t num_simulcast_streams, size_t num_spatial_layers, size_t num_temporal_layers, @@ -82,6 +82,9 @@ struct TestConfig { // Codec settings to use. webrtc::VideoCodec codec_settings; + // Name of the codec being tested. + std::string codec_name; + // H.264 specific settings. struct H264CodecSettings { H264::Profile profile = H264::kProfileConstrainedBaseline; diff --git a/modules/video_coding/codecs/test/videoprocessor_integrationtest_libvpx.cc b/modules/video_coding/codecs/test/videoprocessor_integrationtest_libvpx.cc index 03007e41e8..cfe5efe319 100644 --- a/modules/video_coding/codecs/test/videoprocessor_integrationtest_libvpx.cc +++ b/modules/video_coding/codecs/test/videoprocessor_integrationtest_libvpx.cc @@ -12,6 +12,7 @@ #include +#include "media/base/mediaconstants.h" #include "modules/video_coding/codecs/test/test_config.h" #include "modules/video_coding/utility/vp8_header_parser.h" #include "modules/video_coding/utility/vp9_uncompressed_header_parser.h" @@ -96,7 +97,7 @@ class VideoProcessorIntegrationTestLibvpx #if !defined(RTC_DISABLE_VP9) TEST_F(VideoProcessorIntegrationTestLibvpx, HighBitrateVP9) { - config_.SetCodecSettings(kVideoCodecVP9, 1, 1, 1, false, true, false, + config_.SetCodecSettings(cricket::kVp9CodecName, 1, 1, 1, false, true, false, kResilienceOn, kCifWidth, kCifHeight); config_.num_frames = kNumFramesShort; @@ -112,7 +113,7 @@ TEST_F(VideoProcessorIntegrationTestLibvpx, HighBitrateVP9) { } TEST_F(VideoProcessorIntegrationTestLibvpx, ChangeBitrateVP9) { - config_.SetCodecSettings(kVideoCodecVP9, 1, 1, 1, false, true, false, + config_.SetCodecSettings(cricket::kVp9CodecName, 1, 1, 1, false, true, false, kResilienceOn, kCifWidth, kCifHeight); std::vector rate_profiles = { @@ -133,7 +134,7 @@ TEST_F(VideoProcessorIntegrationTestLibvpx, ChangeBitrateVP9) { } TEST_F(VideoProcessorIntegrationTestLibvpx, ChangeFramerateVP9) { - config_.SetCodecSettings(kVideoCodecVP9, 1, 1, 1, false, true, false, + config_.SetCodecSettings(cricket::kVp9CodecName, 1, 1, 1, false, true, false, kResilienceOn, kCifWidth, kCifHeight); std::vector rate_profiles = { @@ -156,7 +157,7 @@ TEST_F(VideoProcessorIntegrationTestLibvpx, ChangeFramerateVP9) { } TEST_F(VideoProcessorIntegrationTestLibvpx, DenoiserOnVP9) { - config_.SetCodecSettings(kVideoCodecVP9, 1, 1, 1, true, true, false, + config_.SetCodecSettings(cricket::kVp9CodecName, 1, 1, 1, true, true, false, kResilienceOn, kCifWidth, kCifHeight); config_.num_frames = kNumFramesShort; @@ -172,7 +173,7 @@ TEST_F(VideoProcessorIntegrationTestLibvpx, DenoiserOnVP9) { } TEST_F(VideoProcessorIntegrationTestLibvpx, VeryLowBitrateVP9) { - config_.SetCodecSettings(kVideoCodecVP9, 1, 1, 1, false, true, true, + config_.SetCodecSettings(cricket::kVp9CodecName, 1, 1, 1, false, true, true, kResilienceOn, kCifWidth, kCifHeight); std::vector rate_profiles = {{50, 30, kNumFramesLong}}; @@ -192,7 +193,7 @@ TEST_F(VideoProcessorIntegrationTestLibvpx, VeryLowBitrateVP9) { #endif // !defined(RTC_DISABLE_VP9) TEST_F(VideoProcessorIntegrationTestLibvpx, HighBitrateVP8) { - config_.SetCodecSettings(kVideoCodecVP8, 1, 1, 1, true, true, false, + config_.SetCodecSettings(cricket::kVp8CodecName, 1, 1, 1, true, true, false, kResilienceOn, kCifWidth, kCifHeight); config_.num_frames = kNumFramesShort; @@ -228,7 +229,7 @@ TEST_F(VideoProcessorIntegrationTestLibvpx, HighBitrateVP8) { #define MAYBE_ChangeBitrateVP8 ChangeBitrateVP8 #endif TEST_F(VideoProcessorIntegrationTestLibvpx, MAYBE_ChangeBitrateVP8) { - config_.SetCodecSettings(kVideoCodecVP8, 1, 1, 1, true, true, false, + config_.SetCodecSettings(cricket::kVp8CodecName, 1, 1, 1, true, true, false, kResilienceOn, kCifWidth, kCifHeight); std::vector rate_profiles = { @@ -259,7 +260,7 @@ TEST_F(VideoProcessorIntegrationTestLibvpx, MAYBE_ChangeBitrateVP8) { #define MAYBE_ChangeFramerateVP8 ChangeFramerateVP8 #endif TEST_F(VideoProcessorIntegrationTestLibvpx, MAYBE_ChangeFramerateVP8) { - config_.SetCodecSettings(kVideoCodecVP8, 1, 1, 1, true, true, false, + config_.SetCodecSettings(cricket::kVp8CodecName, 1, 1, 1, true, true, false, kResilienceOn, kCifWidth, kCifHeight); std::vector rate_profiles = { @@ -296,7 +297,7 @@ TEST_F(VideoProcessorIntegrationTestLibvpx, MAYBE_ChangeFramerateVP8) { #define MAYBE_TemporalLayersVP8 TemporalLayersVP8 #endif TEST_F(VideoProcessorIntegrationTestLibvpx, MAYBE_TemporalLayersVP8) { - config_.SetCodecSettings(kVideoCodecVP8, 1, 1, 3, true, true, false, + config_.SetCodecSettings(cricket::kVp8CodecName, 1, 1, 3, true, true, false, kResilienceOn, kCifWidth, kCifHeight); std::vector rate_profiles = {{200, 30, 150}, @@ -331,7 +332,7 @@ TEST_F(VideoProcessorIntegrationTestLibvpx, MAYBE_MultiresVP8) { config_.filename = "ConferenceMotion_1280_720_50"; config_.filepath = ResourcePath(config_.filename, "yuv"); config_.num_frames = 100; - config_.SetCodecSettings(kVideoCodecVP8, 3, 1, 3, true, true, false, + config_.SetCodecSettings(cricket::kVp8CodecName, 3, 1, 3, true, true, false, kResilienceOn, 1280, 720); std::vector rate_profiles = {{1500, 30, config_.num_frames}}; @@ -355,7 +356,7 @@ TEST_F(VideoProcessorIntegrationTestLibvpx, MAYBE_SimulcastVP8) { config_.filepath = ResourcePath(config_.filename, "yuv"); config_.num_frames = 100; config_.simulcast_adapted_encoder = true; - config_.SetCodecSettings(kVideoCodecVP8, 3, 1, 3, true, true, false, + config_.SetCodecSettings(cricket::kVp8CodecName, 3, 1, 3, true, true, false, kResilienceOn, 1280, 720); std::vector rate_profiles = {{1500, 30, config_.num_frames}}; @@ -378,7 +379,7 @@ TEST_F(VideoProcessorIntegrationTestLibvpx, MAYBE_SvcVP9) { config_.filename = "ConferenceMotion_1280_720_50"; config_.filepath = ResourcePath(config_.filename, "yuv"); config_.num_frames = 100; - config_.SetCodecSettings(kVideoCodecVP9, 1, 3, 3, true, true, false, + config_.SetCodecSettings(cricket::kVp9CodecName, 1, 3, 3, true, true, false, kResilienceOn, 1280, 720); std::vector rate_profiles = {{1500, 30, config_.num_frames}}; @@ -396,7 +397,7 @@ TEST_F(VideoProcessorIntegrationTestLibvpx, DISABLED_MultiresVP8RdPerf) { config_.filepath = ResourcePath(config_.filename, "yuv"); config_.num_frames = 300; config_.print_frame_level_stats = true; - config_.SetCodecSettings(kVideoCodecVP8, 3, 1, 3, true, true, false, + config_.SetCodecSettings(cricket::kVp8CodecName, 3, 1, 3, true, true, false, kResilienceOn, 1280, 720); std::map> rd_stats; @@ -419,7 +420,7 @@ TEST_F(VideoProcessorIntegrationTestLibvpx, DISABLED_SvcVP9RdPerf) { config_.filepath = ResourcePath(config_.filename, "yuv"); config_.num_frames = 300; config_.print_frame_level_stats = true; - config_.SetCodecSettings(kVideoCodecVP9, 1, 3, 3, true, true, false, + config_.SetCodecSettings(cricket::kVp9CodecName, 1, 3, 3, true, true, false, kResilienceOn, 1280, 720); std::map> rd_stats; diff --git a/modules/video_coding/codecs/test/videoprocessor_integrationtest_mediacodec.cc b/modules/video_coding/codecs/test/videoprocessor_integrationtest_mediacodec.cc index df0a7d2e4d..938b45175c 100644 --- a/modules/video_coding/codecs/test/videoprocessor_integrationtest_mediacodec.cc +++ b/modules/video_coding/codecs/test/videoprocessor_integrationtest_mediacodec.cc @@ -13,6 +13,7 @@ #include #include "common_types.h" // NOLINT(build/include) +#include "media/base/mediaconstants.h" #include "test/field_trial.h" #include "test/testsupport/fileutils.h" @@ -36,8 +37,8 @@ class VideoProcessorIntegrationTestMediaCodec }; TEST_F(VideoProcessorIntegrationTestMediaCodec, ForemanCif500kbpsVp8) { - config_.SetCodecSettings(kVideoCodecVP8, 1, 1, 1, false, false, false, false, - 352, 288); + config_.SetCodecSettings(cricket::kVp8CodecName, 1, 1, 1, false, false, false, + false, 352, 288); std::vector rate_profiles = {{500, 30, kForemanNumFrames}}; @@ -55,8 +56,8 @@ TEST_F(VideoProcessorIntegrationTestMediaCodec, ForemanCif500kbpsVp8) { TEST_F(VideoProcessorIntegrationTestMediaCodec, ForemanCif500kbpsH264CBP) { config_.encoded_frame_checker = &h264_keyframe_checker_; - config_.SetCodecSettings(kVideoCodecH264, 1, 1, 1, false, false, false, false, - 352, 288); + config_.SetCodecSettings(cricket::kH264CodecName, 1, 1, 1, false, false, + false, false, 352, 288); std::vector rate_profiles = {{500, 30, kForemanNumFrames}}; @@ -80,8 +81,8 @@ TEST_F(VideoProcessorIntegrationTestMediaCodec, config_.h264_codec_settings.profile = H264::kProfileConstrainedHigh; config_.encoded_frame_checker = &h264_keyframe_checker_; - config_.SetCodecSettings(kVideoCodecH264, 1, 1, 1, false, false, false, false, - 352, 288); + config_.SetCodecSettings(cricket::kH264CodecName, 1, 1, 1, false, false, + false, false, 352, 288); std::vector rate_profiles = {{500, 30, kForemanNumFrames}}; diff --git a/modules/video_coding/codecs/test/videoprocessor_integrationtest_openh264.cc b/modules/video_coding/codecs/test/videoprocessor_integrationtest_openh264.cc index 26c8389642..5e20832412 100644 --- a/modules/video_coding/codecs/test/videoprocessor_integrationtest_openh264.cc +++ b/modules/video_coding/codecs/test/videoprocessor_integrationtest_openh264.cc @@ -12,6 +12,7 @@ #include +#include "media/base/mediaconstants.h" #include "test/testsupport/fileutils.h" namespace webrtc { @@ -43,7 +44,7 @@ class VideoProcessorIntegrationTestOpenH264 }; TEST_F(VideoProcessorIntegrationTestOpenH264, ConstantHighBitrate) { - config_.SetCodecSettings(kVideoCodecH264, 1, 1, 1, false, true, false, + config_.SetCodecSettings(cricket::kH264CodecName, 1, 1, 1, false, true, false, kResilienceOn, kCifWidth, kCifHeight); std::vector rate_profiles = {{500, 30, kNumFrames}}; @@ -63,7 +64,7 @@ TEST_F(VideoProcessorIntegrationTestOpenH264, SingleNalUnit) { config_.h264_codec_settings.packetization_mode = H264PacketizationMode::SingleNalUnit; config_.max_payload_size_bytes = 500; - config_.SetCodecSettings(kVideoCodecH264, 1, 1, 1, false, true, false, + config_.SetCodecSettings(cricket::kH264CodecName, 1, 1, 1, false, true, false, kResilienceOn, kCifWidth, kCifHeight); std::vector rate_profiles = {{500, 30, kNumFrames}}; diff --git a/modules/video_coding/codecs/test/videoprocessor_integrationtest_parameterized.cc b/modules/video_coding/codecs/test/videoprocessor_integrationtest_parameterized.cc index 292d1bbd10..62f448e2bc 100644 --- a/modules/video_coding/codecs/test/videoprocessor_integrationtest_parameterized.cc +++ b/modules/video_coding/codecs/test/videoprocessor_integrationtest_parameterized.cc @@ -71,7 +71,8 @@ class VideoProcessorIntegrationTestParameterized const size_t num_spatial_layers = codec_type_ == kVideoCodecVP9 ? kNumSpatialLayers : 1; - config_.SetCodecSettings(codec_type_, num_simulcast_streams, + const std::string codec_name = CodecTypeToPayloadString(codec_type_); + config_.SetCodecSettings(codec_name, num_simulcast_streams, num_spatial_layers, kNumTemporalLayers, kDenoisingOn, kFrameDropperOn, kSpatialResizeOn, kResilienceOn, width, height); diff --git a/modules/video_coding/codecs/test/videoprocessor_integrationtest_videotoolbox.cc b/modules/video_coding/codecs/test/videoprocessor_integrationtest_videotoolbox.cc index 54b38bec28..24a4b90e3c 100644 --- a/modules/video_coding/codecs/test/videoprocessor_integrationtest_videotoolbox.cc +++ b/modules/video_coding/codecs/test/videoprocessor_integrationtest_videotoolbox.cc @@ -12,6 +12,7 @@ #include +#include "media/base/mediaconstants.h" #include "modules/video_coding/codecs/test/objc_codec_factory_helper.h" #include "test/field_trial.h" #include "test/testsupport/fileutils.h" @@ -68,8 +69,8 @@ class VideoProcessorIntegrationTestVideoToolbox // longer in use. MAYBE_TEST_F(VideoProcessorIntegrationTestVideoToolbox, ForemanCif500kbpsH264CBP) { - config_.SetCodecSettings(kVideoCodecH264, 1, 1, 1, false, false, false, false, - 352, 288); + config_.SetCodecSettings(cricket::kH264CodecName, 1, 1, 1, false, false, + false, false, 352, 288); std::vector rate_profiles = {{500, 30, kForemanNumFrames}}; @@ -84,8 +85,8 @@ MAYBE_TEST_F(VideoProcessorIntegrationTestVideoToolbox, ScopedFieldTrials override_field_trials("WebRTC-H264HighProfile/Enabled/"); config_.h264_codec_settings.profile = H264::kProfileConstrainedHigh; - config_.SetCodecSettings(kVideoCodecH264, 1, 1, 1, false, false, false, false, - 352, 288); + config_.SetCodecSettings(cricket::kH264CodecName, 1, 1, 1, false, false, + false, false, 352, 288); std::vector rate_profiles = {{500, 30, kForemanNumFrames}}; diff --git a/modules/video_coding/codecs/test/videoprocessor_unittest.cc b/modules/video_coding/codecs/test/videoprocessor_unittest.cc index 042f2029c5..cb01459fe9 100644 --- a/modules/video_coding/codecs/test/videoprocessor_unittest.cc +++ b/modules/video_coding/codecs/test/videoprocessor_unittest.cc @@ -12,6 +12,7 @@ #include "api/video/i420_buffer.h" #include "common_types.h" // NOLINT(build/include) +#include "media/base/mediaconstants.h" #include "modules/video_coding/codecs/test/videoprocessor.h" #include "modules/video_coding/include/mock/mock_video_codec_interface.h" #include "modules/video_coding/include/video_coding.h" @@ -51,8 +52,8 @@ const int kFrameSize = kWidth * kHeight * 3 / 2; // I420. class VideoProcessorTest : public testing::Test { protected: VideoProcessorTest() : q_("VP queue") { - config_.SetCodecSettings(kVideoCodecVP8, 1, 1, 1, false, false, false, - false, kWidth, kHeight); + config_.SetCodecSettings(cricket::kVp8CodecName, 1, 1, 1, false, false, + false, false, kWidth, kHeight); decoder_mock_ = new MockVideoDecoder(); decoders_.push_back(std::unique_ptr(decoder_mock_));