| Index: content/renderer/media/audio_input_device.h
|
| ===================================================================
|
| --- content/renderer/media/audio_input_device.h (revision 98001)
|
| +++ content/renderer/media/audio_input_device.h (working copy)
|
| @@ -5,7 +5,7 @@
|
| // Low-latency audio capturing unit utilizing audio input stream provided
|
| // by browser process through IPC.
|
| //
|
| -// Relationship of classes.
|
| +// Relationship of classes:
|
| //
|
| // AudioInputController AudioInputDevice
|
| // ^ ^
|
| @@ -19,7 +19,7 @@
|
| // an AudioInputDevice::CaptureCallback at construction and will be called
|
| // by the AudioInputDevice with recorded audio from the underlying audio layers.
|
| //
|
| -// State sequences.
|
| +// State sequences:
|
| //
|
| // Task [IO thread] IPC [IO thread]
|
| //
|
| @@ -32,6 +32,7 @@
|
| // Stop --> ShutDownOnIOThread ------> AudioInputHostMsg_CloseStream -> Close
|
| //
|
| // This class utilizes three threads during its lifetime, namely:
|
| +//
|
| // 1. Creating thread.
|
| // Must be the main render thread. Start and Stop should be called on
|
| // this thread.
|
| @@ -42,6 +43,12 @@
|
| // Responsible for calling the CaptrureCallback and feed audio samples from
|
| // the audio layer in the browser process using sync sockets and shared
|
| // memory.
|
| +//
|
| +// Implementation notes:
|
| +//
|
| +// - Start() is asynchronous/non-blocking.
|
| +// - Stop() is synchronous/blocking.
|
| +// - The user must call Stop() before deleting the class instance.
|
|
|
| #ifndef CONTENT_RENDERER_MEDIA_AUDIO_INPUT_DEVICE_H_
|
| #define CONTENT_RENDERER_MEDIA_AUDIO_INPUT_DEVICE_H_
|
| @@ -59,6 +66,9 @@
|
|
|
| // TODO(henrika): This class is based on the AudioDevice class and it has
|
| // many components in common. Investigate potential for re-factoring.
|
| +// TODO(henrika): Add support for event handling (e.g. OnStateChanged,
|
| +// OnCaptureStopped etc.) and ensure that we can deliver these notifications
|
| +// to any clients using this class.
|
| class AudioInputDevice
|
| : public AudioInputMessageFilter::Delegate,
|
| public base::DelegateSimpleThread::Delegate,
|
| @@ -80,10 +90,13 @@
|
| CaptureCallback* callback);
|
| virtual ~AudioInputDevice();
|
|
|
| - // Starts audio capturing. Returns |true| on success.
|
| - bool Start();
|
| + // Starts audio capturing. This method is asynchronous/non-blocking.
|
| + // TODO(henrika): add support for notification when recording has started.
|
| + void Start();
|
|
|
| - // Stops audio capturing. Returns |true| on success.
|
| + // Stops audio capturing. This method is synchronous/blocking.
|
| + // Returns |true| on success.
|
| + // TODO(henrika): add support for notification when recording has stopped.
|
| bool Stop();
|
|
|
| // Sets the capture volume scaling, with range [0.0, 1.0] inclusive.
|
| @@ -111,7 +124,7 @@
|
| // sends IPC messages on that thread.
|
| void InitializeOnIOThread(const AudioParameters& params);
|
| void StartOnIOThread();
|
| - void ShutDownOnIOThread();
|
| + void ShutDownOnIOThread(base::WaitableEvent* completion);
|
| void SetVolumeOnIOThread(double volume);
|
|
|
| void Send(IPC::Message* message);
|
|
|