summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pjlib/include/pj/log.h15
-rw-r--r--pjmedia/build/Makefile63
-rw-r--r--pjmedia/build/os-win32.mak11
-rw-r--r--pjmedia/build/pjmedia.dsp3
-rw-r--r--pjmedia/build/pjmedia_codec.dsp4
-rw-r--r--pjmedia/include/pjmedia-codec.h34
-rw-r--r--pjmedia/include/pjmedia-codec/config.h16
-rw-r--r--pjmedia/include/pjmedia-codec/types.h2
-rw-r--r--pjmedia/include/pjmedia/config.h33
-rw-r--r--pjmedia/include/pjmedia/sound.h2
-rw-r--r--pjmedia/include/pjmedia/types.h3
-rw-r--r--pjmedia/src/pjmedia-codec/gsm.c10
-rw-r--r--pjmedia/src/pjmedia-codec/pjmedia-codec-lib.c86
-rw-r--r--pjmedia/src/pjmedia-codec/speex_codec.c9
-rw-r--r--pjmedia/src/pjmedia/g711.c6
-rw-r--r--pjmedia/src/pjmedia/nullsound.c49
-rw-r--r--pjmedia/src/pjmedia/pasound.c4
-rw-r--r--pjsip-apps/build/Makefile22
-rw-r--r--pjsip-apps/build/pjsip_apps.dsw9
-rw-r--r--pjsip-apps/build/pjsip_perf.dsp2
-rw-r--r--pjsip-apps/build/pjsua.dsp2
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c26
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: