engine_configurations.h revision fc320466d12e16c1e80f57b8cff864627f2766f6
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_ENGINE_CONFIGURATIONS_H_
12#define WEBRTC_ENGINE_CONFIGURATIONS_H_
13
14#include "webrtc/typedefs.h"
15
16// ============================================================================
17//                              Voice and Video
18// ============================================================================
19
20// ----------------------------------------------------------------------------
21//  [Voice] Codec settings
22// ----------------------------------------------------------------------------
23
24// iSAC is not included in the Mozilla build, but in all other builds.
25#ifndef WEBRTC_MOZILLA_BUILD
26#ifdef WEBRTC_ARCH_ARM
27#define WEBRTC_CODEC_ISACFX  // Fix-point iSAC implementation.
28#else
29#define WEBRTC_CODEC_ISAC  // Floating-point iSAC implementation (default).
30#endif  // WEBRTC_ARCH_ARM
31#endif  // !WEBRTC_MOZILLA_BUILD
32
33// AVT is included in all builds, along with G.711, NetEQ and CNG
34// (which are mandatory and don't have any defines).
35#define WEBRTC_CODEC_AVT
36
37// PCM16 is useful for testing and incurs only a small binary size cost.
38#define WEBRTC_CODEC_PCM16
39
40// iLBC, G.722, and Redundancy coding are excluded from Chromium and Mozilla
41// builds to reduce binary size.
42#if !defined(WEBRTC_CHROMIUM_BUILD) && !defined(WEBRTC_MOZILLA_BUILD)
43#define WEBRTC_CODEC_ILBC
44#define WEBRTC_CODEC_G722
45#define WEBRTC_CODEC_RED
46#endif  // !WEBRTC_CHROMIUM_BUILD && !WEBRTC_MOZILLA_BUILD
47
48// ----------------------------------------------------------------------------
49//  [Video] Codec settings
50// ----------------------------------------------------------------------------
51
52#define VIDEOCODEC_I420
53#define VIDEOCODEC_VP8
54
55// ============================================================================
56//                                 VoiceEngine
57// ============================================================================
58
59// ----------------------------------------------------------------------------
60//  Settings for VoiceEngine
61// ----------------------------------------------------------------------------
62
63#define WEBRTC_VOICE_ENGINE_AGC                 // Near-end AGC
64#define WEBRTC_VOICE_ENGINE_ECHO                // Near-end AEC
65#define WEBRTC_VOICE_ENGINE_NR                  // Near-end NS
66#define WEBRTC_VOE_EXTERNAL_REC_AND_PLAYOUT
67
68#if !defined(WEBRTC_ANDROID) && !defined(WEBRTC_IOS)
69#define WEBRTC_VOICE_ENGINE_TYPING_DETECTION    // Typing detection
70#endif
71
72// ----------------------------------------------------------------------------
73//  VoiceEngine sub-APIs
74// ----------------------------------------------------------------------------
75
76#define WEBRTC_VOICE_ENGINE_AUDIO_PROCESSING_API
77#define WEBRTC_VOICE_ENGINE_CODEC_API
78#define WEBRTC_VOICE_ENGINE_DTMF_API
79#define WEBRTC_VOICE_ENGINE_EXTERNAL_MEDIA_API
80#define WEBRTC_VOICE_ENGINE_FILE_API
81#define WEBRTC_VOICE_ENGINE_HARDWARE_API
82#define WEBRTC_VOICE_ENGINE_NETEQ_STATS_API
83#define WEBRTC_VOICE_ENGINE_RTP_RTCP_API
84#define WEBRTC_VOICE_ENGINE_VIDEO_SYNC_API
85#define WEBRTC_VOICE_ENGINE_VOLUME_CONTROL_API
86
87#ifndef WEBRTC_CHROMIUM_BUILD
88#define WEBRTC_VOICE_ENGINE_CALL_REPORT_API
89#define WEBRTC_VOICE_ENGINE_ENCRYPTION_API
90#endif
91
92// ============================================================================
93//                                 VideoEngine
94// ============================================================================
95
96// ----------------------------------------------------------------------------
97//  Settings for special VideoEngine configurations
98// ----------------------------------------------------------------------------
99// ----------------------------------------------------------------------------
100//  VideoEngine sub-API:s
101// ----------------------------------------------------------------------------
102
103#define WEBRTC_VIDEO_ENGINE_CAPTURE_API
104#define WEBRTC_VIDEO_ENGINE_CODEC_API
105#define WEBRTC_VIDEO_ENGINE_IMAGE_PROCESS_API
106#define WEBRTC_VIDEO_ENGINE_RENDER_API
107#define WEBRTC_VIDEO_ENGINE_RTP_RTCP_API
108#define WEBRTC_VIDEO_ENGINE_EXTERNAL_CODEC_API
109
110// Now handled by gyp:
111// WEBRTC_VIDEO_ENGINE_FILE_API
112
113// ============================================================================
114//                       Platform specific configurations
115// ============================================================================
116
117// ----------------------------------------------------------------------------
118//  VideoEngine Windows
119// ----------------------------------------------------------------------------
120
121#if defined(_WIN32)
122#define DIRECT3D9_RENDERING  // Requires DirectX 9.
123#endif
124
125// ----------------------------------------------------------------------------
126//  VideoEngine MAC
127// ----------------------------------------------------------------------------
128
129#if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
130// #define CARBON_RENDERING
131#define COCOA_RENDERING
132#endif
133
134// ----------------------------------------------------------------------------
135//  VideoEngine Mobile iPhone
136// ----------------------------------------------------------------------------
137
138#if defined(WEBRTC_IOS)
139#define EAGL_RENDERING
140#endif
141
142// ----------------------------------------------------------------------------
143//  Deprecated
144// ----------------------------------------------------------------------------
145
146// #define WEBRTC_CODEC_G729
147// #define WEBRTC_DTMF_DETECTION
148
149#endif  // WEBRTC_ENGINE_CONFIGURATIONS_H_
150