Index: content/renderer/media/webrtc_audio_capturer.cc |
diff --git a/content/renderer/media/webrtc_audio_capturer.cc b/content/renderer/media/webrtc_audio_capturer.cc |
index 8313fcac5f4228ebf10ff50856e2a12ab2f41edb..3e9329d02aec91cc677cc5096f8f3fe9704a4e03 100644 |
--- a/content/renderer/media/webrtc_audio_capturer.cc |
+++ b/content/renderer/media/webrtc_audio_capturer.cc |
@@ -212,7 +212,8 @@ WebRtcAudioCapturer::WebRtcAudioCapturer( |
peer_connection_mode_(false), |
key_pressed_(false), |
need_audio_processing_(false), |
- audio_device_(audio_device) { |
+ audio_device_(audio_device), |
+ aec_dump_file_(base::kInvalidPlatformFileValue) { |
DVLOG(1) << "WebRtcAudioCapturer::WebRtcAudioCapturer()"; |
} |
@@ -298,6 +299,10 @@ void WebRtcAudioCapturer::SetCapturerSource( |
scoped_refptr<MediaStreamAudioProcessor> new_audio_processor( |
new MediaStreamAudioProcessor(params, constraints, effects, |
audio_device_)); |
+ // Start the Aec dump on the new audio processor object. |
+ if (aec_dump_file_ != base::kInvalidPlatformFileValue) |
+ new_audio_processor->StartAecDump(aec_dump_file_); |
+ |
{ |
base::AutoLock auto_lock(lock_); |
audio_processor_ = new_audio_processor; |
@@ -351,6 +356,7 @@ void WebRtcAudioCapturer::EnablePeerConnectionMode() { |
} |
void WebRtcAudioCapturer::Start() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
DVLOG(1) << "WebRtcAudioCapturer::Start()"; |
base::AutoLock auto_lock(lock_); |
if (running_ || !source_) |
@@ -364,6 +370,7 @@ void WebRtcAudioCapturer::Start() { |
} |
void WebRtcAudioCapturer::Stop() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
DVLOG(1) << "WebRtcAudioCapturer::Stop()"; |
scoped_refptr<media::AudioCapturerSource> source; |
TrackList::ItemList tracks; |
@@ -382,6 +389,9 @@ void WebRtcAudioCapturer::Stop() { |
if (audio_device_) |
audio_device_->RemoveAudioCapturer(this); |
+ // Stop the Aec dump. |
+ StopAecDump(); |
+ |
for (TrackList::ItemList::const_iterator it = tracks.begin(); |
it != tracks.end(); |
++it) { |
@@ -566,4 +576,27 @@ void WebRtcAudioCapturer::SetCapturerSourceForTesting( |
constraints_); |
} |
+void WebRtcAudioCapturer::StartAecDump( |
+ const base::PlatformFile& aec_dump_file) { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ DCHECK_NE(aec_dump_file, base::kInvalidPlatformFileValue); |
+ DCHECK(aec_dump_file_ == base::kInvalidPlatformFileValue || |
+ aec_dump_file_ == aec_dump_file); |
Henrik Grunell
2014/03/06 10:12:20
IS it expected to be called multiple times with th
no longer working on chromium
2014/03/06 18:57:21
The code was removed.
|
+ // Do nothing if the Aec dump has been started. |
+ if (aec_dump_file_ != base::kInvalidPlatformFileValue) |
+ return; |
+ |
+ audio_processor_->StartAecDump(aec_dump_file); |
+ aec_dump_file_ = aec_dump_file; |
Henrik Grunell
2014/03/06 10:12:20
|audio_processor_| takes ownership of |aec_dump_fi
no longer working on chromium
2014/03/06 18:57:21
Done.
|
+} |
+ |
+void WebRtcAudioCapturer::StopAecDump() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ if (aec_dump_file_ == base::kInvalidPlatformFileValue) |
+ return; |
+ |
+ audio_processor_->StopAecDump(); |
+ aec_dump_file_ = base::kInvalidPlatformFileValue; |
+} |
+ |
} // namespace content |