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 {