| Index: media/audio/virtual_audio_output_stream.h
|
| diff --git a/media/audio/virtual_audio_output_stream.h b/media/audio/virtual_audio_output_stream.h
|
| index 84b929c73cd2b6291dc234a5964a4c7cd798b1b7..777332ecbf08e6e850f50af2cc54a69a574b938c 100644
|
| --- a/media/audio/virtual_audio_output_stream.h
|
| +++ b/media/audio/virtual_audio_output_stream.h
|
| @@ -11,6 +11,7 @@
|
| #include "media/audio/audio_io.h"
|
| #include "media/audio/audio_parameters.h"
|
| #include "media/base/audio_converter.h"
|
| +#include "media/base/audio_shifter.h"
|
|
|
| namespace media {
|
|
|
| @@ -66,6 +67,45 @@ class MEDIA_EXPORT VirtualAudioOutputStream
|
| DISALLOW_COPY_AND_ASSIGN(VirtualAudioOutputStream);
|
| };
|
|
|
| +class MEDIA_EXPORT AudioPushSink : public AudioInputStream::AudioInputCallback {
|
| + public:
|
| + virtual void Start() = 0;
|
| + virtual void Stop() = 0;
|
| + virtual void Close() = 0;
|
| +};
|
| +
|
| +class MEDIA_EXPORT LoopbackSink : public AudioPushSink,
|
| + public AudioConverter::InputCallback {
|
| + public:
|
| + typedef base::Callback<void(LoopbackSink* sink)> AfterCloseCallback;
|
| +
|
| + LoopbackSink(AudioParameters param,
|
| + VirtualAudioInputStream* target,
|
| + AfterCloseCallback callback);
|
| + ~LoopbackSink() override;
|
| +
|
| + // AudioPushSink
|
| + void Start() override;
|
| + void Stop() override;
|
| + void Close() override;
|
| + void OnData(AudioInputStream* stream,
|
| + const AudioBus* source,
|
| + uint32_t hardware_delay_bytes,
|
| + double volume) override;
|
| + void OnError(AudioInputStream* stream) override;
|
| +
|
| + // AudioConverter::InputCallback
|
| + double ProvideInput(AudioBus* audio_bus,
|
| + base::TimeDelta buffer_delay) override;
|
| +
|
| + private:
|
| + bool started_;
|
| + AudioParameters params_;
|
| + VirtualAudioInputStream* target_;
|
| + std::unique_ptr<AudioShifter> shifter_;
|
| + AfterCloseCallback after_close_callback_;
|
| +};
|
| +
|
| } // namespace media
|
|
|
| #endif // MEDIA_AUDIO_VIRTUAL_AUDIO_OUTPUT_STREAM_H_
|
|
|