OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
13 #include "base/memory/scoped_ptr.h" | 13 #include "base/threading/thread.h" |
14 #include "base/time.h" | 14 #include "base/time.h" |
15 #include "content/renderer/media/audio_device.h" | 15 #include "content/renderer/media/audio_device.h" |
16 #include "content/renderer/media/audio_input_device.h" | 16 #include "content/renderer/media/audio_input_device.h" |
17 #include "content/renderer/media/audio_input_device_event_handler.h" | |
17 #include "third_party/webrtc/modules/audio_device/main/interface/audio_device.h" | 18 #include "third_party/webrtc/modules/audio_device/main/interface/audio_device.h" |
18 | 19 |
19 // A WebRtcAudioDeviceImpl instance implements the abstract interface | 20 // A WebRtcAudioDeviceImpl instance implements the abstract interface |
20 // webrtc::AudioDeviceModule which makes it possible for a user (e.g. webrtc:: | 21 // webrtc::AudioDeviceModule which makes it possible for a user (e.g. webrtc:: |
21 // VoiceEngine) to register this class as an external AudioDeviceModule. | 22 // VoiceEngine) to register this class as an external AudioDeviceModule. |
22 // The user can then call WebRtcAudioDeviceImpl::StartPlayout() and | 23 // The user can then call WebRtcAudioDeviceImpl::StartPlayout() and |
23 // WebRtcAudioDeviceImpl::StartRecording() from the render process | 24 // WebRtcAudioDeviceImpl::StartRecording() from the render process |
24 // to initiate and start audio rendering and capturing in the browser process. | 25 // to initiate and start audio rendering and capturing in the browser process. |
25 // IPC is utilized to set up the media streams. | 26 // IPC is utilized to set up the media streams. |
26 // | 27 // |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
71 // | .-------------------------------. .------------------. | 72 // | .-------------------------------. .------------------. |
72 // | | 73 // | |
73 // | .---------------------. | 74 // | .---------------------. |
74 // .-> RecordedDataIsAvailable ->| webrtc::VoiceEngine | => (encode+transmit) | 75 // .-> RecordedDataIsAvailable ->| webrtc::VoiceEngine | => (encode+transmit) |
75 // .---------------------. | 76 // .---------------------. |
76 // | 77 // |
77 // (*) Using SyncSocket for inter-process synchronization with low latency. | 78 // (*) Using SyncSocket for inter-process synchronization with low latency. |
78 // The actual data is transferred via SharedMemory. IPC is not involved | 79 // The actual data is transferred via SharedMemory. IPC is not involved |
79 // in the actual media transfer. | 80 // in the actual media transfer. |
80 // | 81 // |
81 // This class must be created on the main render thread since it creates | 82 // This class must be created on the main render thread since it creates |
henrika_dont_use
2011/08/07 16:52:27
Would be great with some extended comments about t
wjia(left Chromium)
2011/08/09 01:40:36
Done.
| |
82 // AudioDevice and AudioInputDevice objects and they both require a valid | 83 // AudioDevice and AudioInputDevice objects and they both require a valid |
83 // RenderThread::current() pointer. | 84 // RenderThread::current() pointer. |
84 // | 85 // |
85 class WebRtcAudioDeviceImpl | 86 class WebRtcAudioDeviceImpl |
86 : public webrtc::AudioDeviceModule, | 87 : public webrtc::AudioDeviceModule, |
87 public AudioDevice::RenderCallback, | 88 public AudioDevice::RenderCallback, |
88 public AudioInputDevice::CaptureCallback { | 89 public AudioInputDevice::CaptureCallback, |
90 public AudioInputDeviceEventHandler { | |
henrika_dont_use
2011/08/07 16:52:27
Could have been defines using same style as AudioI
wjia(left Chromium)
2011/08/09 01:40:36
see Nested Classes in http://www.chromium.org/deve
| |
89 public: | 91 public: |
90 WebRtcAudioDeviceImpl(size_t input_buffer_size, | 92 WebRtcAudioDeviceImpl(size_t input_buffer_size, |
91 size_t output_buffer_size, | 93 size_t output_buffer_size, |
92 int input_channels, | 94 int input_channels, |
93 int output_channels, | 95 int output_channels, |
94 double input_sample_rate, | 96 double input_sample_rate, |
95 double output_sample_rate); | 97 double output_sample_rate); |
96 virtual ~WebRtcAudioDeviceImpl(); | 98 virtual ~WebRtcAudioDeviceImpl(); |
97 | 99 |
98 // AudioDevice::RenderCallback implementation. | 100 // AudioDevice::RenderCallback implementation. |
99 virtual void Render(const std::vector<float*>& audio_data, | 101 virtual void Render(const std::vector<float*>& audio_data, |
100 size_t number_of_frames, | 102 size_t number_of_frames, |
101 size_t audio_delay_milliseconds); | 103 size_t audio_delay_milliseconds) OVERRIDE; |
henrika_dont_use
2011/08/07 16:52:27
General question; what is the benefit of using thi
wjia(left Chromium)
2011/08/09 01:40:36
The compiler can detect inconsistent change when t
| |
102 | 104 |
103 // AudioInputDevice::CaptureCallback implementation. | 105 // AudioInputDevice::CaptureCallback implementation. |
104 virtual void Capture(const std::vector<float*>& audio_data, | 106 virtual void Capture(const std::vector<float*>& audio_data, |
105 size_t number_of_frames, | 107 size_t number_of_frames, |
106 size_t audio_delay_milliseconds); | 108 size_t audio_delay_milliseconds) OVERRIDE; |
109 | |
110 // AudioInputDeviceEventHandler implementation. | |
111 virtual void OnRecordingStarted() OVERRIDE; | |
112 virtual void OnRecordingStopped() OVERRIDE; | |
107 | 113 |
108 // webrtc::Module implementation. | 114 // webrtc::Module implementation. |
109 virtual int32_t Version(char* version, | 115 virtual int32_t Version(char* version, |
110 uint32_t& remaining_buffer_in_bytes, | 116 uint32_t& remaining_buffer_in_bytes, |
111 uint32_t& position) const; | 117 uint32_t& position) const OVERRIDE; |
112 virtual int32_t ChangeUniqueId(const int32_t id); | 118 virtual int32_t ChangeUniqueId(const int32_t id) OVERRIDE; |
113 virtual int32_t TimeUntilNextProcess(); | 119 virtual int32_t TimeUntilNextProcess() OVERRIDE; |
114 virtual int32_t Process(); | 120 virtual int32_t Process() OVERRIDE; |
115 | 121 |
116 // webrtc::AudioDeviceModule implementation. | 122 // webrtc::AudioDeviceModule implementation. |
117 virtual int32_t ActiveAudioLayer(AudioLayer* audio_layer) const; | 123 virtual int32_t ActiveAudioLayer(AudioLayer* audio_layer) const OVERRIDE; |
118 virtual ErrorCode LastError() const; | 124 virtual ErrorCode LastError() const OVERRIDE; |
119 | 125 |
120 virtual int32_t RegisterEventObserver( | 126 virtual int32_t RegisterEventObserver( |
121 webrtc::AudioDeviceObserver* event_callback); | 127 webrtc::AudioDeviceObserver* event_callback) OVERRIDE; |
122 virtual int32_t RegisterAudioCallback(webrtc::AudioTransport* audio_callback); | 128 virtual int32_t RegisterAudioCallback( |
129 webrtc::AudioTransport* audio_callback) OVERRIDE; | |
123 | 130 |
124 virtual int32_t Init(); | 131 virtual int32_t Init() OVERRIDE; |
125 virtual int32_t Terminate(); | 132 virtual int32_t Terminate() OVERRIDE; |
126 virtual bool Initialized() const; | 133 virtual bool Initialized() const OVERRIDE; |
127 | 134 |
128 virtual int16_t PlayoutDevices(); | 135 virtual int16_t PlayoutDevices() OVERRIDE; |
129 virtual int16_t RecordingDevices(); | 136 virtual int16_t RecordingDevices() OVERRIDE; |
130 virtual int32_t PlayoutDeviceName(uint16_t index, | 137 virtual int32_t PlayoutDeviceName( |
131 char name[webrtc::kAdmMaxDeviceNameSize], | 138 uint16_t index, |
132 char guid[webrtc::kAdmMaxGuidSize]); | 139 char name[webrtc::kAdmMaxDeviceNameSize], |
133 virtual int32_t RecordingDeviceName(uint16_t index, | 140 char guid[webrtc::kAdmMaxGuidSize]) OVERRIDE; |
134 char name[webrtc::kAdmMaxDeviceNameSize], | 141 virtual int32_t RecordingDeviceName( |
135 char guid[webrtc::kAdmMaxGuidSize]); | 142 uint16_t index, |
143 char name[webrtc::kAdmMaxDeviceNameSize], | |
144 char guid[webrtc::kAdmMaxGuidSize]) OVERRIDE; | |
136 | 145 |
137 virtual int32_t SetPlayoutDevice(uint16_t index); | 146 virtual int32_t SetPlayoutDevice(uint16_t index) OVERRIDE; |
138 virtual int32_t SetPlayoutDevice(WindowsDeviceType device); | 147 virtual int32_t SetPlayoutDevice(WindowsDeviceType device) OVERRIDE; |
139 virtual int32_t SetRecordingDevice(uint16_t index); | 148 virtual int32_t SetRecordingDevice(uint16_t index) OVERRIDE; |
140 virtual int32_t SetRecordingDevice(WindowsDeviceType device); | 149 virtual int32_t SetRecordingDevice(WindowsDeviceType device) OVERRIDE; |
141 | 150 |
142 virtual int32_t PlayoutIsAvailable(bool* available); | 151 virtual int32_t PlayoutIsAvailable(bool* available) OVERRIDE; |
143 virtual int32_t InitPlayout(); | 152 virtual int32_t InitPlayout() OVERRIDE; |
144 virtual bool PlayoutIsInitialized() const; | 153 virtual bool PlayoutIsInitialized() const OVERRIDE; |
145 virtual int32_t RecordingIsAvailable(bool* available); | 154 virtual int32_t RecordingIsAvailable(bool* available) OVERRIDE; |
146 virtual int32_t InitRecording(); | 155 virtual int32_t InitRecording() OVERRIDE; |
147 virtual bool RecordingIsInitialized() const; | 156 virtual bool RecordingIsInitialized() const OVERRIDE; |
148 | 157 |
149 virtual int32_t StartPlayout(); | 158 virtual int32_t StartPlayout() OVERRIDE; |
150 virtual int32_t StopPlayout(); | 159 virtual int32_t StopPlayout() OVERRIDE; |
151 virtual bool Playing() const; | 160 virtual bool Playing() const OVERRIDE; |
152 virtual int32_t StartRecording(); | 161 virtual int32_t StartRecording() OVERRIDE; |
153 virtual int32_t StopRecording(); | 162 virtual int32_t StopRecording() OVERRIDE; |
154 virtual bool Recording() const; | 163 virtual bool Recording() const OVERRIDE; |
155 | 164 |
156 virtual int32_t SetAGC(bool enable); | 165 virtual int32_t SetAGC(bool enable) OVERRIDE; |
157 virtual bool AGC() const; | 166 virtual bool AGC() const OVERRIDE; |
158 | 167 |
159 virtual int32_t SetWaveOutVolume(uint16_t volume_left, | 168 virtual int32_t SetWaveOutVolume(uint16_t volume_left, |
160 uint16_t volume_right); | 169 uint16_t volume_right) OVERRIDE; |
161 virtual int32_t WaveOutVolume(uint16_t* volume_left, | 170 virtual int32_t WaveOutVolume(uint16_t* volume_left, |
162 uint16_t* volume_right) const; | 171 uint16_t* volume_right) const OVERRIDE; |
163 | 172 |
164 virtual int32_t SpeakerIsAvailable(bool* available); | 173 virtual int32_t SpeakerIsAvailable(bool* available) OVERRIDE; |
165 virtual int32_t InitSpeaker(); | 174 virtual int32_t InitSpeaker() OVERRIDE; |
166 virtual bool SpeakerIsInitialized() const; | 175 virtual bool SpeakerIsInitialized() const OVERRIDE; |
167 virtual int32_t MicrophoneIsAvailable(bool* available); | 176 virtual int32_t MicrophoneIsAvailable(bool* available) OVERRIDE; |
168 virtual int32_t InitMicrophone(); | 177 virtual int32_t InitMicrophone() OVERRIDE; |
169 virtual bool MicrophoneIsInitialized() const; | 178 virtual bool MicrophoneIsInitialized() const OVERRIDE; |
170 | 179 |
171 virtual int32_t SpeakerVolumeIsAvailable(bool* available); | 180 virtual int32_t SpeakerVolumeIsAvailable(bool* available) OVERRIDE; |
172 virtual int32_t SetSpeakerVolume(uint32_t volume); | 181 virtual int32_t SetSpeakerVolume(uint32_t volume) OVERRIDE; |
173 virtual int32_t SpeakerVolume(uint32_t* volume) const; | 182 virtual int32_t SpeakerVolume(uint32_t* volume) const OVERRIDE; |
174 virtual int32_t MaxSpeakerVolume(uint32_t* max_volume) const; | 183 virtual int32_t MaxSpeakerVolume(uint32_t* max_volume) const OVERRIDE; |
175 virtual int32_t MinSpeakerVolume(uint32_t* min_volume) const; | 184 virtual int32_t MinSpeakerVolume(uint32_t* min_volume) const OVERRIDE; |
176 virtual int32_t SpeakerVolumeStepSize(uint16_t* step_size) const; | 185 virtual int32_t SpeakerVolumeStepSize(uint16_t* step_size) const OVERRIDE; |
177 | 186 |
178 virtual int32_t MicrophoneVolumeIsAvailable(bool* available); | 187 virtual int32_t MicrophoneVolumeIsAvailable(bool* available) OVERRIDE; |
179 virtual int32_t SetMicrophoneVolume(uint32_t volume); | 188 virtual int32_t SetMicrophoneVolume(uint32_t volume) OVERRIDE; |
180 virtual int32_t MicrophoneVolume(uint32_t* volume) const; | 189 virtual int32_t MicrophoneVolume(uint32_t* volume) const OVERRIDE; |
181 virtual int32_t MaxMicrophoneVolume(uint32_t* max_volume) const; | 190 virtual int32_t MaxMicrophoneVolume(uint32_t* max_volume) const OVERRIDE; |
182 virtual int32_t MinMicrophoneVolume(uint32_t* min_volume) const; | 191 virtual int32_t MinMicrophoneVolume(uint32_t* min_volume) const OVERRIDE; |
183 virtual int32_t MicrophoneVolumeStepSize(uint16_t* step_size) const; | 192 virtual int32_t MicrophoneVolumeStepSize(uint16_t* step_size) const OVERRIDE; |
184 | 193 |
185 virtual int32_t SpeakerMuteIsAvailable(bool* available); | 194 virtual int32_t SpeakerMuteIsAvailable(bool* available) OVERRIDE; |
186 virtual int32_t SetSpeakerMute(bool enable); | 195 virtual int32_t SetSpeakerMute(bool enable) OVERRIDE; |
187 virtual int32_t SpeakerMute(bool* enabled) const; | 196 virtual int32_t SpeakerMute(bool* enabled) const OVERRIDE; |
188 | 197 |
189 virtual int32_t MicrophoneMuteIsAvailable(bool* available); | 198 virtual int32_t MicrophoneMuteIsAvailable(bool* available) OVERRIDE; |
190 virtual int32_t SetMicrophoneMute(bool enable); | 199 virtual int32_t SetMicrophoneMute(bool enable) OVERRIDE; |
191 virtual int32_t MicrophoneMute(bool* enabled) const; | 200 virtual int32_t MicrophoneMute(bool* enabled) const OVERRIDE; |
192 | 201 |
193 virtual int32_t MicrophoneBoostIsAvailable(bool* available); | 202 virtual int32_t MicrophoneBoostIsAvailable(bool* available) OVERRIDE; |
194 virtual int32_t SetMicrophoneBoost(bool enable); | 203 virtual int32_t SetMicrophoneBoost(bool enable) OVERRIDE; |
195 virtual int32_t MicrophoneBoost(bool* enabled) const; | 204 virtual int32_t MicrophoneBoost(bool* enabled) const OVERRIDE; |
196 | 205 |
197 virtual int32_t StereoPlayoutIsAvailable(bool* available) const; | 206 virtual int32_t StereoPlayoutIsAvailable(bool* available) const OVERRIDE; |
198 virtual int32_t SetStereoPlayout(bool enable); | 207 virtual int32_t SetStereoPlayout(bool enable) OVERRIDE; |
199 virtual int32_t StereoPlayout(bool* enabled) const; | 208 virtual int32_t StereoPlayout(bool* enabled) const OVERRIDE; |
200 virtual int32_t StereoRecordingIsAvailable(bool* available) const; | 209 virtual int32_t StereoRecordingIsAvailable(bool* available) const OVERRIDE; |
201 virtual int32_t SetStereoRecording(bool enable); | 210 virtual int32_t SetStereoRecording(bool enable) OVERRIDE; |
202 virtual int32_t StereoRecording(bool* enabled) const; | 211 virtual int32_t StereoRecording(bool* enabled) const OVERRIDE; |
203 virtual int32_t SetRecordingChannel(const ChannelType channel); | 212 virtual int32_t SetRecordingChannel(const ChannelType channel) OVERRIDE; |
204 virtual int32_t RecordingChannel(ChannelType* channel) const; | 213 virtual int32_t RecordingChannel(ChannelType* channel) const OVERRIDE; |
205 | 214 |
206 virtual int32_t SetPlayoutBuffer(const BufferType type, uint16_t size_ms); | 215 virtual int32_t SetPlayoutBuffer(const BufferType type, |
207 virtual int32_t PlayoutBuffer(BufferType* type, uint16_t* size_ms) const; | 216 uint16_t size_ms) OVERRIDE; |
208 virtual int32_t PlayoutDelay(uint16_t* delay_ms) const; | 217 virtual int32_t PlayoutBuffer(BufferType* type, |
209 virtual int32_t RecordingDelay(uint16_t* delay_ms) const; | 218 uint16_t* size_ms) const OVERRIDE; |
219 virtual int32_t PlayoutDelay(uint16_t* delay_ms) const OVERRIDE; | |
220 virtual int32_t RecordingDelay(uint16_t* delay_ms) const OVERRIDE; | |
210 | 221 |
211 virtual int32_t CPULoad(uint16_t* load) const; | 222 virtual int32_t CPULoad(uint16_t* load) const OVERRIDE; |
212 | 223 |
213 virtual int32_t StartRawOutputFileRecording( | 224 virtual int32_t StartRawOutputFileRecording( |
214 const char pcm_file_name_utf8[webrtc::kAdmMaxFileNameSize]); | 225 const char pcm_file_name_utf8[webrtc::kAdmMaxFileNameSize]) OVERRIDE; |
215 virtual int32_t StopRawOutputFileRecording(); | 226 virtual int32_t StopRawOutputFileRecording() OVERRIDE; |
216 virtual int32_t StartRawInputFileRecording( | 227 virtual int32_t StartRawInputFileRecording( |
217 const char pcm_file_name_utf8[webrtc::kAdmMaxFileNameSize]); | 228 const char pcm_file_name_utf8[webrtc::kAdmMaxFileNameSize]) OVERRIDE; |
218 virtual int32_t StopRawInputFileRecording(); | 229 virtual int32_t StopRawInputFileRecording() OVERRIDE; |
219 | 230 |
220 virtual int32_t SetRecordingSampleRate(const uint32_t samples_per_sec); | 231 virtual int32_t SetRecordingSampleRate( |
221 virtual int32_t RecordingSampleRate(uint32_t* samples_per_sec) const; | 232 const uint32_t samples_per_sec) OVERRIDE; |
222 virtual int32_t SetPlayoutSampleRate(const uint32_t samples_per_sec); | 233 virtual int32_t RecordingSampleRate(uint32_t* samples_per_sec) const OVERRIDE; |
223 virtual int32_t PlayoutSampleRate(uint32_t* samples_per_sec) const; | 234 virtual int32_t SetPlayoutSampleRate(const uint32_t samples_per_sec) OVERRIDE; |
235 virtual int32_t PlayoutSampleRate(uint32_t* samples_per_sec) const OVERRIDE; | |
224 | 236 |
225 virtual int32_t ResetAudioDevice(); | 237 virtual int32_t ResetAudioDevice() OVERRIDE; |
226 virtual int32_t SetLoudspeakerStatus(bool enable); | 238 virtual int32_t SetLoudspeakerStatus(bool enable) OVERRIDE; |
227 virtual int32_t GetLoudspeakerStatus(bool* enabled) const; | 239 virtual int32_t GetLoudspeakerStatus(bool* enabled) const OVERRIDE; |
228 | |
229 // Helpers. | |
230 bool BufferSizeIsValid(size_t buffer_size, float sample_rate) const; | |
231 | 240 |
232 // Accessors. | 241 // Accessors. |
233 size_t input_buffer_size() const { return input_buffer_size_; } | 242 size_t input_buffer_size() const { return input_buffer_size_; } |
234 size_t output_buffer_size() const { return output_buffer_size_; } | 243 size_t output_buffer_size() const { return output_buffer_size_; } |
235 int input_channels() const { return input_channels_; } | 244 int input_channels() const { return input_channels_; } |
236 int output_channels() const { return output_channels_; } | 245 int output_channels() const { return output_channels_; } |
237 | 246 |
238 private: | 247 private: |
248 enum State { | |
249 kStarting, | |
250 kStarted, | |
251 kPaused, | |
252 kStopped, | |
253 kStopping, | |
254 kError, | |
255 }; | |
256 | |
257 // Helpers. | |
258 bool BufferSizeIsValid(size_t buffer_size, float sample_rate) const; | |
259 | |
260 // Helpers running on Adm thread, corresponding to API functions. | |
henrika_dont_use
2011/08/07 16:52:27
ADM=Audio Device Module (should be ADM, right?) Bu
wjia(left Chromium)
2011/08/09 01:40:36
Done.
| |
261 void StartRecordingOnAdmThread(); | |
262 void StopRecordingOnAdmThread(); | |
263 void OnRecordingStartedOnAdmThread(); | |
264 void OnRecordingStoppedOnAdmThread(); | |
265 void RegisterAudioCallbackOnAdmThread(webrtc::AudioTransport* audio_callback, | |
266 int32_t* error, | |
267 base::WaitableEvent* event); | |
268 void GetRecordingOnAdmThread(bool* recording, | |
269 base::WaitableEvent* event) const; | |
270 void GetRecordingDelayOnAdmThread(uint16_t* delay_ms, | |
271 base::WaitableEvent* event) const; | |
272 | |
239 // Provides access to the native audio input layer in the browser process. | 273 // Provides access to the native audio input layer in the browser process. |
240 scoped_refptr<AudioInputDevice> audio_input_device_; | 274 scoped_refptr<AudioInputDevice> audio_input_device_; |
241 | 275 |
242 // Provides access to the native audio output layer in the browser process. | 276 // Provides access to the native audio output layer in the browser process. |
243 scoped_refptr<AudioDevice> audio_output_device_; | 277 scoped_refptr<AudioDevice> audio_output_device_; |
244 | 278 |
245 // Weak reference to the audio callback. | 279 // Weak reference to the audio callback. |
246 // The webrtc client defines |audio_transport_callback_| by calling | 280 // The webrtc client defines |audio_transport_callback_| by calling |
247 // RegisterAudioCallback(). | 281 // RegisterAudioCallback(). |
248 webrtc::AudioTransport* audio_transport_callback_; | 282 webrtc::AudioTransport* audio_transport_callback_; |
249 | 283 |
250 webrtc::AudioDeviceModule::ErrorCode last_error_; | 284 webrtc::AudioDeviceModule::ErrorCode last_error_; |
251 | 285 |
252 size_t input_buffer_size_; | 286 size_t input_buffer_size_; |
253 size_t output_buffer_size_; | 287 size_t output_buffer_size_; |
254 int input_channels_; | 288 int input_channels_; |
255 int output_channels_; | 289 int output_channels_; |
256 double input_sample_rate_; | 290 double input_sample_rate_; |
257 double output_sample_rate_; | 291 double output_sample_rate_; |
258 | 292 |
259 int bytes_per_sample_; | 293 int bytes_per_sample_; |
260 | 294 |
295 base::Thread adm_thread_; | |
296 scoped_refptr<base::MessageLoopProxy> adm_message_loop_; | |
297 base::Lock lock_; | |
henrika_dont_use
2011/08/07 16:52:27
Comment on what it protects.
wjia(left Chromium)
2011/08/09 01:40:36
Done.
| |
298 base::WaitableEvent recording_stop_event_; | |
299 | |
261 bool initialized_; | 300 bool initialized_; |
262 bool playing_; | 301 bool playing_; |
263 bool recording_; | 302 State recording_state_; |
264 | 303 |
265 // Cached value of the current audio delay on the input/capture side. | 304 // Cached value of the current audio delay on the input/capture side. |
266 int input_delay_ms_; | 305 int input_delay_ms_; |
267 | 306 |
268 // Cached value of the current audio delay on the output/renderer side. | 307 // Cached value of the current audio delay on the output/renderer side. |
269 int output_delay_ms_; | 308 int output_delay_ms_; |
270 | 309 |
271 base::TimeTicks last_process_time_; | 310 base::TimeTicks last_process_time_; |
272 | 311 |
273 // Buffers used for temporary storage during capture/render callbacks. | 312 // Buffers used for temporary storage during capture/render callbacks. |
274 // Allocated during construction to save stack. | 313 // Allocated during construction to save stack. |
275 scoped_array<int16> input_buffer_; | 314 scoped_array<int16> input_buffer_; |
276 scoped_array<int16> output_buffer_; | 315 scoped_array<int16> output_buffer_; |
277 | 316 |
278 DISALLOW_COPY_AND_ASSIGN(WebRtcAudioDeviceImpl); | 317 DISALLOW_COPY_AND_ASSIGN(WebRtcAudioDeviceImpl); |
279 }; | 318 }; |
280 | 319 |
320 DISABLE_RUNNABLE_METHOD_REFCOUNT(WebRtcAudioDeviceImpl); | |
henrika_dont_use
2011/08/07 16:52:27
Why are these macros required now?
wjia(left Chromium)
2011/08/09 01:40:36
These are needed for NewRunnableMethod.
wjia(left Chromium)
2011/08/09 01:40:36
These are needed for NewRunnableMethod.
| |
321 DISABLE_RUNNABLE_METHOD_REFCOUNT(const WebRtcAudioDeviceImpl); | |
322 | |
281 #endif // CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_IMPL_H_ | 323 #endif // CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_IMPL_H_ |
OLD | NEW |