mirror of https://github.com/asterisk/asterisk
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							424 lines
						
					
					
						
							10 KiB
						
					
					
				
			
		
		
	
	
							424 lines
						
					
					
						
							10 KiB
						
					
					
				| /* $Id$ */
 | |
| /* 
 | |
|  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
 | |
|  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU General Public License as published by
 | |
|  * the Free Software Foundation; either version 2 of the License, or
 | |
|  * (at your option) any later version.
 | |
|  *
 | |
|  * This program is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  * GNU General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU General Public License
 | |
|  * along with this program; if not, write to the Free Software
 | |
|  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 | |
|  */
 | |
| #ifndef __PJMEDIA_CODEC_CONFIG_H__
 | |
| #define __PJMEDIA_CODEC_CONFIG_H__
 | |
| 
 | |
| /**
 | |
|  * @file config.h
 | |
|  * @brief PJMEDIA-CODEC compile time settings
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * @defgroup pjmedia_codec_config PJMEDIA-CODEC Compile Time Settings
 | |
|  * @ingroup PJMEDIA_CODEC
 | |
|  * @brief Various compile time settings such as to enable/disable codecs
 | |
|  * @{
 | |
|  */
 | |
| 
 | |
| #include <pjmedia/types.h>
 | |
| 
 | |
| /*
 | |
|  * Include config_auto.h if autoconf is used (PJ_AUTOCONF is set)
 | |
|  */
 | |
| #if defined(PJ_AUTOCONF)
 | |
| #   include <pjmedia-codec/config_auto.h>
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Unless specified otherwise, L16 codec is included by default.
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_L16_CODEC
 | |
| #   define PJMEDIA_HAS_L16_CODEC    1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Unless specified otherwise, GSM codec is included by default.
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_GSM_CODEC
 | |
| #   define PJMEDIA_HAS_GSM_CODEC    1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Unless specified otherwise, Speex codec is included by default.
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_SPEEX_CODEC
 | |
| #   define PJMEDIA_HAS_SPEEX_CODEC    1
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Speex codec default complexity setting.
 | |
|  */
 | |
| #ifndef PJMEDIA_CODEC_SPEEX_DEFAULT_COMPLEXITY
 | |
| #   define PJMEDIA_CODEC_SPEEX_DEFAULT_COMPLEXITY   2
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Speex codec default quality setting. Please note that pjsua-lib may override
 | |
|  * this setting via its codec quality setting (i.e PJSUA_DEFAULT_CODEC_QUALITY).
 | |
|  */
 | |
| #ifndef PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY
 | |
| #   define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY	    8
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Unless specified otherwise, iLBC codec is included by default.
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_ILBC_CODEC
 | |
| #   define PJMEDIA_HAS_ILBC_CODEC    1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Unless specified otherwise, G.722 codec is included by default.
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_G722_CODEC
 | |
| #   define PJMEDIA_HAS_G722_CODEC    1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Default G.722 codec encoder and decoder level adjustment. The G.722
 | |
|  * specifies that it uses 14 bit PCM for input and output, while PJMEDIA
 | |
|  * normally uses 16 bit PCM, so the conversion is done by applying
 | |
|  * level adjustment. If the value is non-zero, then PCM input samples to
 | |
|  * the encoder will be shifted right by this value, and similarly PCM
 | |
|  * output samples from the decoder will be shifted left by this value.
 | |
|  *
 | |
|  * This can be changed at run-time after initialization by calling
 | |
|  * #pjmedia_codec_g722_set_pcm_shift().
 | |
|  *
 | |
|  * Default: 2.
 | |
|  */
 | |
| #ifndef PJMEDIA_G722_DEFAULT_PCM_SHIFT
 | |
| #   define PJMEDIA_G722_DEFAULT_PCM_SHIFT	    2
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Specifies whether G.722 PCM shifting should be stopped when clipping
 | |
|  * detected in the decoder. Enabling this feature can be useful when
 | |
|  * talking to G.722 implementation that uses 16 bit PCM for G.722 input/
 | |
|  * output (for any reason it seems to work) and the PCM shifting causes
 | |
|  * audio clipping.
 | |
|  *
 | |
|  * See also #PJMEDIA_G722_DEFAULT_PCM_SHIFT.
 | |
|  *
 | |
|  * Default: enabled.
 | |
|  */
 | |
| #ifndef PJMEDIA_G722_STOP_PCM_SHIFT_ON_CLIPPING
 | |
| #   define PJMEDIA_G722_STOP_PCM_SHIFT_ON_CLIPPING  1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Enable the features provided by Intel IPP libraries, for example
 | |
|  * codecs such as G.729, G.723.1, G.726, G.728, G.722.1, and AMR.
 | |
|  *
 | |
