1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * This file contains common constants for VoiceEngine, as well as 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * platform specific settings and include files. 14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef WEBRTC_VOICE_ENGINE_VOICE_ENGINE_DEFINES_H 17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_VOICE_ENGINE_VOICE_ENGINE_DEFINES_H 18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1981b54fe4e262b6051a30acd464a6c8271ca51802andrew@webrtc.org#include "webrtc/common_types.h" 2081b54fe4e262b6051a30acd464a6c8271ca51802andrew@webrtc.org#include "webrtc/engine_configurations.h" 21b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org#include "webrtc/modules/audio_processing/include/audio_processing.h" 2281b54fe4e262b6051a30acd464a6c8271ca51802andrew@webrtc.org#include "webrtc/system_wrappers/interface/logging.h" 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Enumerators 26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 288339bd1c14d5b1c5c10a712ad7faa344fe41f5ceandrew@webrtc.orgnamespace webrtc { 298339bd1c14d5b1c5c10a712ad7faa344fe41f5ceandrew@webrtc.org 30f7c73b531c9f2aca2adb87044613a7b7fa94de84andrew@webrtc.org// Internal buffer size required for mono audio, based on the highest sample 31f7c73b531c9f2aca2adb87044613a7b7fa94de84andrew@webrtc.org// rate voice engine supports (10 ms of audio at 192 kHz). 32f7c73b531c9f2aca2adb87044613a7b7fa94de84andrew@webrtc.orgstatic const int kMaxMonoDataSizeSamples = 1920; 33f7c73b531c9f2aca2adb87044613a7b7fa94de84andrew@webrtc.org 34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// VolumeControl 35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kMinVolumeLevel = 0 }; 36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kMaxVolumeLevel = 255 }; 37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Min scale factor for per-channel volume scaling 38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgconst float kMinOutputVolumeScaling = 0.0f; 39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Max scale factor for per-channel volume scaling 40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgconst float kMaxOutputVolumeScaling = 10.0f; 41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Min scale factor for output volume panning 42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgconst float kMinOutputVolumePanning = 0.0f; 43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Max scale factor for output volume panning 44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgconst float kMaxOutputVolumePanning = 1.0f; 45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// DTMF 47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kMinDtmfEventCode = 0 }; // DTMF digit "0" 48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kMaxDtmfEventCode = 15 }; // DTMF digit "D" 49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kMinTelephoneEventCode = 0 }; // RFC4733 (Section 2.3.1) 50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kMaxTelephoneEventCode = 255 }; // RFC4733 (Section 2.3.1) 51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kMinTelephoneEventDuration = 100 }; 52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kMaxTelephoneEventDuration = 60000 }; // Actual limit is 2^16 53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kMinTelephoneEventAttenuation = 0 }; // 0 dBm0 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kMaxTelephoneEventAttenuation = 36 }; // -36 dBm0 55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kMinTelephoneEventSeparationMs = 100 }; // Min delta time between two 56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // telephone events 57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMaxIpPacketSizeBytes = 1500 }; // assumes Ethernet 58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMaxModuleVersionSize = 960 }; 60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Base 62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineVersionMaxMessageSize = 1024 }; 63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Audio processing 65b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.orgconst NoiseSuppression::Level kDefaultNsMode = NoiseSuppression::kModerate; 66b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.orgconst GainControl::Mode kDefaultAgcMode = 67b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS) 68b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org GainControl::kAdaptiveDigital; 69b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org#else 70b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org GainControl::kAdaptiveAnalog; 71b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org#endif 72b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.orgconst bool kDefaultAgcState = 73b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS) 74b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org false; 75b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org#else 76b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org true; 77b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org#endif 78e06943f2aeb970e7c11070c327ab3b3264e2722fandrew@webrtc.orgconst GainControl::Mode kDefaultRxAgcMode = GainControl::kAdaptiveDigital; 79b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Codec 81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Min init target rate for iSAC-wb 82b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMinIsacInitTargetRateBpsWb = 10000 }; 83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Max init target rate for iSAC-wb 84b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMaxIsacInitTargetRateBpsWb = 32000 }; 85b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Min init target rate for iSAC-swb 86b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMinIsacInitTargetRateBpsSwb = 10000 }; 87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Max init target rate for iSAC-swb 88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMaxIsacInitTargetRateBpsSwb = 56000 }; 89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Lowest max rate for iSAC-wb 90b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMinIsacMaxRateBpsWb = 32000 }; 91b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Highest max rate for iSAC-wb 92b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMaxIsacMaxRateBpsWb = 53400 }; 93b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Lowest max rate for iSAC-swb 94b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMinIsacMaxRateBpsSwb = 32000 }; 95b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Highest max rate for iSAC-swb 96b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMaxIsacMaxRateBpsSwb = 107000 }; 97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Lowest max payload size for iSAC-wb 98b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMinIsacMaxPayloadSizeBytesWb = 120 }; 99b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Highest max payload size for iSAC-wb 100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMaxIsacMaxPayloadSizeBytesWb = 400 }; 101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Lowest max payload size for iSAC-swb 102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMinIsacMaxPayloadSizeBytesSwb = 120 }; 103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Highest max payload size for iSAC-swb 104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMaxIsacMaxPayloadSizeBytesSwb = 600 }; 105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// VideoSync 107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Lowest minimum playout delay 108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMinMinPlayoutDelayMs = 0 }; 109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Highest minimum playout delay 110db32ab0b04e5bd9cb7d92fc4a9ed72b1fcda62ebniklas.enbom@webrtc.orgenum { kVoiceEngineMaxMinPlayoutDelayMs = 10000 }; 111b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Network 113b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Min packet-timeout time for received RTP packets 114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMinPacketTimeoutSec = 1 }; 115b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Max packet-timeout time for received RTP packets 116b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMaxPacketTimeoutSec = 150 }; 117b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Min sample time for dead-or-alive detection 118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMinSampleTimeSec = 1 }; 119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Max sample time for dead-or-alive detection 120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMaxSampleTimeSec = 150 }; 121b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 122b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// RTP/RTCP 123b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Min 4-bit ID for RTP extension (see section 4.2 in RFC 5285) 124b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMinRtpExtensionId = 1 }; 125b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Max 4-bit ID for RTP extension 126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum { kVoiceEngineMaxRtpExtensionId = 14 }; 127b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1283b89e10f31160da35b408fd00cb8f89d2b08862dpbos@webrtc.org} // namespace webrtc 129b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 131b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Build information macros 132b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 133b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 134b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#if defined(_DEBUG) 135b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define BUILDMODE "d" 136b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#elif defined(DEBUG) 137b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define BUILDMODE "d" 138b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#elif defined(NDEBUG) 139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define BUILDMODE "r" 140b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#else 141b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define BUILDMODE "?" 142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif 143b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 144b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define BUILDTIME __TIME__ 145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define BUILDDATE __DATE__ 146b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Example: "Oct 10 2002 12:05:30 r" 148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define BUILDINFO BUILDDATE " " BUILDTIME " " BUILDMODE 149b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 151b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Macros 152b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 15481b54fe4e262b6051a30acd464a6c8271ca51802andrew@webrtc.org#define NOT_SUPPORTED(stat) \ 15581b54fe4e262b6051a30acd464a6c8271ca51802andrew@webrtc.org LOG_F(LS_ERROR) << "not supported"; \ 15681b54fe4e262b6051a30acd464a6c8271ca51802andrew@webrtc.org stat.SetLastError(VE_FUNC_NOT_SUPPORTED); \ 15781b54fe4e262b6051a30acd464a6c8271ca51802andrew@webrtc.org return -1; 15881b54fe4e262b6051a30acd464a6c8271ca51802andrew@webrtc.org 159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#if (defined(_DEBUG) && defined(_WIN32) && (_MSC_VER >= 1400)) 160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #include <windows.h> 161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #include <stdio.h> 162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #define DEBUG_PRINT(...) \ 163b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org { \ 164b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org char msg[256]; \ 165b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org sprintf(msg, __VA_ARGS__); \ 166b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org OutputDebugStringA(msg); \ 167b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 168b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#else 169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // special fix for visual 2003 170b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #define DEBUG_PRINT(exp) ((void)0) 171b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif // defined(_DEBUG) && defined(_WIN32) 172b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 173b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define CHECK_CHANNEL(channel) if (CheckChannel(channel) == -1) return -1; 174b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 175b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 176b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Inline functions 177b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 178b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 179b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgnamespace webrtc 180b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 181b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 182ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.orginline int VoEId(int veId, int chId) 183b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 184b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org if (chId == -1) 185b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org { 186b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const int dummyChannel(99); 187b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return (int) ((veId << 16) + dummyChannel); 188b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 189b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return (int) ((veId << 16) + chId); 190b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 191b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 192ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.orginline int VoEModuleId(int veId, int chId) 193b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 194b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return (int) ((veId << 16) + chId); 195b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 196b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 197b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Convert module ID to internal VoE channel ID 198ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.orginline int VoEChannelId(int moduleId) 199b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 200b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return (int) (moduleId & 0xffff); 201b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 202b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2033b89e10f31160da35b408fd00cb8f89d2b08862dpbos@webrtc.org} // namespace webrtc 204b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 205b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 206b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Platform settings 207b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 208b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 209b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// *** WINDOWS *** 210b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 211b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#if defined(_WIN32) 212b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2135cf83f43c7f8aec0e7bcb95f71a60aec15d74104andrew@webrtc.org #include <windows.h> 2145cf83f43c7f8aec0e7bcb95f71a60aec15d74104andrew@webrtc.org 215b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #pragma comment( lib, "winmm.lib" ) 216b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 217b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #ifndef WEBRTC_EXTERNAL_TRANSPORT 218b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #pragma comment( lib, "ws2_32.lib" ) 219b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #endif 220b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 221b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 222b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Defines 223b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 224b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 225b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Default device for Windows PC 226b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #define WEBRTC_VOICE_ENGINE_DEFAULT_DEVICE \ 227b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org AudioDeviceModule::kDefaultCommunicationDevice 228b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 229b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif // #if (defined(_WIN32) 230b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 231b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// *** LINUX *** 232b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 233b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifdef WEBRTC_LINUX 234b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 235471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <arpa/inet.h> 236471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <netinet/in.h> 237b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <pthread.h> 238b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <sys/socket.h> 239471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <sys/types.h> 240b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef QNX 241b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #include <linux/net.h> 242b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef ANDROID 243b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #include <sys/soundcard.h> 244b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif // ANDROID 245b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif // QNX 246b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <errno.h> 247b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <fcntl.h> 248b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <sched.h> 249471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <stdio.h> 250471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <stdlib.h> 251471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <string.h> 252471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <sys/ioctl.h> 253471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <sys/stat.h> 254b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <sys/time.h> 255471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <time.h> 256471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <unistd.h> 257b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 258b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define DWORD unsigned long int 259b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WINAPI 260b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPVOID void * 261b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define FALSE 0 262b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define TRUE 1 263b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define UINT unsigned int 264b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define UCHAR unsigned char 265b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define TCHAR char 266b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifdef QNX 267b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define _stricmp stricmp 268b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#else 269b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define _stricmp strcasecmp 270b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif 271b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define GetLastError() errno 272b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WSAGetLastError() errno 273b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPCTSTR const char* 274b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPCSTR const char* 275b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define wsprintf sprintf 276b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define TEXT(a) a 277b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define _ftprintf fprintf 278b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define _tcslen strlen 279b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define FAR 280b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define __cdecl 281b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPSOCKADDR struct sockaddr * 282b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 283b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Default device for Linux and Android 284b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_VOICE_ENGINE_DEFAULT_DEVICE 0 285b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 286b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif // #ifdef WEBRTC_LINUX 287b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 288b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// *** WEBRTC_MAC *** 289b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// including iPhone 290b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 291b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifdef WEBRTC_MAC 292b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 293471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <AudioUnit/AudioUnit.h> 294b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <arpa/inet.h> 295b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <errno.h> 296b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <fcntl.h> 297471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <netinet/in.h> 298471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <pthread.h> 299b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <sched.h> 300471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <stdio.h> 301471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <stdlib.h> 302471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <string.h> 303471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <sys/socket.h> 304471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <sys/stat.h> 305b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <sys/time.h> 306471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <sys/types.h> 307b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <time.h> 308471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include <unistd.h> 309b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#if !defined(WEBRTC_IOS) 310b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #include <CoreServices/CoreServices.h> 311b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #include <CoreAudio/CoreAudio.h> 312b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #include <AudioToolbox/DefaultAudioOutput.h> 313b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #include <AudioToolbox/AudioConverter.h> 314b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org #include <CoreAudio/HostTime.h> 315b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif 316b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 317b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define DWORD unsigned long int 318b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WINAPI 319b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPVOID void * 320b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define FALSE 0 321b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define TRUE 1 322b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define SOCKADDR_IN struct sockaddr_in 323b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define UINT unsigned int 324b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define UCHAR unsigned char 325b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define TCHAR char 326b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define _stricmp strcasecmp 327b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define GetLastError() errno 328b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WSAGetLastError() errno 329b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPCTSTR const char* 330b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define wsprintf sprintf 331b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define TEXT(a) a 332b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define _ftprintf fprintf 333b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define _tcslen strlen 334b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define FAR 335b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define __cdecl 336b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPSOCKADDR struct sockaddr * 337b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPCSTR const char* 338b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ULONG unsigned long 339b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 340b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Default device for Mac and iPhone 341b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_VOICE_ENGINE_DEFAULT_DEVICE 0 342b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif // #ifdef WEBRTC_MAC 343b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 344b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif // WEBRTC_VOICE_ENGINE_VOICE_ENGINE_DEFINES_H 345