diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-03-16 14:24:26 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-03-16 14:24:26 +0000 |
commit | c0598144d962fbc8c20482bdc5e00e99ec62f8a9 (patch) | |
tree | c7891e82c998f549f375c6a72da822ff5a4fe9db | |
parent | 91329274db688fbb43ce0dc80f9174cc82489a48 (diff) |
Added misc flags and modify Makefiles to allow exclusion of PortAudio and specific codec during compilation
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@320 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjlib/include/pj/log.h | 15 | ||||
-rw-r--r-- | pjmedia/build/Makefile | 63 | ||||
-rw-r--r-- | pjmedia/build/os-win32.mak | 11 | ||||
-rw-r--r-- | pjmedia/build/pjmedia.dsp | 3 | ||||
-rw-r--r-- | pjmedia/build/pjmedia_codec.dsp | 4 | ||||
-rw-r--r-- | pjmedia/include/pjmedia-codec.h | 34 | ||||
-rw-r--r-- | pjmedia/include/pjmedia-codec/config.h | 16 | ||||
-rw-r--r-- | pjmedia/include/pjmedia-codec/types.h | 2 | ||||
-rw-r--r-- | pjmedia/include/pjmedia/config.h | 33 | ||||
-rw-r--r-- | pjmedia/include/pjmedia/sound.h | 2 | ||||
-rw-r--r-- | pjmedia/include/pjmedia/types.h | 3 | ||||
-rw-r--r-- | pjmedia/src/pjmedia-codec/gsm.c | 10 | ||||
-rw-r--r-- | pjmedia/src/pjmedia-codec/pjmedia-codec-lib.c | 86 | ||||
-rw-r--r-- | pjmedia/src/pjmedia-codec/speex_codec.c | 9 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/g711.c | 6 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/nullsound.c | 49 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/pasound.c | 4 | ||||
-rw-r--r-- | pjsip-apps/build/Makefile | 22 | ||||
-rw-r--r-- | pjsip-apps/build/pjsip_apps.dsw | 9 | ||||
-rw-r--r-- | pjsip-apps/build/pjsip_perf.dsp | 2 | ||||
-rw-r--r-- | pjsip-apps/build/pjsua.dsp | 2 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_core.c | 26 |
22 files changed, 231 insertions, 180 deletions
diff --git a/pjlib/include/pj/log.h b/pjlib/include/pj/log.h index 2c706f9c..eeb90006 100644 --- a/pjlib/include/pj/log.h +++ b/pjlib/include/pj/log.h @@ -228,6 +228,21 @@ PJ_DECL(unsigned) pj_log_get_decor(void); */ # define pj_log_set_decor(decor) +/** + * Get current maximum log verbositylevel. + * + * @return Current log maximum level. + */ +# define pj_log_get_level() 0 + +/** + * Get current log decoration flag. + * + * @return Log decoration flag. + */ +# define pj_log_get_decor() 0 + + #endif /* #if PJ_LOG_MAX_LEVEL >= 1 */ /** diff --git a/pjmedia/build/Makefile b/pjmedia/build/Makefile index 06308c11..5bf38b1a 100644 --- a/pjmedia/build/Makefile +++ b/pjmedia/build/Makefile @@ -1,3 +1,19 @@ + +# Before we include local os-mak, set default sound framework to use +# PortAudio. +export SOUND_OBJS = $(PORTAUDIO_OBJS) + +# Also set default codec files to be included +# If these codecs are to be excluded, then the appropriate PJMEDIA_HAS_XXX_CODEC macros +# MUST be set too in pj/config_site.h, to inform applications about the codec +# availability. +# +# E.g., to exclude Speex, we need to exclude SPEEX_OBJS from CODEC_OBJS, AND specify +# "#define PJMEDIA_HAS_SPEEX_CODEC 0" in pj/config_site.h. +# +export CODEC_OBJS = $(GSM_OBJS) $(SPEEX_OBJS) + + include ../../build/common.mak RULES_MAK := ../../build/rules.mak @@ -9,6 +25,26 @@ export PJMEDIA_LIB:=../lib/libpjmedia-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME)$(LIB export PJMEDIA_CODEC_LIB:=../lib/libpjmedia-codec-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME)$(LIBEXT) ############################################################################### +# Sound frameworks +# These are activated by setting SOUND_OBJS var, e.g.: +# export SOUND_OBJS = $(PORTAUDIO_OBJS), or +# export SOUND_OBJS = $(NULLSOUND_OBJS) +# +PA_DIR:=portaudio +PORTAUDIO_OBJS := pasound.o \ + $(PA_DIR)/pa_allocation.o \ + $(PA_DIR)/pa_converters.o \ + $(PA_DIR)/pa_cpuload.o \ + $(PA_DIR)/pa_dither.o \ + $(PA_DIR)/pa_front.o \ + $(PA_DIR)/pa_process.o \ + $(PA_DIR)/pa_skeleton.o \ + $(PA_DIR)/pa_stream.o \ + $(PA_DIR)/pa_trace.o + +NULLSOUND_OBJS := nullsound.o + +############################################################################### # Gather all flags. # export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ @@ -26,22 +62,12 @@ export _LDFLAGS := $(subst /,$(HOST_PSEP),$(PJMEDIA_LIB)) \ ############################################################################### # Defines for building PJMEDIA library # -PA_DIR:=portaudio export PJMEDIA_SRCDIR = ../src/pjmedia export PJMEDIA_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ codec.o conference.o endpoint.o errno.o file_port.o \ - g711.o jbuf.o pasound.o port.o resample.o rtcp.o \ + g711.o jbuf.o null_port.o pasound.o port.o resample.o rtcp.o \ rtp.o sdp.o sdp_cmp.o sdp_neg.o session.o silencedet.o \ - stream.o \ - $(PA_DIR)/pa_allocation.o \ - $(PA_DIR)/pa_converters.o \ - $(PA_DIR)/pa_cpuload.o \ - $(PA_DIR)/pa_dither.o \ - $(PA_DIR)/pa_front.o \ - $(PA_DIR)/pa_process.o \ - $(PA_DIR)/pa_skeleton.o \ - $(PA_DIR)/pa_stream.o \ - $(PA_DIR)/pa_trace.o + stream.o $(SOUND_OBJS) export PJMEDIA_CFLAGS += $(_CFLAGS) @@ -49,7 +75,8 @@ export PJMEDIA_CFLAGS += $(_CFLAGS) ############################################################################### # Defines for building PJMEDIA-Codec library # -GSM_OBJS := gsm/add.o gsm/code.o gsm/decode.o \ +GSM_OBJS := gsm.o \ + gsm/add.o gsm/code.o gsm/decode.o \ gsm/gsm_create.o gsm/gsm_decode.o gsm/gsm_destroy.o \ gsm/gsm_encode.o gsm/gsm_explode.o gsm/gsm_implode.o \ gsm/gsm_option.o gsm/long_term.o \ @@ -57,7 +84,8 @@ GSM_OBJS := gsm/add.o gsm/code.o gsm/decode.o \ gsm/table.o GSM_CFLAGS := -SPEEX_OBJS := speex/bits.o speex/cb_search.o speex/exc_10_16_table.o \ +SPEEX_OBJS := speex_codec.o \ + speex/bits.o speex/cb_search.o speex/exc_10_16_table.o \ speex/exc_10_32_table.o speex/exc_20_32_table.o speex/exc_5_256_table.o \ speex/exc_5_64_table.o speex/exc_8_128_table.o speex/filters.o \ speex/gain_table.o speex/gain_table_lbr.o speex/hexc_10_32_table.o \ @@ -71,8 +99,7 @@ SPEEX_CFLAGS := -DHAVE_CONFIG=1 -I../src/pjmedia-codec export PJMEDIA_CODEC_SRCDIR = ../src/pjmedia-codec export PJMEDIA_CODEC_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ - gsm.o speex_codec.o pjmedia-codec-lib.o \ - $(GSM_OBJS) $(SPEEX_OBJS) + $(CODEC_OBJS) export PJMEDIA_CODEC_CFLAGS += $(_CFLAGS) $(GSM_CFLAGS) $(SPEEX_CFLAGS) @@ -134,7 +161,9 @@ clean depend realclean: $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $@ $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $@ @if test "$@" == "depend"; then \ - echo '$(PJMEDIA_TEST_EXE): $(PJMEDIA_LIB)' >> .pjmedia-test-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME).depend; \ + echo '$(PJMEDIA_LIB): .pjmedia-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME).depend' >> .pjmedia-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME).depend; \ + echo '$(PJMEDIA_CODEC_LIB): .pjmedia-codec-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME).depend' >> .pjmedia-codec-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME).depend; \ + echo '$(PJMEDIA_TEST_EXE): $(PJMEDIA_LIB) $(PJMEDIA_CODEC_LIB)' >> .pjmedia-test-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME).depend; \ fi diff --git a/pjmedia/build/os-win32.mak b/pjmedia/build/os-win32.mak index 1832cd66..ffd043b0 100644 --- a/pjmedia/build/os-win32.mak +++ b/pjmedia/build/os-win32.mak @@ -11,3 +11,14 @@ export PJMEDIA_OBJS += $(PA_DIR)/pa_win_hostapis.o $(PA_DIR)/pa_win_util.o \ $(PA_DIR)/pa_win_wmme.o export OS_CFLAGS += -DPA_NO_ASIO -DPA_NO_DS + +# Example: +# to activate Null sound, uncomment this line below. +#export SOUND_OBJS = $(NULLSOUND_OBJS) + +# Example: +# to include only GSM and exclude Speex codec, uncomment the "export" line below. +# Note that you'll need to put "#define PJMEDIA_HAS_SPEEX_CODEC 0" in +# <pj/config_site.h> +#export CODEC_OBJS = $(GSM_OBJS) + diff --git a/pjmedia/build/pjmedia.dsp b/pjmedia/build/pjmedia.dsp index dfd675ce..a4bbbbb5 100644 --- a/pjmedia/build/pjmedia.dsp +++ b/pjmedia/build/pjmedia.dsp @@ -41,7 +41,7 @@ RSC=rc.exe # PROP Intermediate_Dir ".\output\pjmedia-i386-win32-vc6-release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MD /W4 /GX /O2 /I "../include" /I "../../pjlib/include" /I "../../pjlib-util/include" /I "../src/pjmedia/portaudio" /D "NDEBUG" /D "PA_NO_ASIO" /D "WIN32" /D "_MBCS" /D "_LIB" /D PJ_WIN32=1 /D PJ_M_I386=1 /FD /c
+# ADD CPP /nologo /MD /W4 /GX /O2 /I "../include" /I "../../pjlib/include" /I "../../pjlib-util/include" /I "../src/pjmedia/portaudio" /D "NDEBUG" /D "PA_NO_ASIO" /D "WIN32" /D "_MBCS" /D "_LIB" /D PJ_WIN32=1 /D PJ_M_I386=1 /FR /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
@@ -125,7 +125,6 @@ SOURCE=..\src\pjmedia\null_port.c # Begin Source File
SOURCE=..\src\pjmedia\nullsound.c
-# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
diff --git a/pjmedia/build/pjmedia_codec.dsp b/pjmedia/build/pjmedia_codec.dsp index df1737d8..7c2e1ed0 100644 --- a/pjmedia/build/pjmedia_codec.dsp +++ b/pjmedia/build/pjmedia_codec.dsp @@ -91,10 +91,6 @@ SOURCE="..\src\pjmedia-codec\gsm.c" # End Source File # Begin Source File -SOURCE="..\src\pjmedia-codec\pjmedia-codec-lib.c" -# End Source File -# Begin Source File - SOURCE="..\src\pjmedia-codec\speex_codec.c" # End Source File # End Group diff --git a/pjmedia/include/pjmedia-codec.h b/pjmedia/include/pjmedia-codec.h index c37fc5ca..8b975839 100644 --- a/pjmedia/include/pjmedia-codec.h +++ b/pjmedia/include/pjmedia-codec.h @@ -16,40 +16,12 @@ * 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_CODEC1_H__ -#define __PJMEDIA_CODEC1_H__ +#ifndef __PJMEDIA_CODEC_PJMEDIA_CODEC_H__ +#define __PJMEDIA_CODEC_PJMEDIA_CODEC_H__ #include <pjmedia-codec/gsm.h> #include <pjmedia-codec/speex.h> -PJ_BEGIN_DECL - - -/** - * Initialize pjmedia-codec library, and register all codec factories - * in this library. If application wants to controll the order of - * the codec, it MUST NOT call this function, but instead register - * each codec individually. - * - * @param endpt The pjmedia endpoint. - * - * @return PJ_SUCCESS on success. - */ -PJ_DECL(pj_status_t) pjmedia_codec_init(pjmedia_endpt *endpt); - - -/** - * Deinitialize pjmedia-codec library, and unregister all codec factories - * in this library. - * - * @return PJ_SUCCESS on success. - */ -PJ_DECL(pj_status_t) pjmedia_codec_deinit(void); - - -PJ_END_DECL - - -#endif /* __PJMEDIA_CODEC_H__ */ +#endif /* __PJMEDIA_CODEC_PJMEDIA_CODEC_H__ */ diff --git a/pjmedia/include/pjmedia-codec/config.h b/pjmedia/include/pjmedia-codec/config.h index 9b93c5a1..a9cdbfaf 100644 --- a/pjmedia/include/pjmedia-codec/config.h +++ b/pjmedia/include/pjmedia-codec/config.h @@ -22,19 +22,19 @@ #include <pjmedia/types.h> -/* - * Include GSM codec? +/** + * Unless specified otherwise, GSM codec is included by default. */ -#ifndef PJMEDIA_CODEC_HAS_GSM -# define PJMEDIA_CODEC_HAS_GSM 1 +#ifndef PJMEDIA_HAS_GSM_CODEC +# define PJMEDIA_HAS_GSM_CODEC 1 #endif -/* - * Include Speex codec? +/** + * Unless specified otherwise, Speex codec is included by default. */ -#ifndef PJMEDIA_CODEC_HAS_SPEEX -# define PJMEDIA_CODEC_HAS_SPEEX 1 +#ifndef PJMEDIA_HAS_SPEEX_CODEC +# define PJMEDIA_HAS_SPEEX_CODEC 1 #endif diff --git a/pjmedia/include/pjmedia-codec/types.h b/pjmedia/include/pjmedia-codec/types.h index ce5c258c..af847543 100644 --- a/pjmedia/include/pjmedia-codec/types.h +++ b/pjmedia/include/pjmedia-codec/types.h @@ -19,7 +19,7 @@ #ifndef __PJMEDIA_CODEC_TYPES_H__ #define __PJMEDIA_CODEC_TYPES_H__ -#include <pjmedia/types.h> +#include <pjmedia-codec/config.h> #endif /* __PJMEDIA_CODEC_TYPES_H__ */ diff --git a/pjmedia/include/pjmedia/config.h b/pjmedia/include/pjmedia/config.h index 236d011c..66f42d5e 100644 --- a/pjmedia/include/pjmedia/config.h +++ b/pjmedia/include/pjmedia/config.h @@ -16,8 +16,35 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef __PJMED_CONFIG_H__ -#define __PJMED_CONFIG_H__ +#ifndef __PJMEDIA_CONFIG_H__ +#define __PJMEDIA_CONFIG_H__ +#include <pj/config.h> -#endif /* __PJMED_CONFIG_H__ */ +/** + * Unless specified otherwise, PortAudio is enabled by default. + */ +#ifndef PJMEDIA_HAS_PORTAUDIO_SOUND +# define PJMEDIA_HAS_PORTAUDIO_SOUND 1 +#endif + + +/** + * Unless specified otherwise, Null sound is disabled. + * This option is mutually exclusive with PortAudio sound, or otherwise + * duplicate symbols error will occur. + */ +#ifndef PJMEDIA_HAS_NULL_SOUND +# define PJMEDIA_HAS_NULL_SOUND 0 +#endif + + +/** + * Unless specified otherwise, G711 codec is included by default. + */ +#ifndef PJMEDIA_HAS_G711_CODEC +# define PJMEDIA_HAS_G711_CODEC 1 +#endif + + +#endif /* __PJMEDIA_CONFIG_H__ */ diff --git a/pjmedia/include/pjmedia/sound.h b/pjmedia/include/pjmedia/sound.h index ec7564fa..5719c0f9 100644 --- a/pjmedia/include/pjmedia/sound.h +++ b/pjmedia/include/pjmedia/sound.h @@ -24,7 +24,7 @@ * @file sound.h * @brief Sound player and recorder device framework. */ - +#include <pjmedia/types.h> #include <pj/pool.h> PJ_BEGIN_DECL diff --git a/pjmedia/include/pjmedia/types.h b/pjmedia/include/pjmedia/types.h index b0bda7e4..ac3af4e8 100644 --- a/pjmedia/include/pjmedia/types.h +++ b/pjmedia/include/pjmedia/types.h @@ -19,10 +19,9 @@ #ifndef __PJMEDIA_TYPES_H__ #define __PJMEDIA_TYPES_H__ -#include <pj/types.h> +#include <pjmedia/config.h> #include <pj/sock.h> - /** * Top most media type. */ diff --git a/pjmedia/src/pjmedia-codec/gsm.c b/pjmedia/src/pjmedia-codec/gsm.c index 46c49f08..55d207aa 100644 --- a/pjmedia/src/pjmedia-codec/gsm.c +++ b/pjmedia/src/pjmedia-codec/gsm.c @@ -27,6 +27,12 @@ #include <pj/os.h> #include "gsm/gsm.h" +/* + * Only build this file if PJMEDIA_HAS_GSM_CODEC != 0 + */ +#if defined(PJMEDIA_HAS_GSM_CODEC) && PJMEDIA_HAS_GSM_CODEC != 0 + + /* Prototypes for GSM factory */ static pj_status_t gsm_test_alloc( pjmedia_codec_factory *factory, const pjmedia_codec_info *id ); @@ -473,3 +479,7 @@ static pj_status_t gsm_codec_decode( pjmedia_codec *codec, return PJ_SUCCESS; } + + +#endif /* PJMEDIA_HAS_GSM_CODEC */ + diff --git a/pjmedia/src/pjmedia-codec/pjmedia-codec-lib.c b/pjmedia/src/pjmedia-codec/pjmedia-codec-lib.c deleted file mode 100644 index 8a201031..00000000 --- a/pjmedia/src/pjmedia-codec/pjmedia-codec-lib.c +++ /dev/null @@ -1,86 +0,0 @@ -/* $Id$ */ -/* - * Copyright (C)2003-2006 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 - */ -#include <pjmedia-codec.h> - -/* Include factories: */ -#include <pjmedia-codec/config.h> -#include <pjmedia-codec/gsm.h> -#include <pjmedia-codec/speex.h> - - -static pjmedia_endpt *the_endpt; -static struct codec_list -{ - pj_status_t (*init)(pjmedia_endpt*); - pj_status_t (*deinit)(void); -} codec_list[] = -{ - -#if PJMEDIA_CODEC_HAS_GSM - { &pjmedia_codec_gsm_init, &pjmedia_codec_gsm_deinit}, -#endif - -#if PJMEDIA_CODEC_HAS_SPEEX - { &pjmedia_codec_speex_init_default, &pjmedia_codec_speex_deinit}, -#endif - - { NULL, NULL } -}; - -/* - * Initialize pjmedia-codec library, and register all codec factories - * in this library. - */ -PJ_DEF(pj_status_t) pjmedia_codec_init(pjmedia_endpt *endpt) -{ - pj_status_t status; - unsigned i; - - the_endpt = endpt; - - for (i=0; codec_list[i].init; ++i) { - status = (*codec_list[i].init)(the_endpt); - if (status != PJ_SUCCESS) - return status; - } - return PJ_SUCCESS; -} - - -/* - * Deinitialize pjmedia-codec library, and unregister all codec factories - * in this library. - */ -PJ_DEF(pj_status_t) pjmedia_codec_deinit(void) -{ - pj_status_t status; - unsigned i; - - for (i=0; codec_list[i].init; ++i) { - status = (*codec_list[i].deinit)(); - if (status != PJ_SUCCESS) - return status; - } - - return PJ_SUCCESS; -} - - - - diff --git a/pjmedia/src/pjmedia-codec/speex_codec.c b/pjmedia/src/pjmedia-codec/speex_codec.c index e8b9d0a4..840737ee 100644 --- a/pjmedia/src/pjmedia-codec/speex_codec.c +++ b/pjmedia/src/pjmedia-codec/speex_codec.c @@ -29,6 +29,12 @@ #include <pj/string.h> #include <pj/os.h> +/* + * Only build this file if PJMEDIA_HAS_SPEEX_CODEC != 0 + */ +#if defined(PJMEDIA_HAS_SPEEX_CODEC) && PJMEDIA_HAS_SPEEX_CODEC!=0 + + #define THIS_FILE "speex_codec.c" #define DEFAULT_QUALITY 4 @@ -777,3 +783,6 @@ static pj_status_t spx_codec_decode( pjmedia_codec *codec, return PJ_SUCCESS; } + + +#endif /* PJMEDIA_HAS_SPEEX_CODEC */ diff --git a/pjmedia/src/pjmedia/g711.c b/pjmedia/src/pjmedia/g711.c index ad8bb7ee..d921bddf 100644 --- a/pjmedia/src/pjmedia/g711.c +++ b/pjmedia/src/pjmedia/g711.c @@ -27,6 +27,8 @@ #include <pj/string.h> #include <pj/assert.h> +#if defined(PJMEDIA_HAS_G711_CODEC) && PJMEDIA_HAS_G711_CODEC!=0 + #define G711_BPS 64000 #define G711_CODEC_CNT 0 /* number of codec to preallocate in memory */ @@ -472,6 +474,9 @@ static pj_status_t g711_decode( pjmedia_codec *codec, const struct pjmedia_fram } +#endif /* PJMEDIA_HAS_G711_CODEC */ + + /* * This source code is a product of Sun Microsystems, Inc. and is provided * for unrestricted use. Users may copy or modify this source code without @@ -764,3 +769,4 @@ ulaw2alaw( + diff --git a/pjmedia/src/pjmedia/nullsound.c b/pjmedia/src/pjmedia/nullsound.c index fcda5780..ff4e92e7 100644 --- a/pjmedia/src/pjmedia/nullsound.c +++ b/pjmedia/src/pjmedia/nullsound.c @@ -19,6 +19,8 @@ #include <pjmedia/sound.h> #include <pj/assert.h> +#if defined(PJMEDIA_HAS_NULL_SOUND) && PJMEDIA_HAS_NULL_SOUND!=0 + static pj_snd_dev_info null_info = { "Null Device", @@ -45,28 +47,48 @@ PJ_DEF(const pj_snd_dev_info*) pj_snd_get_dev_info(unsigned index) return &null_info; } -PJ_DEF(pj_snd_stream*) pj_snd_open_recorder( int index, - const pj_snd_stream_info *param, - pj_snd_rec_cb rec_cb, - void *user_data) +PJ_DEF(pj_status_t) pj_snd_open_recorder( int index, + unsigned clock_rate, + unsigned channel_count, + unsigned samples_per_frame, + unsigned bits_per_sample, + pj_snd_rec_cb rec_cb, + void *user_data, + pj_snd_stream **p_snd_strm) { PJ_UNUSED_ARG(index); - PJ_UNUSED_ARG(param); + PJ_UNUSED_ARG(clock_rate); + PJ_UNUSED_ARG(channel_count); + PJ_UNUSED_ARG(samples_per_frame); + PJ_UNUSED_ARG(bits_per_sample); PJ_UNUSED_ARG(rec_cb); PJ_UNUSED_ARG(user_data); - return (void*)1; + + *p_snd_strm = (void*)1; + + return PJ_SUCCESS; } -PJ_DEF(pj_snd_stream*) pj_snd_open_player( int index, - const pj_snd_stream_info *param, - pj_snd_play_cb play_cb, - void *user_data) +PJ_DEF(pj_status_t) pj_snd_open_player( int index, + unsigned clock_rate, + unsigned channel_count, + unsigned samples_per_frame, + unsigned bits_per_sample, + pj_snd_play_cb play_cb, + void *user_data, + pj_snd_stream **p_snd_strm ) { PJ_UNUSED_ARG(index); - PJ_UNUSED_ARG(param); + PJ_UNUSED_ARG(clock_rate); + PJ_UNUSED_ARG(channel_count); + PJ_UNUSED_ARG(samples_per_frame); + PJ_UNUSED_ARG(bits_per_sample); PJ_UNUSED_ARG(play_cb); PJ_UNUSED_ARG(user_data); - return (void*)1; + + *p_snd_strm = (void*)1; + + return PJ_SUCCESS; } PJ_DEF(pj_status_t) pj_snd_stream_start(pj_snd_stream *stream) @@ -91,3 +113,6 @@ PJ_DEF(pj_status_t) pj_snd_deinit(void) { return PJ_SUCCESS; } + + +#endif /* PJMEDIA_HAS_NULL_SOUND */ diff --git a/pjmedia/src/pjmedia/pasound.c b/pjmedia/src/pjmedia/pasound.c index 176f98ed..76b8d1bc 100644 --- a/pjmedia/src/pjmedia/pasound.c +++ b/pjmedia/src/pjmedia/pasound.c @@ -23,6 +23,8 @@ #include <pj/string.h> #include <portaudio.h> +#if defined(PJMEDIA_HAS_PORTAUDIO_SOUND) && PJMEDIA_HAS_PORTAUDIO_SOUND!=0 + #define THIS_FILE "pasound.c" static struct snd_mgr @@ -434,3 +436,5 @@ PJ_DEF(pj_status_t) pj_snd_deinit(void) return Pa_Terminate(); } + +#endif /* PJMEDIA_HAS_PORTAUDIO_SOUND */ diff --git a/pjsip-apps/build/Makefile b/pjsip-apps/build/Makefile index 826cad05..44a41d97 100644 --- a/pjsip-apps/build/Makefile +++ b/pjsip-apps/build/Makefile @@ -44,12 +44,24 @@ export PJSUA_EXE:=../bin/pjsua-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME)$(HOST_EXE) +############################################################################### +# Defines for building PJSIP-PERF +# +export PJSIPPERF_SRCDIR = ../src/pjsip-perf +export PJSIPPERF_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ + handler_call.o handler_options.o main.o +export PJSIPPERF_CFLAGS += $(_CFLAGS) +export PJSIPPERF_LDFLAGS += $(_LDFLAGS) +export PJSIPPERF_EXE:=../bin/pjsip-perf-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME)$(HOST_EXE) + + + export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT ############################################################################### # Main entry # # -TARGETS := pjsua +TARGETS := pjsua pjsip-perf .PHONY: $(TARGETS) @@ -66,14 +78,20 @@ distclean: realclean pjsua: $(MAKE) -f $(RULES_MAK) APP=PJSUA app=pjsua $(PJSUA_EXE) +pjsip-perf: + $(MAKE) -f $(RULES_MAK) APP=PJSIPPERF app=pjsip-perf $(PJSUA_EXE) + + .PHONY: ../lib/pjsua.ko ../lib/pjsua.ko: $(MAKE) -f $(RULES_MAK) APP=PJSUA app=pjsua $@ clean depend realclean: $(MAKE) -f $(RULES_MAK) APP=PJSUA app=pjsua $@ + $(MAKE) -f $(RULES_MAK) APP=PJSIPPERF app=pjsip-perf $@ @if test "$@" == "depend"; then \ - echo '$(PJSUA_EXE): $(PJSIP_LIB) $(PJSIP_UA_LIB) $(PJSIP_SIMPLE) $(PJSUA_LIB_LIB) $(PJLIB_LIB) $(PJLIB_UTIL_LIB) $(PJMEDIA_LIB) $(PJMEDIA_CODEC_LIB)' >> .pjsua-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME).depend; \ + echo '$(PJSUA_EXE): $(PJSIP_LIB) $(PJSIP_UA_LIB) $(PJSIP_SIMPLE) $(PJSUA_LIB_LIB) $(PJLIB_LIB) $(PJLIB_UTIL_LIB) $(PJMEDIA_LIB) $(PJMEDIA_CODEC_LIB) Makefile' >> .pjsua-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME).depend; \ + echo '$(PJSIPPERF_EXE): $(PJSIP_LIB) $(PJSIP_UA_LIB) $(PJSIP_SIMPLE) $(PJSUA_LIB_LIB) $(PJLIB_LIB) $(PJLIB_UTIL_LIB) $(PJMEDIA_LIB) $(PJMEDIA_CODEC_LIB)' >> .pjsip-perf-$(MACHINE_NAME)-$(OS_NAME)-$(CC_NAME).depend; \ fi diff --git a/pjsip-apps/build/pjsip_apps.dsw b/pjsip-apps/build/pjsip_apps.dsw index 8b95ede8..21645077 100644 --- a/pjsip-apps/build/pjsip_apps.dsw +++ b/pjsip-apps/build/pjsip_apps.dsw @@ -78,12 +78,6 @@ Package=<4> Project_Dep_Name pjlib_util End Project Dependency Begin Project Dependency - Project_Dep_Name pjmedia - End Project Dependency - Begin Project Dependency - Project_Dep_Name pjmedia_codec - End Project Dependency - Begin Project Dependency Project_Dep_Name pjsip_core End Project Dependency Begin Project Dependency @@ -95,6 +89,9 @@ Package=<4> Begin Project Dependency Project_Dep_Name pjsua_lib End Project Dependency + Begin Project Dependency + Project_Dep_Name pjmedia + End Project Dependency }}} ############################################################################### diff --git a/pjsip-apps/build/pjsip_perf.dsp b/pjsip-apps/build/pjsip_perf.dsp index 1d4c4c2a..c6402062 100644 --- a/pjsip-apps/build/pjsip_perf.dsp +++ b/pjsip-apps/build/pjsip_perf.dsp @@ -50,7 +50,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ole32.lib user32.lib netapi32.lib mswsock.lib ws2_32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"..\bin\pjsip-perf-i386-win32-vc6d.exe" +# ADD LINK32 ole32.lib user32.lib netapi32.lib mswsock.lib ws2_32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"..\bin\pjsip-perf-i386-win32-vc6.exe" !ELSEIF "$(CFG)" == "pjsip_perf - Win32 Debug" diff --git a/pjsip-apps/build/pjsua.dsp b/pjsip-apps/build/pjsua.dsp index 8e80b355..2d92582e 100644 --- a/pjsip-apps/build/pjsua.dsp +++ b/pjsip-apps/build/pjsua.dsp @@ -51,7 +51,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 ole32.lib user32.lib dsound.lib dxguid.lib netapi32.lib mswsock.lib ws2_32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /map /machine:I386 /out:"../bin/pjsua_vc6.exe" /fixed:no
+# ADD LINK32 ole32.lib user32.lib dsound.lib dxguid.lib netapi32.lib mswsock.lib ws2_32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /map:"..\bin\pjsua_vc6.map" /machine:I386 /out:"../bin/pjsua_vc6.exe" /fixed:no
# SUBTRACT LINK32 /pdb:none /debug
!ELSEIF "$(CFG)" == "pjsua - Win32 Debug"
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index c8188fc9..dd71f135 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -617,6 +617,7 @@ static pj_status_t init_media(void) /* If user doesn't specify any codecs, register all of them. */ if (pjsua.codec_cnt == 0) { +#if PJMEDIA_HAS_SPEEX_CODEC unsigned option = PJMEDIA_SPEEX_NO_WB | PJMEDIA_SPEEX_NO_UWB; /* Register speex. */ @@ -636,7 +637,9 @@ static pj_status_t init_media(void) pjsua.codec_arg[pjsua.codec_cnt] = pj_str("speex"); pjsua.codec_deinit[pjsua.codec_cnt] = &pjmedia_codec_speex_deinit; pjsua.codec_cnt++; +#endif /* PJMEDIA_HAS_SPEEX_CODEC */ +#if PJMEDIA_HAS_GSM_CODEC /* Register GSM */ status = pjmedia_codec_gsm_init(pjsua.med_endpt); if (status != PJ_SUCCESS) { @@ -648,7 +651,9 @@ static pj_status_t init_media(void) pjsua.codec_arg[pjsua.codec_cnt] = pj_str("gsm"); pjsua.codec_deinit[pjsua.codec_cnt] = &pjmedia_codec_gsm_deinit; pjsua.codec_cnt++; +#endif /* PJMEDIA_HAS_GSM_CODEC */ +#if PJMEDIA_HAS_G711_CODEC /* Register PCMA and PCMU */ status = pjmedia_codec_g711_init(pjsua.med_endpt); if (status != PJ_SUCCESS) { @@ -663,6 +668,7 @@ static pj_status_t init_media(void) pjsua.codec_arg[pjsua.codec_cnt] = pj_str("pcma"); pjsua.codec_deinit[pjsua.codec_cnt] = &pjmedia_codec_g711_deinit; pjsua.codec_cnt++; +#endif /* PJMEDIA_HAS_G711_CODEC */ } else { @@ -673,8 +679,12 @@ static pj_status_t init_media(void) for (i=0; i<pjsua.codec_cnt; ++i) { + if (0) { + /* Dummy */ + } +#if PJMEDIA_HAS_SPEEX_CODEC /* Is it speex? */ - if (!pj_stricmp2(&pjsua.codec_arg[i], "speex")) { + else if (!pj_stricmp2(&pjsua.codec_arg[i], "speex")) { unsigned option = PJMEDIA_SPEEX_NO_WB | PJMEDIA_SPEEX_NO_UWB; @@ -694,6 +704,9 @@ static pj_status_t init_media(void) pjsua.codec_deinit[i] = &pjmedia_codec_speex_deinit; } +#endif /* PJMEDIA_HAS_SPEEX_CODEC */ + +#if PJMEDIA_HAS_GSM_CODEC /* Is it gsm? */ else if (!pj_stricmp2(&pjsua.codec_arg[i], "gsm")) { @@ -707,6 +720,9 @@ static pj_status_t init_media(void) pjsua.codec_deinit[i] = &pjmedia_codec_gsm_deinit; } +#endif /* PJMEDIA_HAS_GSM_CODEC */ + +#if PJMEDIA_HAS_G711_CODEC /* Is it pcma/pcmu? */ else if (!pj_stricmp2(&pjsua.codec_arg[i], "pcmu") || !pj_stricmp2(&pjsua.codec_arg[i], "pcma")) @@ -722,6 +738,8 @@ static pj_status_t init_media(void) pjsua.codec_deinit[i] = &pjmedia_codec_g711_deinit; } +#endif /* PJMEDIA_HAS_G711_CODEC */ + /* Don't know about this codec... */ else { @@ -1058,10 +1076,12 @@ pj_status_t pjsua_destroy(void) pjmedia_conf_destroy(pjsua.mconf); /* Destroy file port */ - pjmedia_port_destroy(pjsua.file_port); + if (pjsua.file_port) + pjmedia_port_destroy(pjsua.file_port); /* Destroy null port. */ - pjmedia_port_destroy(pjsua.null_port); + if (pjsua.null_port) + pjmedia_port_destroy(pjsua.null_port); /* Destroy sound framework: |