1 /* 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3 * 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 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #ifndef WEBRTC_VIDEO_ENGINE_VIE_DEFINES_H_ 12 #define WEBRTC_VIDEO_ENGINE_VIE_DEFINES_H_ 13 14 #include "webrtc/engine_configurations.h" 15 16 // TODO(mflodman) Remove. 17 #ifdef WEBRTC_ANDROID 18 #include <arpa/inet.h> // NOLINT 19 #include <linux/net.h> // NOLINT 20 #include <netinet/in.h> // NOLINT 21 #include <pthread.h> // NOLINT 22 #include <stdio.h> // NOLINT 23 #include <stdlib.h> // NOLINT 24 #include <string.h> // NOLINT 25 #include <sys/socket.h> // NOLINT 26 #include <sys/time.h> // NOLINT 27 #include <sys/types.h> // NOLINT 28 #include <time.h> // NOLINT 29 #endif 30 31 namespace webrtc { 32 33 // General 34 enum { kViEMinKeyRequestIntervalMs = 300 }; 35 36 // ViEBase 37 enum { kViEMaxNumberOfChannels = 64 }; 38 enum { kViEVersionMaxMessageSize = 1024 }; 39 enum { kViEMaxModuleVersionSize = 960 }; 40 41 // ViECapture 42 enum { kViEMaxCaptureDevices = 256 }; 43 enum { kViECaptureDefaultWidth = 352 }; 44 enum { kViECaptureDefaultHeight = 288 }; 45 enum { kViECaptureDefaultFramerate = 30 }; 46 enum { kViECaptureMaxSnapshotWaitTimeMs = 500 }; 47 48 // ViECodec 49 enum { kViEMaxCodecWidth = 4096 }; 50 enum { kViEMaxCodecHeight = 3072 }; 51 enum { kViEMaxCodecFramerate = 60 }; 52 enum { kViEMinCodecBitrate = 30 }; 53 54 // ViENetwork 55 enum { kViEMaxMtu = 1500 }; 56 enum { kViESocketThreads = 1 }; 57 enum { kViENumReceiveSocketBuffers = 500 }; 58 59 // ViERender 60 // Max valid time set in SetRenderTimeoutImage 61 enum { kViEMaxRenderTimeoutTimeMs = 10000 }; 62 // Min valid time set in SetRenderTimeoutImage 63 enum { kViEMinRenderTimeoutTimeMs = 33 }; 64 enum { kViEDefaultRenderDelayMs = 10 }; 65 66 // ViERTP_RTCP 67 enum { kSendSidePacketHistorySize = 600 }; 68 69 // NACK 70 enum { kMaxPacketAgeToNack = 450 }; // In sequence numbers. 71 enum { kMaxNackListSize = 250 }; 72 73 // Id definitions 74 enum { 75 kViEChannelIdBase = 0x0, 76 kViEChannelIdMax = 0xFF, 77 kViECaptureIdBase = 0x1001, 78 kViECaptureIdMax = 0x10FF, 79 kViEDummyChannelId = 0xFFFF 80 }; 81 82 // Module id 83 // Create a unique id based on the ViE instance id and the 84 // channel id. ViE id > 0 and 0 <= channel id <= 255 85 86 inline int ViEId(const int vieId, const int channelId = -1) { 87 if (channelId == -1) { 88 return static_cast<int>((vieId << 16) + kViEDummyChannelId); 89 } 90 return static_cast<int>((vieId << 16) + channelId); 91 } 92 93 inline int ViEModuleId(const int vieId, const int channelId = -1) { 94 if (channelId == -1) { 95 return static_cast<int>((vieId << 16) + kViEDummyChannelId); 96 } 97 return static_cast<int>((vieId << 16) + channelId); 98 } 99 ChannelId(const int moduleId)100inline int ChannelId(const int moduleId) { 101 return static_cast<int>(moduleId & 0xffff); 102 } 103 104 // Build information macros 105 #if defined(_DEBUG) || defined(DEBUG) 106 #define BUILDMODE "d" 107 #elif defined(NDEBUG) 108 #define BUILDMODE "r" 109 #else 110 #define BUILDMODE "?" 111 #endif 112 113 #define BUILDTIME __TIME__ 114 #define BUILDDATE __DATE__ 115 116 // Example: "Oct 10 2002 12:05:30 r". 117 #define BUILDINFO BUILDDATE " " BUILDTIME " " BUILDMODE 118 119 // Windows specific. 120 #if defined(_WIN32) 121 #define RENDER_MODULE_TYPE kRenderWindows 122 123 // Warning pragmas. 124 // new behavior: elements of array 'XXX' will be default initialized. 125 #pragma warning(disable: 4351) 126 // 'this' : used in base member initializer list. 127 #pragma warning(disable: 4355) 128 // Frame pointer register 'ebp' modified by inline assembly code. 129 #pragma warning(disable: 4731) 130 131 // Include libraries. 132 #pragma comment(lib, "winmm.lib") 133 134 #ifndef WEBRTC_EXTERNAL_TRANSPORT 135 #pragma comment(lib, "ws2_32.lib") 136 #pragma comment(lib, "Iphlpapi.lib") // _GetAdaptersAddresses 137 #endif 138 #endif 139 140 // Mac specific. 141 #ifdef WEBRTC_MAC 142 #define SLEEP(x) usleep(x * 1000) 143 #define RENDER_MODULE_TYPE kRenderWindows 144 #endif 145 146 // Android specific. 147 #ifdef WEBRTC_ANDROID 148 #define FAR 149 #define __cdecl 150 #endif // WEBRTC_ANDROID 151 152 } // namespace webrtc 153 154 #endif // WEBRTC_VIDEO_ENGINE_VIE_DEFINES_H_ 155