| Index: media/audio/audio_output_proxy.h
|
| ===================================================================
|
| --- media/audio/audio_output_proxy.h (revision 130123)
|
| +++ media/audio/audio_output_proxy.h (working copy)
|
| @@ -8,6 +8,7 @@
|
| #include "base/basictypes.h"
|
| #include "base/compiler_specific.h"
|
| #include "base/memory/ref_counted.h"
|
| +#include "base/synchronization/lock.h"
|
| #include "base/threading/non_thread_safe.h"
|
| #include "media/audio/audio_io.h"
|
| #include "media/audio/audio_parameters.h"
|
| @@ -24,6 +25,7 @@
|
| // physical output streams.
|
| class MEDIA_EXPORT AudioOutputProxy
|
| : public AudioOutputStream,
|
| + public AudioOutputStream::AudioSourceCallback,
|
| public NON_EXPORTED_BASE(base::NonThreadSafe) {
|
| public:
|
| // Caller keeps ownership of |dispatcher|.
|
| @@ -37,6 +39,13 @@
|
| virtual void GetVolume(double* volume) OVERRIDE;
|
| virtual void Close() OVERRIDE;
|
|
|
| + // AudioSourceCallback interface.
|
| + virtual uint32 OnMoreData(
|
| + AudioOutputStream* stream, uint8* dest, uint32 max_size,
|
| + AudioBuffersState buffers_state) OVERRIDE;
|
| + virtual void OnError(AudioOutputStream* stream, int code) OVERRIDE;
|
| + virtual void WaitTillDataReady() OVERRIDE;
|
| +
|
| private:
|
| enum State {
|
| kCreated,
|
| @@ -51,14 +60,16 @@
|
| scoped_refptr<AudioOutputDispatcher> dispatcher_;
|
| State state_;
|
|
|
| - // The actual audio stream. Must be set to NULL in any state other
|
| - // than kPlaying.
|
| - AudioOutputStream* physical_stream_;
|
| -
|
| // Need to save volume here, so that we can restore it in case the stream
|
| // is stopped, and then started again.
|
| double volume_;
|
|
|
| + // Callback.
|
| + AudioSourceCallback* audio_source_callback_;
|
| +
|
| + // Lock protecting |volume_| -- we can read it in the hardware audio thread.
|
| + base::Lock lock_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(AudioOutputProxy);
|
| };
|
|
|
|
|