OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 memset(_paServerVersion, 0, sizeof(_paServerVersion)); | 99 memset(_paServerVersion, 0, sizeof(_paServerVersion)); |
100 memset(&_playBufferAttr, 0, sizeof(_playBufferAttr)); | 100 memset(&_playBufferAttr, 0, sizeof(_playBufferAttr)); |
101 memset(&_recBufferAttr, 0, sizeof(_recBufferAttr)); | 101 memset(&_recBufferAttr, 0, sizeof(_recBufferAttr)); |
102 memset(_oldKeyState, 0, sizeof(_oldKeyState)); | 102 memset(_oldKeyState, 0, sizeof(_oldKeyState)); |
103 } | 103 } |
104 | 104 |
105 AudioDeviceLinuxPulse::~AudioDeviceLinuxPulse() | 105 AudioDeviceLinuxPulse::~AudioDeviceLinuxPulse() |
106 { | 106 { |
107 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, _id, | 107 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, _id, |
108 "%s destroyed", __FUNCTION__); | 108 "%s destroyed", __FUNCTION__); |
109 DCHECK(thread_checker_.CalledOnValidThread()); | 109 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
110 Terminate(); | 110 Terminate(); |
111 | 111 |
112 if (_recBuffer) | 112 if (_recBuffer) |
113 { | 113 { |
114 delete [] _recBuffer; | 114 delete [] _recBuffer; |
115 _recBuffer = NULL; | 115 _recBuffer = NULL; |
116 } | 116 } |
117 if (_playBuffer) | 117 if (_playBuffer) |
118 { | 118 { |
119 delete [] _playBuffer; | 119 delete [] _playBuffer; |
(...skipping 12 matching lines...) Expand all Loading... |
132 | 132 |
133 delete &_recStartEvent; | 133 delete &_recStartEvent; |
134 delete &_playStartEvent; | 134 delete &_playStartEvent; |
135 delete &_timeEventRec; | 135 delete &_timeEventRec; |
136 delete &_timeEventPlay; | 136 delete &_timeEventPlay; |
137 delete &_critSect; | 137 delete &_critSect; |
138 } | 138 } |
139 | 139 |
140 void AudioDeviceLinuxPulse::AttachAudioBuffer(AudioDeviceBuffer* audioBuffer) | 140 void AudioDeviceLinuxPulse::AttachAudioBuffer(AudioDeviceBuffer* audioBuffer) |
141 { | 141 { |
142 DCHECK(thread_checker_.CalledOnValidThread()); | 142 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
143 | 143 |
144 _ptrAudioBuffer = audioBuffer; | 144 _ptrAudioBuffer = audioBuffer; |
145 | 145 |
146 // Inform the AudioBuffer about default settings for this implementation. | 146 // Inform the AudioBuffer about default settings for this implementation. |
147 // Set all values to zero here since the actual settings will be done by | 147 // Set all values to zero here since the actual settings will be done by |
148 // InitPlayout and InitRecording later. | 148 // InitPlayout and InitRecording later. |
149 _ptrAudioBuffer->SetRecordingSampleRate(0); | 149 _ptrAudioBuffer->SetRecordingSampleRate(0); |
150 _ptrAudioBuffer->SetPlayoutSampleRate(0); | 150 _ptrAudioBuffer->SetPlayoutSampleRate(0); |
151 _ptrAudioBuffer->SetRecordingChannels(0); | 151 _ptrAudioBuffer->SetRecordingChannels(0); |
152 _ptrAudioBuffer->SetPlayoutChannels(0); | 152 _ptrAudioBuffer->SetPlayoutChannels(0); |
153 } | 153 } |
154 | 154 |
155 // ---------------------------------------------------------------------------- | 155 // ---------------------------------------------------------------------------- |
156 // ActiveAudioLayer | 156 // ActiveAudioLayer |
157 // ---------------------------------------------------------------------------- | 157 // ---------------------------------------------------------------------------- |
158 | 158 |
159 int32_t AudioDeviceLinuxPulse::ActiveAudioLayer( | 159 int32_t AudioDeviceLinuxPulse::ActiveAudioLayer( |
160 AudioDeviceModule::AudioLayer& audioLayer) const | 160 AudioDeviceModule::AudioLayer& audioLayer) const |
161 { | 161 { |
162 audioLayer = AudioDeviceModule::kLinuxPulseAudio; | 162 audioLayer = AudioDeviceModule::kLinuxPulseAudio; |
163 return 0; | 163 return 0; |
164 } | 164 } |
165 | 165 |
166 int32_t AudioDeviceLinuxPulse::Init() | 166 int32_t AudioDeviceLinuxPulse::Init() |
167 { | 167 { |
168 DCHECK(thread_checker_.CalledOnValidThread()); | 168 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
169 if (_initialized) | 169 if (_initialized) |
170 { | 170 { |
171 return 0; | 171 return 0; |
172 } | 172 } |
173 | 173 |
174 // Initialize PulseAudio | 174 // Initialize PulseAudio |
175 if (InitPulseAudio() < 0) | 175 if (InitPulseAudio() < 0) |
176 { | 176 { |
177 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id, | 177 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id, |
178 " failed to initialize PulseAudio"); | 178 " failed to initialize PulseAudio"); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 } | 228 } |
229 _ptrThreadPlay->SetPriority(kRealtimePriority); | 229 _ptrThreadPlay->SetPriority(kRealtimePriority); |
230 | 230 |
231 _initialized = true; | 231 _initialized = true; |
232 | 232 |
233 return 0; | 233 return 0; |
234 } | 234 } |
235 | 235 |
236 int32_t AudioDeviceLinuxPulse::Terminate() | 236 int32_t AudioDeviceLinuxPulse::Terminate() |
237 { | 237 { |
238 DCHECK(thread_checker_.CalledOnValidThread()); | 238 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
239 if (!_initialized) | 239 if (!_initialized) |
240 { | 240 { |
241 return 0; | 241 return 0; |
242 } | 242 } |
243 | 243 |
244 _mixerManager.Close(); | 244 _mixerManager.Close(); |
245 | 245 |
246 // RECORDING | 246 // RECORDING |
247 if (_ptrThreadRec) | 247 if (_ptrThreadRec) |
248 { | 248 { |
(...skipping 30 matching lines...) Expand all Loading... |
279 | 279 |
280 _initialized = false; | 280 _initialized = false; |
281 _outputDeviceIsSpecified = false; | 281 _outputDeviceIsSpecified = false; |
282 _inputDeviceIsSpecified = false; | 282 _inputDeviceIsSpecified = false; |
283 | 283 |
284 return 0; | 284 return 0; |
285 } | 285 } |
286 | 286 |
287 bool AudioDeviceLinuxPulse::Initialized() const | 287 bool AudioDeviceLinuxPulse::Initialized() const |
288 { | 288 { |
289 DCHECK(thread_checker_.CalledOnValidThread()); | 289 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
290 return (_initialized); | 290 return (_initialized); |
291 } | 291 } |
292 | 292 |
293 int32_t AudioDeviceLinuxPulse::InitSpeaker() | 293 int32_t AudioDeviceLinuxPulse::InitSpeaker() |
294 { | 294 { |
295 DCHECK(thread_checker_.CalledOnValidThread()); | 295 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
296 | 296 |
297 if (_playing) | 297 if (_playing) |
298 { | 298 { |
299 return -1; | 299 return -1; |
300 } | 300 } |
301 | 301 |
302 if (!_outputDeviceIsSpecified) | 302 if (!_outputDeviceIsSpecified) |
303 { | 303 { |
304 return -1; | 304 return -1; |
305 } | 305 } |
(...skipping 23 matching lines...) Expand all Loading... |
329 | 329 |
330 // clear _deviceIndex | 330 // clear _deviceIndex |
331 _deviceIndex = -1; | 331 _deviceIndex = -1; |
332 _paDeviceIndex = -1; | 332 _paDeviceIndex = -1; |
333 | 333 |
334 return 0; | 334 return 0; |
335 } | 335 } |
336 | 336 |
337 int32_t AudioDeviceLinuxPulse::InitMicrophone() | 337 int32_t AudioDeviceLinuxPulse::InitMicrophone() |
338 { | 338 { |
339 DCHECK(thread_checker_.CalledOnValidThread()); | 339 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
340 if (_recording) | 340 if (_recording) |
341 { | 341 { |
342 return -1; | 342 return -1; |
343 } | 343 } |
344 | 344 |
345 if (!_inputDeviceIsSpecified) | 345 if (!_inputDeviceIsSpecified) |
346 { | 346 { |
347 return -1; | 347 return -1; |
348 } | 348 } |
349 | 349 |
(...skipping 22 matching lines...) Expand all Loading... |
372 | 372 |
373 // Clear _deviceIndex | 373 // Clear _deviceIndex |
374 _deviceIndex = -1; | 374 _deviceIndex = -1; |
375 _paDeviceIndex = -1; | 375 _paDeviceIndex = -1; |
376 | 376 |
377 return 0; | 377 return 0; |
378 } | 378 } |
379 | 379 |
380 bool AudioDeviceLinuxPulse::SpeakerIsInitialized() const | 380 bool AudioDeviceLinuxPulse::SpeakerIsInitialized() const |
381 { | 381 { |
382 DCHECK(thread_checker_.CalledOnValidThread()); | 382 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
383 return (_mixerManager.SpeakerIsInitialized()); | 383 return (_mixerManager.SpeakerIsInitialized()); |
384 } | 384 } |
385 | 385 |
386 bool AudioDeviceLinuxPulse::MicrophoneIsInitialized() const | 386 bool AudioDeviceLinuxPulse::MicrophoneIsInitialized() const |
387 { | 387 { |
388 DCHECK(thread_checker_.CalledOnValidThread()); | 388 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
389 return (_mixerManager.MicrophoneIsInitialized()); | 389 return (_mixerManager.MicrophoneIsInitialized()); |
390 } | 390 } |
391 | 391 |
392 int32_t AudioDeviceLinuxPulse::SpeakerVolumeIsAvailable(bool& available) | 392 int32_t AudioDeviceLinuxPulse::SpeakerVolumeIsAvailable(bool& available) |
393 { | 393 { |
394 DCHECK(thread_checker_.CalledOnValidThread()); | 394 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
395 bool wasInitialized = _mixerManager.SpeakerIsInitialized(); | 395 bool wasInitialized = _mixerManager.SpeakerIsInitialized(); |
396 | 396 |
397 // Make an attempt to open up the | 397 // Make an attempt to open up the |
398 // output mixer corresponding to the currently selected output device. | 398 // output mixer corresponding to the currently selected output device. |
399 if (!wasInitialized && InitSpeaker() == -1) | 399 if (!wasInitialized && InitSpeaker() == -1) |
400 { | 400 { |
401 // If we end up here it means that the selected speaker has no volume | 401 // If we end up here it means that the selected speaker has no volume |
402 // control. | 402 // control. |
403 available = false; | 403 available = false; |
404 return 0; | 404 return 0; |
405 } | 405 } |
406 | 406 |
407 // Given that InitSpeaker was successful, we know volume control exists. | 407 // Given that InitSpeaker was successful, we know volume control exists. |
408 available = true; | 408 available = true; |
409 | 409 |
410 // Close the initialized output mixer | 410 // Close the initialized output mixer |
411 if (!wasInitialized) | 411 if (!wasInitialized) |
412 { | 412 { |
413 _mixerManager.CloseSpeaker(); | 413 _mixerManager.CloseSpeaker(); |
414 } | 414 } |
415 | 415 |
416 return 0; | 416 return 0; |
417 } | 417 } |
418 | 418 |
419 int32_t AudioDeviceLinuxPulse::SetSpeakerVolume(uint32_t volume) | 419 int32_t AudioDeviceLinuxPulse::SetSpeakerVolume(uint32_t volume) |
420 { | 420 { |
421 DCHECK(thread_checker_.CalledOnValidThread()); | 421 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
422 if (!_playing) { | 422 if (!_playing) { |
423 // Only update the volume if it's been set while we weren't playing. | 423 // Only update the volume if it's been set while we weren't playing. |
424 update_speaker_volume_at_startup_ = true; | 424 update_speaker_volume_at_startup_ = true; |
425 } | 425 } |
426 return (_mixerManager.SetSpeakerVolume(volume)); | 426 return (_mixerManager.SetSpeakerVolume(volume)); |
427 } | 427 } |
428 | 428 |
429 int32_t AudioDeviceLinuxPulse::SpeakerVolume(uint32_t& volume) const | 429 int32_t AudioDeviceLinuxPulse::SpeakerVolume(uint32_t& volume) const |
430 { | 430 { |
431 DCHECK(thread_checker_.CalledOnValidThread()); | 431 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
432 uint32_t level(0); | 432 uint32_t level(0); |
433 | 433 |
434 if (_mixerManager.SpeakerVolume(level) == -1) | 434 if (_mixerManager.SpeakerVolume(level) == -1) |
435 { | 435 { |
436 return -1; | 436 return -1; |
437 } | 437 } |
438 | 438 |
439 volume = level; | 439 volume = level; |
440 | 440 |
441 return 0; | 441 return 0; |
(...skipping 15 matching lines...) Expand all Loading... |
457 { | 457 { |
458 | 458 |
459 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, | 459 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, |
460 " API call not supported on this platform"); | 460 " API call not supported on this platform"); |
461 return -1; | 461 return -1; |
462 } | 462 } |
463 | 463 |
464 int32_t AudioDeviceLinuxPulse::MaxSpeakerVolume( | 464 int32_t AudioDeviceLinuxPulse::MaxSpeakerVolume( |
465 uint32_t& maxVolume) const | 465 uint32_t& maxVolume) const |
466 { | 466 { |
467 DCHECK(thread_checker_.CalledOnValidThread()); | 467 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
468 uint32_t maxVol(0); | 468 uint32_t maxVol(0); |
469 | 469 |
470 if (_mixerManager.MaxSpeakerVolume(maxVol) == -1) | 470 if (_mixerManager.MaxSpeakerVolume(maxVol) == -1) |
471 { | 471 { |
472 return -1; | 472 return -1; |
473 } | 473 } |
474 | 474 |
475 maxVolume = maxVol; | 475 maxVolume = maxVol; |
476 | 476 |
477 return 0; | 477 return 0; |
478 } | 478 } |
479 | 479 |
480 int32_t AudioDeviceLinuxPulse::MinSpeakerVolume( | 480 int32_t AudioDeviceLinuxPulse::MinSpeakerVolume( |
481 uint32_t& minVolume) const | 481 uint32_t& minVolume) const |
482 { | 482 { |
483 DCHECK(thread_checker_.CalledOnValidThread()); | 483 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
484 uint32_t minVol(0); | 484 uint32_t minVol(0); |
485 | 485 |
486 if (_mixerManager.MinSpeakerVolume(minVol) == -1) | 486 if (_mixerManager.MinSpeakerVolume(minVol) == -1) |
487 { | 487 { |
488 return -1; | 488 return -1; |
489 } | 489 } |
490 | 490 |
491 minVolume = minVol; | 491 minVolume = minVol; |
492 | 492 |
493 return 0; | 493 return 0; |
494 } | 494 } |
495 | 495 |
496 int32_t AudioDeviceLinuxPulse::SpeakerVolumeStepSize( | 496 int32_t AudioDeviceLinuxPulse::SpeakerVolumeStepSize( |
497 uint16_t& stepSize) const | 497 uint16_t& stepSize) const |
498 { | 498 { |
499 DCHECK(thread_checker_.CalledOnValidThread()); | 499 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
500 uint16_t delta(0); | 500 uint16_t delta(0); |
501 | 501 |
502 if (_mixerManager.SpeakerVolumeStepSize(delta) == -1) | 502 if (_mixerManager.SpeakerVolumeStepSize(delta) == -1) |
503 { | 503 { |
504 return -1; | 504 return -1; |
505 } | 505 } |
506 | 506 |
507 stepSize = delta; | 507 stepSize = delta; |
508 | 508 |
509 return 0; | 509 return 0; |
510 } | 510 } |
511 | 511 |
512 int32_t AudioDeviceLinuxPulse::SpeakerMuteIsAvailable(bool& available) | 512 int32_t AudioDeviceLinuxPulse::SpeakerMuteIsAvailable(bool& available) |
513 { | 513 { |
514 DCHECK(thread_checker_.CalledOnValidThread()); | 514 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
515 bool isAvailable(false); | 515 bool isAvailable(false); |
516 bool wasInitialized = _mixerManager.SpeakerIsInitialized(); | 516 bool wasInitialized = _mixerManager.SpeakerIsInitialized(); |
517 | 517 |
518 // Make an attempt to open up the | 518 // Make an attempt to open up the |
519 // output mixer corresponding to the currently selected output device. | 519 // output mixer corresponding to the currently selected output device. |
520 // | 520 // |
521 if (!wasInitialized && InitSpeaker() == -1) | 521 if (!wasInitialized && InitSpeaker() == -1) |
522 { | 522 { |
523 // If we end up here it means that the selected speaker has no volume | 523 // If we end up here it means that the selected speaker has no volume |
524 // control, hence it is safe to state that there is no mute control | 524 // control, hence it is safe to state that there is no mute control |
(...skipping 11 matching lines...) Expand all Loading... |
536 if (!wasInitialized) | 536 if (!wasInitialized) |
537 { | 537 { |
538 _mixerManager.CloseSpeaker(); | 538 _mixerManager.CloseSpeaker(); |
539 } | 539 } |
540 | 540 |
541 return 0; | 541 return 0; |
542 } | 542 } |
543 | 543 |
544 int32_t AudioDeviceLinuxPulse::SetSpeakerMute(bool enable) | 544 int32_t AudioDeviceLinuxPulse::SetSpeakerMute(bool enable) |
545 { | 545 { |
546 DCHECK(thread_checker_.CalledOnValidThread()); | 546 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
547 return (_mixerManager.SetSpeakerMute(enable)); | 547 return (_mixerManager.SetSpeakerMute(enable)); |
548 } | 548 } |
549 | 549 |
550 int32_t AudioDeviceLinuxPulse::SpeakerMute(bool& enabled) const | 550 int32_t AudioDeviceLinuxPulse::SpeakerMute(bool& enabled) const |
551 { | 551 { |
552 DCHECK(thread_checker_.CalledOnValidThread()); | 552 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
553 bool muted(0); | 553 bool muted(0); |
554 if (_mixerManager.SpeakerMute(muted) == -1) | 554 if (_mixerManager.SpeakerMute(muted) == -1) |
555 { | 555 { |
556 return -1; | 556 return -1; |
557 } | 557 } |
558 | 558 |
559 enabled = muted; | 559 enabled = muted; |
560 return 0; | 560 return 0; |
561 } | 561 } |
562 | 562 |
563 int32_t AudioDeviceLinuxPulse::MicrophoneMuteIsAvailable(bool& available) | 563 int32_t AudioDeviceLinuxPulse::MicrophoneMuteIsAvailable(bool& available) |
564 { | 564 { |
565 DCHECK(thread_checker_.CalledOnValidThread()); | 565 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
566 bool isAvailable(false); | 566 bool isAvailable(false); |
567 bool wasInitialized = _mixerManager.MicrophoneIsInitialized(); | 567 bool wasInitialized = _mixerManager.MicrophoneIsInitialized(); |
568 | 568 |
569 // Make an attempt to open up the | 569 // Make an attempt to open up the |
570 // input mixer corresponding to the currently selected input device. | 570 // input mixer corresponding to the currently selected input device. |
571 // | 571 // |
572 if (!wasInitialized && InitMicrophone() == -1) | 572 if (!wasInitialized && InitMicrophone() == -1) |
573 { | 573 { |
574 // If we end up here it means that the selected microphone has no | 574 // If we end up here it means that the selected microphone has no |
575 // volume control, hence it is safe to state that there is no | 575 // volume control, hence it is safe to state that there is no |
(...skipping 12 matching lines...) Expand all Loading... |
588 if (!wasInitialized) | 588 if (!wasInitialized) |
589 { | 589 { |
590 _mixerManager.CloseMicrophone(); | 590 _mixerManager.CloseMicrophone(); |
591 } | 591 } |
592 | 592 |
593 return 0; | 593 return 0; |
594 } | 594 } |
595 | 595 |
596 int32_t AudioDeviceLinuxPulse::SetMicrophoneMute(bool enable) | 596 int32_t AudioDeviceLinuxPulse::SetMicrophoneMute(bool enable) |
597 { | 597 { |
598 DCHECK(thread_checker_.CalledOnValidThread()); | 598 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
599 return (_mixerManager.SetMicrophoneMute(enable)); | 599 return (_mixerManager.SetMicrophoneMute(enable)); |
600 } | 600 } |
601 | 601 |
602 int32_t AudioDeviceLinuxPulse::MicrophoneMute(bool& enabled) const | 602 int32_t AudioDeviceLinuxPulse::MicrophoneMute(bool& enabled) const |
603 { | 603 { |
604 DCHECK(thread_checker_.CalledOnValidThread()); | 604 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
605 bool muted(0); | 605 bool muted(0); |
606 if (_mixerManager.MicrophoneMute(muted) == -1) | 606 if (_mixerManager.MicrophoneMute(muted) == -1) |
607 { | 607 { |
608 return -1; | 608 return -1; |
609 } | 609 } |
610 | 610 |
611 enabled = muted; | 611 enabled = muted; |
612 return 0; | 612 return 0; |
613 } | 613 } |
614 | 614 |
615 int32_t AudioDeviceLinuxPulse::MicrophoneBoostIsAvailable(bool& available) | 615 int32_t AudioDeviceLinuxPulse::MicrophoneBoostIsAvailable(bool& available) |
616 { | 616 { |
617 DCHECK(thread_checker_.CalledOnValidThread()); | 617 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
618 bool isAvailable(false); | 618 bool isAvailable(false); |
619 bool wasInitialized = _mixerManager.MicrophoneIsInitialized(); | 619 bool wasInitialized = _mixerManager.MicrophoneIsInitialized(); |
620 | 620 |
621 // Enumerate all avaliable microphone and make an attempt to open up the | 621 // Enumerate all avaliable microphone and make an attempt to open up the |
622 // input mixer corresponding to the currently selected input device. | 622 // input mixer corresponding to the currently selected input device. |
623 // | 623 // |
624 if (!wasInitialized && InitMicrophone() == -1) | 624 if (!wasInitialized && InitMicrophone() == -1) |
625 { | 625 { |
626 // If we end up here it means that the selected microphone has no | 626 // If we end up here it means that the selected microphone has no |
627 // volume control, hence it is safe to state that there is no | 627 // volume control, hence it is safe to state that there is no |
(...skipping 10 matching lines...) Expand all Loading... |
638 if (!wasInitialized) | 638 if (!wasInitialized) |
639 { | 639 { |
640 _mixerManager.CloseMicrophone(); | 640 _mixerManager.CloseMicrophone(); |
641 } | 641 } |
642 | 642 |
643 return 0; | 643 return 0; |
644 } | 644 } |
645 | 645 |
646 int32_t AudioDeviceLinuxPulse::SetMicrophoneBoost(bool enable) | 646 int32_t AudioDeviceLinuxPulse::SetMicrophoneBoost(bool enable) |
647 { | 647 { |
648 DCHECK(thread_checker_.CalledOnValidThread()); | 648 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
649 return (_mixerManager.SetMicrophoneBoost(enable)); | 649 return (_mixerManager.SetMicrophoneBoost(enable)); |
650 } | 650 } |
651 | 651 |
652 int32_t AudioDeviceLinuxPulse::MicrophoneBoost(bool& enabled) const | 652 int32_t AudioDeviceLinuxPulse::MicrophoneBoost(bool& enabled) const |
653 { | 653 { |
654 DCHECK(thread_checker_.CalledOnValidThread()); | 654 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
655 bool onOff(0); | 655 bool onOff(0); |
656 | 656 |
657 if (_mixerManager.MicrophoneBoost(onOff) == -1) | 657 if (_mixerManager.MicrophoneBoost(onOff) == -1) |
658 { | 658 { |
659 return -1; | 659 return -1; |
660 } | 660 } |
661 | 661 |
662 enabled = onOff; | 662 enabled = onOff; |
663 | 663 |
664 return 0; | 664 return 0; |
665 } | 665 } |
666 | 666 |
667 int32_t AudioDeviceLinuxPulse::StereoRecordingIsAvailable(bool& available) | 667 int32_t AudioDeviceLinuxPulse::StereoRecordingIsAvailable(bool& available) |
668 { | 668 { |
669 DCHECK(thread_checker_.CalledOnValidThread()); | 669 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
670 if (_recChannels == 2 && _recording) { | 670 if (_recChannels == 2 && _recording) { |
671 available = true; | 671 available = true; |
672 return 0; | 672 return 0; |
673 } | 673 } |
674 | 674 |
675 available = false; | 675 available = false; |
676 bool wasInitialized = _mixerManager.MicrophoneIsInitialized(); | 676 bool wasInitialized = _mixerManager.MicrophoneIsInitialized(); |
677 int error = 0; | 677 int error = 0; |
678 | 678 |
679 if (!wasInitialized && InitMicrophone() == -1) | 679 if (!wasInitialized && InitMicrophone() == -1) |
(...skipping 13 matching lines...) Expand all Loading... |
693 if (!wasInitialized) | 693 if (!wasInitialized) |
694 { | 694 { |
695 _mixerManager.CloseMicrophone(); | 695 _mixerManager.CloseMicrophone(); |
696 } | 696 } |
697 | 697 |
698 return error; | 698 return error; |
699 } | 699 } |
700 | 700 |
701 int32_t AudioDeviceLinuxPulse::SetStereoRecording(bool enable) | 701 int32_t AudioDeviceLinuxPulse::SetStereoRecording(bool enable) |
702 { | 702 { |
703 DCHECK(thread_checker_.CalledOnValidThread()); | 703 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
704 if (enable) | 704 if (enable) |
705 _recChannels = 2; | 705 _recChannels = 2; |
706 else | 706 else |
707 _recChannels = 1; | 707 _recChannels = 1; |
708 | 708 |
709 return 0; | 709 return 0; |
710 } | 710 } |
711 | 711 |
712 int32_t AudioDeviceLinuxPulse::StereoRecording(bool& enabled) const | 712 int32_t AudioDeviceLinuxPulse::StereoRecording(bool& enabled) const |
713 { | 713 { |
714 DCHECK(thread_checker_.CalledOnValidThread()); | 714 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
715 if (_recChannels == 2) | 715 if (_recChannels == 2) |
716 enabled = true; | 716 enabled = true; |
717 else | 717 else |
718 enabled = false; | 718 enabled = false; |
719 | 719 |
720 return 0; | 720 return 0; |
721 } | 721 } |
722 | 722 |
723 int32_t AudioDeviceLinuxPulse::StereoPlayoutIsAvailable(bool& available) | 723 int32_t AudioDeviceLinuxPulse::StereoPlayoutIsAvailable(bool& available) |
724 { | 724 { |
725 DCHECK(thread_checker_.CalledOnValidThread()); | 725 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
726 if (_playChannels == 2 && _playing) { | 726 if (_playChannels == 2 && _playing) { |
727 available = true; | 727 available = true; |
728 return 0; | 728 return 0; |
729 } | 729 } |
730 | 730 |
731 available = false; | 731 available = false; |
732 bool wasInitialized = _mixerManager.SpeakerIsInitialized(); | 732 bool wasInitialized = _mixerManager.SpeakerIsInitialized(); |
733 int error = 0; | 733 int error = 0; |
734 | 734 |
735 if (!wasInitialized && InitSpeaker() == -1) | 735 if (!wasInitialized && InitSpeaker() == -1) |
(...skipping 12 matching lines...) Expand all Loading... |
748 if (!wasInitialized) | 748 if (!wasInitialized) |
749 { | 749 { |
750 _mixerManager.CloseSpeaker(); | 750 _mixerManager.CloseSpeaker(); |
751 } | 751 } |
752 | 752 |
753 return error; | 753 return error; |
754 } | 754 } |
755 | 755 |
756 int32_t AudioDeviceLinuxPulse::SetStereoPlayout(bool enable) | 756 int32_t AudioDeviceLinuxPulse::SetStereoPlayout(bool enable) |
757 { | 757 { |
758 DCHECK(thread_checker_.CalledOnValidThread()); | 758 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
759 if (enable) | 759 if (enable) |
760 _playChannels = 2; | 760 _playChannels = 2; |
761 else | 761 else |
762 _playChannels = 1; | 762 _playChannels = 1; |
763 | 763 |
764 return 0; | 764 return 0; |
765 } | 765 } |
766 | 766 |
767 int32_t AudioDeviceLinuxPulse::StereoPlayout(bool& enabled) const | 767 int32_t AudioDeviceLinuxPulse::StereoPlayout(bool& enabled) const |
768 { | 768 { |
769 DCHECK(thread_checker_.CalledOnValidThread()); | 769 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
770 if (_playChannels == 2) | 770 if (_playChannels == 2) |
771 enabled = true; | 771 enabled = true; |
772 else | 772 else |
773 enabled = false; | 773 enabled = false; |
774 | 774 |
775 return 0; | 775 return 0; |
776 } | 776 } |
777 | 777 |
778 int32_t AudioDeviceLinuxPulse::SetAGC(bool enable) | 778 int32_t AudioDeviceLinuxPulse::SetAGC(bool enable) |
779 { | 779 { |
780 CriticalSectionScoped lock(&_critSect); | 780 CriticalSectionScoped lock(&_critSect); |
781 _AGC = enable; | 781 _AGC = enable; |
782 | 782 |
783 return 0; | 783 return 0; |
784 } | 784 } |
785 | 785 |
786 bool AudioDeviceLinuxPulse::AGC() const | 786 bool AudioDeviceLinuxPulse::AGC() const |
787 { | 787 { |
788 CriticalSectionScoped lock(&_critSect); | 788 CriticalSectionScoped lock(&_critSect); |
789 return _AGC; | 789 return _AGC; |
790 } | 790 } |
791 | 791 |
792 int32_t AudioDeviceLinuxPulse::MicrophoneVolumeIsAvailable( | 792 int32_t AudioDeviceLinuxPulse::MicrophoneVolumeIsAvailable( |
793 bool& available) | 793 bool& available) |
794 { | 794 { |
795 DCHECK(thread_checker_.CalledOnValidThread()); | 795 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
796 bool wasInitialized = _mixerManager.MicrophoneIsInitialized(); | 796 bool wasInitialized = _mixerManager.MicrophoneIsInitialized(); |
797 | 797 |
798 // Make an attempt to open up the | 798 // Make an attempt to open up the |
799 // input mixer corresponding to the currently selected output device. | 799 // input mixer corresponding to the currently selected output device. |
800 if (!wasInitialized && InitMicrophone() == -1) | 800 if (!wasInitialized && InitMicrophone() == -1) |
801 { | 801 { |
802 // If we end up here it means that the selected microphone has no | 802 // If we end up here it means that the selected microphone has no |
803 // volume control. | 803 // volume control. |
804 available = false; | 804 available = false; |
805 return 0; | 805 return 0; |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
869 } | 869 } |
870 | 870 |
871 minVolume = minVol; | 871 minVolume = minVol; |
872 | 872 |
873 return 0; | 873 return 0; |
874 } | 874 } |
875 | 875 |
876 int32_t AudioDeviceLinuxPulse::MicrophoneVolumeStepSize( | 876 int32_t AudioDeviceLinuxPulse::MicrophoneVolumeStepSize( |
877 uint16_t& stepSize) const | 877 uint16_t& stepSize) const |
878 { | 878 { |
879 DCHECK(thread_checker_.CalledOnValidThread()); | 879 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
880 uint16_t delta(0); | 880 uint16_t delta(0); |
881 | 881 |
882 if (_mixerManager.MicrophoneVolumeStepSize(delta) == -1) | 882 if (_mixerManager.MicrophoneVolumeStepSize(delta) == -1) |
883 { | 883 { |
884 return -1; | 884 return -1; |
885 } | 885 } |
886 | 886 |
887 stepSize = delta; | 887 stepSize = delta; |
888 | 888 |
889 return 0; | 889 return 0; |
(...skipping 13 matching lines...) Expand all Loading... |
903 | 903 |
904 WaitForOperationCompletion(paOperation); | 904 WaitForOperationCompletion(paOperation); |
905 | 905 |
906 PaUnLock(); | 906 PaUnLock(); |
907 | 907 |
908 return _numPlayDevices; | 908 return _numPlayDevices; |
909 } | 909 } |
910 | 910 |
911 int32_t AudioDeviceLinuxPulse::SetPlayoutDevice(uint16_t index) | 911 int32_t AudioDeviceLinuxPulse::SetPlayoutDevice(uint16_t index) |
912 { | 912 { |
913 DCHECK(thread_checker_.CalledOnValidThread()); | 913 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
914 if (_playIsInitialized) | 914 if (_playIsInitialized) |
915 { | 915 { |
916 return -1; | 916 return -1; |
917 } | 917 } |
918 | 918 |
919 const uint16_t nDevices = PlayoutDevices(); | 919 const uint16_t nDevices = PlayoutDevices(); |
920 | 920 |
921 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, | 921 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, |
922 " number of availiable output devices is %u", nDevices); | 922 " number of availiable output devices is %u", nDevices); |
923 | 923 |
(...skipping 16 matching lines...) Expand all Loading... |
940 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id, | 940 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id, |
941 "WindowsDeviceType not supported"); | 941 "WindowsDeviceType not supported"); |
942 return -1; | 942 return -1; |
943 } | 943 } |
944 | 944 |
945 int32_t AudioDeviceLinuxPulse::PlayoutDeviceName( | 945 int32_t AudioDeviceLinuxPulse::PlayoutDeviceName( |
946 uint16_t index, | 946 uint16_t index, |
947 char name[kAdmMaxDeviceNameSize], | 947 char name[kAdmMaxDeviceNameSize], |
948 char guid[kAdmMaxGuidSize]) | 948 char guid[kAdmMaxGuidSize]) |
949 { | 949 { |
950 DCHECK(thread_checker_.CalledOnValidThread()); | 950 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
951 const uint16_t nDevices = PlayoutDevices(); | 951 const uint16_t nDevices = PlayoutDevices(); |
952 | 952 |
953 if ((index > (nDevices - 1)) || (name == NULL)) | 953 if ((index > (nDevices - 1)) || (name == NULL)) |
954 { | 954 { |
955 return -1; | 955 return -1; |
956 } | 956 } |
957 | 957 |
958 memset(name, 0, kAdmMaxDeviceNameSize); | 958 memset(name, 0, kAdmMaxDeviceNameSize); |
959 | 959 |
960 if (guid != NULL) | 960 if (guid != NULL) |
(...skipping 21 matching lines...) Expand all Loading... |
982 _deviceIndex = -1; | 982 _deviceIndex = -1; |
983 | 983 |
984 return 0; | 984 return 0; |
985 } | 985 } |
986 | 986 |
987 int32_t AudioDeviceLinuxPulse::RecordingDeviceName( | 987 int32_t AudioDeviceLinuxPulse::RecordingDeviceName( |
988 uint16_t index, | 988 uint16_t index, |
989 char name[kAdmMaxDeviceNameSize], | 989 char name[kAdmMaxDeviceNameSize], |
990 char guid[kAdmMaxGuidSize]) | 990 char guid[kAdmMaxGuidSize]) |
991 { | 991 { |
992 DCHECK(thread_checker_.CalledOnValidThread()); | 992 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
993 const uint16_t nDevices(RecordingDevices()); | 993 const uint16_t nDevices(RecordingDevices()); |
994 | 994 |
995 if ((index > (nDevices - 1)) || (name == NULL)) | 995 if ((index > (nDevices - 1)) || (name == NULL)) |
996 { | 996 { |
997 return -1; | 997 return -1; |
998 } | 998 } |
999 | 999 |
1000 memset(name, 0, kAdmMaxDeviceNameSize); | 1000 memset(name, 0, kAdmMaxDeviceNameSize); |
1001 | 1001 |
1002 if (guid != NULL) | 1002 if (guid != NULL) |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1040 | 1040 |
1041 WaitForOperationCompletion(paOperation); | 1041 WaitForOperationCompletion(paOperation); |
1042 | 1042 |
1043 PaUnLock(); | 1043 PaUnLock(); |
1044 | 1044 |
1045 return _numRecDevices; | 1045 return _numRecDevices; |
1046 } | 1046 } |
1047 | 1047 |
1048 int32_t AudioDeviceLinuxPulse::SetRecordingDevice(uint16_t index) | 1048 int32_t AudioDeviceLinuxPulse::SetRecordingDevice(uint16_t index) |
1049 { | 1049 { |
1050 DCHECK(thread_checker_.CalledOnValidThread()); | 1050 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1051 if (_recIsInitialized) | 1051 if (_recIsInitialized) |
1052 { | 1052 { |
1053 return -1; | 1053 return -1; |
1054 } | 1054 } |
1055 | 1055 |
1056 const uint16_t nDevices(RecordingDevices()); | 1056 const uint16_t nDevices(RecordingDevices()); |
1057 | 1057 |
1058 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, | 1058 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, |
1059 " number of availiable input devices is %u", nDevices); | 1059 " number of availiable input devices is %u", nDevices); |
1060 | 1060 |
(...skipping 13 matching lines...) Expand all Loading... |
1074 int32_t AudioDeviceLinuxPulse::SetRecordingDevice( | 1074 int32_t AudioDeviceLinuxPulse::SetRecordingDevice( |
1075 AudioDeviceModule::WindowsDeviceType /*device*/) | 1075 AudioDeviceModule::WindowsDeviceType /*device*/) |
1076 { | 1076 { |
1077 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id, | 1077 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id, |
1078 "WindowsDeviceType not supported"); | 1078 "WindowsDeviceType not supported"); |
1079 return -1; | 1079 return -1; |
1080 } | 1080 } |
1081 | 1081 |
1082 int32_t AudioDeviceLinuxPulse::PlayoutIsAvailable(bool& available) | 1082 int32_t AudioDeviceLinuxPulse::PlayoutIsAvailable(bool& available) |
1083 { | 1083 { |
1084 DCHECK(thread_checker_.CalledOnValidThread()); | 1084 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1085 available = false; | 1085 available = false; |
1086 | 1086 |
1087 // Try to initialize the playout side | 1087 // Try to initialize the playout side |
1088 int32_t res = InitPlayout(); | 1088 int32_t res = InitPlayout(); |
1089 | 1089 |
1090 // Cancel effect of initialization | 1090 // Cancel effect of initialization |
1091 StopPlayout(); | 1091 StopPlayout(); |
1092 | 1092 |
1093 if (res != -1) | 1093 if (res != -1) |
1094 { | 1094 { |
1095 available = true; | 1095 available = true; |
1096 } | 1096 } |
1097 | 1097 |
1098 return res; | 1098 return res; |
1099 } | 1099 } |
1100 | 1100 |
1101 int32_t AudioDeviceLinuxPulse::RecordingIsAvailable(bool& available) | 1101 int32_t AudioDeviceLinuxPulse::RecordingIsAvailable(bool& available) |
1102 { | 1102 { |
1103 DCHECK(thread_checker_.CalledOnValidThread()); | 1103 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1104 available = false; | 1104 available = false; |
1105 | 1105 |
1106 // Try to initialize the playout side | 1106 // Try to initialize the playout side |
1107 int32_t res = InitRecording(); | 1107 int32_t res = InitRecording(); |
1108 | 1108 |
1109 // Cancel effect of initialization | 1109 // Cancel effect of initialization |
1110 StopRecording(); | 1110 StopRecording(); |
1111 | 1111 |
1112 if (res != -1) | 1112 if (res != -1) |
1113 { | 1113 { |
1114 available = true; | 1114 available = true; |
1115 } | 1115 } |
1116 | 1116 |
1117 return res; | 1117 return res; |
1118 } | 1118 } |
1119 | 1119 |
1120 int32_t AudioDeviceLinuxPulse::InitPlayout() | 1120 int32_t AudioDeviceLinuxPulse::InitPlayout() |
1121 { | 1121 { |
1122 DCHECK(thread_checker_.CalledOnValidThread()); | 1122 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1123 | 1123 |
1124 if (_playing) | 1124 if (_playing) |
1125 { | 1125 { |
1126 return -1; | 1126 return -1; |
1127 } | 1127 } |
1128 | 1128 |
1129 if (!_outputDeviceIsSpecified) | 1129 if (!_outputDeviceIsSpecified) |
1130 { | 1130 { |
1131 return -1; | 1131 return -1; |
1132 } | 1132 } |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1234 // Mark playout side as initialized | 1234 // Mark playout side as initialized |
1235 _playIsInitialized = true; | 1235 _playIsInitialized = true; |
1236 _sndCardPlayDelay = 0; | 1236 _sndCardPlayDelay = 0; |
1237 _sndCardRecDelay = 0; | 1237 _sndCardRecDelay = 0; |
1238 | 1238 |
1239 return 0; | 1239 return 0; |
1240 } | 1240 } |
1241 | 1241 |
1242 int32_t AudioDeviceLinuxPulse::InitRecording() | 1242 int32_t AudioDeviceLinuxPulse::InitRecording() |
1243 { | 1243 { |
1244 DCHECK(thread_checker_.CalledOnValidThread()); | 1244 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1245 | 1245 |
1246 if (_recording) | 1246 if (_recording) |
1247 { | 1247 { |
1248 return -1; | 1248 return -1; |
1249 } | 1249 } |
1250 | 1250 |
1251 if (!_inputDeviceIsSpecified) | 1251 if (!_inputDeviceIsSpecified) |
1252 { | 1252 { |
1253 return -1; | 1253 return -1; |
1254 } | 1254 } |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1346 this); | 1346 this); |
1347 | 1347 |
1348 // Mark recording side as initialized | 1348 // Mark recording side as initialized |
1349 _recIsInitialized = true; | 1349 _recIsInitialized = true; |
1350 | 1350 |
1351 return 0; | 1351 return 0; |
1352 } | 1352 } |
1353 | 1353 |
1354 int32_t AudioDeviceLinuxPulse::StartRecording() | 1354 int32_t AudioDeviceLinuxPulse::StartRecording() |
1355 { | 1355 { |
1356 DCHECK(thread_checker_.CalledOnValidThread()); | 1356 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1357 if (!_recIsInitialized) | 1357 if (!_recIsInitialized) |
1358 { | 1358 { |
1359 return -1; | 1359 return -1; |
1360 } | 1360 } |
1361 | 1361 |
1362 if (_recording) | 1362 if (_recording) |
1363 { | 1363 { |
1364 return 0; | 1364 return 0; |
1365 } | 1365 } |
1366 | 1366 |
(...skipping 26 matching lines...) Expand all Loading... |
1393 " failed to activate recording"); | 1393 " failed to activate recording"); |
1394 return -1; | 1394 return -1; |
1395 } | 1395 } |
1396 } | 1396 } |
1397 | 1397 |
1398 return 0; | 1398 return 0; |
1399 } | 1399 } |
1400 | 1400 |
1401 int32_t AudioDeviceLinuxPulse::StopRecording() | 1401 int32_t AudioDeviceLinuxPulse::StopRecording() |
1402 { | 1402 { |
1403 DCHECK(thread_checker_.CalledOnValidThread()); | 1403 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1404 CriticalSectionScoped lock(&_critSect); | 1404 CriticalSectionScoped lock(&_critSect); |
1405 | 1405 |
1406 if (!_recIsInitialized) | 1406 if (!_recIsInitialized) |
1407 { | 1407 { |
1408 return 0; | 1408 return 0; |
1409 } | 1409 } |
1410 | 1410 |
1411 if (_recStream == NULL) | 1411 if (_recStream == NULL) |
1412 { | 1412 { |
1413 return -1; | 1413 return -1; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1456 { | 1456 { |
1457 delete [] _recBuffer; | 1457 delete [] _recBuffer; |
1458 _recBuffer = NULL; | 1458 _recBuffer = NULL; |
1459 } | 1459 } |
1460 | 1460 |
1461 return 0; | 1461 return 0; |
1462 } | 1462 } |
1463 | 1463 |
1464 bool AudioDeviceLinuxPulse::RecordingIsInitialized() const | 1464 bool AudioDeviceLinuxPulse::RecordingIsInitialized() const |
1465 { | 1465 { |
1466 DCHECK(thread_checker_.CalledOnValidThread()); | 1466 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1467 return (_recIsInitialized); | 1467 return (_recIsInitialized); |
1468 } | 1468 } |
1469 | 1469 |
1470 bool AudioDeviceLinuxPulse::Recording() const | 1470 bool AudioDeviceLinuxPulse::Recording() const |
1471 { | 1471 { |
1472 DCHECK(thread_checker_.CalledOnValidThread()); | 1472 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1473 return (_recording); | 1473 return (_recording); |
1474 } | 1474 } |
1475 | 1475 |
1476 bool AudioDeviceLinuxPulse::PlayoutIsInitialized() const | 1476 bool AudioDeviceLinuxPulse::PlayoutIsInitialized() const |
1477 { | 1477 { |
1478 DCHECK(thread_checker_.CalledOnValidThread()); | 1478 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1479 return (_playIsInitialized); | 1479 return (_playIsInitialized); |
1480 } | 1480 } |
1481 | 1481 |
1482 int32_t AudioDeviceLinuxPulse::StartPlayout() | 1482 int32_t AudioDeviceLinuxPulse::StartPlayout() |
1483 { | 1483 { |
1484 DCHECK(thread_checker_.CalledOnValidThread()); | 1484 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1485 | 1485 |
1486 if (!_playIsInitialized) | 1486 if (!_playIsInitialized) |
1487 { | 1487 { |
1488 return -1; | 1488 return -1; |
1489 } | 1489 } |
1490 | 1490 |
1491 if (_playing) | 1491 if (_playing) |
1492 { | 1492 { |
1493 return 0; | 1493 return 0; |
1494 } | 1494 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1528 " failed to activate playing"); | 1528 " failed to activate playing"); |
1529 return -1; | 1529 return -1; |
1530 } | 1530 } |
1531 } | 1531 } |
1532 | 1532 |
1533 return 0; | 1533 return 0; |
1534 } | 1534 } |
1535 | 1535 |
1536 int32_t AudioDeviceLinuxPulse::StopPlayout() | 1536 int32_t AudioDeviceLinuxPulse::StopPlayout() |
1537 { | 1537 { |
1538 DCHECK(thread_checker_.CalledOnValidThread()); | 1538 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1539 CriticalSectionScoped lock(&_critSect); | 1539 CriticalSectionScoped lock(&_critSect); |
1540 | 1540 |
1541 if (!_playIsInitialized) | 1541 if (!_playIsInitialized) |
1542 { | 1542 { |
1543 return 0; | 1543 return 0; |
1544 } | 1544 } |
1545 | 1545 |
1546 if (_playStream == NULL) | 1546 if (_playStream == NULL) |
1547 { | 1547 { |
1548 return -1; | 1548 return -1; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1600 | 1600 |
1601 int32_t AudioDeviceLinuxPulse::PlayoutDelay(uint16_t& delayMS) const | 1601 int32_t AudioDeviceLinuxPulse::PlayoutDelay(uint16_t& delayMS) const |
1602 { | 1602 { |
1603 CriticalSectionScoped lock(&_critSect); | 1603 CriticalSectionScoped lock(&_critSect); |
1604 delayMS = (uint16_t) _sndCardPlayDelay; | 1604 delayMS = (uint16_t) _sndCardPlayDelay; |
1605 return 0; | 1605 return 0; |
1606 } | 1606 } |
1607 | 1607 |
1608 int32_t AudioDeviceLinuxPulse::RecordingDelay(uint16_t& delayMS) const | 1608 int32_t AudioDeviceLinuxPulse::RecordingDelay(uint16_t& delayMS) const |
1609 { | 1609 { |
1610 DCHECK(thread_checker_.CalledOnValidThread()); | 1610 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1611 delayMS = (uint16_t) _sndCardRecDelay; | 1611 delayMS = (uint16_t) _sndCardRecDelay; |
1612 return 0; | 1612 return 0; |
1613 } | 1613 } |
1614 | 1614 |
1615 bool AudioDeviceLinuxPulse::Playing() const | 1615 bool AudioDeviceLinuxPulse::Playing() const |
1616 { | 1616 { |
1617 DCHECK(thread_checker_.CalledOnValidThread()); | 1617 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1618 return (_playing); | 1618 return (_playing); |
1619 } | 1619 } |
1620 | 1620 |
1621 int32_t AudioDeviceLinuxPulse::SetPlayoutBuffer( | 1621 int32_t AudioDeviceLinuxPulse::SetPlayoutBuffer( |
1622 const AudioDeviceModule::BufferType type, | 1622 const AudioDeviceModule::BufferType type, |
1623 uint16_t sizeMS) | 1623 uint16_t sizeMS) |
1624 { | 1624 { |
1625 DCHECK(thread_checker_.CalledOnValidThread()); | 1625 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1626 if (type != AudioDeviceModule::kFixedBufferSize) | 1626 if (type != AudioDeviceModule::kFixedBufferSize) |
1627 { | 1627 { |
1628 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id, | 1628 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id, |
1629 " Adaptive buffer size not supported on this platform"); | 1629 " Adaptive buffer size not supported on this platform"); |
1630 return -1; | 1630 return -1; |
1631 } | 1631 } |
1632 | 1632 |
1633 _playBufType = type; | 1633 _playBufType = type; |
1634 _playBufDelayFixed = sizeMS; | 1634 _playBufDelayFixed = sizeMS; |
1635 | 1635 |
1636 return 0; | 1636 return 0; |
1637 } | 1637 } |
1638 | 1638 |
1639 int32_t AudioDeviceLinuxPulse::PlayoutBuffer( | 1639 int32_t AudioDeviceLinuxPulse::PlayoutBuffer( |
1640 AudioDeviceModule::BufferType& type, | 1640 AudioDeviceModule::BufferType& type, |
1641 uint16_t& sizeMS) const | 1641 uint16_t& sizeMS) const |
1642 { | 1642 { |
1643 DCHECK(thread_checker_.CalledOnValidThread()); | 1643 RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
1644 type = _playBufType; | 1644 type = _playBufType; |
1645 sizeMS = _playBufDelayFixed; | 1645 sizeMS = _playBufDelayFixed; |
1646 | 1646 |
1647 return 0; | 1647 return 0; |
1648 } | 1648 } |
1649 | 1649 |
1650 int32_t AudioDeviceLinuxPulse::CPULoad(uint16_t& /*load*/) const | 1650 int32_t AudioDeviceLinuxPulse::CPULoad(uint16_t& /*load*/) const |
1651 { | 1651 { |
1652 | 1652 |
1653 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, | 1653 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, |
(...skipping 1359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3013 | 3013 |
3014 // A bit change in keymap means a key is pressed | 3014 // A bit change in keymap means a key is pressed |
3015 for (i = 0; i < sizeof(szKey); i++) | 3015 for (i = 0; i < sizeof(szKey); i++) |
3016 state |= (szKey[i] ^ _oldKeyState[i]) & szKey[i]; | 3016 state |= (szKey[i] ^ _oldKeyState[i]) & szKey[i]; |
3017 | 3017 |
3018 // Save old state | 3018 // Save old state |
3019 memcpy((char*)_oldKeyState, (char*)szKey, sizeof(_oldKeyState)); | 3019 memcpy((char*)_oldKeyState, (char*)szKey, sizeof(_oldKeyState)); |
3020 return (state != 0); | 3020 return (state != 0); |
3021 } | 3021 } |
3022 } | 3022 } |
OLD | NEW |