| Index: content/renderer/media/webaudio_capturer_source.h
|
| diff --git a/content/renderer/media/webaudio_capturer_source.h b/content/renderer/media/webaudio_capturer_source.h
|
| index b0ee262ccd7c3c06135b9252b3b394db8c0dc7dd..d5b3bb5b554514d8d75ee909bf8ab23f63914279 100644
|
| --- a/content/renderer/media/webaudio_capturer_source.h
|
| +++ b/content/renderer/media/webaudio_capturer_source.h
|
| @@ -11,9 +11,11 @@
|
| #include "base/memory/ref_counted.h"
|
| #include "base/synchronization/lock.h"
|
| #include "base/threading/thread_checker.h"
|
| +#include "base/time/time.h"
|
| #include "media/audio/audio_parameters.h"
|
| +#include "media/base/audio_bus.h"
|
| #include "media/base/audio_capturer_source.h"
|
| -#include "media/base/audio_fifo.h"
|
| +#include "media/base/audio_push_fifo.h"
|
| #include "third_party/WebKit/public/platform/WebAudioDestinationConsumer.h"
|
| #include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
|
| #include "third_party/WebKit/public/platform/WebVector.h"
|
| @@ -58,6 +60,12 @@ class WebAudioCapturerSource
|
| ~WebAudioCapturerSource() override;
|
|
|
| private:
|
| + // Called by AudioPushFifo zero or more times during the call to
|
| + // consumeAudio(). Delivers audio data with the required buffer size to the
|
| + // track.
|
| + void DeliverRebufferedAudio(const media::AudioBus& audio_bus,
|
| + int frame_delay);
|
| +
|
| // Removes this object from a blink::WebMediaStreamSource with which it
|
| // might be registered. The goal is to avoid dangling pointers.
|
| void removeFromBlinkSource();
|
| @@ -75,14 +83,18 @@ class WebAudioCapturerSource
|
| // Flag to help notify the |track_| when the audio format has changed.
|
| bool audio_format_changed_;
|
|
|
| - // Wraps data coming from HandleCapture().
|
| + // A wrapper used for providing audio to |fifo_|.
|
| scoped_ptr<media::AudioBus> wrapper_bus_;
|
|
|
| - // Bus for reading from FIFO and calling the CaptureCallback.
|
| - scoped_ptr<media::AudioBus> capture_bus_;
|
| + // Takes in the audio data passed to consumeAudio() and re-buffers it into 10
|
| + // ms chunks for the track. This ensures each chunk of audio delivered to the
|
| + // track has the required buffer size, regardless of the amount of audio
|
| + // provided via each consumeAudio() call.
|
| + media::AudioPushFifo fifo_;
|
|
|
| - // Handles mismatch between WebAudio buffer size and WebRTC.
|
| - scoped_ptr<media::AudioFifo> fifo_;
|
| + // Used to pass the reference timestamp between DeliverDecodedAudio() and
|
| + // DeliverRebufferedAudio().
|
| + base::TimeTicks current_reference_time_;
|
|
|
| // Synchronizes HandleCapture() with AudioCapturerSource calls.
|
| base::Lock lock_;
|
|
|