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 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 unsignaled_frame_decryptor_; + rtc::scoped_refptr + unsignaled_frame_transformer_; }; } // namespace cricket