Don't recreate audio receive streams on header extension update.
Bug: webrtc:11993 Change-Id: Ibf45cb846713a6dd991a73bc72b4c5f59e3e26e5 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/222041 Commit-Queue: Tommi <tommi@webrtc.org> Reviewed-by: Markus Handell <handellm@webrtc.org> Cr-Commit-Position: refs/heads/master@{#34287}
This commit is contained in:
@ -254,6 +254,14 @@ void AudioReceiveStream::SetFrameDecryptor(
|
||||
channel_receive_->SetFrameDecryptor(std::move(frame_decryptor));
|
||||
}
|
||||
|
||||
void AudioReceiveStream::SetRtpExtensions(
|
||||
std::vector<RtpExtension> extensions) {
|
||||
// TODO(bugs.webrtc.org/11993): This is called via WebRtcAudioReceiveStream,
|
||||
// expect to be called on the network thread.
|
||||
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
|
||||
config_.rtp.extensions = std::move(extensions);
|
||||
}
|
||||
|
||||
webrtc::AudioReceiveStream::Stats AudioReceiveStream::GetStats(
|
||||
bool get_and_clear_legacy_stats) const {
|
||||
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
|
||||
|
@ -94,6 +94,7 @@ class AudioReceiveStream final : public webrtc::AudioReceiveStream,
|
||||
int history_ms) override;
|
||||
void SetFrameDecryptor(rtc::scoped_refptr<webrtc::FrameDecryptorInterface>
|
||||
frame_decryptor) override;
|
||||
void SetRtpExtensions(std::vector<RtpExtension> extensions) override;
|
||||
|
||||
webrtc::AudioReceiveStream::Stats GetStats(
|
||||
bool get_and_clear_legacy_stats) const override;
|
||||
|
@ -156,6 +156,9 @@ class AudioReceiveStream : public MediaReceiveStream {
|
||||
virtual void SetDecoderMap(std::map<int, SdpAudioFormat> decoder_map) = 0;
|
||||
virtual void SetUseTransportCcAndNackHistory(bool use_transport_cc,
|
||||
int history_ms) = 0;
|
||||
// Set/change the rtp header extensions. Must be called on the packet
|
||||
// delivery thread.
|
||||
virtual void SetRtpExtensions(std::vector<RtpExtension> extensions) = 0;
|
||||
|
||||
// Returns true if the stream has been started.
|
||||
virtual bool IsRunning() const = 0;
|
||||
|
@ -118,6 +118,11 @@ void FakeAudioReceiveStream::SetFrameDecryptor(
|
||||
config_.frame_decryptor = std::move(frame_decryptor);
|
||||
}
|
||||
|
||||
void FakeAudioReceiveStream::SetRtpExtensions(
|
||||
std::vector<webrtc::RtpExtension> extensions) {
|
||||
config_.rtp.extensions = std::move(extensions);
|
||||
}
|
||||
|
||||
webrtc::AudioReceiveStream::Stats FakeAudioReceiveStream::GetStats(
|
||||
bool get_and_clear_legacy_stats) const {
|
||||
return stats_;
|
||||
|
@ -116,6 +116,7 @@ class FakeAudioReceiveStream final : public webrtc::AudioReceiveStream {
|
||||
int history_ms) override;
|
||||
void SetFrameDecryptor(rtc::scoped_refptr<webrtc::FrameDecryptorInterface>
|
||||
frame_decryptor) override;
|
||||
void SetRtpExtensions(std::vector<webrtc::RtpExtension> extensions) override;
|
||||
|
||||
webrtc::AudioReceiveStream::Stats GetStats(
|
||||
bool get_and_clear_legacy_stats) const override;
|
||||
|
@ -1238,11 +1238,10 @@ class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream {
|
||||
config_.rtp.nack.rtp_history_ms);
|
||||
}
|
||||
|
||||
void SetRtpExtensionsAndRecreateStream(
|
||||
const std::vector<webrtc::RtpExtension>& extensions) {
|
||||
void SetRtpExtensions(const std::vector<webrtc::RtpExtension>& extensions) {
|
||||
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
|
||||
config_.rtp.extensions = extensions;
|
||||
RecreateAudioReceiveStream();
|
||||
stream_->SetRtpExtensions(extensions);
|
||||
}
|
||||
|
||||
// Set a new payload type -> decoder map.
|
||||
@ -1472,7 +1471,7 @@ bool WebRtcVoiceMediaChannel::SetRecvParameters(
|
||||
if (recv_rtp_extensions_ != filtered_extensions) {
|
||||
recv_rtp_extensions_.swap(filtered_extensions);
|
||||
for (auto& it : recv_streams_) {
|
||||
it.second->SetRtpExtensionsAndRecreateStream(recv_rtp_extensions_);
|
||||
it.second->SetRtpExtensions(recv_rtp_extensions_);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
Reference in New Issue
Block a user