OLD | NEW |
---|---|
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 #ifndef CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_IMPL_H_ | 5 #ifndef CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_IMPL_H_ |
6 #define CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_IMPL_H_ | 6 #define CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_IMPL_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
12 #include "base/compiler_specific.h" | 12 #include "base/compiler_specific.h" |
13 #include "base/logging.h" | 13 #include "base/logging.h" |
14 #include "base/memory/ref_counted.h" | 14 #include "base/memory/ref_counted.h" |
15 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
16 #include "base/threading/thread_checker.h" | 16 #include "base/threading/thread_checker.h" |
17 #include "content/common/content_export.h" | 17 #include "content/common/content_export.h" |
18 #include "content/renderer/media/webrtc_audio_capturer.h" | 18 #include "content/renderer/media/webrtc_audio_capturer.h" |
19 #include "content/renderer/media/webrtc_audio_device_not_impl.h" | 19 #include "content/renderer/media/webrtc_audio_device_not_impl.h" |
20 #include "content/renderer/media/webrtc_audio_renderer.h" | 20 #include "content/renderer/media/webrtc_audio_renderer.h" |
21 #include "ipc/ipc_platform_file.h" | |
21 #include "media/base/audio_capturer_source.h" | 22 #include "media/base/audio_capturer_source.h" |
22 #include "media/base/audio_renderer_sink.h" | 23 #include "media/base/audio_renderer_sink.h" |
23 | 24 |
24 // A WebRtcAudioDeviceImpl instance implements the abstract interface | 25 // A WebRtcAudioDeviceImpl instance implements the abstract interface |
25 // webrtc::AudioDeviceModule which makes it possible for a user (e.g. webrtc:: | 26 // webrtc::AudioDeviceModule which makes it possible for a user (e.g. webrtc:: |
26 // VoiceEngine) to register this class as an external AudioDeviceModule (ADM). | 27 // VoiceEngine) to register this class as an external AudioDeviceModule (ADM). |
27 // Then WebRtcAudioDeviceImpl::SetSessionId() needs to be called to set the | 28 // Then WebRtcAudioDeviceImpl::SetSessionId() needs to be called to set the |
28 // session id that tells which device to use. The user can then call | 29 // session id that tells which device to use. The user can then call |
29 // WebRtcAudioDeviceImpl::StartPlayout() and | 30 // WebRtcAudioDeviceImpl::StartPlayout() and |
30 // WebRtcAudioDeviceImpl::StartRecording() from the render process to initiate | 31 // WebRtcAudioDeviceImpl::StartRecording() from the render process to initiate |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
338 // Returns true if the capture device has a paired output device, otherwise | 339 // Returns true if the capture device has a paired output device, otherwise |
339 // false. Note that if there are more than one open capture device the | 340 // false. Note that if there are more than one open capture device the |
340 // function will not be able to pick an appropriate device and return false. | 341 // function will not be able to pick an appropriate device and return false. |
341 bool GetAuthorizedDeviceInfoForAudioRenderer( | 342 bool GetAuthorizedDeviceInfoForAudioRenderer( |
342 int* session_id, int* output_sample_rate, int* output_buffer_size); | 343 int* session_id, int* output_sample_rate, int* output_buffer_size); |
343 | 344 |
344 const scoped_refptr<WebRtcAudioRenderer>& renderer() const { | 345 const scoped_refptr<WebRtcAudioRenderer>& renderer() const { |
345 return renderer_; | 346 return renderer_; |
346 } | 347 } |
347 | 348 |
349 // Enables the Aec dump. When this method is called, Aec dump will be | |
350 // started on the default capturer. | |
Henrik Grunell
2014/03/06 10:12:20
Comment that it takes ownership of |file_handle|.
no longer working on chromium
2014/03/06 18:57:21
Done.
| |
351 void EnableAecDump(IPC::PlatformFileForTransit file_handle); | |
352 | |
353 // Disables the Aec dump. When this method is called, the ongoing Aec dump | |
354 // will be stopped, and no Aec dump will be started. | |
355 void DisableAecDump(); | |
356 | |
348 private: | 357 private: |
349 typedef std::list<scoped_refptr<WebRtcAudioCapturer> > CapturerList; | 358 typedef std::list<scoped_refptr<WebRtcAudioCapturer> > CapturerList; |
350 typedef std::list<WebRtcPlayoutDataSource::Sink*> PlayoutDataSinkList; | 359 typedef std::list<WebRtcPlayoutDataSource::Sink*> PlayoutDataSinkList; |
351 class RenderBuffer; | 360 class RenderBuffer; |
352 | 361 |
353 // Make destructor private to ensure that we can only be deleted by Release(). | 362 // Make destructor private to ensure that we can only be deleted by Release(). |
354 virtual ~WebRtcAudioDeviceImpl(); | 363 virtual ~WebRtcAudioDeviceImpl(); |
355 | 364 |
356 // PeerConnectionAudioSink implementation. | 365 // PeerConnectionAudioSink implementation. |
357 | 366 |
(...skipping 18 matching lines...) Expand all Loading... | |
376 int sample_rate, | 385 int sample_rate, |
377 int audio_delay_milliseconds) OVERRIDE; | 386 int audio_delay_milliseconds) OVERRIDE; |
378 | 387 |
379 // Called on the main render thread. | 388 // Called on the main render thread. |
380 virtual void RemoveAudioRenderer(WebRtcAudioRenderer* renderer) OVERRIDE; | 389 virtual void RemoveAudioRenderer(WebRtcAudioRenderer* renderer) OVERRIDE; |
381 | 390 |
382 // WebRtcPlayoutDataSource implementation. | 391 // WebRtcPlayoutDataSource implementation. |
383 virtual void AddPlayoutSink(WebRtcPlayoutDataSource::Sink* sink) OVERRIDE; | 392 virtual void AddPlayoutSink(WebRtcPlayoutDataSource::Sink* sink) OVERRIDE; |
384 virtual void RemovePlayoutSink(WebRtcPlayoutDataSource::Sink* sink) OVERRIDE; | 393 virtual void RemovePlayoutSink(WebRtcPlayoutDataSource::Sink* sink) OVERRIDE; |
385 | 394 |
395 // This method will stop the Aec dump on all the non-default capturer and | |
396 // start the Aec dump on the default capturer. | |
397 void StartAecDump(); | |
Henrik Grunell
2014/03/06 10:12:20
Stick with either Enable/Disable or Start/Stop nam
no longer working on chromium
2014/03/06 18:57:21
I suggest not. It is better to put all the code to
Henrik Grunell
2014/03/06 19:55:12
I just meant the naming of the functions. Either S
| |
398 | |
399 // This method will stop the Aec dump on the default capturer. | |
400 void StopAecDump(); | |
401 | |
386 // Used to DCHECK that we are called on the correct thread. | 402 // Used to DCHECK that we are called on the correct thread. |
387 base::ThreadChecker thread_checker_; | 403 base::ThreadChecker thread_checker_; |
388 | 404 |
389 int ref_count_; | 405 int ref_count_; |
390 | 406 |
391 // List of captures which provides access to the native audio input layer | 407 // List of captures which provides access to the native audio input layer |
392 // in the browser process. | 408 // in the browser process. |
393 CapturerList capturers_; | 409 CapturerList capturers_; |
394 | 410 |
395 // Provides access to the audio renderer in the browser process. | 411 // Provides access to the audio renderer in the browser process. |
(...skipping 28 matching lines...) Expand all Loading... | |
424 bool recording_; | 440 bool recording_; |
425 | 441 |
426 // Stores latest microphone volume received in a CaptureData() callback. | 442 // Stores latest microphone volume received in a CaptureData() callback. |
427 // Range is [0, 255]. | 443 // Range is [0, 255]. |
428 uint32_t microphone_volume_; | 444 uint32_t microphone_volume_; |
429 | 445 |
430 // Buffer used for temporary storage during render callback. | 446 // Buffer used for temporary storage during render callback. |
431 // It is only accessed by the audio render thread. | 447 // It is only accessed by the audio render thread. |
432 std::vector<int16> render_buffer_; | 448 std::vector<int16> render_buffer_; |
433 | 449 |
450 // Used for start the Aec dump on the default capturer. | |
451 base::PlatformFile aec_dump_file_; | |
452 | |
434 DISALLOW_COPY_AND_ASSIGN(WebRtcAudioDeviceImpl); | 453 DISALLOW_COPY_AND_ASSIGN(WebRtcAudioDeviceImpl); |
435 }; | 454 }; |
436 | 455 |
437 } // namespace content | 456 } // namespace content |
438 | 457 |
439 #endif // CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_IMPL_H_ | 458 #endif // CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_IMPL_H_ |
OLD | NEW |