Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1810)

Unified Diff: content/renderer/media/renderer_webaudiodevice_impl.h

Issue 2501863003: Support for AudioContextOptions latencyHint. (Closed)
Patch Set: Update RendererWebAudioDeviceImpl unit tests. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..a5b1d58bf05581cb65f89b8ecd5b28b7395f9c89 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,25 @@ 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);
+ media::AudioLatency::LatencyType latencyType();
+
// 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 +51,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 +95,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);
};

Powered by Google App Engine
This is Rietveld 408576698