| Index: content/renderer/media/webrtc_audio_device_impl.h
|
| diff --git a/content/renderer/media/webrtc_audio_device_impl.h b/content/renderer/media/webrtc_audio_device_impl.h
|
| index d182acfe04c2d9b4e693b38b9992a8d153c362f0..042ecac9e8b18160de1ccf60705b9a19e72a280f 100644
|
| --- a/content/renderer/media/webrtc_audio_device_impl.h
|
| +++ b/content/renderer/media/webrtc_audio_device_impl.h
|
| @@ -16,6 +16,7 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/threading/thread_checker.h"
|
| #include "content/common/content_export.h"
|
| +#include "content/renderer/media/aec_dump_message_filter.h"
|
| #include "content/renderer/media/webrtc_audio_capturer.h"
|
| #include "content/renderer/media/webrtc_audio_device_not_impl.h"
|
| #include "ipc/ipc_platform_file.h"
|
| @@ -271,7 +272,8 @@ class CONTENT_EXPORT WebRtcAudioDeviceImpl
|
| : NON_EXPORTED_BASE(public PeerConnectionAudioSink),
|
| NON_EXPORTED_BASE(public WebRtcAudioDeviceNotImpl),
|
| NON_EXPORTED_BASE(public WebRtcAudioRendererSource),
|
| - NON_EXPORTED_BASE(public WebRtcPlayoutDataSource) {
|
| + NON_EXPORTED_BASE(public WebRtcPlayoutDataSource),
|
| + NON_EXPORTED_BASE(public AecDumpMessageFilter::AecDumpObserver) {
|
| public:
|
| // The maximum volume value WebRtc uses.
|
| static const int kMaxVolumeLevel = 255;
|
| @@ -325,6 +327,13 @@ class CONTENT_EXPORT WebRtcAudioDeviceImpl
|
| virtual int32_t RecordingSampleRate(uint32_t* sample_rate) const OVERRIDE;
|
| virtual int32_t PlayoutSampleRate(uint32_t* sample_rate) const OVERRIDE;
|
|
|
| + // AecDumpMessageFilter::AecDumpObserver implementation.
|
| + virtual void OnAecDumpFile(
|
| + int id,
|
| + const IPC::PlatformFileForTransit& file_handle) OVERRIDE;
|
| + virtual void OnDisableAecDump() OVERRIDE;
|
| + virtual void OnIpcClosed() OVERRIDE;
|
| +
|
| // Sets the |renderer_|, returns false if |renderer_| already exists.
|
| // Called on the main renderer thread.
|
| bool SetAudioRenderer(WebRtcAudioRenderer* renderer);
|
| @@ -353,17 +362,8 @@ class CONTENT_EXPORT WebRtcAudioDeviceImpl
|
| return renderer_;
|
| }
|
|
|
| - // Enables the Aec dump. If the default capturer exists, it will call
|
| - // StartAecDump() on the capturer and pass the ownership of the file to
|
| - // WebRtc. Otherwise it will hold the file until a capturer is added.
|
| - void EnableAecDump(base::File aec_dump_file);
|
| -
|
| - // Disables the Aec dump. When this method is called, the ongoing Aec dump
|
| - // on WebRtc will be stopped.
|
| - void DisableAecDump();
|
| -
|
| private:
|
| - typedef std::list<scoped_refptr<WebRtcAudioCapturer> > CapturerList;
|
| + typedef std::map<int, scoped_refptr<WebRtcAudioCapturer> > CapturerMap;
|
| typedef std::list<WebRtcPlayoutDataSource::Sink*> PlayoutDataSinkList;
|
| class RenderBuffer;
|
|
|
| @@ -401,17 +401,20 @@ class CONTENT_EXPORT WebRtcAudioDeviceImpl
|
| virtual void AddPlayoutSink(WebRtcPlayoutDataSource::Sink* sink) OVERRIDE;
|
| virtual void RemovePlayoutSink(WebRtcPlayoutDataSource::Sink* sink) OVERRIDE;
|
|
|
| - // Helper to start the Aec dump if the default capturer exists.
|
| - void MaybeStartAecDump();
|
| + // Registers capturer with ID |id| as an AEC dump consumer with the browser.
|
| + void RegisterAecDumpForId(int id);
|
| +
|
| + // Disables the AEC dump on all capturers.
|
| + void DisableAecDump();
|
|
|
| // Used to DCHECK that we are called on the correct thread.
|
| base::ThreadChecker thread_checker_;
|
|
|
| int ref_count_;
|
|
|
| - // List of captures which provides access to the native audio input layer
|
| + // Map of captures which provides access to the native audio input layer
|
| // in the browser process.
|
| - CapturerList capturers_;
|
| + CapturerMap capturers_;
|
|
|
| // Provides access to the audio renderer in the browser process.
|
| scoped_refptr<WebRtcAudioRenderer> renderer_;
|
| @@ -452,8 +455,11 @@ class CONTENT_EXPORT WebRtcAudioDeviceImpl
|
| // It is only accessed by the audio render thread.
|
| std::vector<int16> render_buffer_;
|
|
|
| - // Used for start the Aec dump on the default capturer.
|
| - base::File aec_dump_file_;
|
| + // Communication with browser for AEC dump.
|
| + // This is only used if audio track processing is enabled.
|
| + // TODO(xians): Remove the above comment line when option to disable audio
|
| + // track processing is removed.
|
| + scoped_refptr<AecDumpMessageFilter> aec_dump_message_filter_;
|
|
|
| // Flag to tell if audio processing is enabled in MediaStreamAudioProcessor.
|
| const bool is_audio_track_processing_enabled_;
|
|
|