From 9e2269da3e7cd37c98422d4bd7f79c1048a4bd40 Mon Sep 17 00:00:00 2001
From: "crogers@google.com"
 <crogers@google.com@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Sat, 7 Jan 2012 00:06:21 +0000
Subject: Integrate HTMLMediaElement with Web Audio API's
 MediaElementAudioSourceNode (take 2) RenderAudioSourceProvider implements
 WebKit::WebAudioSourceProvider using AudioRendererImpl

BUG=none
TEST=none
(tested locally)
Original Code Review: http://codereview.chromium.org/8980008/
Review URL: http://codereview.chromium.org/9122009

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@116778 0039d316-1c4b-4281-b951-d872f2087c98
---
 media/base/audio_renderer_sink.h | 71 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 71 insertions(+)
 create mode 100644 media/base/audio_renderer_sink.h

(limited to 'media')

diff --git a/media/base/audio_renderer_sink.h b/media/base/audio_renderer_sink.h
new file mode 100644
index 0000000..5888c6b
--- /dev/null
+++ b/media/base/audio_renderer_sink.h
@@ -0,0 +1,71 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MEDIA_BASE_AUDIO_RENDERER_SINK_H_
+#define MEDIA_BASE_AUDIO_RENDERER_SINK_H_
+
+#include <vector>
+#include "base/basictypes.h"
+#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
+#include "media/audio/audio_parameters.h"
+#include "media/base/media_export.h"
+
+namespace media {
+
+// AudioRendererSink is an interface representing the end-point for
+// rendered audio.  An implementation is expected to
+// periodically call Render() on a callback object.
+
+class AudioRendererSink
+    : public base::RefCountedThreadSafe<media::AudioRendererSink> {
+ public:
+  class RenderCallback {
+   public:
+    // Fills entire buffer of length |number_of_frames| but returns actual
+    // number of frames it got from its source (|number_of_frames| in case of
+    // continuous stream). That actual number of frames is passed to host
+    // together with PCM audio data and host is free to use or ignore it.
+    // TODO(crogers): use base:Callback instead.
+    virtual size_t Render(const std::vector<float*>& audio_data,
+                          size_t number_of_frames,
+                          size_t audio_delay_milliseconds) = 0;
+
+   protected:
+    virtual ~RenderCallback() {}
+  };
+
+  virtual ~AudioRendererSink() {}
+
+  // Sets important information about the audio stream format.
+  // It must be called before any of the other methods.
+  virtual void Initialize(size_t buffer_size,
+                          int channels,
+                          double sample_rate,
+                          AudioParameters::Format latency_format,
+                          RenderCallback* callback) = 0;
+
+  // Starts audio playback.
+  virtual void Start() = 0;
+
+  // Stops audio playback.
+  virtual void Stop() = 0;
+
+  // Pauses playback.
+  virtual void Pause(bool flush) = 0;
+
+  // Resumes playback after calling Pause().
+  virtual void Play() = 0;
+
+  // Sets the playback volume, with range [0.0, 1.0] inclusive.
+  // Returns |true| on success.
+  virtual bool SetVolume(double volume) = 0;
+
+  // Gets the playback volume, with range [0.0, 1.0] inclusive.
+  virtual void GetVolume(double* volume) = 0;
+};
+
+}  // namespace media
+
+#endif  // MEDIA_BASE_AUDIO_RENDERER_SINK_H_
-- 
cgit v1.1