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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 |
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 // |adm_thread_| is the working thread for input portion of this class. |
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 { |
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; |
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. |
| 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 // Used for input sync writer to access variables modified by output sync |
| 298 // writer. |
| 299 base::Lock lock_; |
| 300 base::WaitableEvent recording_stop_event_; |
| 301 |
261 bool initialized_; | 302 bool initialized_; |
262 bool playing_; | 303 bool playing_; |
263 bool recording_; | 304 State recording_state_; |
264 | 305 |
265 // Cached value of the current audio delay on the input/capture side. | 306 // Cached value of the current audio delay on the input/capture side. |
266 int input_delay_ms_; | 307 int input_delay_ms_; |
267 | 308 |
268 // Cached value of the current audio delay on the output/renderer side. | 309 // Cached value of the current audio delay on the output/renderer side. |
269 int output_delay_ms_; | 310 int output_delay_ms_; |
270 | 311 |
271 base::TimeTicks last_process_time_; | 312 base::TimeTicks last_process_time_; |
272 | 313 |
273 // Buffers used for temporary storage during capture/render callbacks. | 314 // Buffers used for temporary storage during capture/render callbacks. |
274 // Allocated during construction to save stack. | 315 // Allocated during construction to save stack. |
275 scoped_array<int16> input_buffer_; | 316 scoped_array<int16> input_buffer_; |
276 scoped_array<int16> output_buffer_; | 317 scoped_array<int16> output_buffer_; |
277 | 318 |
278 DISALLOW_COPY_AND_ASSIGN(WebRtcAudioDeviceImpl); | 319 DISALLOW_COPY_AND_ASSIGN(WebRtcAudioDeviceImpl); |
279 }; | 320 }; |
280 | 321 |
| 322 DISABLE_RUNNABLE_METHOD_REFCOUNT(WebRtcAudioDeviceImpl); |
| 323 DISABLE_RUNNABLE_METHOD_REFCOUNT(const WebRtcAudioDeviceImpl); |
| 324 |
281 #endif // CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_IMPL_H_ | 325 #endif // CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_IMPL_H_ |
OLD | NEW |