aboutsummaryrefslogtreecommitdiff
path: root/media
diff options
context:
space:
mode:
authorLennart Grahl <lennart.grahl@gmail.com>2022-10-06 14:34:39 +0200
committerWebRTC LUCI CQ <webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-10-10 12:24:52 +0000
commita5ba250c262704441668fe89e439e89f3f41de5c (patch)
treed0eb04cc91a1483474f757a3c7a0a17ec6548334 /media
parent828ef91817f617c341ca3cae9680f29c8379f870 (diff)
downloadwebrtc-a5ba250c262704441668fe89e439e89f3f41de5c.tar.gz
Fix apply frame transformer to MID demuxed audio streams
Manually tested with libwebrtc built for Android and a solution running into the same problem as the linked repro in chromium:1348132. Bug: chromium:1348132 Change-Id: I88260b9ac72c67f1a6ad927e075d1490ac06ce91 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/278241 Commit-Queue: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38335}
Diffstat (limited to 'media')
-rw-r--r--media/engine/webrtc_voice_engine.cc9
-rw-r--r--media/engine/webrtc_voice_engine.h2
2 files changed, 10 insertions, 1 deletions
diff --git a/media/engine/webrtc_voice_engine.cc b/media/engine/webrtc_voice_engine.cc
index d36c5985e5..e090fcf62f 100644
--- a/media/engine/webrtc_voice_engine.cc
+++ b/media/engine/webrtc_voice_engine.cc
@@ -1935,7 +1935,7 @@ bool WebRtcVoiceMediaChannel::AddRecvStream(const StreamParams& sp) {
codec_pair_id_, engine()->audio_jitter_buffer_max_packets_,
engine()->audio_jitter_buffer_fast_accelerate_,
engine()->audio_jitter_buffer_min_delay_ms_, unsignaled_frame_decryptor_,
- crypto_options_, nullptr);
+ crypto_options_, unsignaled_frame_transformer_);
recv_streams_.insert(std::make_pair(
ssrc, new WebRtcAudioReceiveStream(std::move(config), call_)));
@@ -2481,6 +2481,13 @@ void WebRtcVoiceMediaChannel::SetDepacketizerToDecoderFrameTransformer(
uint32_t ssrc,
rtc::scoped_refptr<webrtc::FrameTransformerInterface> frame_transformer) {
RTC_DCHECK_RUN_ON(worker_thread_);
+ if (ssrc == 0) {
+ // If the receiver is unsignaled, save the frame transformer and set it when
+ // the stream is associated with an ssrc.
+ unsignaled_frame_transformer_ = std::move(frame_transformer);
+ return;
+ }
+
auto matching_stream = recv_streams_.find(ssrc);
if (matching_stream == recv_streams_.end()) {
RTC_LOG(LS_INFO) << "Attempting to set frame transformer for SSRC:" << ssrc
diff --git a/media/engine/webrtc_voice_engine.h b/media/engine/webrtc_voice_engine.h
index 9cb7ec82eb..0a501bea0a 100644
--- a/media/engine/webrtc_voice_engine.h
+++ b/media/engine/webrtc_voice_engine.h
@@ -321,6 +321,8 @@ class WebRtcVoiceMediaChannel final : public VoiceMediaChannel,
// Unsignaled streams have an option to have a frame decryptor set on them.
rtc::scoped_refptr<webrtc::FrameDecryptorInterface>
unsignaled_frame_decryptor_;
+ rtc::scoped_refptr<webrtc::FrameTransformerInterface>
+ unsignaled_frame_transformer_;
};
} // namespace cricket