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