| 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);
|
| };
|
|
|
|
|