Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(115)

Side by Side Diff: content/renderer/media/media_stream_audio_processor.cc

Issue 334743006: Support multiple files for AEC dump. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Minor cleanup. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/media_stream_audio_processor.h" 5 #include "content/renderer/media/media_stream_audio_processor.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "content/public/common/content_switches.h" 10 #include "content/public/common/content_switches.h"
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 const blink::WebMediaConstraints& constraints, 170 const blink::WebMediaConstraints& constraints,
171 int effects, 171 int effects,
172 WebRtcPlayoutDataSource* playout_data_source) 172 WebRtcPlayoutDataSource* playout_data_source)
173 : render_delay_ms_(0), 173 : render_delay_ms_(0),
174 playout_data_source_(playout_data_source), 174 playout_data_source_(playout_data_source),
175 audio_mirroring_(false), 175 audio_mirroring_(false),
176 typing_detected_(false) { 176 typing_detected_(false) {
177 capture_thread_checker_.DetachFromThread(); 177 capture_thread_checker_.DetachFromThread();
178 render_thread_checker_.DetachFromThread(); 178 render_thread_checker_.DetachFromThread();
179 InitializeAudioProcessingModule(constraints, effects); 179 InitializeAudioProcessingModule(constraints, effects);
180 if (IsAudioTrackProcessingEnabled()) {
181 aec_dump_message_filter_ = AecDumpMessageFilter::Get();
182 aec_dump_message_filter_->AddDelegate(this);
183 }
180 } 184 }
181 185
182 MediaStreamAudioProcessor::~MediaStreamAudioProcessor() { 186 MediaStreamAudioProcessor::~MediaStreamAudioProcessor() {
183 DCHECK(main_thread_checker_.CalledOnValidThread()); 187 DCHECK(main_thread_checker_.CalledOnValidThread());
188 if (aec_dump_message_filter_) {
189 aec_dump_message_filter_->RemoveDelegate(this);
190 aec_dump_message_filter_ = NULL;
191 }
184 StopAudioProcessing(); 192 StopAudioProcessing();
185 } 193 }
186 194
187 void MediaStreamAudioProcessor::OnCaptureFormatChanged( 195 void MediaStreamAudioProcessor::OnCaptureFormatChanged(
188 const media::AudioParameters& source_params) { 196 const media::AudioParameters& source_params) {
189 DCHECK(main_thread_checker_.CalledOnValidThread()); 197 DCHECK(main_thread_checker_.CalledOnValidThread());
190 // There is no need to hold a lock here since the caller guarantees that 198 // There is no need to hold a lock here since the caller guarantees that
191 // there is no more PushCaptureData() and ProcessAndConsumeData() callbacks 199 // there is no more PushCaptureData() and ProcessAndConsumeData() callbacks
192 // on the capture thread. 200 // on the capture thread.
193 InitializeCaptureConverter(source_params); 201 InitializeCaptureConverter(source_params);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 } 239 }
232 240
233 const media::AudioParameters& MediaStreamAudioProcessor::InputFormat() const { 241 const media::AudioParameters& MediaStreamAudioProcessor::InputFormat() const {
234 return capture_converter_->source_parameters(); 242 return capture_converter_->source_parameters();
235 } 243 }
236 244
237 const media::AudioParameters& MediaStreamAudioProcessor::OutputFormat() const { 245 const media::AudioParameters& MediaStreamAudioProcessor::OutputFormat() const {
238 return capture_converter_->sink_parameters(); 246 return capture_converter_->sink_parameters();
239 } 247 }
240 248
241 void MediaStreamAudioProcessor::StartAecDump(base::File aec_dump_file) { 249 void MediaStreamAudioProcessor::OnAecDumpFile(
250 const IPC::PlatformFileForTransit& file_handle) {
251 DCHECK(main_thread_checker_.CalledOnValidThread());
252
253 base::File file = IPC::PlatformFileForTransitToFile(file_handle);
254 DCHECK(file.IsValid());
255
242 if (audio_processing_) 256 if (audio_processing_)
243 StartEchoCancellationDump(audio_processing_.get(), aec_dump_file.Pass()); 257 StartEchoCancellationDump(audio_processing_.get(), file.Pass());
258 else
259 file.Close();
244 } 260 }
245 261
246 void MediaStreamAudioProcessor::StopAecDump() { 262 void MediaStreamAudioProcessor::OnDisableAecDump() {
263 DCHECK(main_thread_checker_.CalledOnValidThread());
247 if (audio_processing_) 264 if (audio_processing_)
248 StopEchoCancellationDump(audio_processing_.get()); 265 StopEchoCancellationDump(audio_processing_.get());
249 } 266 }
250 267
268 void MediaStreamAudioProcessor::OnIpcClosing() {
269 DCHECK(main_thread_checker_.CalledOnValidThread());
270 aec_dump_message_filter_ = NULL;
271 }
272
251 void MediaStreamAudioProcessor::OnPlayoutData(media::AudioBus* audio_bus, 273 void MediaStreamAudioProcessor::OnPlayoutData(media::AudioBus* audio_bus,
252 int sample_rate, 274 int sample_rate,
253 int audio_delay_milliseconds) { 275 int audio_delay_milliseconds) {
254 DCHECK(render_thread_checker_.CalledOnValidThread()); 276 DCHECK(render_thread_checker_.CalledOnValidThread());
255 DCHECK(audio_processing_->echo_control_mobile()->is_enabled() ^ 277 DCHECK(audio_processing_->echo_control_mobile()->is_enabled() ^
256 audio_processing_->echo_cancellation()->is_enabled()); 278 audio_processing_->echo_cancellation()->is_enabled());
257 279
258 TRACE_EVENT0("audio", "MediaStreamAudioProcessor::OnPlayoutData"); 280 TRACE_EVENT0("audio", "MediaStreamAudioProcessor::OnPlayoutData");
259 DCHECK_LT(audio_delay_milliseconds, 281 DCHECK_LT(audio_delay_milliseconds,
260 std::numeric_limits<base::subtle::Atomic32>::max()); 282 std::numeric_limits<base::subtle::Atomic32>::max());
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 // Return 0 if the volume has not been changed, otherwise return the new 509 // Return 0 if the volume has not been changed, otherwise return the new
488 // volume. 510 // volume.
489 return (agc->stream_analog_level() == volume) ? 511 return (agc->stream_analog_level() == volume) ?
490 0 : agc->stream_analog_level(); 512 0 : agc->stream_analog_level();
491 } 513 }
492 514
493 void MediaStreamAudioProcessor::StopAudioProcessing() { 515 void MediaStreamAudioProcessor::StopAudioProcessing() {
494 if (!audio_processing_.get()) 516 if (!audio_processing_.get())
495 return; 517 return;
496 518
497 StopAecDump(); 519 StopEchoCancellationDump(audio_processing_.get());
498 520
499 if (playout_data_source_) 521 if (playout_data_source_)
500 playout_data_source_->RemovePlayoutSink(this); 522 playout_data_source_->RemovePlayoutSink(this);
501 523
502 audio_processing_.reset(); 524 audio_processing_.reset();
503 } 525 }
504 526
505 } // namespace content 527 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698