From fd20171d2894d354ea49f86134db0b74cbf08564 Mon Sep 17 00:00:00 2001 From: Sebastian Jansson Date: Mon, 12 Nov 2018 16:44:16 +0100 Subject: [PATCH] Adds setup of RTP Extensions in Scenario tests. This prevents printing warning messages when the extensions aren't found. The real parsing is done deeper in the stack and is unaffected. Bug: webrtc:9510 Change-Id: Idf09f0e69c223bd4217be7044d21d1d0bbbdab92 Reviewed-on: https://webrtc-review.googlesource.com/c/110615 Reviewed-by: Stefan Holmer Commit-Queue: Sebastian Jansson Cr-Commit-Position: refs/heads/master@{#25612} --- modules/rtp_rtcp/include/rtp_header_parser.h | 7 +++++++ modules/rtp_rtcp/source/rtp_header_parser.cc | 12 ++++++++++++ test/scenario/audio_stream.cc | 1 + test/scenario/call_client.cc | 5 +++++ test/scenario/call_client.h | 1 + test/scenario/video_stream.cc | 1 + 6 files changed, 27 insertions(+) diff --git a/modules/rtp_rtcp/include/rtp_header_parser.h b/modules/rtp_rtcp/include/rtp_header_parser.h index 2d84fc1e69..85eab90a73 100644 --- a/modules/rtp_rtcp/include/rtp_header_parser.h +++ b/modules/rtp_rtcp/include/rtp_header_parser.h @@ -10,6 +10,7 @@ #ifndef MODULES_RTP_RTCP_INCLUDE_RTP_HEADER_PARSER_H_ #define MODULES_RTP_RTCP_INCLUDE_RTP_HEADER_PARSER_H_ +#include "api/rtpparameters.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" namespace webrtc { @@ -36,8 +37,14 @@ class RtpHeaderParser { virtual bool RegisterRtpHeaderExtension(RTPExtensionType type, uint8_t id) = 0; + // Registers an RTP header extension. + virtual bool RegisterRtpHeaderExtension(RtpExtension extension) = 0; + // De-registers an RTP header extension. virtual bool DeregisterRtpHeaderExtension(RTPExtensionType type) = 0; + + // De-registers an RTP header extension. + virtual bool DeregisterRtpHeaderExtension(RtpExtension extension) = 0; }; } // namespace webrtc #endif // MODULES_RTP_RTCP_INCLUDE_RTP_HEADER_PARSER_H_ diff --git a/modules/rtp_rtcp/source/rtp_header_parser.cc b/modules/rtp_rtcp/source/rtp_header_parser.cc index bc05033efa..6481a403a0 100644 --- a/modules/rtp_rtcp/source/rtp_header_parser.cc +++ b/modules/rtp_rtcp/source/rtp_header_parser.cc @@ -28,8 +28,10 @@ class RtpHeaderParserImpl : public RtpHeaderParser { RTPHeader* header) const override; bool RegisterRtpHeaderExtension(RTPExtensionType type, uint8_t id) override; + bool RegisterRtpHeaderExtension(RtpExtension extension) override; bool DeregisterRtpHeaderExtension(RTPExtensionType type) override; + bool DeregisterRtpHeaderExtension(RtpExtension extension) override; private: rtc::CriticalSection critical_section_; @@ -66,6 +68,10 @@ bool RtpHeaderParserImpl::Parse(const uint8_t* packet, } return true; } +bool RtpHeaderParserImpl::RegisterRtpHeaderExtension(RtpExtension extension) { + rtc::CritScope cs(&critical_section_); + return rtp_header_extension_map_.RegisterByUri(extension.id, extension.uri); +} bool RtpHeaderParserImpl::RegisterRtpHeaderExtension(RTPExtensionType type, uint8_t id) { @@ -73,6 +79,12 @@ bool RtpHeaderParserImpl::RegisterRtpHeaderExtension(RTPExtensionType type, return rtp_header_extension_map_.RegisterByType(id, type); } +bool RtpHeaderParserImpl::DeregisterRtpHeaderExtension(RtpExtension extension) { + rtc::CritScope cs(&critical_section_); + return rtp_header_extension_map_.Deregister( + rtp_header_extension_map_.GetType(extension.id)); +} + bool RtpHeaderParserImpl::DeregisterRtpHeaderExtension(RTPExtensionType type) { rtc::CritScope cs(&critical_section_); return rtp_header_extension_map_.Deregister(type) == 0; diff --git a/test/scenario/audio_stream.cc b/test/scenario/audio_stream.cc index dc8e02ceda..076b4eaf86 100644 --- a/test/scenario/audio_stream.cc +++ b/test/scenario/audio_stream.cc @@ -181,6 +181,7 @@ ReceiveAudioStream::ReceiveAudioStream( recv_config.rtp.extensions = { {RtpExtension::kTransportSequenceNumberUri, 8}}; } + receiver_->AddExtensions(recv_config.rtp.extensions); recv_config.decoder_factory = decoder_factory; recv_config.decoder_map = { {CallTest::kAudioSendPayloadType, {"opus", 48000, 2}}}; diff --git a/test/scenario/call_client.cc b/test/scenario/call_client.cc index 0fbd2bc8f2..86eb4dc1db 100644 --- a/test/scenario/call_client.cc +++ b/test/scenario/call_client.cc @@ -209,6 +209,11 @@ std::string CallClient::GetNextPriorityId() { return kPriorityStreamId; } +void CallClient::AddExtensions(std::vector extensions) { + for (const auto& extension : extensions) + header_parser_->RegisterRtpHeaderExtension(extension); +} + CallClientPair::~CallClientPair() = default; } // namespace test diff --git a/test/scenario/call_client.h b/test/scenario/call_client.h index fe39bd87be..a12e06a065 100644 --- a/test/scenario/call_client.h +++ b/test/scenario/call_client.h @@ -85,6 +85,7 @@ class CallClient : public NetworkReceiverInterface { uint32_t GetNextAudioSsrc(); uint32_t GetNextRtxSsrc(); std::string GetNextPriorityId(); + void AddExtensions(std::vector extensions); Clock* clock_; LoggingNetworkControllerFactory network_controller_factory_; diff --git a/test/scenario/video_stream.cc b/test/scenario/video_stream.cc index 9a5d4619fb..528a9cc2c5 100644 --- a/test/scenario/video_stream.cc +++ b/test/scenario/video_stream.cc @@ -319,6 +319,7 @@ ReceiveVideoStream::ReceiveVideoStream(CallClient* receiver, recv_config.rtp.transport_cc = config.stream.packet_feedback; recv_config.rtp.local_ssrc = CallTest::kReceiverLocalVideoSsrc; recv_config.rtp.extensions = GetVideoRtpExtensions(config); + receiver_->AddExtensions(recv_config.rtp.extensions); RTC_DCHECK(!config.stream.use_rtx || config.stream.nack_history_time > TimeDelta::Zero()); recv_config.rtp.nack.rtp_history_ms = config.stream.nack_history_time.ms();