| Index: media/audio/null_audio_sink.h
|
| diff --git a/media/audio/null_audio_sink.h b/media/audio/null_audio_sink.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c380dcad30afd3c26ade5ad73ef34f474d8c69a4
|
| --- /dev/null
|
| +++ b/media/audio/null_audio_sink.h
|
| @@ -0,0 +1,64 @@
|
| +// 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_FILTERS_NULL_AUDIO_RENDERER_H_
|
| +#define MEDIA_FILTERS_NULL_AUDIO_RENDERER_H_
|
| +
|
| +// NullAudioSink effectively uses an extra thread to "throw away" the
|
| +// audio data at a rate resembling normal playback speed. It's just like
|
| +// decoding to /dev/null!
|
| +//
|
| +// NullAudioSink can also be used in situations where the client has no
|
| +// audio device or we haven't written an audio implementation for a particular
|
| +// platform yet.
|
| +
|
| +#include <vector>
|
| +
|
| +#include "base/threading/thread.h"
|
| +#include "media/base/audio_renderer_sink.h"
|
| +
|
| +namespace media {
|
| +
|
| +class MEDIA_EXPORT NullAudioSink : public AudioRendererSink {
|
| + public:
|
| + NullAudioSink();
|
| + virtual ~NullAudioSink();
|
| +
|
| + // AudioRendererSink implementation.
|
| + virtual void Initialize(const AudioParameters& params,
|
| + RenderCallback* callback) OVERRIDE;
|
| + virtual void Start() OVERRIDE;
|
| + virtual void Stop() OVERRIDE;
|
| + virtual void Pause(bool flush) OVERRIDE;
|
| + virtual void Play() OVERRIDE;
|
| + virtual void SetPlaybackRate(float rate) OVERRIDE;
|
| + virtual bool SetVolume(double volume) OVERRIDE;
|
| + virtual void GetVolume(double* volume) OVERRIDE;
|
| +
|
| + private:
|
| + // Audio thread task that periodically calls FillBuffer() to consume
|
| + // audio data.
|
| + void FillBufferTask();
|
| +
|
| + void SetPlaying(bool is_playing);
|
| +
|
| + // A buffer passed to FillBuffer to advance playback.
|
| + std::vector<float*> audio_data_;
|
| +
|
| + AudioParameters params_;
|
| + bool initialized_;
|
| + float playback_rate_;
|
| + bool playing_;
|
| + RenderCallback* callback_;
|
| +
|
| + // Separate thread used to throw away data.
|
| + base::Thread thread_;
|
| + base::Lock lock_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(NullAudioSink);
|
| +};
|
| +
|
| +} // namespace media
|
| +
|
| +#endif // MEDIA_FILTERS_NULL_AUDIO_RENDERER_H_
|
|
|