Chromium Code Reviews| Index: content/renderer/media/webrtc_audio_capturer.h |
| diff --git a/content/renderer/media/webrtc_audio_capturer.h b/content/renderer/media/webrtc_audio_capturer.h |
| index 23391140411007696ec3b479e6da01ee339967f0..df316f84a019205c49ff879b28c9be42d1486fc3 100644 |
| --- a/content/renderer/media/webrtc_audio_capturer.h |
| +++ b/content/renderer/media/webrtc_audio_capturer.h |
| @@ -13,6 +13,7 @@ |
| #include "base/synchronization/lock.h" |
| #include "base/threading/thread_checker.h" |
| #include "base/time/time.h" |
| +#include "content/common/media/media_stream_options.h" |
| #include "content/renderer/media/tagged_list.h" |
| #include "content/renderer/media/webrtc_audio_device_impl.h" |
| #include "media/audio/audio_input_device.h" |
| @@ -29,8 +30,6 @@ class WebRtcLocalAudioTrack; |
| // This class manages the capture data flow by getting data from its |
| // |source_|, and passing it to its |tracks_|. |
| -// It allows clients to inject their own capture data source by calling |
| -// SetCapturerSource(). |
| // The threading model for this class is rather complex since it will be |
| // created on the main render thread, captured data is provided on a dedicated |
| // AudioInputDevice thread, and methods can be called either on the Libjingle |
| @@ -40,24 +39,13 @@ class CONTENT_EXPORT WebRtcAudioCapturer |
| : public base::RefCountedThreadSafe<WebRtcAudioCapturer>, |
| NON_EXPORTED_BASE(public media::AudioCapturerSource::CaptureCallback) { |
| public: |
| - // Use to construct the audio capturer. |
| + // Used to construct the audio capturer. |render_view_id| specifies the |
|
Jói
2014/01/14 09:16:37
document the -1 case
no longer working on chromium
2014/01/14 11:10:21
Done.
|
| + // render view consuming audio for capture. |device_info| contains all the |
| + // device information that the capturer is created for. |
| // Called on the main render thread. |
| - static scoped_refptr<WebRtcAudioCapturer> CreateCapturer(); |
| - |
| - // Creates and configures the default audio capturing source using the |
| - // provided audio parameters. |render_view_id| specifies the render view |
| - // consuming audio for capture. |session_id| is passed to the browser to |
| - // decide which device to use. |device_id| is used to identify which device |
| - // the capturer is created for. Called on the main render thread. |
| - bool Initialize(int render_view_id, |
| - media::ChannelLayout channel_layout, |
| - int sample_rate, |
| - int buffer_size, |
| - int session_id, |
| - const std::string& device_id, |
| - int paired_output_sample_rate, |
| - int paired_output_frames_per_buffer, |
| - int effects); |
| + static scoped_refptr<WebRtcAudioCapturer> CreateCapturer( |
| + int render_view_id, |
| + const StreamDeviceInfo& device_info); |
| // Add a audio track to the sinks of the capturer. |
| // WebRtcAudioDeviceImpl calls this method on the main render thread but |
| @@ -73,16 +61,6 @@ class CONTENT_EXPORT WebRtcAudioCapturer |
| // Called on the main render thread or libjingle working thread. |
| void RemoveTrack(WebRtcLocalAudioTrack* track); |
| - // SetCapturerSource() is called if the client on the source side desires to |
| - // provide their own captured audio data. Client is responsible for calling |
| - // Start() on its own source to have the ball rolling. |
| - // Called on the main render thread. |
| - void SetCapturerSource( |
| - const scoped_refptr<media::AudioCapturerSource>& source, |
| - media::ChannelLayout channel_layout, |
| - float sample_rate, |
| - int effects); |
| - |
| // Called when a stream is connecting to a peer connection. This will set |
| // up the native buffer size for the stream in order to optimize the |
| // performance for peer connection. |
| @@ -94,8 +72,6 @@ class CONTENT_EXPORT WebRtcAudioCapturer |
| int Volume() const; |
| int MaxVolume() const; |
| - bool is_recording() const { return running_; } |
| - |
| // Audio parameters utilized by the audio capturer. Can be utilized by |
| // a local renderer to set up a renderer using identical parameters as the |
| // capturer. |
| @@ -110,8 +86,8 @@ class CONTENT_EXPORT WebRtcAudioCapturer |
| int* output_sample_rate, |
| int* output_frames_per_buffer) const; |
| - const std::string& device_id() const { return device_id_; } |
| - int session_id() const { return session_id_; } |
| + const std::string& device_id() const { return device_info_.device.id; } |
| + int session_id() const { return device_info_.session_id; } |
| // Stops recording audio. This method will empty its track lists since |
| // stopping the capturer will implicitly invalidate all its tracks. |
| @@ -125,15 +101,22 @@ class CONTENT_EXPORT WebRtcAudioCapturer |
| void GetAudioProcessingParams(base::TimeDelta* delay, int* volume, |
| bool* key_pressed); |
| + // Use by the unittests to inject their own source to the capturer. |
| + void SetCapturerSourceForTesting( |
| + const scoped_refptr<media::AudioCapturerSource>& source, |
| + media::AudioParameters params); |
| + |
| protected: |
| friend class base::RefCountedThreadSafe<WebRtcAudioCapturer>; |
| - WebRtcAudioCapturer(); |
| virtual ~WebRtcAudioCapturer(); |
| private: |
| class TrackOwner; |
| typedef TaggedList<TrackOwner> TrackList; |
| + WebRtcAudioCapturer(int render_view_id, |
| + const StreamDeviceInfo& device_info); |
| + |
| // AudioCapturerSource::CaptureCallback implementation. |
| // Called on the AudioInputDevice audio thread. |
| virtual void Capture(media::AudioBus* audio_source, |
| @@ -142,6 +125,20 @@ class CONTENT_EXPORT WebRtcAudioCapturer |
| bool key_pressed) OVERRIDE; |
| virtual void OnCaptureError() OVERRIDE; |
| + // Initializes the default audio capturing source using the provided render |
| + // view id and device information. Return true if success, otherwise false. |
| + bool Initialize(); |
| + |
| + // SetCapturerSource() is called if the client on the source side desires to |
| + // provide their own captured audio data. Client is responsible for calling |
| + // Start() on its own source to have the ball rolling. |
| + // Called on the main render thread. |
| + void SetCapturerSource( |
| + const scoped_refptr<media::AudioCapturerSource>& source, |
| + media::ChannelLayout channel_layout, |
| + float sample_rate, |
| + int effects); |
| + |
| // Reconfigures the capturer with a new capture parameters. |
| // Must be called without holding the lock. |
| void Reconfigure(int sample_rate, media::ChannelLayout channel_layout, |
| @@ -178,16 +175,8 @@ class CONTENT_EXPORT WebRtcAudioCapturer |
| int render_view_id_; |
| - // Cached value for the hardware native buffer size, used when |
| - // |peer_connection_mode_| is set to false. |
| - int hardware_buffer_size_; |
| - |
| - // The media session ID used to identify which input device to be started by |
| - // the browser. |
| - int session_id_; |
| - |
| - // The device this capturer is given permission to use. |
| - std::string device_id_; |
| + // Cached information of the device used by the capturer. |
| + const StreamDeviceInfo device_info_; |
| // Stores latest microphone volume received in a CaptureData() callback. |
| // Range is [0, 255]. |
| @@ -196,9 +185,6 @@ class CONTENT_EXPORT WebRtcAudioCapturer |
| // Flag which affects the buffer size used by the capturer. |
| bool peer_connection_mode_; |
| - int output_sample_rate_; |
| - int output_frames_per_buffer_; |
| - |
| // Cache value for the audio processing params. |
| base::TimeDelta audio_delay_; |
| bool key_pressed_; |