| Index: content/renderer/media/webaudio_capturer_source.cc
|
| diff --git a/content/renderer/media/webaudio_capturer_source.cc b/content/renderer/media/webaudio_capturer_source.cc
|
| index 3fca41942df83562b16d38c44f0c6af72069713d..2d663430e3e13dc1d58d9a1b83f17e25897e12cb 100644
|
| --- a/content/renderer/media/webaudio_capturer_source.cc
|
| +++ b/content/renderer/media/webaudio_capturer_source.cc
|
| @@ -18,22 +18,16 @@
|
| namespace content {
|
|
|
| WebAudioCapturerSource::WebAudioCapturerSource(
|
| - blink::WebMediaStreamSource* blink_source)
|
| + const blink::WebMediaStreamSource& blink_source)
|
| : track_(NULL),
|
| audio_format_changed_(false),
|
| fifo_(base::Bind(&WebAudioCapturerSource::DeliverRebufferedAudio,
|
| base::Unretained(this))),
|
| - blink_source_(*blink_source) {
|
| - DCHECK(blink_source);
|
| - DCHECK(!blink_source_.isNull());
|
| - DVLOG(1) << "WebAudioCapturerSource::WebAudioCapturerSource()";
|
| - blink_source_.addAudioConsumer(this);
|
| -}
|
| + blink_source_(blink_source) {}
|
|
|
| WebAudioCapturerSource::~WebAudioCapturerSource() {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| - DVLOG(1) << "WebAudioCapturerSource::~WebAudioCapturerSource()";
|
| - DeregisterFromBlinkSource();
|
| + removeFromBlinkSource();
|
| }
|
|
|
| void WebAudioCapturerSource::setFormat(
|
| @@ -81,9 +75,9 @@
|
| base::AutoLock auto_lock(lock_);
|
| track_ = NULL;
|
| }
|
| - // DeregisterFromBlinkSource() should not be called while |lock_| is acquired,
|
| + // removeFromBlinkSource() should not be called while |lock_| is acquired,
|
| // as it could result in a deadlock.
|
| - DeregisterFromBlinkSource();
|
| + removeFromBlinkSource();
|
| }
|
|
|
| void WebAudioCapturerSource::consumeAudio(
|
| @@ -123,10 +117,15 @@
|
| base::TimeDelta::FromMicroseconds(frame_delay *
|
| base::Time::kMicrosecondsPerSecond /
|
| params_.sample_rate());
|
| - track_->Capture(audio_bus, reference_time);
|
| + track_->Capture(audio_bus, reference_time, false);
|
| }
|
|
|
| -void WebAudioCapturerSource::DeregisterFromBlinkSource() {
|
| +// If registered as audio consumer in |blink_source_|, deregister from
|
| +// |blink_source_| and stop keeping a reference to |blink_source_|.
|
| +// Failure to call this method when stopping the track might leave an invalid
|
| +// WebAudioCapturerSource reference still registered as an audio consumer on
|
| +// the blink side.
|
| +void WebAudioCapturerSource::removeFromBlinkSource() {
|
| if (!blink_source_.isNull()) {
|
| blink_source_.removeAudioConsumer(this);
|
| blink_source_.reset();
|
|
|