Index: media/filters/audio_renderer_sink.h |
=================================================================== |
--- media/filters/audio_renderer_sink.h (revision 0) |
+++ media/filters/audio_renderer_sink.h (revision 0) |
@@ -0,0 +1,48 @@ |
+// 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_FILTERS_AUDIO_RENDERER_SINK_H_ |
+#define MEDIA_FILTERS_AUDIO_RENDERER_SINK_H_ |
+ |
+#include "base/basictypes.h" |
+#include "base/memory/ref_counted.h" |
+#include "base/memory/scoped_ptr.h" |
+ |
+namespace media { |
+ |
+// AudioRendererSink is an abstract base class representing the end-point for |
+// rendered audio in the renderer process. An implementation is expected to |
+// periodically call Render() on a callback object. A typical implementation |
+// will talk with the browser process to get a rendered audio stream to the |
+// audio hardware. |
+ |
+class AudioRendererSink |
+ : public base::RefCountedThreadSafe<media::AudioRendererSink> { |
+ public: |
+ class RenderCallback { |
+ public: |
+ virtual void Render(const std::vector<float*>& audio_data, |
+ size_t number_of_frames, |
+ size_t audio_delay_milliseconds) = 0; |
+ |
+ virtual void SetAudioRendererSink(media::AudioRendererSink* audio_sink) { } |
+ |
+ protected: |
+ virtual ~RenderCallback() { } |
+ }; |
+ |
+ // Starts audio playback. Returns |true| on success. |
+ virtual bool Start() = 0; |
+ |
+ // Stops audio playback. Returns |true| on success. |
+ virtual bool Stop() = 0; |
+ |
+ // Sets the playback volume, with range [0.0, 1.0] inclusive. |
+ // Returns |true| on success. |
+ virtual bool SetVolume(double volume) = 0; |
+}; |
+ |
+} // namespace media |
+ |
+#endif // MEDIA_FILTERS_AUDIO_RENDERER_SINK_H_ |