Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(123)

Side by Side Diff: webrtc/modules/audio_device/win/audio_mixer_manager_win.cc

Issue 2685783014: Replace NULL with nullptr in all C++ files. (Closed)
Patch Set: Fixing android. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 13 matching lines...) Expand all
24 #ifndef WAVE_MAPPED_kDefaultCommunicationDevice 24 #ifndef WAVE_MAPPED_kDefaultCommunicationDevice
25 #define WAVE_MAPPED_kDefaultCommunicationDevice 0x0010 25 #define WAVE_MAPPED_kDefaultCommunicationDevice 0x0010
26 #endif 26 #endif
27 27
28 namespace webrtc { 28 namespace webrtc {
29 29
30 // ============================================================================ 30 // ============================================================================
31 // CONSTRUCTION/DESTRUCTION 31 // CONSTRUCTION/DESTRUCTION
32 // ============================================================================ 32 // ============================================================================
33 33
34 AudioMixerManager::AudioMixerManager(const int32_t id) : 34 AudioMixerManager::AudioMixerManager(const int32_t id)
35 _critSect(*CriticalSectionWrapper::CreateCriticalSection()), 35 : _critSect(*CriticalSectionWrapper::CreateCriticalSection()),
36 _id(id), 36 _id(id),
37 _inputMixerHandle(NULL), 37 _inputMixerHandle(nullptr),
38 _outputMixerHandle(NULL) 38 _outputMixerHandle(nullptr) {
39 { 39 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, _id, "%s constructed",
40 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, _id, "%s constructed", __FUNCT ION__); 40 __FUNCTION__);
41 ClearSpeakerState(); 41 ClearSpeakerState();
42 ClearMicrophoneState(); 42 ClearMicrophoneState();
43 } 43 }
44 44
45 AudioMixerManager::~AudioMixerManager() 45 AudioMixerManager::~AudioMixerManager()
46 { 46 {
47 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, _id, "%s destructed", __FUNCTI ON__); 47 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, _id, "%s destructed", __FUNCTI ON__);
48 48
49 Close(); 49 Close();
50 50
51 delete &_critSect; 51 delete &_critSect;
52 } 52 }
53 53
54 // ============================================================================ 54 // ============================================================================
55 // PUBLIC METHODS 55 // PUBLIC METHODS
56 // ============================================================================ 56 // ============================================================================
57 57
58 // ---------------------------------------------------------------------------- 58 // ----------------------------------------------------------------------------
59 // Close 59 // Close
60 // ---------------------------------------------------------------------------- 60 // ----------------------------------------------------------------------------
61 61
62 int32_t AudioMixerManager::Close() 62 int32_t AudioMixerManager::Close()
63 { 63 {
64 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "%s", __FUNCTION__); 64 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "%s", __FUNCTION__);
65 65
66 CriticalSectionScoped lock(&_critSect); 66 CriticalSectionScoped lock(&_critSect);
67 67
68 if (_outputMixerHandle != NULL) 68 if (_outputMixerHandle != nullptr) {
69 { 69 mixerClose(_outputMixerHandle);
70 mixerClose(_outputMixerHandle); 70 _outputMixerHandle = nullptr;
71 _outputMixerHandle = NULL;
72 } 71 }
73 if (_inputMixerHandle != NULL) 72 if (_inputMixerHandle != nullptr) {
74 { 73 mixerClose(_inputMixerHandle);
75 mixerClose(_inputMixerHandle); 74 _inputMixerHandle = nullptr;
76 _inputMixerHandle = NULL;
77 } 75 }
78 return 0; 76 return 0;
79 77
80 } 78 }
81 79
82 // ---------------------------------------------------------------------------- 80 // ----------------------------------------------------------------------------
83 // CloseSpeaker 81 // CloseSpeaker
84 // ---------------------------------------------------------------------------- 82 // ----------------------------------------------------------------------------
85 83
86 int32_t AudioMixerManager::CloseSpeaker() 84 int32_t AudioMixerManager::CloseSpeaker()
87 { 85 {
88 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "%s", __FUNCTION__); 86 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "%s", __FUNCTION__);
89 87
90 CriticalSectionScoped lock(&_critSect); 88 CriticalSectionScoped lock(&_critSect);
91 89
92 if (_outputMixerHandle == NULL) 90 if (_outputMixerHandle == nullptr) {
93 { 91 return -1;
94 return -1;
95 } 92 }
96 93
97 ClearSpeakerState(_outputMixerID); 94 ClearSpeakerState(_outputMixerID);
98 95
99 mixerClose(_outputMixerHandle); 96 mixerClose(_outputMixerHandle);
100 _outputMixerHandle = NULL; 97 _outputMixerHandle = nullptr;
101 98
102 return 0; 99 return 0;
103 } 100 }
104 101
105 // ---------------------------------------------------------------------------- 102 // ----------------------------------------------------------------------------
106 // CloseMicrophone 103 // CloseMicrophone
107 // ---------------------------------------------------------------------------- 104 // ----------------------------------------------------------------------------
108 105
109 int32_t AudioMixerManager::CloseMicrophone() 106 int32_t AudioMixerManager::CloseMicrophone()
110 { 107 {
111 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "%s", __FUNCTION__); 108 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "%s", __FUNCTION__);
112 109
113 CriticalSectionScoped lock(&_critSect); 110 CriticalSectionScoped lock(&_critSect);
114 111
115 if (_inputMixerHandle == NULL) 112 if (_inputMixerHandle == nullptr) {
116 { 113 return -1;
117 return -1;
118 } 114 }
119 115
120 ClearMicrophoneState(_inputMixerID); 116 ClearMicrophoneState(_inputMixerID);
121 117
122 mixerClose(_inputMixerHandle); 118 mixerClose(_inputMixerHandle);
123 _inputMixerHandle = NULL; 119 _inputMixerHandle = nullptr;
124 120
125 return 0; 121 return 0;
126 } 122 }
127 123
128 // ---------------------------------------------------------------------------- 124 // ----------------------------------------------------------------------------
129 // EnumerateAll 125 // EnumerateAll
130 // ---------------------------------------------------------------------------- 126 // ----------------------------------------------------------------------------
131 127
132 int32_t AudioMixerManager::EnumerateAll() 128 int32_t AudioMixerManager::EnumerateAll()
133 { 129 {
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 } 573 }
578 else if (device == AudioDeviceModule::kDefaultCommunicationDevice) 574 else if (device == AudioDeviceModule::kDefaultCommunicationDevice)
579 { 575 {
580 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::Ope nSpeaker(kDefaultCommunicationDevice)"); 576 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::Ope nSpeaker(kDefaultCommunicationDevice)");
581 } 577 }
582 578
583 CriticalSectionScoped lock(&_critSect); 579 CriticalSectionScoped lock(&_critSect);
584 580
585 // Close any existing output mixer handle 581 // Close any existing output mixer handle
586 // 582 //
587 if (_outputMixerHandle != NULL) 583 if (_outputMixerHandle != nullptr) {
588 { 584 mixerClose(_outputMixerHandle);
589 mixerClose(_outputMixerHandle); 585 _outputMixerHandle = nullptr;
590 _outputMixerHandle = NULL;
591 } 586 }
592 587
593 MMRESULT res = MMSYSERR_NOERROR; 588 MMRESULT res = MMSYSERR_NOERROR;
594 WAVEFORMATEX waveFormat; 589 WAVEFORMATEX waveFormat;
595 HWAVEOUT hWaveOut(NULL); 590 HWAVEOUT hWaveOut(nullptr);
596 591
597 waveFormat.wFormatTag = WAVE_FORMAT_PCM ; 592 waveFormat.wFormatTag = WAVE_FORMAT_PCM ;
598 waveFormat.nChannels = 2; 593 waveFormat.nChannels = 2;
599 waveFormat.nSamplesPerSec = 48000; 594 waveFormat.nSamplesPerSec = 48000;
600 waveFormat.wBitsPerSample = 16; 595 waveFormat.wBitsPerSample = 16;
601 waveFormat.nBlockAlign = waveFormat.nChannels * waveFormat.wBitsPerSampl e / 8; 596 waveFormat.nBlockAlign = waveFormat.nChannels * waveFormat.wBitsPerSampl e / 8;
602 waveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAl ign; 597 waveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAl ign;
603 waveFormat.cbSize = 0; 598 waveFormat.cbSize = 0;
604 599
605 // We need a waveform-audio output handle for the currently selected output device. 600 // We need a waveform-audio output handle for the currently selected output device.
606 // This handle will then give us the corresponding mixer identifier. Once th e mixer 601 // This handle will then give us the corresponding mixer identifier. Once th e mixer
607 // ID is known, it is possible to open the output mixer. 602 // ID is known, it is possible to open the output mixer.
608 // 603 //
609 if (device == AudioDeviceModule::kDefaultCommunicationDevice) 604 if (device == AudioDeviceModule::kDefaultCommunicationDevice)
610 { 605 {
611 // check if it is possible to open the default communication device (sup ported on Windows 7) 606 // check if it is possible to open the default communication device (sup ported on Windows 7)
612 res = waveOutOpen(NULL, WAVE_MAPPER, &waveFormat, 0, 0, CALLBACK_NULL | 607 res = waveOutOpen(nullptr, WAVE_MAPPER, &waveFormat, 0, 0,
613 WAVE_MAPPED_kDefaultCommunicationDevice | WAVE_FORMAT_QUERY); 608 CALLBACK_NULL |
609 WAVE_MAPPED_kDefaultCommunicationDevice |
610 WAVE_FORMAT_QUERY);
614 if (MMSYSERR_NOERROR == res) 611 if (MMSYSERR_NOERROR == res)
615 { 612 {
616 // if so, open the default communication device for real 613 // if so, open the default communication device for real
617 res = waveOutOpen(&hWaveOut, WAVE_MAPPER, &waveFormat, 0, 0, CALLBAC K_NULL | WAVE_MAPPED_kDefaultCommunicationDevice); 614 res = waveOutOpen(
615 &hWaveOut, WAVE_MAPPER, &waveFormat, 0, 0,
616 CALLBACK_NULL | WAVE_MAPPED_kDefaultCommunicationDevice);
618 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "opening default co mmunication device"); 617 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "opening default co mmunication device");
619 } 618 }
620 else 619 else
621 { 620 {
622 // use default device since default communication device was not ava liable 621 // use default device since default communication device was not ava liable
623 res = waveOutOpen(&hWaveOut, WAVE_MAPPER, &waveFormat, 0, 0, CALLBAC K_NULL); 622 res = waveOutOpen(&hWaveOut, WAVE_MAPPER, &waveFormat, 0, 0,
623 CALLBACK_NULL);
624 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, 624 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id,
625 "unable to open default communication device => using default in stead"); 625 "unable to open default communication device => using default in stead");
626 } 626 }
627 } 627 }
628 else if (device == AudioDeviceModule::kDefaultDevice) 628 else if (device == AudioDeviceModule::kDefaultDevice)
629 { 629 {
630 // open default device since it has been requested 630 // open default device since it has been requested
631 res = waveOutOpen(&hWaveOut, WAVE_MAPPER, &waveFormat, 0, 0, CALLBACK_NU LL); 631 res = waveOutOpen(&hWaveOut, WAVE_MAPPER, &waveFormat, 0, 0,
632 CALLBACK_NULL);
632 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "opening default output device"); 633 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "opening default output device");
633 } 634 }
634 635
635 if (MMSYSERR_NOERROR != res) 636 if (MMSYSERR_NOERROR != res)
636 { 637 {
637 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "waveOutOpen() faile d (err=%d)", res); 638 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "waveOutOpen() faile d (err=%d)", res);
638 TraceWaveOutError(res); 639 TraceWaveOutError(res);
639 } 640 }
640 641
641 UINT mixerId(0); 642 UINT mixerId(0);
642 HMIXER hMixer(NULL); 643 HMIXER hMixer(nullptr);
643 644
644 // Retrieve the device identifier for a mixer device associated with the 645 // Retrieve the device identifier for a mixer device associated with the
645 // aquired waveform-audio output handle. 646 // aquired waveform-audio output handle.
646 // 647 //
647 res = mixerGetID((HMIXEROBJ)hWaveOut, &mixerId, MIXER_OBJECTF_HWAVEOUT); 648 res = mixerGetID((HMIXEROBJ)hWaveOut, &mixerId, MIXER_OBJECTF_HWAVEOUT);
648 if (MMSYSERR_NOERROR != res) 649 if (MMSYSERR_NOERROR != res)
649 { 650 {
650 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerGetID(MIXER_OB JECTF_HWAVEOUT) failed (err=%d)", res); 651 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerGetID(MIXER_OB JECTF_HWAVEOUT) failed (err=%d)", res);
651 // identification failed => use default mixer identifier (=0) 652 // identification failed => use default mixer identifier (=0)
652 mixerId = 0; 653 mixerId = 0;
(...skipping 20 matching lines...) Expand all
673 if (MMSYSERR_NOERROR != res) 674 if (MMSYSERR_NOERROR != res)
674 { 675 {
675 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerOpen() failed (err=%d)", res); 676 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerOpen() failed (err=%d)", res);
676 } 677 }
677 678
678 // Store the output mixer handle and active mixer identifier 679 // Store the output mixer handle and active mixer identifier
679 // 680 //
680 _outputMixerHandle = hMixer; 681 _outputMixerHandle = hMixer;
681 _outputMixerID = mixerId; 682 _outputMixerID = mixerId;
682 683
683 if (_outputMixerHandle != NULL) 684 if (_outputMixerHandle != nullptr) {
684 { 685 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id,
685 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "the output mixer devic e is now open (0x%x)", _outputMixerHandle); 686 "the output mixer device is now open (0x%x)",
687 _outputMixerHandle);
686 } 688 }
687 689
688 return 0; 690 return 0;
689 } 691 }
690 692
691 // ---------------------------------------------------------------------------- 693 // ----------------------------------------------------------------------------
692 // OpenSpeaker II(II) 694 // OpenSpeaker II(II)
693 // 695 //
694 // Verifies that the mixer contains a valid speaker destination line. 696 // Verifies that the mixer contains a valid speaker destination line.
695 // Avoids opening the mixer if valid control has not been found. 697 // Avoids opening the mixer if valid control has not been found.
696 // ---------------------------------------------------------------------------- 698 // ----------------------------------------------------------------------------
697 699
698 int32_t AudioMixerManager::OpenSpeaker(uint16_t index) 700 int32_t AudioMixerManager::OpenSpeaker(uint16_t index)
699 { 701 {
700 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::OpenSpe aker(index=%d)", index); 702 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::OpenSpe aker(index=%d)", index);
701 703
702 CriticalSectionScoped lock(&_critSect); 704 CriticalSectionScoped lock(&_critSect);
703 705
704 // Close any existing output mixer handle 706 // Close any existing output mixer handle
705 // 707 //
706 if (_outputMixerHandle != NULL) 708 if (_outputMixerHandle != nullptr) {
707 { 709 mixerClose(_outputMixerHandle);
708 mixerClose(_outputMixerHandle); 710 _outputMixerHandle = nullptr;
709 _outputMixerHandle = NULL;
710 } 711 }
711 712
712 MMRESULT res; 713 MMRESULT res;
713 WAVEFORMATEX waveFormat; 714 WAVEFORMATEX waveFormat;
714 HWAVEOUT hWaveOut(NULL); 715 HWAVEOUT hWaveOut(nullptr);
715 716
716 const UINT deviceID(index); // use index parameter as device identifier 717 const UINT deviceID(index); // use index parameter as device identifier
717 718
718 waveFormat.wFormatTag = WAVE_FORMAT_PCM ; 719 waveFormat.wFormatTag = WAVE_FORMAT_PCM ;
719 waveFormat.nChannels = 2; 720 waveFormat.nChannels = 2;
720 waveFormat.nSamplesPerSec = 48000; 721 waveFormat.nSamplesPerSec = 48000;
721 waveFormat.wBitsPerSample = 16; 722 waveFormat.wBitsPerSample = 16;
722 waveFormat.nBlockAlign = waveFormat.nChannels * waveFormat.wBitsPerSampl e / 8; 723 waveFormat.nBlockAlign = waveFormat.nChannels * waveFormat.wBitsPerSampl e / 8;
723 waveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAl ign; 724 waveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAl ign;
724 waveFormat.cbSize = 0; 725 waveFormat.cbSize = 0;
725 726
726 // We need a waveform-audio output handle for the currently selected output device. 727 // We need a waveform-audio output handle for the currently selected output device.
727 // This handle will then give us the corresponding mixer identifier. Once th e mixer 728 // This handle will then give us the corresponding mixer identifier. Once th e mixer
728 // ID is known, it is possible to open the output mixer. 729 // ID is known, it is possible to open the output mixer.
729 // 730 //
730 res = waveOutOpen(&hWaveOut, deviceID, &waveFormat, 0, 0, CALLBACK_NULL); 731 res = waveOutOpen(&hWaveOut, deviceID, &waveFormat, 0, 0, CALLBACK_NULL);
731 if (MMSYSERR_NOERROR != res) 732 if (MMSYSERR_NOERROR != res)
732 { 733 {
733 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "waveOutOpen(deviceI D=%u) failed (err=%d)", index, res); 734 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "waveOutOpen(deviceI D=%u) failed (err=%d)", index, res);
734 TraceWaveOutError(res); 735 TraceWaveOutError(res);
735 } 736 }
736 737
737 UINT mixerId(0); 738 UINT mixerId(0);
738 HMIXER hMixer(NULL); 739 HMIXER hMixer(nullptr);
739 740
740 // Retrieve the device identifier for a mixer device associated with the 741 // Retrieve the device identifier for a mixer device associated with the
741 // aquired waveform-audio output handle. 742 // aquired waveform-audio output handle.
742 // 743 //
743 res = mixerGetID((HMIXEROBJ)hWaveOut, &mixerId, MIXER_OBJECTF_HWAVEOUT); 744 res = mixerGetID((HMIXEROBJ)hWaveOut, &mixerId, MIXER_OBJECTF_HWAVEOUT);
744 if (MMSYSERR_NOERROR != res) 745 if (MMSYSERR_NOERROR != res)
745 { 746 {
746 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerGetID(MIXER_OB JECTF_HWAVEOUT) failed (err=%d)", res); 747 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerGetID(MIXER_OB JECTF_HWAVEOUT) failed (err=%d)", res);
747 // identification failed => use default mixer identifier (=0) 748 // identification failed => use default mixer identifier (=0)
748 mixerId = 0; 749 mixerId = 0;
(...skipping 20 matching lines...) Expand all
769 if (MMSYSERR_NOERROR != res) 770 if (MMSYSERR_NOERROR != res)
770 { 771 {
771 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerOpen() failed (err=%d)", res); 772 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerOpen() failed (err=%d)", res);
772 } 773 }
773 774
774 // Store the output mixer handle and active mixer identifier 775 // Store the output mixer handle and active mixer identifier
775 // 776 //
776 _outputMixerHandle = hMixer; 777 _outputMixerHandle = hMixer;
777 _outputMixerID = mixerId; 778 _outputMixerID = mixerId;
778 779
779 if (_outputMixerHandle != NULL) 780 if (_outputMixerHandle != nullptr) {
780 { 781 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id,
781 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "the output mixer devic e is now open (0x%x)", _outputMixerHandle); 782 "the output mixer device is now open (0x%x)",
783 _outputMixerHandle);
782 } 784 }
783 785
784 return 0; 786 return 0;
785 } 787 }
786 788
787 // ---------------------------------------------------------------------------- 789 // ----------------------------------------------------------------------------
788 // OpenMicrophone I(II) 790 // OpenMicrophone I(II)
789 // 791 //
790 // Verifies that the mixer contains a valid wave-in destination line. 792 // Verifies that the mixer contains a valid wave-in destination line.
791 // Avoids opening the mixer if valid control has not been found. 793 // Avoids opening the mixer if valid control has not been found.
792 // ---------------------------------------------------------------------------- 794 // ----------------------------------------------------------------------------
793 795
794 int32_t AudioMixerManager::OpenMicrophone(AudioDeviceModule::WindowsDeviceType d evice) 796 int32_t AudioMixerManager::OpenMicrophone(AudioDeviceModule::WindowsDeviceType d evice)
795 { 797 {
796 if (device == AudioDeviceModule::kDefaultDevice) 798 if (device == AudioDeviceModule::kDefaultDevice)
797 { 799 {
798 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::Ope nMicrophone(kDefaultDevice)"); 800 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::Ope nMicrophone(kDefaultDevice)");
799 } 801 }
800 else if (device == AudioDeviceModule::kDefaultCommunicationDevice) 802 else if (device == AudioDeviceModule::kDefaultCommunicationDevice)
801 { 803 {
802 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::Ope nMicrophone(kDefaultCommunicationDevice)"); 804 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::Ope nMicrophone(kDefaultCommunicationDevice)");
803 } 805 }
804 806
805 CriticalSectionScoped lock(&_critSect); 807 CriticalSectionScoped lock(&_critSect);
806 808
807 // Close any existing output mixer handle 809 // Close any existing output mixer handle
808 // 810 //
809 if (_inputMixerHandle != NULL) 811 if (_inputMixerHandle != nullptr) {
810 { 812 mixerClose(_inputMixerHandle);
811 mixerClose(_inputMixerHandle); 813 _inputMixerHandle = nullptr;
812 _inputMixerHandle = NULL;
813 } 814 }
814 815
815 MMRESULT res = MMSYSERR_NOERROR; 816 MMRESULT res = MMSYSERR_NOERROR;
816 WAVEFORMATEX waveFormat; 817 WAVEFORMATEX waveFormat;
817 HWAVEIN hWaveIn(NULL); 818 HWAVEIN hWaveIn(nullptr);
818 819
819 waveFormat.wFormatTag = WAVE_FORMAT_PCM ; 820 waveFormat.wFormatTag = WAVE_FORMAT_PCM ;
820 waveFormat.nChannels = 1; 821 waveFormat.nChannels = 1;
821 waveFormat.nSamplesPerSec = 48000; 822 waveFormat.nSamplesPerSec = 48000;
822 waveFormat.wBitsPerSample = 16; 823 waveFormat.wBitsPerSample = 16;
823 waveFormat.nBlockAlign = waveFormat.nChannels * waveFormat.wBitsPerSampl e / 8; 824 waveFormat.nBlockAlign = waveFormat.nChannels * waveFormat.wBitsPerSampl e / 8;
824 waveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAl ign; 825 waveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAl ign;
825 waveFormat.cbSize = 0 ; 826 waveFormat.cbSize = 0 ;
826 827
827 // We need a waveform-audio input handle for the currently selected input de vice. 828 // We need a waveform-audio input handle for the currently selected input de vice.
828 // This handle will then give us the corresponding mixer identifier. Once th e mixer 829 // This handle will then give us the corresponding mixer identifier. Once th e mixer
829 // ID is known, it is possible to open the input mixer. 830 // ID is known, it is possible to open the input mixer.
830 // 831 //
831 if (device == AudioDeviceModule::kDefaultCommunicationDevice) 832 if (device == AudioDeviceModule::kDefaultCommunicationDevice)
832 { 833 {
833 // check if it is possible to open the default communication device (sup ported on Windows 7) 834 // check if it is possible to open the default communication device (sup ported on Windows 7)
834 res = waveInOpen(NULL, WAVE_MAPPER, &waveFormat, 0, 0, CALLBACK_NULL | 835 res =
835 WAVE_MAPPED_kDefaultCommunicationDevice | WAVE_FORMAT_QUERY); 836 waveInOpen(nullptr, WAVE_MAPPER, &waveFormat, 0, 0,
837 CALLBACK_NULL | WAVE_MAPPED_kDefaultCommunicationDevice |
838 WAVE_FORMAT_QUERY);
836 if (MMSYSERR_NOERROR == res) 839 if (MMSYSERR_NOERROR == res)
837 { 840 {
838 // if so, open the default communication device for real 841 // if so, open the default communication device for real
839 res = waveInOpen(&hWaveIn, WAVE_MAPPER, &waveFormat, 0, 0, CALLBACK_ NULL | WAVE_MAPPED_kDefaultCommunicationDevice); 842 res = waveInOpen(
843 &hWaveIn, WAVE_MAPPER, &waveFormat, 0, 0,
844 CALLBACK_NULL | WAVE_MAPPED_kDefaultCommunicationDevice);
840 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "opening default co mmunication device"); 845 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "opening default co mmunication device");
841 } 846 }
842 else 847 else
843 { 848 {
844 // use default device since default communication device was not ava liable 849 // use default device since default communication device was not ava liable
845 res = waveInOpen(&hWaveIn, WAVE_MAPPER, &waveFormat, 0, 0, CALLBACK_ NULL); 850 res = waveInOpen(&hWaveIn, WAVE_MAPPER, &waveFormat, 0, 0,
851 CALLBACK_NULL);
846 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, 852 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id,
847 "unable to open default communication device => using default in stead"); 853 "unable to open default communication device => using default in stead");
848 } 854 }
849 } 855 }
850 else if (device == AudioDeviceModule::kDefaultDevice) 856 else if (device == AudioDeviceModule::kDefaultDevice)
851 { 857 {
852 // open default device since it has been requested 858 // open default device since it has been requested
853 res = waveInOpen(&hWaveIn, WAVE_MAPPER, &waveFormat, 0, 0, CALLBACK_NULL ); 859 res =
860 waveInOpen(&hWaveIn, WAVE_MAPPER, &waveFormat, 0, 0, CALLBACK_NULL);
854 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "opening default input device"); 861 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "opening default input device");
855 } 862 }
856 863
857 if (MMSYSERR_NOERROR != res) 864 if (MMSYSERR_NOERROR != res)
858 { 865 {
859 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "waveInOpen() failed (err=%d)", res); 866 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "waveInOpen() failed (err=%d)", res);
860 TraceWaveInError(res); 867 TraceWaveInError(res);
861 } 868 }
862 869
863 UINT mixerId(0); 870 UINT mixerId(0);
864 HMIXER hMixer(NULL); 871 HMIXER hMixer(nullptr);
865 872
866 // Retrieve the device identifier for a mixer device associated with the 873 // Retrieve the device identifier for a mixer device associated with the
867 // aquired waveform-audio input handle. 874 // aquired waveform-audio input handle.
868 // 875 //
869 res = mixerGetID((HMIXEROBJ)hWaveIn, &mixerId, MIXER_OBJECTF_HWAVEIN); 876 res = mixerGetID((HMIXEROBJ)hWaveIn, &mixerId, MIXER_OBJECTF_HWAVEIN);
870 if (MMSYSERR_NOERROR != res) 877 if (MMSYSERR_NOERROR != res)
871 { 878 {
872 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerGetID(MIXER_OB JECTF_HWAVEIN) failed (err=%d)", res); 879 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerGetID(MIXER_OB JECTF_HWAVEIN) failed (err=%d)", res);
873 // identification failed => use default mixer identifier (=0) 880 // identification failed => use default mixer identifier (=0)
874 mixerId = 0; 881 mixerId = 0;
(...skipping 20 matching lines...) Expand all
895 if (MMSYSERR_NOERROR != res) 902 if (MMSYSERR_NOERROR != res)
896 { 903 {
897 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerOpen() failed (err=%d)", res); 904 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerOpen() failed (err=%d)", res);
898 } 905 }
899 906
900 // Store the input mixer handle and active mixer identifier 907 // Store the input mixer handle and active mixer identifier
901 // 908 //
902 _inputMixerHandle = hMixer; 909 _inputMixerHandle = hMixer;
903 _inputMixerID = mixerId; 910 _inputMixerID = mixerId;
904 911
905 if (_inputMixerHandle != NULL) 912 if (_inputMixerHandle != nullptr) {
906 { 913 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id,
907 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "the input mixer device is now open (0x%x)", _inputMixerHandle); 914 "the input mixer device is now open (0x%x)",
915 _inputMixerHandle);
908 } 916 }
909 917
910 return 0; 918 return 0;
911 } 919 }
912 920
913 // ---------------------------------------------------------------------------- 921 // ----------------------------------------------------------------------------
914 // OpenMicrophone II(II) 922 // OpenMicrophone II(II)
915 // 923 //
916 // Verifies that the mixer contains a valid wave-in destination line. 924 // Verifies that the mixer contains a valid wave-in destination line.
917 // Avoids opening the mixer if valid control has not been found. 925 // Avoids opening the mixer if valid control has not been found.
918 // ---------------------------------------------------------------------------- 926 // ----------------------------------------------------------------------------
919 927
920 int32_t AudioMixerManager::OpenMicrophone(uint16_t index) 928 int32_t AudioMixerManager::OpenMicrophone(uint16_t index)
921 { 929 {
922 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::OpenMic rophone(index=%d)", index); 930 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::OpenMic rophone(index=%d)", index);
923 931
924 CriticalSectionScoped lock(&_critSect); 932 CriticalSectionScoped lock(&_critSect);
925 933
926 // Close any existing input mixer handle 934 // Close any existing input mixer handle
927 // 935 //
928 if (_inputMixerHandle != NULL) 936 if (_inputMixerHandle != nullptr) {
929 { 937 mixerClose(_inputMixerHandle);
930 mixerClose(_inputMixerHandle); 938 _inputMixerHandle = nullptr;
931 _inputMixerHandle = NULL;
932 } 939 }
933 940
934 MMRESULT res; 941 MMRESULT res;
935 WAVEFORMATEX waveFormat; 942 WAVEFORMATEX waveFormat;
936 HWAVEIN hWaveIn(NULL); 943 HWAVEIN hWaveIn(nullptr);
937 944
938 const UINT deviceID(index); // use index parameter as device identifier 945 const UINT deviceID(index); // use index parameter as device identifier
939 946
940 waveFormat.wFormatTag = WAVE_FORMAT_PCM ; 947 waveFormat.wFormatTag = WAVE_FORMAT_PCM ;
941 waveFormat.nChannels = 1; 948 waveFormat.nChannels = 1;
942 waveFormat.nSamplesPerSec = 48000; 949 waveFormat.nSamplesPerSec = 48000;
943 waveFormat.wBitsPerSample = 16; 950 waveFormat.wBitsPerSample = 16;
944 waveFormat.nBlockAlign = waveFormat.nChannels * waveFormat.wBitsPerSampl e / 8; 951 waveFormat.nBlockAlign = waveFormat.nChannels * waveFormat.wBitsPerSampl e / 8;
945 waveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAl ign; 952 waveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAl ign;
946 waveFormat.cbSize = 0; 953 waveFormat.cbSize = 0;
947 954
948 // We need a waveform-audio input handle for the currently selected input de vice. 955 // We need a waveform-audio input handle for the currently selected input de vice.
949 // This handle will then give us the corresponding mixer identifier. Once th e mixer 956 // This handle will then give us the corresponding mixer identifier. Once th e mixer
950 // ID is known, it is possible to open the input mixer. 957 // ID is known, it is possible to open the input mixer.
951 // 958 //
952 res = waveInOpen(&hWaveIn, deviceID, &waveFormat, 0, 0, CALLBACK_NULL); 959 res = waveInOpen(&hWaveIn, deviceID, &waveFormat, 0, 0, CALLBACK_NULL);
953 if (MMSYSERR_NOERROR != res) 960 if (MMSYSERR_NOERROR != res)
954 { 961 {
955 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "waveInOpen(deviceID =%u) failed (err=%d)", index, res); 962 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "waveInOpen(deviceID =%u) failed (err=%d)", index, res);
956 TraceWaveInError(res); 963 TraceWaveInError(res);
957 } 964 }
958 965
959 UINT mixerId(0); 966 UINT mixerId(0);
960 HMIXER hMixer(NULL); 967 HMIXER hMixer(nullptr);
961 968
962 // Retrieve the device identifier for a mixer device associated with the 969 // Retrieve the device identifier for a mixer device associated with the
963 // aquired waveform-audio input handle. 970 // aquired waveform-audio input handle.
964 // 971 //
965 res = mixerGetID((HMIXEROBJ)hWaveIn, &mixerId, MIXER_OBJECTF_HWAVEIN); 972 res = mixerGetID((HMIXEROBJ)hWaveIn, &mixerId, MIXER_OBJECTF_HWAVEIN);
966 if (MMSYSERR_NOERROR != res) 973 if (MMSYSERR_NOERROR != res)
967 { 974 {
968 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerGetID(MIXER_OB JECTF_HWAVEIN) failed (err=%d)", res); 975 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerGetID(MIXER_OB JECTF_HWAVEIN) failed (err=%d)", res);
969 // identification failed => use default mixer identifier (=0) 976 // identification failed => use default mixer identifier (=0)
970 mixerId = 0; 977 mixerId = 0;
(...skipping 20 matching lines...) Expand all
991 if (MMSYSERR_NOERROR != res) 998 if (MMSYSERR_NOERROR != res)
992 { 999 {
993 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerOpen() failed (err=%d)", res); 1000 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "mixerOpen() failed (err=%d)", res);
994 } 1001 }
995 1002
996 // Store the input mixer handle and active mixer identifier 1003 // Store the input mixer handle and active mixer identifier
997 // 1004 //
998 _inputMixerHandle = hMixer; 1005 _inputMixerHandle = hMixer;
999 _inputMixerID = mixerId; 1006 _inputMixerID = mixerId;
1000 1007
1001 if (_inputMixerHandle != NULL) 1008 if (_inputMixerHandle != nullptr) {
1002 { 1009 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id,
1003 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "the input mixer device is now open (0x%x)", _inputMixerHandle); 1010 "the input mixer device is now open (0x%x)",
1011 _inputMixerHandle);
1004 } 1012 }
1005 1013
1006 return 0; 1014 return 0;
1007 } 1015 }
1008 1016
1009 // ---------------------------------------------------------------------------- 1017 // ----------------------------------------------------------------------------
1010 // SpeakerIsInitialized 1018 // SpeakerIsInitialized
1011 // ---------------------------------------------------------------------------- 1019 // ----------------------------------------------------------------------------
1012 1020
1013 bool AudioMixerManager::SpeakerIsInitialized() const 1021 bool AudioMixerManager::SpeakerIsInitialized() const
1014 { 1022 {
1015 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, _id, "%s", __FUNCTION__); 1023 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, _id, "%s", __FUNCTION__);
1016 1024
1017 return (_outputMixerHandle != NULL); 1025 return (_outputMixerHandle != nullptr);
1018 } 1026 }
1019 1027
1020 // ---------------------------------------------------------------------------- 1028 // ----------------------------------------------------------------------------
1021 // MicrophoneIsInitialized 1029 // MicrophoneIsInitialized
1022 // ---------------------------------------------------------------------------- 1030 // ----------------------------------------------------------------------------
1023 1031
1024 bool AudioMixerManager::MicrophoneIsInitialized() const 1032 bool AudioMixerManager::MicrophoneIsInitialized() const
1025 { 1033 {
1026 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, _id, "%s", __FUNCTION__); 1034 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, _id, "%s", __FUNCTION__);
1027 1035
1028 return (_inputMixerHandle != NULL); 1036 return (_inputMixerHandle != nullptr);
1029 } 1037 }
1030 1038
1031 // ---------------------------------------------------------------------------- 1039 // ----------------------------------------------------------------------------
1032 // SetSpeakerVolume 1040 // SetSpeakerVolume
1033 // ---------------------------------------------------------------------------- 1041 // ----------------------------------------------------------------------------
1034 1042
1035 int32_t AudioMixerManager::SetSpeakerVolume(uint32_t volume) 1043 int32_t AudioMixerManager::SetSpeakerVolume(uint32_t volume)
1036 { 1044 {
1037 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::SetSpea kerVolume(volume=%u)", volume); 1045 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::SetSpea kerVolume(volume=%u)", volume);
1038 1046
1039 CriticalSectionScoped lock(&_critSect); 1047 CriticalSectionScoped lock(&_critSect);
1040 1048
1041 if (_outputMixerHandle == NULL) 1049 if (_outputMixerHandle == nullptr) {
1042 { 1050 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1043 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable output mixer exists"); 1051 "no avaliable output mixer exists");
1044 return -1; 1052 return -1;
1045 } 1053 }
1046 1054
1047 const UINT mixerID(_outputMixerID); 1055 const UINT mixerID(_outputMixerID);
1048 const DWORD dwControlID(_speakerState[_outputMixerID].dwVolumeControlID); 1056 const DWORD dwControlID(_speakerState[_outputMixerID].dwVolumeControlID);
1049 DWORD dwValue(volume); 1057 DWORD dwValue(volume);
1050 1058
1051 // Set one unsigned control value for a specified volume-control identifier 1059 // Set one unsigned control value for a specified volume-control identifier
1052 // 1060 //
1053 if (!SetUnsignedControlValue(mixerID, dwControlID, dwValue)) 1061 if (!SetUnsignedControlValue(mixerID, dwControlID, dwValue))
1054 { 1062 {
1055 return -1; 1063 return -1;
1056 } 1064 }
1057 1065
1058 return (0); 1066 return (0);
1059 } 1067 }
1060 1068
1061 // ---------------------------------------------------------------------------- 1069 // ----------------------------------------------------------------------------
1062 // SpeakerVolume 1070 // SpeakerVolume
1063 // 1071 //
1064 // Note that (MIXERCONTROL_CONTROLTYPE_VOLUME & MIXERCONTROL_CT_UNITS_MASK) 1072 // Note that (MIXERCONTROL_CONTROLTYPE_VOLUME & MIXERCONTROL_CT_UNITS_MASK)
1065 // always equals MIXERCONTROL_CT_UNITS_UNSIGNED; 1073 // always equals MIXERCONTROL_CT_UNITS_UNSIGNED;
1066 // ---------------------------------------------------------------------------- 1074 // ----------------------------------------------------------------------------
1067 1075
1068 int32_t AudioMixerManager::SpeakerVolume(uint32_t& volume) const 1076 int32_t AudioMixerManager::SpeakerVolume(uint32_t& volume) const
1069 { 1077 {
1070 1078 if (_outputMixerHandle == nullptr) {
1071 if (_outputMixerHandle == NULL) 1079 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1072 { 1080 "no avaliable output mixer exists");
1073 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable output mixer exists"); 1081 return -1;
1074 return -1;
1075 } 1082 }
1076 1083
1077 const UINT mixerID(_outputMixerID); 1084 const UINT mixerID(_outputMixerID);
1078 const DWORD dwControlID(_speakerState[_outputMixerID].dwVolumeControlID); 1085 const DWORD dwControlID(_speakerState[_outputMixerID].dwVolumeControlID);
1079 DWORD dwValue(0); 1086 DWORD dwValue(0);
1080 1087
1081 // Retrieve one unsigned control value for a specified volume-control identi fier 1088 // Retrieve one unsigned control value for a specified volume-control identi fier
1082 // 1089 //
1083 if (!GetUnsignedControlValue(mixerID, dwControlID, dwValue)) 1090 if (!GetUnsignedControlValue(mixerID, dwControlID, dwValue))
1084 { 1091 {
1085 return -1; 1092 return -1;
1086 } 1093 }
1087 1094
1088 volume = dwValue; 1095 volume = dwValue;
1089 1096
1090 return 0; 1097 return 0;
1091 } 1098 }
1092 1099
1093 // ---------------------------------------------------------------------------- 1100 // ----------------------------------------------------------------------------
1094 // MaxSpeakerVolume 1101 // MaxSpeakerVolume
1095 // 1102 //
1096 // Note that (MIXERCONTROL_CONTROLTYPE_VOLUME & MIXERCONTROL_CT_UNITS_MASK) 1103 // Note that (MIXERCONTROL_CONTROLTYPE_VOLUME & MIXERCONTROL_CT_UNITS_MASK)
1097 // always equals MIXERCONTROL_CT_UNITS_UNSIGNED 1104 // always equals MIXERCONTROL_CT_UNITS_UNSIGNED
1098 // ---------------------------------------------------------------------------- 1105 // ----------------------------------------------------------------------------
1099 1106
1100 int32_t AudioMixerManager::MaxSpeakerVolume(uint32_t& maxVolume) const 1107 int32_t AudioMixerManager::MaxSpeakerVolume(uint32_t& maxVolume) const
1101 { 1108 {
1102 1109 if (_outputMixerHandle == nullptr) {
1103 if (_outputMixerHandle == NULL) 1110 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1104 { 1111 "no avaliable output mixer exists");
1105 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable output mixer exists"); 1112 return -1;
1106 return -1;
1107 } 1113 }
1108 1114
1109 const UINT mixerID(_outputMixerID); 1115 const UINT mixerID(_outputMixerID);
1110 const DWORD dwControlID(_speakerState[_outputMixerID].dwVolumeControlID); 1116 const DWORD dwControlID(_speakerState[_outputMixerID].dwVolumeControlID);
1111 MIXERCONTROL mixerControl; 1117 MIXERCONTROL mixerControl;
1112 1118
1113 // Retrieve one control line for a specified volume-control identifier 1119 // Retrieve one control line for a specified volume-control identifier
1114 // 1120 //
1115 if (!GetLineControl(mixerID, dwControlID, mixerControl)) 1121 if (!GetLineControl(mixerID, dwControlID, mixerControl))
1116 { 1122 {
1117 return -1; 1123 return -1;
1118 } 1124 }
1119 1125
1120 maxVolume = mixerControl.Bounds.dwMaximum; 1126 maxVolume = mixerControl.Bounds.dwMaximum;
1121 1127
1122 return 0; 1128 return 0;
1123 } 1129 }
1124 1130
1125 // ---------------------------------------------------------------------------- 1131 // ----------------------------------------------------------------------------
1126 // MinSpeakerVolume 1132 // MinSpeakerVolume
1127 // ---------------------------------------------------------------------------- 1133 // ----------------------------------------------------------------------------
1128 1134
1129 int32_t AudioMixerManager::MinSpeakerVolume(uint32_t& minVolume) const 1135 int32_t AudioMixerManager::MinSpeakerVolume(uint32_t& minVolume) const
1130 { 1136 {
1131 1137 if (_outputMixerHandle == nullptr) {
1132 if (_outputMixerHandle == NULL) 1138 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1133 { 1139 "no avaliable output mixer exists");
1134 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable output mixer exists"); 1140 return -1;
1135 return -1;
1136 } 1141 }
1137 1142
1138 const UINT mixerID(_outputMixerID); 1143 const UINT mixerID(_outputMixerID);
1139 const DWORD dwControlID(_speakerState[_outputMixerID].dwVolumeControlID); 1144 const DWORD dwControlID(_speakerState[_outputMixerID].dwVolumeControlID);
1140 MIXERCONTROL mixerControl; 1145 MIXERCONTROL mixerControl;
1141 1146
1142 // Retrieve one control line for a specified volume-control identifier 1147 // Retrieve one control line for a specified volume-control identifier
1143 // 1148 //
1144 if (!GetLineControl(mixerID, dwControlID, mixerControl)) 1149 if (!GetLineControl(mixerID, dwControlID, mixerControl))
1145 { 1150 {
1146 return -1; 1151 return -1;
1147 } 1152 }
1148 1153
1149 minVolume = mixerControl.Bounds.dwMinimum; 1154 minVolume = mixerControl.Bounds.dwMinimum;
1150 1155
1151 return 0; 1156 return 0;
1152 } 1157 }
1153 1158
1154 // ---------------------------------------------------------------------------- 1159 // ----------------------------------------------------------------------------
1155 // SpeakerVolumeStepSize 1160 // SpeakerVolumeStepSize
1156 // ---------------------------------------------------------------------------- 1161 // ----------------------------------------------------------------------------
1157 1162
1158 int32_t AudioMixerManager::SpeakerVolumeStepSize(uint16_t& stepSize) const 1163 int32_t AudioMixerManager::SpeakerVolumeStepSize(uint16_t& stepSize) const
1159 { 1164 {
1160 1165 if (_outputMixerHandle == nullptr) {
1161 if (_outputMixerHandle == NULL) 1166 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1162 { 1167 "no avaliable output mixer exists");
1163 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable output mixer exists"); 1168 return -1;
1164 return -1;
1165 } 1169 }
1166 1170
1167 const UINT mixerID(_outputMixerID); 1171 const UINT mixerID(_outputMixerID);
1168 MIXERCONTROL mixerControl; 1172 MIXERCONTROL mixerControl;
1169 1173
1170 // Retrieve one control line for a specified volume-control identifier 1174 // Retrieve one control line for a specified volume-control identifier
1171 // 1175 //
1172 if (!GetLineControl(mixerID, _speakerState[mixerID].dwVolumeControlID, mixer Control)) 1176 if (!GetLineControl(mixerID, _speakerState[mixerID].dwVolumeControlID, mixer Control))
1173 { 1177 {
1174 return -1; 1178 return -1;
1175 } 1179 }
1176 1180
1177 stepSize = static_cast<uint16_t> (mixerControl.Metrics.cSteps); 1181 stepSize = static_cast<uint16_t> (mixerControl.Metrics.cSteps);
1178 1182
1179 return 0; 1183 return 0;
1180 } 1184 }
1181 1185
1182 // ---------------------------------------------------------------------------- 1186 // ----------------------------------------------------------------------------
1183 // SpeakerVolumeIsAvailable 1187 // SpeakerVolumeIsAvailable
1184 // ---------------------------------------------------------------------------- 1188 // ----------------------------------------------------------------------------
1185 1189
1186 int32_t AudioMixerManager::SpeakerVolumeIsAvailable(bool& available) 1190 int32_t AudioMixerManager::SpeakerVolumeIsAvailable(bool& available)
1187 { 1191 {
1188 if (_outputMixerHandle == NULL) 1192 if (_outputMixerHandle == nullptr) {
1189 { 1193 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1190 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable output mixer exists"); 1194 "no avaliable output mixer exists");
1191 return -1; 1195 return -1;
1192 } 1196 }
1193 1197
1194 available = _speakerState[_outputMixerID].volumeControlIsValid; 1198 available = _speakerState[_outputMixerID].volumeControlIsValid;
1195 1199
1196 return 0; 1200 return 0;
1197 } 1201 }
1198 1202
1199 // ---------------------------------------------------------------------------- 1203 // ----------------------------------------------------------------------------
1200 // SpeakerMuteIsAvailable 1204 // SpeakerMuteIsAvailable
1201 // ---------------------------------------------------------------------------- 1205 // ----------------------------------------------------------------------------
1202 1206
1203 int32_t AudioMixerManager::SpeakerMuteIsAvailable(bool& available) 1207 int32_t AudioMixerManager::SpeakerMuteIsAvailable(bool& available)
1204 { 1208 {
1205 if (_outputMixerHandle == NULL) 1209 if (_outputMixerHandle == nullptr) {
1206 { 1210 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1207 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable output mixer exists"); 1211 "no avaliable output mixer exists");
1208 return -1; 1212 return -1;
1209 } 1213 }
1210 1214
1211 available = _speakerState[_outputMixerID].muteControlIsValid; 1215 available = _speakerState[_outputMixerID].muteControlIsValid;
1212 1216
1213 return 0; 1217 return 0;
1214 } 1218 }
1215 1219
1216 // ---------------------------------------------------------------------------- 1220 // ----------------------------------------------------------------------------
1217 // SetSpeakerMute 1221 // SetSpeakerMute
1218 // 1222 //
1219 // This mute function works a master mute for the output speaker. 1223 // This mute function works a master mute for the output speaker.
1220 // ---------------------------------------------------------------------------- 1224 // ----------------------------------------------------------------------------
1221 1225
1222 int32_t AudioMixerManager::SetSpeakerMute(bool enable) 1226 int32_t AudioMixerManager::SetSpeakerMute(bool enable)
1223 { 1227 {
1224 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::SetSpea kerMute(enable=%u)", enable); 1228 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::SetSpea kerMute(enable=%u)", enable);
1225 1229
1226 CriticalSectionScoped lock(&_critSect); 1230 CriticalSectionScoped lock(&_critSect);
1227 1231
1228 if (_outputMixerHandle == NULL) 1232 if (_outputMixerHandle == nullptr) {
1229 { 1233 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1230 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable output mixer exists"); 1234 "no avaliable output mixer exists");
1231 return -1; 1235 return -1;
1232 } 1236 }
1233 1237
1234 // Ensure that the selected speaker destination has a valid mute control. 1238 // Ensure that the selected speaker destination has a valid mute control.
1235 // If so, its identifier was stored during the enumeration phase which must 1239 // If so, its identifier was stored during the enumeration phase which must
1236 // have taken place since the output mixer handle exists. 1240 // have taken place since the output mixer handle exists.
1237 // 1241 //
1238 if (!_speakerState[_outputMixerID].muteControlIsValid) 1242 if (!_speakerState[_outputMixerID].muteControlIsValid)
1239 { 1243 {
1240 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "it is not possible to mute this speaker line"); 1244 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "it is not possible to mute this speaker line");
1241 return -1; 1245 return -1;
(...skipping 10 matching lines...) Expand all
1252 1256
1253 return (0); 1257 return (0);
1254 } 1258 }
1255 1259
1256 // ---------------------------------------------------------------------------- 1260 // ----------------------------------------------------------------------------
1257 // SpeakerMute 1261 // SpeakerMute
1258 // ---------------------------------------------------------------------------- 1262 // ----------------------------------------------------------------------------
1259 1263
1260 int32_t AudioMixerManager::SpeakerMute(bool& enabled) const 1264 int32_t AudioMixerManager::SpeakerMute(bool& enabled) const
1261 { 1265 {
1262 1266 if (_outputMixerHandle == nullptr) {
1263 if (_outputMixerHandle == NULL) 1267 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1264 { 1268 "no avaliable output mixer exists");
1265 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable output mixer exists"); 1269 return -1;
1266 return -1;
1267 } 1270 }
1268 1271
1269 // Ensure that the selected speaker destination has a valid mute control. 1272 // Ensure that the selected speaker destination has a valid mute control.
1270 // If so, its identifier was stored during the enumeration phase which must 1273 // If so, its identifier was stored during the enumeration phase which must
1271 // have taken place since the output mixer handle exists. 1274 // have taken place since the output mixer handle exists.
1272 // 1275 //
1273 if (!_speakerState[_outputMixerID].muteControlIsValid) 1276 if (!_speakerState[_outputMixerID].muteControlIsValid)
1274 { 1277 {
1275 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "it is not possible to mute this speaker line"); 1278 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "it is not possible to mute this speaker line");
1276 return -1; 1279 return -1;
(...skipping 13 matching lines...) Expand all
1290 1293
1291 return 0; 1294 return 0;
1292 } 1295 }
1293 1296
1294 // ---------------------------------------------------------------------------- 1297 // ----------------------------------------------------------------------------
1295 // MicrophoneMuteIsAvailable 1298 // MicrophoneMuteIsAvailable
1296 // ---------------------------------------------------------------------------- 1299 // ----------------------------------------------------------------------------
1297 1300
1298 int32_t AudioMixerManager::MicrophoneMuteIsAvailable(bool& available) 1301 int32_t AudioMixerManager::MicrophoneMuteIsAvailable(bool& available)
1299 { 1302 {
1300 if (_inputMixerHandle == NULL) 1303 if (_inputMixerHandle == nullptr) {
1301 { 1304 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1302 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable input mixer exists"); 1305 "no avaliable input mixer exists");
1303 return -1; 1306 return -1;
1304 } 1307 }
1305 1308
1306 available = _microphoneState[_inputMixerID].muteControlIsValid; 1309 available = _microphoneState[_inputMixerID].muteControlIsValid;
1307 1310
1308 return 0; 1311 return 0;
1309 } 1312 }
1310 1313
1311 // ---------------------------------------------------------------------------- 1314 // ----------------------------------------------------------------------------
1312 // SetMicrophoneMute 1315 // SetMicrophoneMute
1313 // 1316 //
1314 // This mute function works a master mute for the input microphone. 1317 // This mute function works a master mute for the input microphone.
1315 // ---------------------------------------------------------------------------- 1318 // ----------------------------------------------------------------------------
1316 1319
1317 int32_t AudioMixerManager::SetMicrophoneMute(bool enable) 1320 int32_t AudioMixerManager::SetMicrophoneMute(bool enable)
1318 { 1321 {
1319 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::SetMicr ophoneMute(enable=%u)", enable); 1322 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::SetMicr ophoneMute(enable=%u)", enable);
1320 1323
1321 CriticalSectionScoped lock(&_critSect); 1324 CriticalSectionScoped lock(&_critSect);
1322 1325
1323 if (_inputMixerHandle == NULL) 1326 if (_inputMixerHandle == nullptr) {
1324 { 1327 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1325 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable input mixer exists"); 1328 "no avaliable input mixer exists");
1326 return -1; 1329 return -1;
1327 } 1330 }
1328 1331
1329 // Ensure that the selected wave-in destinationhas a valid mute control. 1332 // Ensure that the selected wave-in destinationhas a valid mute control.
1330 // If so, its identifier was stored during the enumeration phase which must 1333 // If so, its identifier was stored during the enumeration phase which must
1331 // have taken place since the input mixer handle exists. 1334 // have taken place since the input mixer handle exists.
1332 // 1335 //
1333 if (!_microphoneState[_inputMixerID].muteControlIsValid) 1336 if (!_microphoneState[_inputMixerID].muteControlIsValid)
1334 { 1337 {
1335 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "it is not possible to mute this microphone line"); 1338 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "it is not possible to mute this microphone line");
1336 return -1; 1339 return -1;
(...skipping 10 matching lines...) Expand all
1347 1350
1348 return (0); 1351 return (0);
1349 } 1352 }
1350 1353
1351 // ---------------------------------------------------------------------------- 1354 // ----------------------------------------------------------------------------
1352 // MicrophoneMute 1355 // MicrophoneMute
1353 // ---------------------------------------------------------------------------- 1356 // ----------------------------------------------------------------------------
1354 1357
1355 int32_t AudioMixerManager::MicrophoneMute(bool& enabled) const 1358 int32_t AudioMixerManager::MicrophoneMute(bool& enabled) const
1356 { 1359 {
1357 1360 if (_inputMixerHandle == nullptr) {
1358 if (_inputMixerHandle == NULL) 1361 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1359 { 1362 "no avaliable input mixer exists");
1360 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable input mixer exists"); 1363 return -1;
1361 return -1;
1362 } 1364 }
1363 1365
1364 // Ensure that the selected wave-in destinationhas a valid mute control. 1366 // Ensure that the selected wave-in destinationhas a valid mute control.
1365 // If so, its identifier was stored during the enumeration phase which must 1367 // If so, its identifier was stored during the enumeration phase which must
1366 // have taken place since the input mixer handle exists. 1368 // have taken place since the input mixer handle exists.
1367 // 1369 //
1368 if (!_microphoneState[_inputMixerID].muteControlIsValid) 1370 if (!_microphoneState[_inputMixerID].muteControlIsValid)
1369 { 1371 {
1370 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "it is not possible to mute this microphone line"); 1372 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "it is not possible to mute this microphone line");
1371 return -1; 1373 return -1;
(...skipping 13 matching lines...) Expand all
1385 1387
1386 return 0; 1388 return 0;
1387 } 1389 }
1388 1390
1389 // ---------------------------------------------------------------------------- 1391 // ----------------------------------------------------------------------------
1390 // MicrophoneBoostIsAvailable 1392 // MicrophoneBoostIsAvailable
1391 // ---------------------------------------------------------------------------- 1393 // ----------------------------------------------------------------------------
1392 1394
1393 int32_t AudioMixerManager::MicrophoneBoostIsAvailable(bool& available) 1395 int32_t AudioMixerManager::MicrophoneBoostIsAvailable(bool& available)
1394 { 1396 {
1395 if (_inputMixerHandle == NULL) 1397 if (_inputMixerHandle == nullptr) {
1396 { 1398 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1397 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable input mixer exists"); 1399 "no avaliable input mixer exists");
1398 return -1; 1400 return -1;
1399 } 1401 }
1400 1402
1401 available = _microphoneState[_inputMixerID].onOffControlIsValid; 1403 available = _microphoneState[_inputMixerID].onOffControlIsValid;
1402 1404
1403 return 0; 1405 return 0;
1404 } 1406 }
1405 1407
1406 // ---------------------------------------------------------------------------- 1408 // ----------------------------------------------------------------------------
1407 // SetMicrophoneBoost 1409 // SetMicrophoneBoost
1408 // ---------------------------------------------------------------------------- 1410 // ----------------------------------------------------------------------------
1409 1411
1410 int32_t AudioMixerManager::SetMicrophoneBoost(bool enable) 1412 int32_t AudioMixerManager::SetMicrophoneBoost(bool enable)
1411 { 1413 {
1412 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::SetMicr ophoneBoost(enable=%u)", enable); 1414 WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "AudioMixerManager::SetMicr ophoneBoost(enable=%u)", enable);
1413 1415
1414 CriticalSectionScoped lock(&_critSect); 1416 CriticalSectionScoped lock(&_critSect);
1415 1417
1416 if (_inputMixerHandle == NULL) 1418 if (_inputMixerHandle == nullptr) {
1417 { 1419 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1418 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable input mixer exists"); 1420 "no avaliable input mixer exists");
1419 return -1; 1421 return -1;
1420 } 1422 }
1421 1423
1422 // Ensure that the selected wave-in destination has a valid boost (on/off) c ontrol. 1424 // Ensure that the selected wave-in destination has a valid boost (on/off) c ontrol.
1423 // If so, its identifier was stored during the enumeration phase which must 1425 // If so, its identifier was stored during the enumeration phase which must
1424 // have taken place since the input mixer handle exists. 1426 // have taken place since the input mixer handle exists.
1425 // 1427 //
1426 if (!_microphoneState[_inputMixerID].onOffControlIsValid) 1428 if (!_microphoneState[_inputMixerID].onOffControlIsValid)
1427 { 1429 {
1428 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no boost control ex ists for this wave-in line"); 1430 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no boost control ex ists for this wave-in line");
1429 return -1; 1431 return -1;
(...skipping 10 matching lines...) Expand all
1440 1442
1441 return (0); 1443 return (0);
1442 } 1444 }
1443 1445
1444 // ---------------------------------------------------------------------------- 1446 // ----------------------------------------------------------------------------
1445 // MicrophoneBoost 1447 // MicrophoneBoost
1446 // ---------------------------------------------------------------------------- 1448 // ----------------------------------------------------------------------------
1447 1449
1448 int32_t AudioMixerManager::MicrophoneBoost(bool& enabled) const 1450 int32_t AudioMixerManager::MicrophoneBoost(bool& enabled) const
1449 { 1451 {
1450 1452 if (_inputMixerHandle == nullptr) {
1451 if (_inputMixerHandle == NULL) 1453 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1452 { 1454 "no avaliable input mixer exists");
1453 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable input mixer exists"); 1455 return -1;
1454 return -1;
1455 } 1456 }
1456 1457
1457 // Ensure that the selected wave-in destination has a valid boost (on/off) c ontrol. 1458 // Ensure that the selected wave-in destination has a valid boost (on/off) c ontrol.
1458 // If so, its identifier was stored during the enumeration phase which must 1459 // If so, its identifier was stored during the enumeration phase which must
1459 // have taken place since the input mixer handle exists. 1460 // have taken place since the input mixer handle exists.
1460 // 1461 //
1461 if (!_microphoneState[_inputMixerID].onOffControlIsValid) 1462 if (!_microphoneState[_inputMixerID].onOffControlIsValid)
1462 { 1463 {
1463 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no boost control ex ists for this wave-in line"); 1464 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no boost control ex ists for this wave-in line");
1464 return -1; 1465 return -1;
(...skipping 13 matching lines...) Expand all
1478 1479
1479 return 0; 1480 return 0;
1480 } 1481 }
1481 1482
1482 // ---------------------------------------------------------------------------- 1483 // ----------------------------------------------------------------------------
1483 // MicrophoneVolumeIsAvailable 1484 // MicrophoneVolumeIsAvailable
1484 // ---------------------------------------------------------------------------- 1485 // ----------------------------------------------------------------------------
1485 1486
1486 int32_t AudioMixerManager::MicrophoneVolumeIsAvailable(bool& available) 1487 int32_t AudioMixerManager::MicrophoneVolumeIsAvailable(bool& available)
1487 { 1488 {
1488 if (_inputMixerHandle == NULL) 1489 if (_inputMixerHandle == nullptr) {
1489 { 1490 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1490 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable input mixer exists"); 1491 "no avaliable input mixer exists");
1491 return -1; 1492 return -1;
1492 } 1493 }
1493 1494
1494 available = _microphoneState[_inputMixerID].volumeControlIsValid; 1495 available = _microphoneState[_inputMixerID].volumeControlIsValid;
1495 1496
1496 return 0; 1497 return 0;
1497 } 1498 }
1498 1499
1499 // ---------------------------------------------------------------------------- 1500 // ----------------------------------------------------------------------------
1500 // SetMicrophoneVolume 1501 // SetMicrophoneVolume
1501 // ---------------------------------------------------------------------------- 1502 // ----------------------------------------------------------------------------
1502 1503
1503 int32_t AudioMixerManager::SetMicrophoneVolume(uint32_t volume) 1504 int32_t AudioMixerManager::SetMicrophoneVolume(uint32_t volume)
1504 { 1505 {
1505 CriticalSectionScoped lock(&_critSect); 1506 CriticalSectionScoped lock(&_critSect);
1506 1507
1507 if (_inputMixerHandle == NULL) 1508 if (_inputMixerHandle == nullptr) {
1508 { 1509 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1509 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable input mixer exists"); 1510 "no avaliable input mixer exists");
1510 return -1; 1511 return -1;
1511 } 1512 }
1512 1513
1513 const UINT mixerID(_inputMixerID); 1514 const UINT mixerID(_inputMixerID);
1514 const DWORD dwControlID(_microphoneState[_inputMixerID].dwVolumeControlID); 1515 const DWORD dwControlID(_microphoneState[_inputMixerID].dwVolumeControlID);
1515 DWORD dwValue(volume); 1516 DWORD dwValue(volume);
1516 1517
1517 // Set one unsigned control value for a specified volume-control identifier 1518 // Set one unsigned control value for a specified volume-control identifier
1518 // 1519 //
1519 if (!SetUnsignedControlValue(mixerID, dwControlID, dwValue)) 1520 if (!SetUnsignedControlValue(mixerID, dwControlID, dwValue))
1520 { 1521 {
1521 return -1; 1522 return -1;
1522 } 1523 }
1523 1524
1524 return (0); 1525 return (0);
1525 } 1526 }
1526 1527
1527 // ---------------------------------------------------------------------------- 1528 // ----------------------------------------------------------------------------
1528 // MicrophoneVolume 1529 // MicrophoneVolume
1529 // ---------------------------------------------------------------------------- 1530 // ----------------------------------------------------------------------------
1530 1531
1531 int32_t AudioMixerManager::MicrophoneVolume(uint32_t& volume) const 1532 int32_t AudioMixerManager::MicrophoneVolume(uint32_t& volume) const
1532 { 1533 {
1533 CriticalSectionScoped lock(&_critSect); 1534 CriticalSectionScoped lock(&_critSect);
1534 1535
1535 if (_inputMixerHandle == NULL) 1536 if (_inputMixerHandle == nullptr) {
1536 { 1537 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1537 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable input mixer exists"); 1538 "no avaliable input mixer exists");
1538 return -1; 1539 return -1;
1539 } 1540 }
1540 1541
1541 const UINT mixerID(_inputMixerID); 1542 const UINT mixerID(_inputMixerID);
1542 const DWORD dwControlID(_microphoneState[_inputMixerID].dwVolumeControlID); 1543 const DWORD dwControlID(_microphoneState[_inputMixerID].dwVolumeControlID);
1543 DWORD dwValue(0); 1544 DWORD dwValue(0);
1544 1545
1545 // Retrieve one unsigned control value for a specified volume-control identi fier 1546 // Retrieve one unsigned control value for a specified volume-control identi fier
1546 // 1547 //
1547 if (!GetUnsignedControlValue(mixerID, dwControlID, dwValue)) 1548 if (!GetUnsignedControlValue(mixerID, dwControlID, dwValue))
1548 { 1549 {
1549 return -1; 1550 return -1;
1550 } 1551 }
1551 1552
1552 volume = dwValue; 1553 volume = dwValue;
1553 1554
1554 return 0; 1555 return 0;
1555 } 1556 }
1556 1557
1557 // ---------------------------------------------------------------------------- 1558 // ----------------------------------------------------------------------------
1558 // MaxMicrophoneVolume 1559 // MaxMicrophoneVolume
1559 // ---------------------------------------------------------------------------- 1560 // ----------------------------------------------------------------------------
1560 1561
1561 int32_t AudioMixerManager::MaxMicrophoneVolume(uint32_t& maxVolume) const 1562 int32_t AudioMixerManager::MaxMicrophoneVolume(uint32_t& maxVolume) const
1562 { 1563 {
1563 WEBRTC_TRACE(kTraceStream, kTraceAudioDevice, _id, "%s", __FUNCTION__); 1564 WEBRTC_TRACE(kTraceStream, kTraceAudioDevice, _id, "%s", __FUNCTION__);
1564 1565
1565 if (_inputMixerHandle == NULL) 1566 if (_inputMixerHandle == nullptr) {
1566 { 1567 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1567 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable input mixer exists"); 1568 "no avaliable input mixer exists");
1568 return -1; 1569 return -1;
1569 } 1570 }
1570 1571
1571 const UINT mixerID(_inputMixerID); 1572 const UINT mixerID(_inputMixerID);
1572 const DWORD dwControlID(_microphoneState[_inputMixerID].dwVolumeControlID); 1573 const DWORD dwControlID(_microphoneState[_inputMixerID].dwVolumeControlID);
1573 MIXERCONTROL mixerControl; 1574 MIXERCONTROL mixerControl;
1574 1575
1575 // Retrieve one control line for a specified volume-control identifier 1576 // Retrieve one control line for a specified volume-control identifier
1576 // 1577 //
1577 if (!GetLineControl(mixerID, dwControlID, mixerControl)) 1578 if (!GetLineControl(mixerID, dwControlID, mixerControl))
1578 { 1579 {
1579 return -1; 1580 return -1;
1580 } 1581 }
1581 1582
1582 maxVolume = mixerControl.Bounds.dwMaximum; 1583 maxVolume = mixerControl.Bounds.dwMaximum;
1583 1584
1584 return 0; 1585 return 0;
1585 } 1586 }
1586 1587
1587 // ---------------------------------------------------------------------------- 1588 // ----------------------------------------------------------------------------
1588 // MinMicrophoneVolume 1589 // MinMicrophoneVolume
1589 // ---------------------------------------------------------------------------- 1590 // ----------------------------------------------------------------------------
1590 1591
1591 int32_t AudioMixerManager::MinMicrophoneVolume(uint32_t& minVolume) const 1592 int32_t AudioMixerManager::MinMicrophoneVolume(uint32_t& minVolume) const
1592 { 1593 {
1593 1594 if (_inputMixerHandle == nullptr) {
1594 if (_inputMixerHandle == NULL) 1595 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1595 { 1596 "no avaliable input mixer exists");
1596 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable input mixer exists"); 1597 return -1;
1597 return -1;
1598 } 1598 }
1599 1599
1600 const UINT mixerID(_inputMixerID); 1600 const UINT mixerID(_inputMixerID);
1601 const DWORD dwControlID(_microphoneState[_inputMixerID].dwVolumeControlID); 1601 const DWORD dwControlID(_microphoneState[_inputMixerID].dwVolumeControlID);
1602 MIXERCONTROL mixerControl; 1602 MIXERCONTROL mixerControl;
1603 1603
1604 // Retrieve one control line for a specified volume-control identifier 1604 // Retrieve one control line for a specified volume-control identifier
1605 // 1605 //
1606 if (!GetLineControl(mixerID, dwControlID, mixerControl)) 1606 if (!GetLineControl(mixerID, dwControlID, mixerControl))
1607 { 1607 {
1608 return -1; 1608 return -1;
1609 } 1609 }
1610 1610
1611 minVolume = mixerControl.Bounds.dwMinimum; 1611 minVolume = mixerControl.Bounds.dwMinimum;
1612 1612
1613 return 0; 1613 return 0;
1614 } 1614 }
1615 1615
1616 // ---------------------------------------------------------------------------- 1616 // ----------------------------------------------------------------------------
1617 // MicrophoneVolumeStepSize 1617 // MicrophoneVolumeStepSize
1618 // ---------------------------------------------------------------------------- 1618 // ----------------------------------------------------------------------------
1619 1619
1620 int32_t AudioMixerManager::MicrophoneVolumeStepSize(uint16_t& stepSize) const 1620 int32_t AudioMixerManager::MicrophoneVolumeStepSize(uint16_t& stepSize) const
1621 { 1621 {
1622 1622 if (_inputMixerHandle == nullptr) {
1623 if (_inputMixerHandle == NULL) 1623 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id,
1624 { 1624 "no avaliable input mixer exists");
1625 WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "no avaliable input mixer exists"); 1625 return -1;
1626 return -1;
1627 } 1626 }
1628 1627
1629 const UINT mixerID(_inputMixerID); 1628 const UINT mixerID(_inputMixerID);
1630 const DWORD dwControlID(_microphoneState[_inputMixerID].dwVolumeControlID); 1629 const DWORD dwControlID(_microphoneState[_inputMixerID].dwVolumeControlID);
1631 MIXERCONTROL mixerControl; 1630 MIXERCONTROL mixerControl;
1632 1631
1633 // Retrieve one control line for a specified volume-control identifier 1632 // Retrieve one control line for a specified volume-control identifier
1634 // 1633 //
1635 if (!GetLineControl(mixerID, dwControlID, mixerControl)) 1634 if (!GetLineControl(mixerID, dwControlID, mixerControl))
1636 { 1635 {
(...skipping 1079 matching lines...) Expand 10 before | Expand all | Expand 10 after
2716 if (WideCharToMultiByte(CP_UTF8, 0, src, -1, _str, kStrLen, 0, 0) == 0) 2715 if (WideCharToMultiByte(CP_UTF8, 0, src, -1, _str, kStrLen, 0, 0) == 0)
2717 memset(_str, 0, kStrLen); 2716 memset(_str, 0, kStrLen);
2718 } 2717 }
2719 return _str; 2718 return _str;
2720 #else 2719 #else
2721 return const_cast<char*>(src); 2720 return const_cast<char*>(src);
2722 #endif 2721 #endif
2723 } 2722 }
2724 2723
2725 } // namespace webrtc 2724 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698