Chromium Code Reviews| 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..d6c1ca8a79397d4822064c1fb74bab9678a31dac 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,29 @@ class RendererWebAudioDeviceImpl |
| void OnRenderError() override; |
| + protected: |
| + // Callback to get output device params (for tests) |
|
o1ka
2016/12/07 20:56:01
nit: end with "."
Andrew MacPherson
2016/12/08 10:06:12
Done.
|
| + 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) |
|
o1ka
2016/12/07 20:56:01
nits: empty line before this one, dot in the end
Andrew MacPherson
2016/12/08 10:06:12
Done.
|
| + 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 +93,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); |
| }; |