diff options
author | Torne (Richard Coles) <torne@google.com> | 2012-11-14 11:43:16 +0000 |
---|---|---|
committer | Torne (Richard Coles) <torne@google.com> | 2012-11-14 11:43:16 +0000 |
commit | 5821806d5e7f356e8fa4b058a389a808ea183019 (patch) | |
tree | e19f4793aac92e2c0d9a01087019a60d6657d838 /media/base/audio_renderer_mixer_input.h | |
parent | 8e79a8efe247f109aafd917a69e8a392961b3687 (diff) | |
download | chromium_org-5821806d5e7f356e8fa4b058a389a808ea183019.tar.gz |
Merge from Chromium at DEPS revision r167172
This commit was generated by merge_to_master.py.
Change-Id: Ib8d56fd5ae39a2d7e8c91dcd76cc6d13f25f2aab
Diffstat (limited to 'media/base/audio_renderer_mixer_input.h')
-rw-r--r-- | media/base/audio_renderer_mixer_input.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/media/base/audio_renderer_mixer_input.h b/media/base/audio_renderer_mixer_input.h new file mode 100644 index 0000000000..486f5c2f19 --- /dev/null +++ b/media/base/audio_renderer_mixer_input.h @@ -0,0 +1,70 @@ +// Copyright (c) 2012 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_MIXER_INPUT_H_ +#define MEDIA_BASE_AUDIO_RENDERER_MIXER_INPUT_H_ + +#include <vector> + +#include "base/callback.h" +#include "media/base/audio_renderer_sink.h" + +namespace media { + +class AudioRendererMixer; + +class MEDIA_EXPORT AudioRendererMixerInput + : NON_EXPORTED_BASE(public AudioRendererSink) { + public: + typedef base::Callback<AudioRendererMixer*( + const AudioParameters& params)> GetMixerCB; + typedef base::Callback<void(const AudioParameters& params)> RemoveMixerCB; + + AudioRendererMixerInput( + const GetMixerCB& get_mixer_cb, const RemoveMixerCB& remove_mixer_cb); + + AudioRendererSink::RenderCallback* callback() { return callback_; } + bool playing() { return playing_; } + + // 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(const AudioParameters& params, + AudioRendererSink::RenderCallback* renderer) OVERRIDE; + + void GetVolume(double* volume); + + protected: + virtual ~AudioRendererMixerInput(); + + private: + bool playing_; + bool initialized_; + bool started_; + double volume_; + + // Callbacks provided during construction which allow AudioRendererMixerInput + // to retrieve a mixer during Initialize() and notify when it's done with it. + GetMixerCB get_mixer_cb_; + RemoveMixerCB remove_mixer_cb_; + + // AudioParameters received during Initialize(). + AudioParameters params_; + + // AudioRendererMixer provided through |get_mixer_cb_| during Initialize(), + // guaranteed to live (at least) until |remove_mixer_cb_| is called. + AudioRendererMixer* mixer_; + + // Source of audio data which is provided to the mixer. + AudioRendererSink::RenderCallback* callback_; + + DISALLOW_COPY_AND_ASSIGN(AudioRendererMixerInput); +}; + +} // namespace media + +#endif // MEDIA_BASE_AUDIO_RENDERER_MIXER_INPUT_H_ |