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

Side by Side Diff: webrtc/modules/audio_device/mac/audio_device_mac.cc

Issue 1335923002: Add RTC_ prefix to (D)CHECKs and related macros. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase. Created 5 years, 3 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 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 } 84 }
85 } 85 }
86 } 86 }
87 87
88 // CoreAudio errors are best interpreted as four character strings. 88 // CoreAudio errors are best interpreted as four character strings.
89 void AudioDeviceMac::logCAMsg(const TraceLevel level, 89 void AudioDeviceMac::logCAMsg(const TraceLevel level,
90 const TraceModule module, 90 const TraceModule module,
91 const int32_t id, const char *msg, 91 const int32_t id, const char *msg,
92 const char *err) 92 const char *err)
93 { 93 {
94 DCHECK(msg != NULL); 94 RTC_DCHECK(msg != NULL);
95 DCHECK(err != NULL); 95 RTC_DCHECK(err != NULL);
96 96
97 #ifdef WEBRTC_ARCH_BIG_ENDIAN 97 #ifdef WEBRTC_ARCH_BIG_ENDIAN
98 WEBRTC_TRACE(level, module, id, "%s: %.4s", msg, err); 98 WEBRTC_TRACE(level, module, id, "%s: %.4s", msg, err);
99 #else 99 #else
100 // We need to flip the characters in this case. 100 // We need to flip the characters in this case.
101 WEBRTC_TRACE(level, module, id, "%s: %.1s%.1s%.1s%.1s", msg, err + 3, err 101 WEBRTC_TRACE(level, module, id, "%s: %.1s%.1s%.1s%.1s", msg, err + 3, err
102 + 2, err + 1, err); 102 + 2, err + 1, err);
103 #endif 103 #endif
104 } 104 }
105 105
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 _recError(0), 147 _recError(0),
148 _paCaptureBuffer(NULL), 148 _paCaptureBuffer(NULL),
149 _paRenderBuffer(NULL), 149 _paRenderBuffer(NULL),
150 _captureBufSizeSamples(0), 150 _captureBufSizeSamples(0),
151 _renderBufSizeSamples(0), 151 _renderBufSizeSamples(0),
152 prev_key_state_() 152 prev_key_state_()
153 { 153 {
154 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, id, 154 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, id,
155 "%s created", __FUNCTION__); 155 "%s created", __FUNCTION__);
156 156
157 DCHECK(&_stopEvent != NULL); 157 RTC_DCHECK(&_stopEvent != NULL);
158 DCHECK(&_stopEventRec != NULL); 158 RTC_DCHECK(&_stopEventRec != NULL);
159 159
160 memset(_renderConvertData, 0, sizeof(_renderConvertData)); 160 memset(_renderConvertData, 0, sizeof(_renderConvertData));
161 memset(&_outStreamFormat, 0, sizeof(AudioStreamBasicDescription)); 161 memset(&_outStreamFormat, 0, sizeof(AudioStreamBasicDescription));
162 memset(&_outDesiredFormat, 0, sizeof(AudioStreamBasicDescription)); 162 memset(&_outDesiredFormat, 0, sizeof(AudioStreamBasicDescription));
163 memset(&_inStreamFormat, 0, sizeof(AudioStreamBasicDescription)); 163 memset(&_inStreamFormat, 0, sizeof(AudioStreamBasicDescription));
164 memset(&_inDesiredFormat, 0, sizeof(AudioStreamBasicDescription)); 164 memset(&_inDesiredFormat, 0, sizeof(AudioStreamBasicDescription));
165 } 165 }
166 166
167 167
168 AudioDeviceMac::~AudioDeviceMac() 168 AudioDeviceMac::~AudioDeviceMac()
169 { 169 {
170 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, _id, 170 WEBRTC_TRACE(kTraceMemory, kTraceAudioDevice, _id,
171 "%s destroyed", __FUNCTION__); 171 "%s destroyed", __FUNCTION__);
172 172
173 if (!_isShutDown) 173 if (!_isShutDown)
174 { 174 {
175 Terminate(); 175 Terminate();
176 } 176 }
177 177
178 DCHECK(!capture_worker_thread_.get()); 178 RTC_DCHECK(!capture_worker_thread_.get());
179 DCHECK(!render_worker_thread_.get()); 179 RTC_DCHECK(!render_worker_thread_.get());
180 180
181 if (_paRenderBuffer) 181 if (_paRenderBuffer)
182 { 182 {
183 delete _paRenderBuffer; 183 delete _paRenderBuffer;
184 _paRenderBuffer = NULL; 184 _paRenderBuffer = NULL;
185 } 185 }
186 186
187 if (_paCaptureBuffer) 187 if (_paCaptureBuffer)
188 { 188 {
189 delete _paCaptureBuffer; 189 delete _paCaptureBuffer;
(...skipping 1467 matching lines...) Expand 10 before | Expand all | Expand 10 after
1657 return 0; 1657 return 0;
1658 } 1658 }
1659 1659
1660 if (!_initialized) 1660 if (!_initialized)
1661 { 1661 {
1662 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id, 1662 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id,
1663 " Recording worker thread has not been started"); 1663 " Recording worker thread has not been started");
1664 return -1; 1664 return -1;
1665 } 1665 }
1666 1666
1667 DCHECK(!capture_worker_thread_.get()); 1667 RTC_DCHECK(!capture_worker_thread_.get());
1668 capture_worker_thread_ = 1668 capture_worker_thread_ =
1669 ThreadWrapper::CreateThread(RunCapture, this, "CaptureWorkerThread"); 1669 ThreadWrapper::CreateThread(RunCapture, this, "CaptureWorkerThread");
1670 DCHECK(capture_worker_thread_.get()); 1670 RTC_DCHECK(capture_worker_thread_.get());
1671 capture_worker_thread_->Start(); 1671 capture_worker_thread_->Start();
1672 capture_worker_thread_->SetPriority(kRealtimePriority); 1672 capture_worker_thread_->SetPriority(kRealtimePriority);
1673 1673
1674 OSStatus err = noErr; 1674 OSStatus err = noErr;
1675 if (_twoDevices) 1675 if (_twoDevices)
1676 { 1676 {
1677 WEBRTC_CA_RETURN_ON_ERR(AudioDeviceStart(_inputDeviceID, _inDeviceIOProc ID)); 1677 WEBRTC_CA_RETURN_ON_ERR(AudioDeviceStart(_inputDeviceID, _inDeviceIOProc ID));
1678 } else if (!_playing) 1678 } else if (!_playing)
1679 { 1679 {
1680 WEBRTC_CA_RETURN_ON_ERR(AudioDeviceStart(_inputDeviceID, _deviceIOProcID )); 1680 WEBRTC_CA_RETURN_ON_ERR(AudioDeviceStart(_inputDeviceID, _deviceIOProcID ));
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
1812 if (!_playIsInitialized) 1812 if (!_playIsInitialized)
1813 { 1813 {
1814 return -1; 1814 return -1;
1815 } 1815 }
1816 1816
1817 if (_playing) 1817 if (_playing)
1818 { 1818 {
1819 return 0; 1819 return 0;
1820 } 1820 }
1821 1821
1822 DCHECK(!render_worker_thread_.get()); 1822 RTC_DCHECK(!render_worker_thread_.get());
1823 render_worker_thread_ = 1823 render_worker_thread_ =
1824 ThreadWrapper::CreateThread(RunRender, this, "RenderWorkerThread"); 1824 ThreadWrapper::CreateThread(RunRender, this, "RenderWorkerThread");
1825 render_worker_thread_->Start(); 1825 render_worker_thread_->Start();
1826 render_worker_thread_->SetPriority(kRealtimePriority); 1826 render_worker_thread_->SetPriority(kRealtimePriority);
1827 1827
1828 if (_twoDevices || !_recording) 1828 if (_twoDevices || !_recording)
1829 { 1829 {
1830 OSStatus err = noErr; 1830 OSStatus err = noErr;
1831 WEBRTC_CA_RETURN_ON_ERR(AudioDeviceStart(_outputDeviceID, _deviceIOProcI D)); 1831 WEBRTC_CA_RETURN_ON_ERR(AudioDeviceStart(_outputDeviceID, _deviceIOProcI D));
1832 } 1832 }
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
2459 return 0; 2459 return 0;
2460 } 2460 }
2461 2461
2462 OSStatus AudioDeviceMac::objectListenerProc( 2462 OSStatus AudioDeviceMac::objectListenerProc(
2463 AudioObjectID objectId, 2463 AudioObjectID objectId,
2464 UInt32 numberAddresses, 2464 UInt32 numberAddresses,
2465 const AudioObjectPropertyAddress addresses[], 2465 const AudioObjectPropertyAddress addresses[],
2466 void* clientData) 2466 void* clientData)
2467 { 2467 {
2468 AudioDeviceMac *ptrThis = (AudioDeviceMac *) clientData; 2468 AudioDeviceMac *ptrThis = (AudioDeviceMac *) clientData;
2469 DCHECK(ptrThis != NULL); 2469 RTC_DCHECK(ptrThis != NULL);
2470 2470
2471 ptrThis->implObjectListenerProc(objectId, numberAddresses, addresses); 2471 ptrThis->implObjectListenerProc(objectId, numberAddresses, addresses);
2472 2472
2473 // AudioObjectPropertyListenerProc functions are supposed to return 0 2473 // AudioObjectPropertyListenerProc functions are supposed to return 0
2474 return 0; 2474 return 0;
2475 } 2475 }
2476 2476
2477 OSStatus AudioDeviceMac::implObjectListenerProc( 2477 OSStatus AudioDeviceMac::implObjectListenerProc(
2478 const AudioObjectID objectId, 2478 const AudioObjectID objectId,
2479 const UInt32 numberAddresses, 2479 const UInt32 numberAddresses,
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
2745 // ============================================================================ 2745 // ============================================================================
2746 2746
2747 OSStatus AudioDeviceMac::deviceIOProc(AudioDeviceID, const AudioTimeStamp*, 2747 OSStatus AudioDeviceMac::deviceIOProc(AudioDeviceID, const AudioTimeStamp*,
2748 const AudioBufferList* inputData, 2748 const AudioBufferList* inputData,
2749 const AudioTimeStamp* inputTime, 2749 const AudioTimeStamp* inputTime,
2750 AudioBufferList* outputData, 2750 AudioBufferList* outputData,
2751 const AudioTimeStamp* outputTime, 2751 const AudioTimeStamp* outputTime,
2752 void *clientData) 2752 void *clientData)
2753 { 2753 {
2754 AudioDeviceMac *ptrThis = (AudioDeviceMac *) clientData; 2754 AudioDeviceMac *ptrThis = (AudioDeviceMac *) clientData;
2755 DCHECK(ptrThis != NULL); 2755 RTC_DCHECK(ptrThis != NULL);
2756 2756
2757 ptrThis->implDeviceIOProc(inputData, inputTime, outputData, outputTime); 2757 ptrThis->implDeviceIOProc(inputData, inputTime, outputData, outputTime);
2758 2758
2759 // AudioDeviceIOProc functions are supposed to return 0 2759 // AudioDeviceIOProc functions are supposed to return 0
2760 return 0; 2760 return 0;
2761 } 2761 }
2762 2762
2763 OSStatus AudioDeviceMac::outConverterProc(AudioConverterRef, 2763 OSStatus AudioDeviceMac::outConverterProc(AudioConverterRef,
2764 UInt32 *numberDataPackets, 2764 UInt32 *numberDataPackets,
2765 AudioBufferList *data, 2765 AudioBufferList *data,
2766 AudioStreamPacketDescription **, 2766 AudioStreamPacketDescription **,
2767 void *userData) 2767 void *userData)
2768 { 2768 {
2769 AudioDeviceMac *ptrThis = (AudioDeviceMac *) userData; 2769 AudioDeviceMac *ptrThis = (AudioDeviceMac *) userData;
2770 DCHECK(ptrThis != NULL); 2770 RTC_DCHECK(ptrThis != NULL);
2771 2771
2772 return ptrThis->implOutConverterProc(numberDataPackets, data); 2772 return ptrThis->implOutConverterProc(numberDataPackets, data);
2773 } 2773 }
2774 2774
2775 OSStatus AudioDeviceMac::inDeviceIOProc(AudioDeviceID, const AudioTimeStamp*, 2775 OSStatus AudioDeviceMac::inDeviceIOProc(AudioDeviceID, const AudioTimeStamp*,
2776 const AudioBufferList* inputData, 2776 const AudioBufferList* inputData,
2777 const AudioTimeStamp* inputTime, 2777 const AudioTimeStamp* inputTime,
2778 AudioBufferList*, 2778 AudioBufferList*,
2779 const AudioTimeStamp*, void* clientData) 2779 const AudioTimeStamp*, void* clientData)
2780 { 2780 {
2781 AudioDeviceMac *ptrThis = (AudioDeviceMac *) clientData; 2781 AudioDeviceMac *ptrThis = (AudioDeviceMac *) clientData;
2782 DCHECK(ptrThis != NULL); 2782 RTC_DCHECK(ptrThis != NULL);
2783 2783
2784 ptrThis->implInDeviceIOProc(inputData, inputTime); 2784 ptrThis->implInDeviceIOProc(inputData, inputTime);
2785 2785
2786 // AudioDeviceIOProc functions are supposed to return 0 2786 // AudioDeviceIOProc functions are supposed to return 0
2787 return 0; 2787 return 0;
2788 } 2788 }
2789 2789
2790 OSStatus AudioDeviceMac::inConverterProc( 2790 OSStatus AudioDeviceMac::inConverterProc(
2791 AudioConverterRef, 2791 AudioConverterRef,
2792 UInt32 *numberDataPackets, 2792 UInt32 *numberDataPackets,
2793 AudioBufferList *data, 2793 AudioBufferList *data,
2794 AudioStreamPacketDescription ** /*dataPacketDescription*/, 2794 AudioStreamPacketDescription ** /*dataPacketDescription*/,
2795 void *userData) 2795 void *userData)
2796 { 2796 {
2797 AudioDeviceMac *ptrThis = static_cast<AudioDeviceMac*> (userData); 2797 AudioDeviceMac *ptrThis = static_cast<AudioDeviceMac*> (userData);
2798 DCHECK(ptrThis != NULL); 2798 RTC_DCHECK(ptrThis != NULL);
2799 2799
2800 return ptrThis->implInConverterProc(numberDataPackets, data); 2800 return ptrThis->implInConverterProc(numberDataPackets, data);
2801 } 2801 }
2802 2802
2803 OSStatus AudioDeviceMac::implDeviceIOProc(const AudioBufferList *inputData, 2803 OSStatus AudioDeviceMac::implDeviceIOProc(const AudioBufferList *inputData,
2804 const AudioTimeStamp *inputTime, 2804 const AudioTimeStamp *inputTime,
2805 AudioBufferList *outputData, 2805 AudioBufferList *outputData,
2806 const AudioTimeStamp *outputTime) 2806 const AudioTimeStamp *outputTime)
2807 { 2807 {
2808 OSStatus err = noErr; 2808 OSStatus err = noErr;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2845 } 2845 }
2846 2846
2847 if (!_playing) 2847 if (!_playing)
2848 { 2848 {
2849 // This can be the case when a shared device is capturing but not 2849 // This can be the case when a shared device is capturing but not
2850 // rendering. We allow the checks above before returning to avoid a 2850 // rendering. We allow the checks above before returning to avoid a
2851 // timeout when capturing is stopped. 2851 // timeout when capturing is stopped.
2852 return 0; 2852 return 0;
2853 } 2853 }
2854 2854
2855 DCHECK(_outStreamFormat.mBytesPerFrame != 0); 2855 RTC_DCHECK(_outStreamFormat.mBytesPerFrame != 0);
2856 UInt32 size = outputData->mBuffers->mDataByteSize 2856 UInt32 size = outputData->mBuffers->mDataByteSize
2857 / _outStreamFormat.mBytesPerFrame; 2857 / _outStreamFormat.mBytesPerFrame;
2858 2858
2859 // TODO(xians): signal an error somehow? 2859 // TODO(xians): signal an error somehow?
2860 err = AudioConverterFillComplexBuffer(_renderConverter, outConverterProc, 2860 err = AudioConverterFillComplexBuffer(_renderConverter, outConverterProc,
2861 this, &size, outputData, NULL); 2861 this, &size, outputData, NULL);
2862 if (err != noErr) 2862 if (err != noErr)
2863 { 2863 {
2864 if (err == 1) 2864 if (err == 1)
2865 { 2865 {
(...skipping 20 matching lines...) Expand all
2886 + 0.5); 2886 + 0.5);
2887 2887
2888 AtomicSet32(&_renderDelayUs, renderDelayUs); 2888 AtomicSet32(&_renderDelayUs, renderDelayUs);
2889 2889
2890 return 0; 2890 return 0;
2891 } 2891 }
2892 2892
2893 OSStatus AudioDeviceMac::implOutConverterProc(UInt32 *numberDataPackets, 2893 OSStatus AudioDeviceMac::implOutConverterProc(UInt32 *numberDataPackets,
2894 AudioBufferList *data) 2894 AudioBufferList *data)
2895 { 2895 {
2896 DCHECK(data->mNumberBuffers == 1); 2896 RTC_DCHECK(data->mNumberBuffers == 1);
2897 PaRingBufferSize numSamples = *numberDataPackets 2897 PaRingBufferSize numSamples = *numberDataPackets
2898 * _outDesiredFormat.mChannelsPerFrame; 2898 * _outDesiredFormat.mChannelsPerFrame;
2899 2899
2900 data->mBuffers->mNumberChannels = _outDesiredFormat.mChannelsPerFrame; 2900 data->mBuffers->mNumberChannels = _outDesiredFormat.mChannelsPerFrame;
2901 // Always give the converter as much as it wants, zero padding as required. 2901 // Always give the converter as much as it wants, zero padding as required.
2902 data->mBuffers->mDataByteSize = *numberDataPackets 2902 data->mBuffers->mDataByteSize = *numberDataPackets
2903 * _outDesiredFormat.mBytesPerPacket; 2903 * _outDesiredFormat.mBytesPerPacket;
2904 data->mBuffers->mData = _renderConvertData; 2904 data->mBuffers->mData = _renderConvertData;
2905 memset(_renderConvertData, 0, sizeof(_renderConvertData)); 2905 memset(_renderConvertData, 0, sizeof(_renderConvertData));
2906 2906
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
2960 2960
2961 int32_t captureDelayUs = static_cast<int32_t> (1e-3 * (nowNs - inputTimeNs) 2961 int32_t captureDelayUs = static_cast<int32_t> (1e-3 * (nowNs - inputTimeNs)
2962 + 0.5); 2962 + 0.5);
2963 captureDelayUs 2963 captureDelayUs
2964 += static_cast<int32_t> ((1.0e6 * bufSizeSamples) 2964 += static_cast<int32_t> ((1.0e6 * bufSizeSamples)
2965 / _inStreamFormat.mChannelsPerFrame / _inStreamFormat.mSampleRate 2965 / _inStreamFormat.mChannelsPerFrame / _inStreamFormat.mSampleRate
2966 + 0.5); 2966 + 0.5);
2967 2967
2968 AtomicSet32(&_captureDelayUs, captureDelayUs); 2968 AtomicSet32(&_captureDelayUs, captureDelayUs);
2969 2969
2970 DCHECK(inputData->mNumberBuffers == 1); 2970 RTC_DCHECK(inputData->mNumberBuffers == 1);
2971 PaRingBufferSize numSamples = inputData->mBuffers->mDataByteSize 2971 PaRingBufferSize numSamples = inputData->mBuffers->mDataByteSize
2972 * _inStreamFormat.mChannelsPerFrame / _inStreamFormat.mBytesPerPacket; 2972 * _inStreamFormat.mChannelsPerFrame / _inStreamFormat.mBytesPerPacket;
2973 PaUtil_WriteRingBuffer(_paCaptureBuffer, inputData->mBuffers->mData, 2973 PaUtil_WriteRingBuffer(_paCaptureBuffer, inputData->mBuffers->mData,
2974 numSamples); 2974 numSamples);
2975 2975
2976 kern_return_t kernErr = semaphore_signal_all(_captureSemaphore); 2976 kern_return_t kernErr = semaphore_signal_all(_captureSemaphore);
2977 if (kernErr != KERN_SUCCESS) 2977 if (kernErr != KERN_SUCCESS)
2978 { 2978 {
2979 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id, 2979 WEBRTC_TRACE(kTraceError, kTraceAudioDevice, _id,
2980 " semaphore_signal_all() error: %d", kernErr); 2980 " semaphore_signal_all() error: %d", kernErr);
2981 } 2981 }
2982 2982
2983 return err; 2983 return err;
2984 } 2984 }
2985 2985
2986 OSStatus AudioDeviceMac::implInConverterProc(UInt32 *numberDataPackets, 2986 OSStatus AudioDeviceMac::implInConverterProc(UInt32 *numberDataPackets,
2987 AudioBufferList *data) 2987 AudioBufferList *data)
2988 { 2988 {
2989 DCHECK(data->mNumberBuffers == 1); 2989 RTC_DCHECK(data->mNumberBuffers == 1);
2990 PaRingBufferSize numSamples = *numberDataPackets 2990 PaRingBufferSize numSamples = *numberDataPackets
2991 * _inStreamFormat.mChannelsPerFrame; 2991 * _inStreamFormat.mChannelsPerFrame;
2992 2992
2993 while (PaUtil_GetRingBufferReadAvailable(_paCaptureBuffer) < numSamples) 2993 while (PaUtil_GetRingBufferReadAvailable(_paCaptureBuffer) < numSamples)
2994 { 2994 {
2995 mach_timespec_t timeout; 2995 mach_timespec_t timeout;
2996 timeout.tv_sec = 0; 2996 timeout.tv_sec = 0;
2997 timeout.tv_nsec = TIMER_PERIOD_MS; 2997 timeout.tv_nsec = TIMER_PERIOD_MS;
2998 2998
2999 kern_return_t kernErr = semaphore_timedwait(_captureSemaphore, timeout); 2999 kern_return_t kernErr = semaphore_timedwait(_captureSemaphore, timeout);
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
3232 kCGEventSourceStateHIDSystemState, 3232 kCGEventSourceStateHIDSystemState,
3233 key_index); 3233 key_index);
3234 // A false -> true change in keymap means a key is pressed. 3234 // A false -> true change in keymap means a key is pressed.
3235 key_down |= (keyState && !prev_key_state_[key_index]); 3235 key_down |= (keyState && !prev_key_state_[key_index]);
3236 // Save current state. 3236 // Save current state.
3237 prev_key_state_[key_index] = keyState; 3237 prev_key_state_[key_index] = keyState;
3238 } 3238 }
3239 return key_down; 3239 return key_down;
3240 } 3240 }
3241 } // namespace webrtc 3241 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_device/linux/audio_mixer_manager_pulse_linux.cc ('k') | webrtc/modules/audio_processing/agc/agc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698