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     /* Both armv6 and armv7 has FP hardware support.
306      * See https://trac.pjsip.org/repos/ticket/1589 for more info
307      */
308     #define PJ_HAS_FLOATING_POINT		1
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  * Android sample settings.
365  */
366 #if PJ_CONFIG_ANDROID
367 
368     /*
369      * PJLIB settings.
370      */
371 
372     /* Disable floating point support */
373     #undef PJ_HAS_FLOATING_POINT
374     #define PJ_HAS_FLOATING_POINT		0
375 
376     /*
377      * PJMEDIA settings
378      */
379 
380     /* We have our own OpenSL ES backend */
381     #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO	0
382     #define PJMEDIA_AUDIO_DEV_HAS_WMME		0
383     #define PJMEDIA_AUDIO_DEV_HAS_OPENSL        0
384     #define PJMEDIA_AUDIO_DEV_HAS_ANDROID_JNI	1
385 
386     /* Disable some codecs */
387     #define PJMEDIA_HAS_L16_CODEC		0
388     //#define PJMEDIA_HAS_G722_CODEC		0
389 
390     /* Fine tune Speex's default settings for best performance/quality */
391     #define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY	5
392 
393     /*
394      * PJSIP settings.
395      */
396 
397     /* Increase allowable packet size, just in case */
398     //#define PJSIP_MAX_PKT_LEN			2000
399 
400     /*
401      * PJSUA settings.
402      */
403 
404     /* Default codec quality, previously was set to 5, however it is now
405      * set to 4 to make sure pjsua instantiates resampler with small filter.
406      */
407     #define PJSUA_DEFAULT_CODEC_QUALITY		4
408 
409     /* Set maximum number of dialog/transaction/calls to minimum */
410     #define PJSIP_MAX_TSX_COUNT 		31
411     #define PJSIP_MAX_DIALOG_COUNT 		31
412     #define PJSUA_MAX_CALLS			4
413 
414     /* Separate worker thread for timer and ioqueue */
415     // #define PJSUA_SEPARATE_WORKER_FOR_TIMER	1
416 
417     /* Other pjsua settings */
418     #define PJSUA_MAX_ACC			4
419     #define PJSUA_MAX_PLAYERS			4
420     #define PJSUA_MAX_RECORDERS			4
421     #define PJSUA_MAX_CONF_PORTS		(PJSUA_MAX_CALLS+2*PJSUA_MAX_PLAYERS)
422     #define PJSUA_MAX_BUDDIES			32
423 #endif
424 
425 
426 /*
427  * BB10
428  */
429 #if defined(PJ_CONFIG_BB10) && PJ_CONFIG_BB10
430     /* Quality 3 - 4 to use resampling small filter */
431     #define PJSUA_DEFAULT_CODEC_QUALITY			4
432     #define PJMEDIA_HAS_LEGACY_SOUND_API		0
433     #undef PJMEDIA_HAS_SPEEX_AEC
434     #define PJMEDIA_HAS_SPEEX_AEC			0
435     #undef PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO
436     #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO		0
437     #undef PJMEDIA_AUDIO_DEV_HAS_ALSA
438     #define PJMEDIA_AUDIO_DEV_HAS_ALSA			0
439 #endif
440 
441 
442 /*
443  * Minimum size
444  */
445 #ifdef PJ_CONFIG_MINIMAL_SIZE
446 
447 #   undef PJ_OS_HAS_CHECK_STACK
448 #   define PJ_OS_HAS_CHECK_STACK	0
449 #   define PJ_LOG_MAX_LEVEL		0
450 #   define PJ_ENABLE_EXTRA_CHECK	0
451 #   define PJ_HAS_ERROR_STRING		0
452 #   undef PJ_IOQUEUE_MAX_HANDLES
453 /* Putting max handles to lower than 32 will make pj_fd_set_t size smaller
454  * than native fdset_t and will trigger assertion on sock_select.c.
455  */
456 #   define PJ_IOQUEUE_MAX_HANDLES	32
457 #   define PJ_CRC32_HAS_TABLES		0
458 #   define PJSIP_MAX_TSX_COUNT		15
459 #   define PJSIP_MAX_DIALOG_COUNT	15
460 #   define PJSIP_UDP_SO_SNDBUF_SIZE	4000
461 #   define PJSIP_UDP_SO_RCVBUF_SIZE	4000
462 #   define PJMEDIA_HAS_ALAW_ULAW_TABLE	0
463 
464 #elif defined(PJ_CONFIG_MAXIMUM_SPEED)
465 #   define PJ_SCANNER_USE_BITWISE	0
466 #   undef PJ_OS_HAS_CHECK_STACK
467 #   define PJ_OS_HAS_CHECK_STACK	0
468 #   define PJ_LOG_MAX_LEVEL		3
469 #   define PJ_ENABLE_EXTRA_CHECK	0
470 #   define PJ_IOQUEUE_MAX_HANDLES	5000
471 #   define PJSIP_MAX_TSX_COUNT		((640*1024)-1)
472 #   define PJSIP_MAX_DIALOG_COUNT	((640*1024)-1)
473 #   define PJSIP_UDP_SO_SNDBUF_SIZE	(24*1024*1024)
474 #   define PJSIP_UDP_SO_RCVBUF_SIZE	(24*1024*1024)
475 #   define PJ_DEBUG			0
476 #   define PJSIP_SAFE_MODULE		0
477 #   define PJ_HAS_STRICMP_ALNUM		0
478 #   define PJSIP_UNESCAPE_IN_PLACE	1
479 
480 #   if defined(PJ_WIN32) || defined(PJ_WIN64)
481 #     define PJSIP_MAX_NET_EVENTS	10
482 #   endif
483 
484 #   define PJSUA_MAX_CALLS		512
485 
486 #endif
487 
488