diff --git a/api/test/video_quality_test_fixture.h b/api/test/video_quality_test_fixture.h index 0aa23b17bf..b45faef286 100644 --- a/api/test/video_quality_test_fixture.h +++ b/api/test/video_quality_test_fixture.h @@ -37,6 +37,7 @@ class VideoQualityTestFixtureInterface { struct CallConfig { bool send_side_bwe = false; bool generic_descriptor = false; + bool dependency_descriptor = false; BitrateConstraints call_bitrate_config; int num_thumbnails = 0; // Indicates if secondary_(video|ss|screenshare) structures are used. diff --git a/video/video_loopback.cc b/video/video_loopback.cc index 7762d9653d..ba0a0e5745 100644 --- a/video/video_loopback.cc +++ b/video/video_loopback.cc @@ -171,6 +171,8 @@ ABSL_FLAG(bool, send_side_bwe, true, "Use send-side bandwidth estimation"); ABSL_FLAG(bool, generic_descriptor, false, "Use the generic frame descriptor."); +ABSL_FLAG(bool, dependency_descriptor, false, "Use the dependency descriptor."); + ABSL_FLAG(bool, allow_reordering, false, "Allow packet reordering to occur"); ABSL_FLAG(bool, use_ulpfec, false, "Use RED+ULPFEC forward error correction."); @@ -378,6 +380,8 @@ void Loopback() { VideoQualityTest::Params params; params.call.send_side_bwe = absl::GetFlag(FLAGS_send_side_bwe); params.call.generic_descriptor = absl::GetFlag(FLAGS_generic_descriptor); + params.call.dependency_descriptor = + absl::GetFlag(FLAGS_dependency_descriptor); params.call.call_bitrate_config = call_bitrate_config; params.video[0].enabled = absl::GetFlag(FLAGS_video); diff --git a/video/video_quality_test.cc b/video/video_quality_test.cc index 21dfaa8ae8..b32343fb28 100644 --- a/video/video_quality_test.cc +++ b/video/video_quality_test.cc @@ -710,7 +710,9 @@ void VideoQualityTest::SetupVideo(Transport* send_transport, std::string generic_codec_name; webrtc::VideoEncoder::EncoderInfo encoder_info; for (size_t video_idx = 0; video_idx < num_video_streams_; ++video_idx) { - video_send_configs_.push_back(VideoSendStream::Config(send_transport)); + VideoSendStream::Config config(send_transport); + config.rtp.extmap_allow_mixed = true; + video_send_configs_.push_back(std::move(config)); video_encoder_configs_.push_back(VideoEncoderConfig()); num_video_substreams = params_.ss[video_idx].streams.size(); RTC_CHECK_GT(num_video_substreams, 0); @@ -769,6 +771,12 @@ void VideoQualityTest::SetupVideo(Transport* send_transport, kGenericFrameDescriptorExtensionId00); } + if (params_.call.dependency_descriptor) { + video_send_configs_[video_idx].rtp.extensions.emplace_back( + RtpExtension::kDependencyDescriptorUri, + kRtpExtensionGenericFrameDescriptor02); + } + video_send_configs_[video_idx].rtp.extensions.emplace_back( RtpExtension::kVideoContentTypeUri, kVideoContentTypeExtensionId); video_send_configs_[video_idx].rtp.extensions.emplace_back(