Chromium Code Reviews| Index: content/renderer/render_audiosourceprovider.h |
| =================================================================== |
| --- content/renderer/render_audiosourceprovider.h (revision 0) |
| +++ content/renderer/render_audiosourceprovider.h (revision 0) |
| @@ -0,0 +1,67 @@ |
| +// 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 CONTENT_RENDERER_RENDER_AUDIOSOURCEPROVIDER_H_ |
| +#define CONTENT_RENDERER_RENDER_AUDIOSOURCEPROVIDER_H_ |
| + |
| +#include <vector> |
| + |
| +#include "media/filters/audio_renderer_sink.h" |
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebAudioSourceProvider.h" |
| +#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebVector.h" |
| + |
| +// RenderAudioSourceProvider provides a bridge between classes: |
| +// WebKit::WebAudioSourceProvider <---> media::AudioRendererSink |
| +// |
| +// WebKit periodically calls provideInput() |
| +// to render a certain number of audio sample-frames. provideInput() |
| +// uses the renderer to get this data, and then massages it into the form |
| +// required by provideInput(). |
| + |
| +namespace WebKit { |
| +class WebAudioSourceProviderClient; |
| +} |
| + |
| +class RenderAudioSourceProvider |
| + : public WebKit::WebAudioSourceProvider, |
| + public media::AudioRendererSink { |
| + public: |
| + explicit RenderAudioSourceProvider( |
| + media::AudioRendererSink::RenderCallback* callback); |
| + virtual ~RenderAudioSourceProvider() { } |
|
tommi (sloooow) - chröme
2011/12/19 15:26:24
{}
Chris Rogers
2011/12/19 21:40:35
Done.
|
| + |
| + // WebKit::WebAudioSourceProvider implementation. |
| + |
| + // WebKit calls setClient() if it desires to take control of the rendered |
| + // audio stream. We call client's setFormat() when the audio stream format |
| + // is known. |
| + virtual void setClient(WebKit::WebAudioSourceProviderClient* client); |
| + |
| + // If setClient() has been called, then WebKit calls provideInput() |
| + // periodically to get the rendered audio stream. |
| + virtual void provideInput(const WebKit::WebVector<float*>& audio_data, |
| + size_t number_of_frames); |
| + |
| + // AudioRendererSink implementation. |
| + virtual void Start() OVERRIDE; |
| + virtual void Stop() OVERRIDE; |
| + virtual void Play() OVERRIDE; |
| + virtual void Pause(bool flush) OVERRIDE; |
| + virtual bool SetVolume(double volume) OVERRIDE; |
| + virtual void Initialize(size_t buffer_size, |
| + int channels, |
| + double sample_rate, |
| + AudioParameters::Format latency_format, |
| + RenderCallback* renderer) OVERRIDE; |
| + |
| + private: |
| + bool is_running_; |
| + double volume_; |
| + media::AudioRendererSink::RenderCallback* renderer_; |
| + WebKit::WebAudioSourceProviderClient* client_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(RenderAudioSourceProvider); |
| +}; |
| + |
| +#endif // CONTENT_RENDERER_RENDER_AUDIOSOURCEPROVIDER_H_ |