From 4c2c412d7e12a6c7db8cecd2798e75e34cc11173 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Spr=C3=A5ng?= Date: Thu, 11 Jul 2019 15:20:15 +0200 Subject: [PATCH] Set local ssrc at construction (audio) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changing the ssrc for a module is intended to be removed, and will in the future require creating a new instance. Bug: webrtc:10774 Change-Id: Ie96daa4a8cf00223ea040509037582f6b1c8eb19 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145205 Reviewed-by: Oskar Sundbom Commit-Queue: Erik Språng Cr-Commit-Position: refs/heads/master@{#28571} --- audio/audio_send_stream.cc | 12 +++++++----- audio/channel_send.cc | 13 +++++++++---- audio/channel_send.h | 3 ++- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/audio/audio_send_stream.cc b/audio/audio_send_stream.cc index 9190441678..c0ee0ed27c 100644 --- a/audio/audio_send_stream.cc +++ b/audio/audio_send_stream.cc @@ -113,7 +113,8 @@ AudioSendStream::AudioSendStream( config.frame_encryptor, config.crypto_options, config.rtp.extmap_allow_mixed, - config.rtcp_report_interval_ms)) {} + config.rtcp_report_interval_ms, + config.rtp.ssrc)) {} AudioSendStream::AudioSendStream( Clock* clock, @@ -239,11 +240,12 @@ void AudioSendStream::ConfigureStream( RTC_DCHECK(first_time || old_config.send_transport == new_config.send_transport); - if (first_time || old_config.rtp.ssrc != new_config.rtp.ssrc) { + if (old_config.rtp.ssrc != new_config.rtp.ssrc) { channel_send->SetLocalSSRC(new_config.rtp.ssrc); - if (stream->suspended_rtp_state_) { - stream->rtp_rtcp_module_->SetRtpState(*stream->suspended_rtp_state_); - } + } + if (stream->suspended_rtp_state_ && + (first_time || old_config.rtp.ssrc != new_config.rtp.ssrc)) { + stream->rtp_rtcp_module_->SetRtpState(*stream->suspended_rtp_state_); } if (first_time || old_config.rtp.c_name != new_config.rtp.c_name) { channel_send->SetRTCP_CNAME(new_config.rtp.c_name); diff --git a/audio/channel_send.cc b/audio/channel_send.cc index e7cee58f14..447dabe761 100644 --- a/audio/channel_send.cc +++ b/audio/channel_send.cc @@ -97,7 +97,8 @@ class ChannelSend : public ChannelSendInterface, FrameEncryptorInterface* frame_encryptor, const webrtc::CryptoOptions& crypto_options, bool extmap_allow_mixed, - int rtcp_report_interval_ms); + int rtcp_report_interval_ms, + uint32_t ssrc); ~ChannelSend() override; @@ -640,7 +641,8 @@ ChannelSend::ChannelSend(Clock* clock, FrameEncryptorInterface* frame_encryptor, const webrtc::CryptoOptions& crypto_options, bool extmap_allow_mixed, - int rtcp_report_interval_ms) + int rtcp_report_interval_ms, + uint32_t ssrc) : event_log_(rtc_event_log), _timeStamp(0), // This is just an offset, RTP module will add it's own // random offset @@ -695,6 +697,8 @@ ChannelSend::ChannelSend(Clock* clock, configuration.extmap_allow_mixed = extmap_allow_mixed; configuration.rtcp_report_interval_ms = rtcp_report_interval_ms; + configuration.media_send_ssrc = ssrc; + _rtpRtcpModule = RtpRtcp::Create(configuration); _rtpRtcpModule->SetSendingMediaStatus(false); @@ -1256,12 +1260,13 @@ std::unique_ptr CreateChannelSend( FrameEncryptorInterface* frame_encryptor, const webrtc::CryptoOptions& crypto_options, bool extmap_allow_mixed, - int rtcp_report_interval_ms) { + int rtcp_report_interval_ms, + uint32_t ssrc) { return absl::make_unique( clock, task_queue_factory, module_process_thread, media_transport_config, overhead_observer, rtp_transport, rtcp_rtt_stats, rtc_event_log, frame_encryptor, crypto_options, extmap_allow_mixed, - rtcp_report_interval_ms); + rtcp_report_interval_ms, ssrc); } } // namespace voe diff --git a/audio/channel_send.h b/audio/channel_send.h index 2762f5360b..a9df5e7cd6 100644 --- a/audio/channel_send.h +++ b/audio/channel_send.h @@ -140,7 +140,8 @@ std::unique_ptr CreateChannelSend( FrameEncryptorInterface* frame_encryptor, const webrtc::CryptoOptions& crypto_options, bool extmap_allow_mixed, - int rtcp_report_interval_ms); + int rtcp_report_interval_ms, + uint32_t ssrc); } // namespace voe } // namespace webrtc