diff --git a/audio/BUILD.gn b/audio/BUILD.gn index 9f3889a34b..437883da54 100644 --- a/audio/BUILD.gn +++ b/audio/BUILD.gn @@ -166,6 +166,7 @@ if (rtc_include_tests) { "../api:bitrate_allocation", "../api:frame_transformer_factory", "../api:frame_transformer_interface", + "../api:function_view", "../api:libjingle_peerconnection_api", "../api:make_ref_counted", "../api:mock_audio_mixer", @@ -174,6 +175,7 @@ if (rtc_include_tests) { "../api:mock_frame_transformer", "../api:mock_transformable_audio_frame", "../api:rtp_headers", + "../api:rtp_parameters", "../api:scoped_refptr", "../api:transport_api", "../api/audio:audio_frame_api", @@ -183,15 +185,20 @@ if (rtc_include_tests) { "../api/audio_codecs/opus:audio_decoder_opus", "../api/audio_codecs/opus:audio_encoder_opus", "../api/crypto:frame_decryptor_interface", + "../api/crypto:frame_encryptor_interface", "../api/crypto:options", "../api/environment", "../api/environment:environment_factory", "../api/task_queue:default_task_queue_factory", "../api/task_queue/test:mock_task_queue_base", "../api/transport:bitrate_settings", + "../api/transport:network_control", "../api/units:data_rate", + "../api/units:data_size", "../api/units:time_delta", "../api/units:timestamp", + "../call:bitrate_allocator", + "../call:call_interfaces", "../call:mock_bitrate_allocator", "../call:mock_call_interfaces", "../call:mock_rtp_interfaces", diff --git a/audio/audio_send_stream_unittest.cc b/audio/audio_send_stream_unittest.cc index c487d7b87d..e89dffa497 100644 --- a/audio/audio_send_stream_unittest.cc +++ b/audio/audio_send_stream_unittest.cc @@ -10,27 +10,47 @@ #include "audio/audio_send_stream.h" +#include +#include #include +#include #include -#include #include #include +#include "api/audio/audio_frame.h" #include "api/audio/audio_processing_statistics.h" +#include "api/audio_codecs/audio_encoder.h" +#include "api/audio_codecs/audio_format.h" +#include "api/call/bitrate_allocation.h" +#include "api/crypto/frame_encryptor_interface.h" #include "api/environment/environment_factory.h" +#include "api/function_view.h" +#include "api/make_ref_counted.h" +#include "api/rtp_parameters.h" +#include "api/scoped_refptr.h" #include "api/test/mock_frame_encryptor.h" +#include "api/transport/network_types.h" +#include "api/units/data_rate.h" +#include "api/units/data_size.h" +#include "api/units/time_delta.h" #include "audio/audio_state.h" +#include "audio/channel_send.h" #include "audio/conversion.h" #include "audio/mock_voe_channel_proxy.h" +#include "call/audio_state.h" +#include "call/bitrate_allocator.h" #include "call/test/mock_bitrate_allocator.h" #include "call/test/mock_rtp_transport_controller_send.h" #include "modules/audio_device/include/mock_audio_device.h" #include "modules/audio_mixer/audio_mixer_impl.h" #include "modules/audio_mixer/sine_wave_generator.h" #include "modules/audio_processing/include/mock_audio_processing.h" +#include "modules/rtp_rtcp/include/report_block_data.h" #include "modules/rtp_rtcp/mocks/mock_network_link_rtcp_observer.h" #include "modules/rtp_rtcp/mocks/mock_rtp_rtcp.h" -#include "system_wrappers/include/clock.h" +#include "modules/rtp_rtcp/source/rtp_header_extensions.h" +#include "test/gmock.h" #include "test/gtest.h" #include "test/mock_audio_encoder.h" #include "test/mock_audio_encoder_factory.h" @@ -200,7 +220,6 @@ struct ConfigHelper { static void AddBweToConfig(AudioSendStream::Config* config) { config->rtp.extensions.push_back(RtpExtension( RtpExtension::kTransportSequenceNumberUri, kTransportSequenceNumberId)); - config->send_codec_spec->transport_cc_enabled = true; } void SetupDefaultChannelSend(bool audio_bwe_enabled) { @@ -354,7 +373,6 @@ TEST(AudioSendStreamTest, ConfigToString) { config.send_codec_spec = AudioSendStream::Config::SendCodecSpec(kIsacPayloadType, kIsacFormat); config.send_codec_spec->nack_enabled = true; - config.send_codec_spec->transport_cc_enabled = false; config.send_codec_spec->cng_payload_type = 42; config.send_codec_spec->red_payload_type = 43; config.encoder_factory = MockAudioEncoderFactory::CreateUnusedFactory(); @@ -369,7 +387,7 @@ TEST(AudioSendStreamTest, ConfigToString) { "send_transport: null, " "min_bitrate_bps: 12000, max_bitrate_bps: 34000, has " "audio_network_adaptor_config: false, has_dscp: true, " - "send_codec_spec: {nack_enabled: true, transport_cc_enabled: false, " + "send_codec_spec: {nack_enabled: true, " "enable_non_sender_rtt: false, cng_payload_type: 42, " "red_payload_type: 43, payload_type: 103, " "format: {name: isac, clockrate_hz: 16000, num_channels: 1, " diff --git a/call/audio_send_stream.cc b/call/audio_send_stream.cc index bd7300d56d..f58a24b50d 100644 --- a/call/audio_send_stream.cc +++ b/call/audio_send_stream.cc @@ -84,7 +84,6 @@ std::string AudioSendStream::Config::SendCodecSpec::ToString() const { char buf[1024]; rtc::SimpleStringBuilder ss(buf); ss << "{nack_enabled: " << (nack_enabled ? "true" : "false"); - ss << ", transport_cc_enabled: " << (transport_cc_enabled ? "true" : "false"); ss << ", enable_non_sender_rtt: " << (enable_non_sender_rtt ? "true" : "false"); ss << ", cng_payload_type: " @@ -100,7 +99,6 @@ std::string AudioSendStream::Config::SendCodecSpec::ToString() const { bool AudioSendStream::Config::SendCodecSpec::operator==( const AudioSendStream::Config::SendCodecSpec& rhs) const { if (nack_enabled == rhs.nack_enabled && - transport_cc_enabled == rhs.transport_cc_enabled && enable_non_sender_rtt == rhs.enable_non_sender_rtt && cng_payload_type == rhs.cng_payload_type && red_payload_type == rhs.red_payload_type && diff --git a/call/audio_send_stream.h b/call/audio_send_stream.h index 540956c1fd..768ba0b19e 100644 --- a/call/audio_send_stream.h +++ b/call/audio_send_stream.h @@ -145,7 +145,6 @@ class AudioSendStream : public AudioSender { int payload_type; SdpAudioFormat format; bool nack_enabled = false; - bool transport_cc_enabled = false; bool enable_non_sender_rtt = false; std::optional cng_payload_type; std::optional red_payload_type; diff --git a/media/BUILD.gn b/media/BUILD.gn index c66c2887bb..5563faea4c 100644 --- a/media/BUILD.gn +++ b/media/BUILD.gn @@ -982,6 +982,7 @@ if (rtc_include_tests) { "../api/video_codecs:video_encoder_factory_template_open_h264_adapter", "../audio", "../call:call_interfaces", + "../call:payload_type_picker", "../call:video_receive_stream_api", "../call:video_send_stream_api", "../common_video", diff --git a/media/base/codec.cc b/media/base/codec.cc index e1a114dc9a..d541c779c4 100644 --- a/media/base/codec.cc +++ b/media/base/codec.cc @@ -25,7 +25,7 @@ #include "api/video_codecs/h264_profile_level_id.h" #include "api/video_codecs/sdp_video_format.h" #ifdef RTC_ENABLE_H265 -#include "api/video_codecs/h265_profile_tier_level.h" +#include "api/video_codecs/h265_profile_tier_level.h" // IWYU pragma: keep #endif #include "media/base/codec_comparators.h" #include "media/base/media_constants.h" @@ -318,11 +318,6 @@ bool HasRrtr(const Codec& codec) { FeedbackParam(kRtcpFbParamRrtr, kParamValueEmpty)); } -bool HasTransportCc(const Codec& codec) { - return codec.HasFeedbackParam( - FeedbackParam(kRtcpFbParamTransportCc, kParamValueEmpty)); -} - const Codec* FindMatchingVideoCodec(const std::vector& supported_codecs, const Codec& codec) { webrtc::SdpVideoFormat sdp_video_format{codec.name, codec.params}; diff --git a/media/base/codec.h b/media/base/codec.h index 5324abb9f4..c3937411cd 100644 --- a/media/base/codec.h +++ b/media/base/codec.h @@ -249,7 +249,6 @@ bool HasLntf(const Codec& codec); bool HasNack(const Codec& codec); bool HasRemb(const Codec& codec); bool HasRrtr(const Codec& codec); -bool HasTransportCc(const Codec& codec); // Returns the first codec in `supported_codecs` that matches `codec`, or // nullptr if no codec matches. diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc index 3aff1a6ac3..83b3d22df9 100644 --- a/media/engine/webrtc_video_engine_unittest.cc +++ b/media/engine/webrtc_video_engine_unittest.cc @@ -4519,8 +4519,7 @@ class WebRtcVideoChannelFlexfecRecvTest : public WebRtcVideoChannelTest { }; TEST_F(WebRtcVideoChannelFlexfecRecvTest, - DefaultFlexfecCodecHasTransportCcAndRembFeedbackParam) { - EXPECT_TRUE(cricket::HasTransportCc(GetEngineCodec("flexfec-03"))); + DefaultFlexfecCodecHasRembFeedbackParam) { EXPECT_TRUE(cricket::HasRemb(GetEngineCodec("flexfec-03"))); } diff --git a/media/engine/webrtc_voice_engine.cc b/media/engine/webrtc_voice_engine.cc index e3b99f23a3..e2a9cd2490 100644 --- a/media/engine/webrtc_voice_engine.cc +++ b/media/engine/webrtc_voice_engine.cc @@ -1456,7 +1456,6 @@ bool WebRtcVoiceSendChannel::SetSendCodecs( if (voice_codec.bitrate > 0) { send_codec_spec->target_bitrate_bps = voice_codec.bitrate; } - send_codec_spec->transport_cc_enabled = HasTransportCc(voice_codec); send_codec_spec->nack_enabled = HasNack(voice_codec); send_codec_spec->enable_non_sender_rtt = HasRrtr(voice_codec); bitrate_config = GetBitrateConfigForCodec(voice_codec); diff --git a/media/engine/webrtc_voice_engine_unittest.cc b/media/engine/webrtc_voice_engine_unittest.cc index 7fdfaea510..1e6f03e284 100644 --- a/media/engine/webrtc_voice_engine_unittest.cc +++ b/media/engine/webrtc_voice_engine_unittest.cc @@ -48,6 +48,7 @@ #include "call/audio_state.h" #include "call/call.h" #include "call/call_config.h" +#include "call/payload_type_picker.h" #include "media/base/codec.h" #include "media/base/fake_media_engine.h" #include "media/base/fake_network_interface.h" @@ -956,18 +957,6 @@ TEST_P(WebRtcVoiceEngineTestFake, CreateRecvStream) { EXPECT_EQ("", config.sync_group); } -TEST_P(WebRtcVoiceEngineTestFake, OpusSupportsTransportCc) { - const std::vector& codecs = engine_->send_codecs(); - bool opus_found = false; - for (const cricket::Codec& codec : codecs) { - if (codec.name == "opus") { - EXPECT_TRUE(HasTransportCc(codec)); - opus_found = true; - } - } - EXPECT_TRUE(opus_found); -} - // Test that we set our inbound codecs properly, including changing PT. TEST_P(WebRtcVoiceEngineTestFake, SetRecvCodecs) { EXPECT_TRUE(SetupChannel()); diff --git a/test/scenario/BUILD.gn b/test/scenario/BUILD.gn index 5b7f9a64a6..f5c5cd5d9b 100644 --- a/test/scenario/BUILD.gn +++ b/test/scenario/BUILD.gn @@ -84,12 +84,15 @@ if (rtc_include_tests && !build_with_chromium) { "../../api:frame_generator_api", "../../api:libjingle_peerconnection_api", "../../api:rtc_event_log_output_file", + "../../api:rtp_headers", "../../api:rtp_parameters", + "../../api:scoped_refptr", "../../api:sequence_checker", "../../api:time_controller", "../../api:transport_api", "../../api/audio:audio_device", "../../api/audio:builtin_audio_processing_builder", + "../../api/audio_codecs:audio_codecs_api", "../../api/audio_codecs:builtin_audio_decoder_factory", "../../api/audio_codecs:builtin_audio_encoder_factory", "../../api/environment", @@ -144,6 +147,7 @@ if (rtc_include_tests && !build_with_chromium) { "../../rtc_base:rtc_stats_counters", "../../rtc_base:safe_minmax", "../../rtc_base:socket_address", + "../../rtc_base:stringutils", "../../rtc_base:task_queue_for_test", "../../rtc_base:threading", "../../rtc_base/synchronization:mutex", diff --git a/test/scenario/audio_stream.cc b/test/scenario/audio_stream.cc index 64b6406e00..2e8f7fcba4 100644 --- a/test/scenario/audio_stream.cc +++ b/test/scenario/audio_stream.cc @@ -9,8 +9,27 @@ */ #include "test/scenario/audio_stream.h" -#include "absl/memory/memory.h" -#include "test/call_test.h" +#include +#include +#include +#include + +#include "api/audio_codecs/audio_decoder_factory.h" +#include "api/audio_codecs/audio_encoder_factory.h" +#include "api/call/transport.h" +#include "api/media_types.h" +#include "api/rtp_headers.h" +#include "api/rtp_parameters.h" +#include "api/scoped_refptr.h" +#include "api/units/data_rate.h" +#include "api/units/time_delta.h" +#include "call/audio_receive_stream.h" +#include "call/audio_send_stream.h" +#include "rtc_base/checks.h" +#include "rtc_base/strings/string_builder.h" +#include "test/scenario/call_client.h" +#include "test/scenario/column_printer.h" +#include "test/scenario/scenario_config.h" #include "test/video_test_constants.h" #if WEBRTC_ENABLE_PROTOBUF @@ -132,9 +151,6 @@ SendAudioStream::SendAudioStream( send_config.max_bitrate_bps = max_rate.bps(); } - if (config.stream.in_bandwidth_estimation) { - send_config.send_codec_spec->transport_cc_enabled = true; - } send_config.rtp.extensions = GetAudioRtpExtensions(config); sender_->SendTask([&] { diff --git a/video/BUILD.gn b/video/BUILD.gn index 83780db703..418959284d 100644 --- a/video/BUILD.gn +++ b/video/BUILD.gn @@ -514,32 +514,48 @@ if (rtc_include_tests) { "..//test/network:simulated_network", "../api:create_frame_generator", "../api:fec_controller_api", + "../api:field_trials_view", "../api:frame_generator_api", "../api:libjingle_peerconnection_api", + "../api:make_ref_counted", "../api:rtc_event_log_output_file", + "../api:rtp_parameters", + "../api:scoped_refptr", + "../api:simulated_network_api", "../api:test_dependency_factory", + "../api:transport_api", "../api:video_quality_test_fixture_api", "../api/audio:audio_device", "../api/audio:builtin_audio_processing_builder", "../api/environment", "../api/numerics", + "../api/rtc_event_log", "../api/rtc_event_log:rtc_event_log_factory", "../api/task_queue", "../api/task_queue:default_task_queue_factory", "../api/test/metrics:global_metrics_logger_and_exporter", "../api/test/metrics:metric", + "../api/units:time_delta", "../api/video:builtin_video_bitrate_allocator_factory", + "../api/video:encoded_image", + "../api/video:video_bitrate_allocation", "../api/video:video_bitrate_allocator_factory", + "../api/video:video_codec_constants", "../api/video:video_frame", + "../api/video:video_frame_type", "../api/video:video_rtp_headers", "../api/video_codecs:video_codecs_api", + "../call:call_interfaces", "../call:fake_network", + "../call:video_receive_stream_api", + "../call:video_send_stream_api", "../common_video", "../media:media_constants", "../media:rtc_audio_video", "../media:rtc_internal_video_codecs", "../media:rtc_simulcast_encoder_adapter", "../modules/audio_device:audio_device_module_from_input_and_output", + "../modules/audio_device:test_audio_device_module", "../modules/audio_device:windows_core_audio_utility", "../modules/audio_mixer:audio_mixer_impl", "../modules/rtp_rtcp", @@ -549,19 +565,25 @@ if (rtc_include_tests) { "../modules/video_coding:webrtc_h264", "../modules/video_coding:webrtc_vp8", "../modules/video_coding:webrtc_vp9", + "../rtc_base:checks", + "../rtc_base:logging", "../rtc_base:macromagic", "../rtc_base:platform_thread", "../rtc_base:rtc_base_tests_utils", "../rtc_base:rtc_event", "../rtc_base:rtc_numerics", + "../rtc_base:safe_conversions", "../rtc_base:stringutils", "../rtc_base:task_queue_for_test", "../rtc_base:timeutils", "../rtc_base/synchronization:mutex", + "../rtc_base/system:file_wrapper", "../rtc_base/task_utils:repeating_task", "../system_wrappers", + "../test:direct_transport", "../test:fake_video_codecs", "../test:fileutils", + "../test:frame_generator_capturer", "../test:platform_video_capturer", "../test:rtp_test_utils", "../test:test_common", @@ -572,6 +594,7 @@ if (rtc_include_tests) { "../test:video_frame_writer", "../test:video_test_common", "../test:video_test_constants", + "config:encoder_config", "config:streams_config", "//third_party/abseil-cpp/absl/algorithm:container", "//third_party/abseil-cpp/absl/flags:flag", diff --git a/video/video_quality_test.cc b/video/video_quality_test.cc index 7d148f6caf..bb3e31f6f5 100644 --- a/video/video_quality_test.cc +++ b/video/video_quality_test.cc @@ -11,13 +11,57 @@ #include +#include +#include +#include +#include + +#include "absl/flags/flag.h" +#include "api/call/transport.h" +#include "api/environment/environment.h" +#include "api/field_trials_view.h" +#include "api/make_ref_counted.h" +#include "api/rtc_event_log/rtc_event_log.h" +#include "api/rtp_parameters.h" +#include "api/scoped_refptr.h" +#include "api/test/frame_generator_interface.h" +#include "api/test/simulated_network.h" +#include "api/units/time_delta.h" +#include "api/video/encoded_image.h" +#include "api/video/video_bitrate_allocation.h" +#include "api/video/video_codec_constants.h" +#include "api/video/video_codec_type.h" +#include "api/video/video_frame_type.h" +#include "api/video/video_source_interface.h" +#include "api/video_codecs/sdp_video_format.h" +#include "api/video_codecs/spatial_layer.h" +#include "api/video_codecs/video_codec.h" +#include "api/video_codecs/video_decoder.h" +#include "call/audio_receive_stream.h" +#include "call/audio_send_stream.h" +#include "call/audio_state.h" +#include "call/call_config.h" +#include "call/video_receive_stream.h" +#include "call/video_send_stream.h" +#include "media/engine/internal_decoder_factory.h" +#include "modules/audio_device/include/test_audio_device.h" +#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" +#include "rtc_base/checks.h" +#include "rtc_base/logging.h" +#include "rtc_base/numerics/safe_conversions.h" +#include "rtc_base/system/file_wrapper.h" +#include "test/direct_transport.h" +#include "test/frame_generator_capturer.h" +#include "test/gtest.h" +#include "test/layer_filtering_transport.h" +#include "video/config/video_encoder_config.h" +#include "video/video_analyzer.h" + #if defined(WEBRTC_WIN) #include #endif #include -#include -#include #include #include #include @@ -39,9 +83,6 @@ #include "media/engine/simulcast_encoder_adapter.h" #include "media/engine/webrtc_video_engine.h" #include "modules/audio_mixer/audio_mixer_impl.h" -#include "modules/video_coding/codecs/h264/include/h264.h" -#include "modules/video_coding/codecs/vp8/include/vp8.h" -#include "modules/video_coding/codecs/vp9/include/vp9.h" #include "modules/video_coding/utility/ivf_file_writer.h" #include "rtc_base/strings/string_builder.h" #include "rtc_base/task_queue_for_test.h" @@ -1410,7 +1451,6 @@ void VideoQualityTest::SetupAudio(Transport* transport) { kTransportSequenceNumberExtensionId)); audio_send_config.min_bitrate_bps = kOpusMinBitrateBps; audio_send_config.max_bitrate_bps = kOpusBitrateFbBps; - audio_send_config.send_codec_spec->transport_cc_enabled = true; // Only allow ANA when send-side BWE is enabled. audio_send_config.audio_network_adaptor_config = params_.audio.ana_config; }