| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "media/audio/mac/audio_low_latency_input_mac.h" | 5 #include "media/audio/mac/audio_low_latency_input_mac.h" |
| 6 | 6 |
| 7 #include <CoreServices/CoreServices.h> | 7 #include <CoreServices/CoreServices.h> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 number_of_channels_in_frame_ = GetNumberOfChannelsFromStream(); | 267 number_of_channels_in_frame_ = GetNumberOfChannelsFromStream(); |
| 268 | 268 |
| 269 return true; | 269 return true; |
| 270 } | 270 } |
| 271 | 271 |
| 272 void AUAudioInputStream::Start(AudioInputCallback* callback) { | 272 void AUAudioInputStream::Start(AudioInputCallback* callback) { |
| 273 DCHECK(callback); | 273 DCHECK(callback); |
| 274 DLOG_IF(ERROR, !audio_unit_) << "Open() has not been called successfully"; | 274 DLOG_IF(ERROR, !audio_unit_) << "Open() has not been called successfully"; |
| 275 if (started_ || !audio_unit_) | 275 if (started_ || !audio_unit_) |
| 276 return; | 276 return; |
| 277 |
| 278 // Check if we should defer Start() for http://crbug.com/160920. |
| 279 if (manager_->ShouldDeferStreamStart()) { |
| 280 // Use a cancellable closure so that if Stop() is called before Start() |
| 281 // actually runs, we can cancel the pending start. |
| 282 DCHECK(deferred_start_cb_.IsCancelled()); |
| 283 deferred_start_cb_.Reset(base::Bind( |
| 284 &AUAudioInputStream::Start, base::Unretained(this), callback)); |
| 285 manager_->GetTaskRunner()->PostDelayedTask( |
| 286 FROM_HERE, |
| 287 deferred_start_cb_.callback(), |
| 288 base::TimeDelta::FromSeconds( |
| 289 AudioManagerMac::kStartDelayInSecsForPowerEvents)); |
| 290 return; |
| 291 } |
| 292 |
| 277 sink_ = callback; | 293 sink_ = callback; |
| 278 StartAgc(); | 294 StartAgc(); |
| 279 OSStatus result = AudioOutputUnitStart(audio_unit_); | 295 OSStatus result = AudioOutputUnitStart(audio_unit_); |
| 280 if (result == noErr) { | 296 if (result == noErr) { |
| 281 started_ = true; | 297 started_ = true; |
| 282 } | 298 } |
| 283 OSSTATUS_DLOG_IF(ERROR, result != noErr, result) | 299 OSSTATUS_DLOG_IF(ERROR, result != noErr, result) |
| 284 << "Failed to start acquiring data"; | 300 << "Failed to start acquiring data"; |
| 285 } | 301 } |
| 286 | 302 |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 655 kAudioDevicePropertyScopeInput, | 671 kAudioDevicePropertyScopeInput, |
| 656 static_cast<UInt32>(channel) | 672 static_cast<UInt32>(channel) |
| 657 }; | 673 }; |
| 658 OSStatus result = AudioObjectIsPropertySettable(input_device_id_, | 674 OSStatus result = AudioObjectIsPropertySettable(input_device_id_, |
| 659 &property_address, | 675 &property_address, |
| 660 &is_settable); | 676 &is_settable); |
| 661 return (result == noErr) ? is_settable : false; | 677 return (result == noErr) ? is_settable : false; |
| 662 } | 678 } |
| 663 | 679 |
| 664 } // namespace media | 680 } // namespace media |
| OLD | NEW |