| Index: content/renderer/media/audio_renderer_impl.h
|
| ===================================================================
|
| --- content/renderer/media/audio_renderer_impl.h (revision 97713)
|
| +++ content/renderer/media/audio_renderer_impl.h (working copy)
|
| @@ -44,34 +44,24 @@
|
| #include "base/shared_memory.h"
|
| #include "base/synchronization/lock.h"
|
| #include "base/threading/simple_thread.h"
|
| -#include "content/renderer/media/audio_message_filter.h"
|
| +#include "content/renderer/media/audio_device.h"
|
| #include "media/audio/audio_io.h"
|
| #include "media/audio/audio_manager.h"
|
| #include "media/base/filters.h"
|
| #include "media/filters/audio_renderer_base.h"
|
| +#include "media/filters/audio_renderer_sink.h"
|
|
|
| class AudioMessageFilter;
|
|
|
| class AudioRendererImpl
|
| : public media::AudioRendererBase,
|
| - public AudioMessageFilter::Delegate,
|
| - public base::DelegateSimpleThread::Delegate,
|
| + public media::AudioRendererSink::RenderCallback,
|
| public MessageLoop::DestructionObserver {
|
| public:
|
| // Methods called on Render thread ------------------------------------------
|
| - explicit AudioRendererImpl();
|
| + explicit AudioRendererImpl(MessageLoop* render_loop);
|
| virtual ~AudioRendererImpl();
|
|
|
| - // Methods called on IO thread ----------------------------------------------
|
| - // AudioMessageFilter::Delegate methods, called by AudioMessageFilter.
|
| - virtual void OnRequestPacket(AudioBuffersState buffers_state);
|
| - virtual void OnStateChanged(AudioStreamState state);
|
| - virtual void OnCreated(base::SharedMemoryHandle handle, uint32 length);
|
| - virtual void OnLowLatencyCreated(base::SharedMemoryHandle handle,
|
| - base::SyncSocket::Handle socket_handle,
|
| - uint32 length);
|
| - virtual void OnVolume(double volume);
|
| -
|
| // Methods called on pipeline thread ----------------------------------------
|
| // media::Filter implementation.
|
| virtual void SetPlaybackRate(float rate);
|
| @@ -82,6 +72,12 @@
|
| // media::AudioRenderer implementation.
|
| virtual void SetVolume(float volume);
|
|
|
| + // AudioRendererSink::RenderCallback implementation.
|
| + virtual void Render(const std::vector<float*>& audio_data,
|
| + size_t number_of_frames,
|
| + size_t audio_delay_milliseconds);
|
| + virtual void SetAudioRendererSink(media::AudioRendererSink* audio_sink);
|
| +
|
| protected:
|
| // Methods called on audio renderer thread ----------------------------------
|
| // These methods are called from AudioRendererBase.
|
| @@ -90,16 +86,8 @@
|
|
|
| // Called when the decoder completes a Read().
|
| virtual void ConsumeAudioSamples(scoped_refptr<media::Buffer> buffer_in);
|
| -
|
| +
|
| private:
|
| - // We are using either low- or high-latency code path.
|
| - enum LatencyType {
|
| - kUninitializedLatency = 0,
|
| - kLowLatency,
|
| - kHighLatency
|
| - };
|
| - static LatencyType latency_type_;
|
| -
|
| // For access to constructor and IO thread methods.
|
| friend class AudioRendererImplTest;
|
| friend class DelegateCaller;
|
| @@ -115,7 +103,7 @@
|
| // The following methods are tasks posted on the IO thread that needs to
|
| // be executed on that thread. They interact with AudioMessageFilter and
|
| // sends IPC messages on that thread.
|
| - void CreateStreamTask(const AudioParameters& params);
|
| + void InitializeTask(const AudioParameters& params);
|
| void PlayTask();
|
| void PauseTask();
|
| void SeekTask();
|
| @@ -126,45 +114,9 @@
|
| // Called on IO thread when message loop is dying.
|
| virtual void WillDestroyCurrentMessageLoop();
|
|
|
| - // DelegateSimpleThread::Delegate implementation.
|
| - virtual void Run();
|
| -
|
| - // (Re-)starts playback.
|
| - void NotifyDataAvailableIfNecessary();
|
| -
|
| - // Creates socket. Virtual so tests can override.
|
| - virtual void CreateSocket(base::SyncSocket::Handle socket_handle);
|
| -
|
| - // Launching audio thread. Virtual so tests can override.
|
| - virtual void CreateAudioThread();
|
| -
|
| - // Accessors used by tests.
|
| - LatencyType latency_type() {
|
| - return latency_type_;
|
| - }
|
| -
|
| - // Should be called before any class instance is created.
|
| - static void set_latency_type(LatencyType latency_type);
|
| -
|
| - // Helper method for IPC send calls.
|
| - void Send(IPC::Message* message);
|
| -
|
| // Used to calculate audio delay given bytes.
|
| uint32 bytes_per_second_;
|
|
|
| - // ID of the stream created in the browser process.
|
| - int32 stream_id_;
|
| -
|
| - // Memory shared by the browser process for audio buffer.
|
| - scoped_ptr<base::SharedMemory> shared_memory_;
|
| - uint32 shared_memory_size_;
|
| -
|
| - // Cached audio message filter (lives on the main render thread).
|
| - scoped_refptr<AudioMessageFilter> filter_;
|
| -
|
| - // Low latency IPC stuff.
|
| - scoped_ptr<base::SyncSocket> socket_;
|
| -
|
| // That thread waits for audio input.
|
| scoped_ptr<base::DelegateSimpleThread> audio_thread_;
|
|
|
| @@ -189,6 +141,10 @@
|
| // Remaining bytes for prerolling to complete.
|
| uint32 preroll_bytes_;
|
|
|
| + media::AudioRendererSink* audio_device_;
|
| + MessageLoop* render_loop_;
|
| + int bytes_per_frame_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(AudioRendererImpl);
|
| };
|
|
|
|
|