|  * By default this is disabled. Please follow the instructions in
 | |
|  * http://trac.pjsip.org/repos/wiki/Intel_IPP_Codecs on how to setup
 | |
|  * Intel IPP with PJMEDIA.
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_INTEL_IPP
 | |
| #   define PJMEDIA_HAS_INTEL_IPP		0
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Visual Studio only: when this option is set, the Intel IPP libraries
 | |
|  * will be automatically linked to application using pragma(comment)
 | |
|  * constructs. This is convenient, however it will only link with
 | |
|  * the stub libraries and the Intel IPP DLL's will be required when
 | |
|  * distributing the application.
 | |
|  *
 | |
|  * If application wants to link with the different types of the Intel IPP
 | |
|  * libraries (for example, the static libraries), it must set this option
 | |
|  * to zero and specify the Intel IPP libraries in the application's input
 | |
|  * library specification manually.
 | |
|  *
 | |
|  * Default 1.
 | |
|  */
 | |
| #ifndef PJMEDIA_AUTO_LINK_IPP_LIBS
 | |
| #   define PJMEDIA_AUTO_LINK_IPP_LIBS		1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Enable Intel IPP AMR codec. This also needs to be enabled when AMR WB
 | |
|  * codec is enabled. This option is only used when PJMEDIA_HAS_INTEL_IPP 
 | |
|  * is enabled.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_INTEL_IPP_CODEC_AMR
 | |
| #   define PJMEDIA_HAS_INTEL_IPP_CODEC_AMR	1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Enable Intel IPP AMR wideband codec. The PJMEDIA_HAS_INTEL_IPP_CODEC_AMR
 | |
|  * option must also be enabled to use this codec. This option is only used 
 | |
|  * when PJMEDIA_HAS_INTEL_IPP is enabled.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_INTEL_IPP_CODEC_AMRWB
 | |
| #   define PJMEDIA_HAS_INTEL_IPP_CODEC_AMRWB	1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Enable Intel IPP G.729 codec. This option is only used when
 | |
|  * PJMEDIA_HAS_INTEL_IPP is enabled.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_INTEL_IPP_CODEC_G729
 | |
| #   define PJMEDIA_HAS_INTEL_IPP_CODEC_G729	1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Enable Intel IPP G.723.1 codec. This option is only used when
 | |
|  * PJMEDIA_HAS_INTEL_IPP is enabled.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_INTEL_IPP_CODEC_G723_1
 | |
| #   define PJMEDIA_HAS_INTEL_IPP_CODEC_G723_1	1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Enable Intel IPP G.726 codec. This option is only used when
 | |
|  * PJMEDIA_HAS_INTEL_IPP is enabled.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_INTEL_IPP_CODEC_G726
 | |
| #   define PJMEDIA_HAS_INTEL_IPP_CODEC_G726	1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Enable Intel IPP G.728 codec. This option is only used when
 | |
|  * PJMEDIA_HAS_INTEL_IPP is enabled.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_INTEL_IPP_CODEC_G728
 | |
| #   define PJMEDIA_HAS_INTEL_IPP_CODEC_G728	1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Enable Intel IPP G.722.1 codec. This option is only used when
 | |
|  * PJMEDIA_HAS_INTEL_IPP is enabled.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_INTEL_IPP_CODEC_G722_1
 | |
| #   define PJMEDIA_HAS_INTEL_IPP_CODEC_G722_1	1
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Enable Passthrough codecs.
 | |
|  *
 | |
|  * Default: 0
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_PASSTHROUGH_CODECS
 | |
| #   define PJMEDIA_HAS_PASSTHROUGH_CODECS	0
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Enable AMR passthrough codec.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_PASSTHROUGH_CODEC_AMR
 | |
| #   define PJMEDIA_HAS_PASSTHROUGH_CODEC_AMR	1
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Enable G.729 passthrough codec.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_PASSTHROUGH_CODEC_G729
 | |
| #   define PJMEDIA_HAS_PASSTHROUGH_CODEC_G729	1
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Enable iLBC passthrough codec.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_PASSTHROUGH_CODEC_ILBC
 | |
| #   define PJMEDIA_HAS_PASSTHROUGH_CODEC_ILBC	1
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Enable PCMU passthrough codec.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU
 | |
| #   define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU	1
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Enable PCMA passthrough codec.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA
 | |
| #   define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA	1
 | |
| #endif
 | |
| 
 | |
| /* If passthrough and PCMU/PCMA are enabled, disable the software
 | |
|  * G.711 codec
 | |
|  */
 | |
| #if PJMEDIA_HAS_PASSTHROUGH_CODECS && \
 | |
|     (PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU || PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA)
 | |
| #   undef PJMEDIA_HAS_G711_CODEC
 | |
