| /* |
| * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #include <cassert> |
| |
| #include "audio_device_utility.h" |
| |
| #if defined(_WIN32) |
| |
| // ============================================================================ |
| // Windows |
| // ============================================================================ |
| |
| #include <windows.h> |
| #include <conio.h> |
| #include <ctype.h> |
| #include <stdio.h> |
| #include <mmsystem.h> |
| |
| namespace webrtc |
| { |
| |
| void AudioDeviceUtility::Sleep(WebRtc_UWord32 milliseconds) |
| { |
| return ::Sleep(milliseconds); |
| } |
| |
| void AudioDeviceUtility::WaitForKey() |
| { |
| _getch(); |
| } |
| |
| WebRtc_UWord32 AudioDeviceUtility::GetTimeInMS() |
| { |
| return timeGetTime(); |
| } |
| |
| bool AudioDeviceUtility::StringCompare(const WebRtc_Word8* str1 , const WebRtc_Word8* str2, const WebRtc_UWord32 length) |
| { |
| return ((_strnicmp(str1, str2, length) == 0) ? true : false); |
| } |
| |
| } // namespace webrtc |
| |
| #elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC) |
| |
| // ============================================================================ |
| // Linux & Mac |
| // ============================================================================ |
| |
| #include <sys/time.h> // gettimeofday |
| #include <time.h> // nanosleep, gettimeofday |
| #include <string.h> // strncasecmp |
| #include <stdio.h> // getchar |
| #include <termios.h> // tcgetattr |
| |
| #include <unistd.h> |
| |
| namespace webrtc |
| { |
| |
| void AudioDeviceUtility::WaitForKey() |
| { |
| |
| struct termios oldt, newt; |
| |
| tcgetattr( STDIN_FILENO, &oldt ); |
| |
| // we don't want getchar to echo! |
| |
| newt = oldt; |
| newt.c_lflag &= ~( ICANON | ECHO ); |
| tcsetattr( STDIN_FILENO, TCSANOW, &newt ); |
| |
| // catch any newline that's hanging around... |
| |
| // you'll have to hit enter twice if you |
| |
| // choose enter out of all available keys |
| |
| if (getchar() == '\n') |
| { |
| getchar(); |
| } |
| |
| tcsetattr( STDIN_FILENO, TCSANOW, &oldt ); |
| } |
| |
| WebRtc_UWord32 AudioDeviceUtility::GetTimeInMS() |
| { |
| struct timeval tv; |
| struct timezone tz; |
| WebRtc_UWord32 val; |
| |
| gettimeofday(&tv, &tz); |
| val = (WebRtc_UWord32)(tv.tv_sec*1000 + tv.tv_usec/1000); |
| return val; |
| } |
| |
| void AudioDeviceUtility::Sleep(WebRtc_UWord32 milliseconds) |
| { |
| timespec t; |
| t.tv_sec = milliseconds/1000; |
| t.tv_nsec = (milliseconds-(milliseconds/1000)*1000)*1000000; |
| nanosleep(&t,NULL); |
| } |
| |
| bool AudioDeviceUtility::StringCompare(const WebRtc_Word8* str1 , const WebRtc_Word8* str2, const WebRtc_UWord32 length) |
| { |
| return (strncasecmp(str1, str2, length) == 0)?true: false; |
| } |
| |
| } // namespace webrtc |
| |
| #endif // defined(WEBRTC_LINUX) || defined(WEBRTC_MAC) |
| |
| |