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 83b596f634e9a02a2c237f100b5464d060af1eb0..59d5ba5982a8fe82797c064854f9f005f0274ba9 100644 |
--- a/content/renderer/media/renderer_webaudiodevice_impl.h |
+++ b/content/renderer/media/renderer_webaudiodevice_impl.h |
@@ -10,9 +10,11 @@ |
#include "base/macros.h" |
#include "base/memory/ref_counted.h" |
#include "base/threading/thread_checker.h" |
+#include "content/common/content_export.h" |
#include "media/base/audio_parameters.h" |
#include "media/base/audio_renderer_sink.h" |
#include "third_party/WebKit/public/platform/WebAudioDevice.h" |
+#include "third_party/WebKit/public/platform/WebAudioLatencyHint.h" |
#include "third_party/WebKit/public/platform/WebVector.h" |
#include "url/origin.h" |
@@ -21,20 +23,24 @@ class SilentSinkSuspender; |
} |
namespace content { |
-class RendererWebAudioDeviceImpl |
+class CONTENT_EXPORT RendererWebAudioDeviceImpl |
: public blink::WebAudioDevice, |
public media::AudioRendererSink::RenderCallback { |
public: |
- RendererWebAudioDeviceImpl(const media::AudioParameters& params, |
- blink::WebAudioDevice::RenderCallback* callback, |
- int session_id, |
- const url::Origin& security_origin); |
~RendererWebAudioDeviceImpl() override; |
+ static RendererWebAudioDeviceImpl* Create( |
+ media::ChannelLayout layout, |
+ const blink::WebAudioLatencyHint& latency_hint, |
+ blink::WebAudioDevice::RenderCallback* callback, |
+ int session_id, |
+ const url::Origin& security_origin); |
+ |
// blink::WebAudioDevice implementation. |
void start() override; |
void stop() override; |
double sampleRate() override; |
+ int framesPerBuffer() override; |
// AudioRendererSink::RenderCallback implementation. |
int Render(base::TimeDelta delay, |
@@ -44,8 +50,30 @@ class RendererWebAudioDeviceImpl |
void OnRenderError() override; |
+ protected: |
+ // Callback to get output device params (for tests). |
+ using OutputDeviceParamsCallback = base::Callback<media::AudioParameters( |
+ int frame_id, |
+ int session_id, |
+ const std::string& device_id, |
+ const url::Origin& security_origin)>; |
+ |
+ // Callback get render frame ID for current context (for tests). |
+ using RenderFrameIdCallback = base::Callback<int()>; |
+ |
+ RendererWebAudioDeviceImpl( |
+ media::ChannelLayout layout, |
+ const blink::WebAudioLatencyHint& latency_hint, |
+ blink::WebAudioDevice::RenderCallback* callback, |
+ int session_id, |
+ const url::Origin& security_origin, |
+ const OutputDeviceParamsCallback& device_params_cb, |
+ const RenderFrameIdCallback& render_frame_id_cb); |
+ |
private: |
- const media::AudioParameters params_; |
+ media::AudioParameters sink_params_; |
+ |
+ const blink::WebAudioLatencyHint latency_hint_; |
// Weak reference to the callback into WebKit code. |
blink::WebAudioDevice::RenderCallback* const client_callback_; |
@@ -66,6 +94,9 @@ class RendererWebAudioDeviceImpl |
// Used to suspend |sink_| usage when silence has been detected for too long. |
std::unique_ptr<media::SilentSinkSuspender> webaudio_suspender_; |
+ // Render frame routing ID for the current context. |
+ int frame_id_; |
+ |
DISALLOW_COPY_AND_ASSIGN(RendererWebAudioDeviceImpl); |
}; |