| 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 bcebcbb3e24e523288827db01d6b740a019a29fd..262cfc2dd438326310dc82f33e74fc48504d4350 100644
|
| --- a/content/renderer/media/webaudio_capturer_source.cc
|
| +++ b/content/renderer/media/webaudio_capturer_source.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "content/renderer/media/webaudio_capturer_source.h"
|
|
|
| +#include "base/bind.h"
|
| #include "base/logging.h"
|
| #include "base/time/time.h"
|
| #include "content/renderer/media/webrtc_local_audio_track.h"
|
| @@ -20,15 +21,18 @@ static const int kMaxNumberOfBuffersInFifo = 5;
|
| namespace content {
|
|
|
| WebAudioCapturerSource::WebAudioCapturerSource(
|
| - const blink::WebMediaStreamSource& blink_source)
|
| - : track_(NULL),
|
| - audio_format_changed_(false),
|
| - blink_source_(blink_source) {
|
| + blink::WebMediaStreamSource* blink_source)
|
| + : track_(NULL), audio_format_changed_(false), blink_source_(*blink_source) {
|
| + DCHECK(blink_source);
|
| + DCHECK(!blink_source_.isNull());
|
| + DVLOG(1) << "WebAudioCapturerSource::WebAudioCapturerSource()";
|
| + blink_source_.addAudioConsumer(this);
|
| }
|
|
|
| WebAudioCapturerSource::~WebAudioCapturerSource() {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| - removeFromBlinkSource();
|
| + DVLOG(1) << "WebAudioCapturerSource::~WebAudioCapturerSource()";
|
| + DeregisterFromBlinkSource();
|
| }
|
|
|
| void WebAudioCapturerSource::setFormat(
|
| @@ -77,9 +81,9 @@ void WebAudioCapturerSource::Stop() {
|
| base::AutoLock auto_lock(lock_);
|
| track_ = NULL;
|
| }
|
| - // removeFromBlinkSource() should not be called while |lock_| is acquired,
|
| + // DeregisterFromBlinkSource() should not be called while |lock_| is acquired,
|
| // as it could result in a deadlock.
|
| - removeFromBlinkSource();
|
| + DeregisterFromBlinkSource();
|
| }
|
|
|
| void WebAudioCapturerSource::consumeAudio(
|
| @@ -119,7 +123,7 @@ void WebAudioCapturerSource::consumeAudio(
|
| fifo_->Push(wrapper_bus_.get());
|
| while (fifo_->frames() >= capture_bus_->frames()) {
|
| fifo_->Consume(capture_bus_.get(), 0, capture_bus_->frames());
|
| - track_->Capture(*capture_bus_, estimated_capture_time, false);
|
| + track_->Capture(*capture_bus_, estimated_capture_time);
|
|
|
| // Advance the estimated capture time for the next FIFO consume operation.
|
| estimated_capture_time +=
|
| @@ -128,12 +132,7 @@ void WebAudioCapturerSource::consumeAudio(
|
| }
|
| }
|
|
|
| -// 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() {
|
| +void WebAudioCapturerSource::DeregisterFromBlinkSource() {
|
| if (!blink_source_.isNull()) {
|
| blink_source_.removeAudioConsumer(this);
|
| blink_source_.reset();
|
|
|