| #   define PJMEDIA_HAS_G711_CODEC		0
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * G.722.1 codec is disabled by default.
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_G7221_CODEC
 | |
| #   define PJMEDIA_HAS_G7221_CODEC		0
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Enable OpenCORE AMR-NB codec.
 | |
|  * See https://trac.pjsip.org/repos/ticket/1388 for some info.
 | |
|  *
 | |
|  * Default: 0
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_OPENCORE_AMRNB_CODEC
 | |
| #   define PJMEDIA_HAS_OPENCORE_AMRNB_CODEC	0
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Link with libopencore-amrXX via pragma comment on Visual Studio.
 | |
|  * This option only makes sense if PJMEDIA_HAS_OPENCORE_AMRNB_CODEC
 | |
|  * is enabled.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_AUTO_LINK_OPENCORE_AMR_LIBS
 | |
| #  define PJMEDIA_AUTO_LINK_OPENCORE_AMR_LIBS	1
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Link with libopencore-amrXX.a that has been produced with gcc.
 | |
|  * This option only makes sense if PJMEDIA_HAS_OPENCORE_AMRNB_CODEC
 | |
|  * and PJMEDIA_AUTO_LINK_OPENCORE_AMR_LIBS are enabled.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_OPENCORE_AMR_BUILT_WITH_GCC
 | |
| #   define PJMEDIA_OPENCORE_AMR_BUILT_WITH_GCC	1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Default G.722.1 codec encoder and decoder level adjustment. 
 | |
|  * If the value is non-zero, then PCM input samples to the encoder will 
 | |
|  * be shifted right by this value, and similarly PCM output samples from
 | |
|  * the decoder will be shifted left by this value.
 | |
|  *
 | |
|  * This can be changed at run-time after initialization by calling
 | |
|  * #pjmedia_codec_g7221_set_pcm_shift().
 | |
|  */
 | |
| #ifndef PJMEDIA_G7221_DEFAULT_PCM_SHIFT
 | |
| #   define PJMEDIA_G7221_DEFAULT_PCM_SHIFT	1
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Enabling both G.722.1 codec implementations, internal PJMEDIA and IPP,
 | |
|  * may cause problem in SDP, i.e: payload types duplications. So, let's 
 | |
|  * just trap such case here at compile time.
 | |
|  *
 | |
|  * Application can control which implementation to be used by manipulating
 | |
|  * PJMEDIA_HAS_G7221_CODEC and PJMEDIA_HAS_INTEL_IPP_CODEC_G722_1 in
 | |
|  * config_site.h.
 | |
|  */
 | |
| #if (PJMEDIA_HAS_G7221_CODEC != 0) && (PJMEDIA_HAS_INTEL_IPP != 0) && \
 | |
|     (PJMEDIA_HAS_INTEL_IPP_CODEC_G722_1 != 0)
 | |
| #   error Only one G.722.1 implementation can be enabled at the same time. \
 | |
| 	  Please use PJMEDIA_HAS_G7221_CODEC and \
 | |
| 	  PJMEDIA_HAS_INTEL_IPP_CODEC_G722_1 in your config_site.h \
 | |
| 	  to control which implementation to be used.
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Specify if FFMPEG codecs are available.
 | |
|  *
 | |
|  * Default: PJMEDIA_HAS_LIBAVCODEC
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_FFMPEG_CODEC
 | |
| #   define PJMEDIA_HAS_FFMPEG_CODEC		PJMEDIA_HAS_LIBAVCODEC
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Specify if FFMPEG video codecs are available.
 | |
|  *
 | |
|  * Default: PJMEDIA_HAS_FFMPEG_CODEC
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_FFMPEG_VID_CODEC
 | |
| #   define PJMEDIA_HAS_FFMPEG_VID_CODEC		PJMEDIA_HAS_FFMPEG_CODEC
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Enable FFMPEG H263+/H263-1998 codec.
 | |
|  *
 | |
|  * Default: 1
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_FFMPEG_CODEC_H263P
 | |
| #   define PJMEDIA_HAS_FFMPEG_CODEC_H263P	PJMEDIA_HAS_FFMPEG_VID_CODEC
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * Enable FFMPEG H264 codec (requires libx264).
 | |
|  *
 | |
|  * Default: 0
 | |
|  */
 | |
| #ifndef PJMEDIA_HAS_FFMPEG_CODEC_H264
 | |
| #   define PJMEDIA_HAS_FFMPEG_CODEC_H264	PJMEDIA_HAS_FFMPEG_VID_CODEC
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * @}
 | |
|  */
 | |
| 
 | |
| 
 | |
| 
 | |
| #endif	/* __PJMEDIA_CODEC_CONFIG_H__ */
 |