1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef MEDIA_FILTERS_NULL_AUDIO_RENDERER_H_
6 #define MEDIA_FILTERS_NULL_AUDIO_RENDERER_H_
8 // NullAudioRenderer effectively uses an extra thread to "throw away" the
9 // audio data at a rate resembling normal playback speed. It's just like
10 // decoding to /dev/null!
12 // NullAudioRenderer can also be used in situations where the client has no
13 // audio device or we haven't written an audio implementation for a particular
18 #include "base/memory/scoped_ptr.h"
19 #include "base/threading/platform_thread.h"
20 #include "media/base/buffers.h"
21 #include "media/base/filters.h"
22 #include "media/filters/audio_renderer_base.h"
26 class MEDIA_EXPORT NullAudioRenderer
27 : public AudioRendererBase
,
28 public base::PlatformThread::Delegate
{
31 virtual ~NullAudioRenderer();
33 // AudioRenderer implementation.
34 virtual void SetVolume(float volume
);
36 // PlatformThread::Delegate implementation.
37 virtual void ThreadMain();
40 // AudioRendererBase implementation.
41 virtual bool OnInitialize(int bits_per_channel
,
42 ChannelLayout channel_layout
,
44 virtual void OnStop();
47 // A number to convert bytes written in FillBuffer to milliseconds based on
49 size_t bytes_per_millisecond_
;
51 // A buffer passed to FillBuffer to advance playback.
52 scoped_array
<uint8
> buffer_
;
55 // Separate thread used to throw away data.
56 base::PlatformThreadHandle thread_
;
61 DISALLOW_COPY_AND_ASSIGN(NullAudioRenderer
);
66 #endif // MEDIA_FILTERS_NULL_AUDIO_RENDERER_H_