Reland "Replace the implementation of `GetContributingSources()` on the audio side."
This reverts commit 67008dfb366237469fe088a61b62c0cad852c024.
Reason for revert: Tests in the Chromium repo have been changed to accomodate this CL: https://chromium-review.googlesource.com/c/chromium/src/+/1728565
Original change's description:
> Revert "Replace the implementation of `GetContributingSources()` on the audio side."
>
> This reverts commit 8fa7151e4bbad40fec1f964fe0c003b8787bb78a.
>
> Reason for revert: Speculative revert to fix roll of webrtc into chrome. Right now tests related to RTCRtpReceiver failing and looks like it is main candidate, who can affect that behavior.
>
> Original change's description:
> > Replace the implementation of `GetContributingSources()` on the audio side.
> >
> > This change replaces the `ContributingSources`-implementation of `GetContributingSources()` and `GetSynchronizationSources()` on the audio side with the spec-compliant `SourceTracker`-implementation.
> >
> > The most noticeable impact is that the per-frame dictionaries are now updated when frames are delivered to the RTCRtpReceiver's MediaStreamTrack rather than when RTP packets are received on the network.
> >
> > This change is almost identical to the previous video side change at: https://webrtc-review.googlesource.com/c/src/+/143177
> >
> > Bug: webrtc:10545
> > Change-Id: Ife7f08ee8ca1346099b7466837a3756947085fc5
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144422
> > Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
> > Commit-Queue: Chen Xing <chxg@google.com>
> > Cr-Commit-Position: refs/heads/master@{#28459}
>
> TBR=ossu@webrtc.org,chxg@google.com
>
> Change-Id: I5c631d4dcfb39601055ffce9b104f45eea871fd3
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:10545
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144562
> Reviewed-by: Artem Titov <titovartem@webrtc.org>
> Commit-Queue: Artem Titov <titovartem@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28478}
TBR=ossu@webrtc.org,titovartem@webrtc.org,chxg@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:10545
Change-Id: I609cca4f0ca4e1d31a156ba9eb44407518409f57
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/147865
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Chen Xing <chxg@google.com>
Commit-Queue: Chen Xing <chxg@google.com>
Cr-Commit-Position: refs/heads/master@{#28746}
diff --git a/audio/audio_receive_stream.cc b/audio/audio_receive_stream.cc
index 0ff2b0c..1a55adb 100644
--- a/audio/audio_receive_stream.cc
+++ b/audio/audio_receive_stream.cc
@@ -113,7 +113,9 @@
const rtc::scoped_refptr<webrtc::AudioState>& audio_state,
webrtc::RtcEventLog* event_log,
std::unique_ptr<voe::ChannelReceiveInterface> channel_receive)
- : audio_state_(audio_state), channel_receive_(std::move(channel_receive)) {
+ : audio_state_(audio_state),
+ channel_receive_(std::move(channel_receive)),
+ source_tracker_(clock) {
RTC_LOG(LS_INFO) << "AudioReceiveStream: " << config.rtp.remote_ssrc;
RTC_DCHECK(config.decoder_factory);
RTC_DCHECK(config.rtcp_send_transport);
@@ -267,13 +269,18 @@
std::vector<RtpSource> AudioReceiveStream::GetSources() const {
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
- return channel_receive_->GetSources();
+ return source_tracker_.GetSources();
}
AudioMixer::Source::AudioFrameInfo AudioReceiveStream::GetAudioFrameWithInfo(
int sample_rate_hz,
AudioFrame* audio_frame) {
- return channel_receive_->GetAudioFrameWithInfo(sample_rate_hz, audio_frame);
+ AudioMixer::Source::AudioFrameInfo audio_frame_info =
+ channel_receive_->GetAudioFrameWithInfo(sample_rate_hz, audio_frame);
+ if (audio_frame_info != AudioMixer::Source::AudioFrameInfo::kError) {
+ source_tracker_.OnFrameDelivered(audio_frame->packet_infos_);
+ }
+ return audio_frame_info;
}
int AudioReceiveStream::Ssrc() const {