Add support for ICE/STUN/TURN in res_rtp_asterisk and chan_sip.
[asterisk/asterisk.git] / res / pjproject / pjlib / include / pj / config_site_sample.h
1 /*
2  * This file contains several sample settings especially for Windows
3  * Mobile and Symbian targets. You can include this file in your
4  * <pj/config_site.h> file.
5  *
6  * The Windows Mobile and Symbian settings will be activated
7  * automatically if you include this file.
8  *
9  * In addition, you may specify one of these macros (before including
10  * this file) to activate additional settings:
11  *
12  * #define PJ_CONFIG_NOKIA_APS_DIRECT
13  *   Use this macro to activate the APS-Direct feature. Please see
14  *   http://trac.pjsip.org/repos/wiki/Nokia_APS_VAS_Direct for more 
15  *   info.
16  *
17  * #define PJ_CONFIG_WIN32_WMME_DIRECT
18  *   Configuration to activate "APS-Direct" media mode on Windows or
19  *   Windows Mobile, useful for testing purposes only.
20  */
21
22
23 /*
24  * Typical configuration for WinCE target.
25  */
26 #if defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0
27
28     /*
29      * PJLIB settings.
30      */
31
32     /* Disable floating point support */
33     #define PJ_HAS_FLOATING_POINT               0
34
35     /*
36      * PJMEDIA settings
37      */
38
39     /* Select codecs to disable */
40     #define PJMEDIA_HAS_L16_CODEC               0
41     #define PJMEDIA_HAS_ILBC_CODEC              0
42
43     /* We probably need more buffers on WM, so increase the limit */
44     #define PJMEDIA_SOUND_BUFFER_COUNT          32
45
46     /* Fine tune Speex's default settings for best performance/quality */
47     #define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5
48
49     /* For CPU reason, disable speex AEC and use the echo suppressor. */
50     #define PJMEDIA_HAS_SPEEX_AEC               0
51
52     /* Previously, resampling is disabled due to performance reason and
53      * this condition prevented some 'light' wideband codecs (e.g: G722.1)
54      * to work along with narrowband codecs. Lately, some tests showed
55      * that 16kHz <-> 8kHz resampling using libresample small filter was 
56      * affordable on ARM9 260 MHz, so here we decided to enable resampling.
57      * Note that it is important to make sure that libresample is created
58      * using small filter. For example PJSUA_DEFAULT_CODEC_QUALITY must
59      * be set to 3 or 4 so pjsua-lib will apply small filter resampling.
60      */
61     //#define PJMEDIA_RESAMPLE_IMP              PJMEDIA_RESAMPLE_NONE
62     #define PJMEDIA_RESAMPLE_IMP                PJMEDIA_RESAMPLE_LIBRESAMPLE
63
64     /* Use the lighter WSOLA implementation */
65     #define PJMEDIA_WSOLA_IMP                   PJMEDIA_WSOLA_IMP_WSOLA_LITE
66
67     /*
68      * PJSIP settings.
69      */
70
71     /* Set maximum number of dialog/transaction/calls to minimum to reduce
72      * memory usage 
73      */
74     #define PJSIP_MAX_TSX_COUNT                 31
75     #define PJSIP_MAX_DIALOG_COUNT              31
76     #define PJSUA_MAX_CALLS                     4
77
78     /*
79      * PJSUA settings
80      */
81
82     /* Default codec quality, previously was set to 5, however it is now
83      * set to 4 to make sure pjsua instantiates resampler with small filter.
84      */
85     #define PJSUA_DEFAULT_CODEC_QUALITY         4
86
87     /* Set maximum number of objects to minimum to reduce memory usage */
88     #define PJSUA_MAX_ACC                       4
89     #define PJSUA_MAX_PLAYERS                   4
90     #define PJSUA_MAX_RECORDERS                 4
91     #define PJSUA_MAX_CONF_PORTS                (PJSUA_MAX_CALLS+2*PJSUA_MAX_PLAYERS)
92     #define PJSUA_MAX_BUDDIES                   32
93
94 #endif  /* PJ_WIN32_WINCE */
95
96
97 /*
98  * Typical configuration for Symbian OS target
99  */
100 #if defined(PJ_SYMBIAN) && PJ_SYMBIAN!=0
101
102     /*
103      * PJLIB settings.
104      */
105
106     /* Disable floating point support */
107     #define PJ_HAS_FLOATING_POINT               0
108
109     /* Misc PJLIB setting */
110     #define PJ_MAXPATH                          80
111
112     /* This is important for Symbian. Symbian lacks vsnprintf(), so
113      * if the log buffer is not long enough it's possible that
114      * large incoming packet will corrupt memory when the log tries
115      * to log the packet.
116      */
117     #define PJ_LOG_MAX_SIZE                     (PJSIP_MAX_PKT_LEN+500)
118
119     /* Since we don't have threads, log buffer can use static buffer
120      * rather than stack
121      */
122     #define PJ_LOG_USE_STACK_BUFFER             0
123
124     /* Disable check stack since it increases footprint */
125     #define PJ_OS_HAS_CHECK_STACK               0
126
127
128     /*
129      * PJMEDIA settings
130      */
131
132     /* Disable non-Symbian audio devices */
133     #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO     0
134     #define PJMEDIA_AUDIO_DEV_HAS_WMME          0
135
136     /* Select codecs to disable */
137     #define PJMEDIA_HAS_L16_CODEC               0
138     #define PJMEDIA_HAS_ILBC_CODEC              0
139     #define PJMEDIA_HAS_G722_CODEC              0
140
141     /* Fine tune Speex's default settings for best performance/quality */
142     #define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5
143
144     /* For CPU reason, disable speex AEC and use the echo suppressor. */
145     #define PJMEDIA_HAS_SPEEX_AEC               0
146
147     /* Previously, resampling is disabled due to performance reason and
148      * this condition prevented some 'light' wideband codecs (e.g: G722.1)
149      * to work along with narrowband codecs. Lately, some tests showed
150      * that 16kHz <-> 8kHz resampling using libresample small filter was 
151      * affordable on ARM9 222 MHz, so here we decided to enable resampling.
152      * Note that it is important to make sure that libresample is created
153      * using small filter. For example PJSUA_DEFAULT_CODEC_QUALITY must
154      * be set to 3 or 4 so pjsua-lib will apply small filter resampling.
155      */
156     //#define PJMEDIA_RESAMPLE_IMP              PJMEDIA_RESAMPLE_NONE
157     #define PJMEDIA_RESAMPLE_IMP                PJMEDIA_RESAMPLE_LIBRESAMPLE
158
159     /* Use the lighter WSOLA implementation */
160     #define PJMEDIA_WSOLA_IMP                   PJMEDIA_WSOLA_IMP_WSOLA_LITE
161
162     /* We probably need more buffers especially if MDA audio backend 
163      * is used, so increase the limit 
164      */
165     #define PJMEDIA_SOUND_BUFFER_COUNT          32
166
167     /*
168      * PJSIP settings.
169      */
170
171     /* Disable safe module access, since we don't use multithreading */
172     #define PJSIP_SAFE_MODULE                   0
173
174     /* Use large enough packet size  */
175     #define PJSIP_MAX_PKT_LEN                   2000
176
177     /* Symbian has problem with too many large blocks */
178     #define PJSIP_POOL_LEN_ENDPT                1000
179     #define PJSIP_POOL_INC_ENDPT                1000
180     #define PJSIP_POOL_RDATA_LEN                2000
181     #define PJSIP_POOL_RDATA_INC                2000
182     #define PJSIP_POOL_LEN_TDATA                2000
183     #define PJSIP_POOL_INC_TDATA                512
184     #define PJSIP_POOL_LEN_UA                   2000
185     #define PJSIP_POOL_INC_UA                   1000
186     #define PJSIP_POOL_TSX_LAYER_LEN            256
187     #define PJSIP_POOL_TSX_LAYER_INC            256
188     #define PJSIP_POOL_TSX_LEN                  512
189     #define PJSIP_POOL_TSX_INC                  128
190
191     /*
192      * PJSUA settings.
193      */
194
195     /* Default codec quality, previously was set to 5, however it is now
196      * set to 4 to make sure pjsua instantiates resampler with small filter.
197      */
198     #define PJSUA_DEFAULT_CODEC_QUALITY         4
199
200     /* Set maximum number of dialog/transaction/calls to minimum */
201     #define PJSIP_MAX_TSX_COUNT                 31
202     #define PJSIP_MAX_DIALOG_COUNT              31
203     #define PJSUA_MAX_CALLS                     4
204
205     /* Other pjsua settings */
206     #define PJSUA_MAX_ACC                       4
207     #define PJSUA_MAX_PLAYERS                   4
208     #define PJSUA_MAX_RECORDERS                 4
209     #define PJSUA_MAX_CONF_PORTS                (PJSUA_MAX_CALLS+2*PJSUA_MAX_PLAYERS)
210     #define PJSUA_MAX_BUDDIES                   32
211 #endif
212
213
214 /*
215  * Additional configuration to activate APS-Direct feature for
216  * Nokia S60 target
217  *
218  * Please see http://trac.pjsip.org/repos/wiki/Nokia_APS_VAS_Direct
219  */
220 #ifdef PJ_CONFIG_NOKIA_APS_DIRECT
221
222     /* MUST use switchboard rather than the conference bridge */
223     #define PJMEDIA_CONF_USE_SWITCH_BOARD       1
224
225     /* Enable APS sound device backend and disable MDA & VAS */
226     #define PJMEDIA_AUDIO_DEV_HAS_SYMB_MDA      0
227     #define PJMEDIA_AUDIO_DEV_HAS_SYMB_APS      1
228     #define PJMEDIA_AUDIO_DEV_HAS_SYMB_VAS      0
229
230     /* Enable passthrough codec framework */
231     #define PJMEDIA_HAS_PASSTHROUGH_CODECS      1
232
233     /* And selectively enable which codecs are supported by the handset */
234     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU  1
235     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA  1
236     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_AMR   1
237     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_G729  1
238     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_ILBC  1
239
240 #endif
241
242
243 /*
244  * Additional configuration to activate VAS-Direct feature for
245  * Nokia S60 target
246  *
247  * Please see http://trac.pjsip.org/repos/wiki/Nokia_APS_VAS_Direct
248  */
249 #ifdef PJ_CONFIG_NOKIA_VAS_DIRECT
250
251     /* MUST use switchboard rather than the conference bridge */
252     #define PJMEDIA_CONF_USE_SWITCH_BOARD       1
253
254     /* Enable VAS sound device backend and disable MDA & APS */
255     #define PJMEDIA_AUDIO_DEV_HAS_SYMB_MDA      0
256     #define PJMEDIA_AUDIO_DEV_HAS_SYMB_APS      0
257     #define PJMEDIA_AUDIO_DEV_HAS_SYMB_VAS      1
258
259     /* Enable passthrough codec framework */
260     #define PJMEDIA_HAS_PASSTHROUGH_CODECS      1
261
262     /* And selectively enable which codecs are supported by the handset */
263     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU  1
264     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA  1
265     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_AMR   1
266     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_G729  1
267     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_ILBC  1
268
269 #endif
270
271
272 /*
273  * Configuration to activate "APS-Direct" media mode on Windows,
274  * useful for testing purposes only.
275  */
276 #ifdef PJ_CONFIG_WIN32_WMME_DIRECT
277
278     /* MUST use switchboard rather than the conference bridge */
279     #define PJMEDIA_CONF_USE_SWITCH_BOARD       1
280
281     /* Only WMME supports the "direct" feature */
282     #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO     0
283     #define PJMEDIA_AUDIO_DEV_HAS_WMME          1
284
285     /* Enable passthrough codec framework */
286     #define PJMEDIA_HAS_PASSTHROUGH_CODECS      1
287
288     /* Only PCMA and PCMU are supported by WMME-direct */
289     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU  1
290     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA  1
291     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_AMR   0
292     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_G729  0
293     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_ILBC  0
294
295 #endif
296
297 /*
298  * iPhone sample settings.
299  */
300 #if PJ_CONFIG_IPHONE
301     /*
302      * PJLIB settings.
303      */
304
305     /* Disable floating point support */
306     #define PJ_HAS_FLOATING_POINT               0
307
308     /*
309      * PJMEDIA settings
310      */
311
312     /* We have our own native CoreAudio backend */
313     #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO     0
314     #define PJMEDIA_AUDIO_DEV_HAS_WMME          0
315     #define PJMEDIA_AUDIO_DEV_HAS_COREAUDIO     1
316
317     /* The CoreAudio backend has built-in echo canceller! */
318     #define PJMEDIA_HAS_SPEEX_AEC    0
319
320     /* Disable some codecs */
321     #define PJMEDIA_HAS_L16_CODEC               0
322     #define PJMEDIA_HAS_G722_CODEC              0
323
324     /* Use the built-in CoreAudio's iLBC codec (yay!) */
325     #define PJMEDIA_HAS_ILBC_CODEC              1
326     #define PJMEDIA_ILBC_CODEC_USE_COREAUDIO    1
327
328     /* Fine tune Speex's default settings for best performance/quality */
329     #define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5
330
331     /*
332      * PJSIP settings.
333      */
334
335     /* Increase allowable packet size, just in case */
336     //#define PJSIP_MAX_PKT_LEN                 2000
337
338     /*
339      * PJSUA settings.
340      */
341
342     /* Default codec quality, previously was set to 5, however it is now
343      * set to 4 to make sure pjsua instantiates resampler with small filter.
344      */
345     #define PJSUA_DEFAULT_CODEC_QUALITY         4
346
347     /* Set maximum number of dialog/transaction/calls to minimum */
348     #define PJSIP_MAX_TSX_COUNT                 31
349     #define PJSIP_MAX_DIALOG_COUNT              31
350     #define PJSUA_MAX_CALLS                     4
351
352     /* Other pjsua settings */
353     #define PJSUA_MAX_ACC                       4
354     #define PJSUA_MAX_PLAYERS                   4
355     #define PJSUA_MAX_RECORDERS                 4
356     #define PJSUA_MAX_CONF_PORTS                (PJSUA_MAX_CALLS+2*PJSUA_MAX_PLAYERS)
357     #define PJSUA_MAX_BUDDIES                   32
358
359 #endif
360
361 /*
362  * Minimum size
363  */
364 #ifdef PJ_CONFIG_MINIMAL_SIZE
365
366 #   undef PJ_OS_HAS_CHECK_STACK
367 #   define PJ_OS_HAS_CHECK_STACK        0
368 #   define PJ_LOG_MAX_LEVEL             0
369 #   define PJ_ENABLE_EXTRA_CHECK        0
370 #   define PJ_HAS_ERROR_STRING          0
371 #   undef PJ_IOQUEUE_MAX_HANDLES
372 /* Putting max handles to lower than 32 will make pj_fd_set_t size smaller
373  * than native fdset_t and will trigger assertion on sock_select.c.
374  */
375 #   define PJ_IOQUEUE_MAX_HANDLES       32
376 #   define PJ_CRC32_HAS_TABLES          0
377 #   define PJSIP_MAX_TSX_COUNT          15
378 #   define PJSIP_MAX_DIALOG_COUNT       15
379 #   define PJSIP_UDP_SO_SNDBUF_SIZE     4000
380 #   define PJSIP_UDP_SO_RCVBUF_SIZE     4000
381 #   define PJMEDIA_HAS_ALAW_ULAW_TABLE  0
382
383 #elif defined(PJ_CONFIG_MAXIMUM_SPEED)
384 #   define PJ_SCANNER_USE_BITWISE       0
385 #   undef PJ_OS_HAS_CHECK_STACK
386 #   define PJ_OS_HAS_CHECK_STACK        0
387 #   define PJ_LOG_MAX_LEVEL             3
388 #   define PJ_ENABLE_EXTRA_CHECK        0
389 #   define PJ_IOQUEUE_MAX_HANDLES       5000
390 #   define PJSIP_MAX_TSX_COUNT          ((640*1024)-1)
391 #   define PJSIP_MAX_DIALOG_COUNT       ((640*1024)-1)
392 #   define PJSIP_UDP_SO_SNDBUF_SIZE     (24*1024*1024)
393 #   define PJSIP_UDP_SO_RCVBUF_SIZE     (24*1024*1024)
394 #   define PJ_DEBUG                     0
395 #   define PJSIP_SAFE_MODULE            0
396 #   define PJ_HAS_STRICMP_ALNUM         0
397 #   define PJ_HASH_USE_OWN_TOLOWER      1
398 #   define PJSIP_UNESCAPE_IN_PLACE      1
399
400 #   ifdef PJ_WIN32
401 #     define PJSIP_MAX_NET_EVENTS       10
402 #   endif
403
404 #   define PJSUA_MAX_CALLS              512
405
406 #endif
407