Index: content/renderer/media/renderer_webaudiodevice_impl.h |
diff --git a/content/renderer/media/renderer_webaudiodevice_impl.h b/content/renderer/media/renderer_webaudiodevice_impl.h |
index 48e7fad2d6a17cbe2c9afb6ad6549aacf3e6c04d..fd5827fbf2904629da417d19808bd717b0015ebe 100644 |
--- a/content/renderer/media/renderer_webaudiodevice_impl.h |
+++ b/content/renderer/media/renderer_webaudiodevice_impl.h |
@@ -23,6 +23,7 @@ class SingleThreadTaskRunner; |
namespace media { |
class NullAudioSink; |
+class AudioPullFifo; |
} |
namespace content { |
@@ -50,7 +51,14 @@ class RendererWebAudioDeviceImpl |
void OnRenderError() override; |
private: |
- const media::AudioParameters params_; |
+ // Called by AudioPullFifo when more data is necessary. |
+ void SourceCallback(int fifo_frames_delay, media::AudioBus* audio_bus); |
+ |
+ // Creates a FIFO to rebuffer audio between the client and the sink. |
+ void CreateFifoIfRequired(int render_frames_per_buffer); |
+ |
+ // Parameters of audio being pulled from the client. |
+ const media::AudioParameters client_params_; |
// Weak reference to the callback into WebKit code. |
blink::WebAudioDevice::RenderCallback* const client_callback_; |
@@ -92,6 +100,10 @@ class RendererWebAudioDeviceImpl |
// Security origin, used to check permissions for |output_device_|. |
url::Origin security_origin_; |
+ // Used to buffer data between the client and the sink in cases where |
+ // the client buffer size is not the same as rendering buffer size. |
+ std::unique_ptr<media::AudioPullFifo> audio_fifo_; |
+ |
DISALLOW_COPY_AND_ASSIGN(RendererWebAudioDeviceImpl); |
}; |