Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1178)

Unified Diff: webrtc/audio/audio_receive_stream.cc

Issue 2436033002: Replace AudioConferenceMixer with AudioMixer. (Closed)
Patch Set: Added errors and logs to AudioTransport. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/audio/audio_receive_stream.cc
diff --git a/webrtc/audio/audio_receive_stream.cc b/webrtc/audio/audio_receive_stream.cc
index 12b8b3f7ad568582c1fb45b912c328b7b74b2deb..ab06537562745e16c7dcc917ad5dd81fe6cf7018 100644
--- a/webrtc/audio/audio_receive_stream.cc
+++ b/webrtc/audio/audio_receive_stream.cc
@@ -154,16 +154,42 @@ AudioReceiveStream::~AudioReceiveStream() {
}
void AudioReceiveStream::Start() {
- RTC_DCHECK(thread_checker_.CalledOnValidThread());
+ RTC_DCHECK_RUN_ON(&thread_checker_);
the sun 2016/10/27 10:06:45 This is nice, but should all thread checking in th
aleloi 2016/11/01 15:17:34 I added an ACCESS_ON annotation on playout_. Now e
+ if (playing_) {
ossu 2016/10/25 14:13:33 Is this fine or does it indicate a usage error? I.
the sun 2016/10/27 10:06:45 Since this is going to be part of the public API I
aleloi 2016/11/01 15:17:34 webrtcvoiceengine runs Stop on everything in SetPl
+ return;
+ }
+
ScopedVoEInterface<VoEBase> base(voice_engine());
int error = base->StartPlayout(config_.voe_channel_id);
if (error != 0) {
LOG(LS_ERROR) << "AudioReceiveStream::Start failed with error: " << error;
+ return;
+ }
+
+ playing_ = true;
+
+ auto* const audio_state =
the sun 2016/10/27 10:06:45 Make a class private method internal::AudioState*
aleloi 2016/11/01 15:17:34 That's a design tip from Scott Meyers! I read that
+ static_cast<internal::AudioState*>(audio_state_.get());
ossu 2016/10/25 14:13:33 I wonder about the cast here. I see it's being don
the sun 2016/10/27 10:06:45 AudioState is intended as (for clients of the Call
+
+ if (!audio_state->mixer()->AddSource(this)) {
+ LOG(LS_ERROR) << "Failed to add source to mixer.";
the sun 2016/10/27 10:06:45 Does that mean we're not actually playing and we s
aleloi 2016/11/01 15:17:35 Thanks! It's an error that is never supposed to ha
}
}
void AudioReceiveStream::Stop() {
- RTC_DCHECK(thread_checker_.CalledOnValidThread());
+ RTC_DCHECK_RUN_ON(&thread_checker_);
+
+ if (!playing_) {
+ return;
+ }
+ playing_ = false;
+
+ auto* const audio_state =
+ static_cast<internal::AudioState*>(audio_state_.get());
+ if (!audio_state->mixer()->RemoveSource(this)) {
the sun 2016/10/27 10:06:45 Uhm, sorry, I missed there was a return code for R
aleloi 2016/11/01 15:17:35 It's not too late to change! But why? Isn't it the
+ LOG(LS_ERROR) << "Failed to remove stream from mixer.";
+ }
+
ScopedVoEInterface<VoEBase> base(voice_engine());
base->StopPlayout(config_.voe_channel_id);
}

Powered by Google App Engine
This is Rietveld 408576698