summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pjlib/include/pj/config.h14
-rw-r--r--pjmedia/build/Makefile5
-rw-r--r--pjmedia/src/pjmedia-codec/speex/misc.h2
-rw-r--r--pjmedia/src/pjmedia/aec_port.c8
-rw-r--r--pjsip-apps/build/Makefile1
-rw-r--r--pjsip-apps/src/pjsua/pjsua_app.c13
-rw-r--r--pjsip/include/pjsua-lib/pjsua.h4
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c6
8 files changed, 37 insertions, 16 deletions
diff --git a/pjlib/include/pj/config.h b/pjlib/include/pj/config.h
index 7edcdcfa..c9025196 100644
--- a/pjlib/include/pj/config.h
+++ b/pjlib/include/pj/config.h
@@ -172,17 +172,19 @@
# define PJ_IS_BIG_ENDIAN 0
-#elif defined(PJ_M_MIPS) || defined(__mips__) || defined(__mips) || \\
+#elif defined(PJ_M_MIPS) || defined(__mips__) || defined(__mips) || \
defined(__MIPS__) || defined(MIPS) || defined(_MIPS_)
/*
- * MIPS, little endian
+ * MIPS, default to little endian
*/
# undef PJ_M_MIPS
# define PJ_M_MIPS 1
# define PJ_M_NAME "mips"
# define PJ_HAS_PENTIUM 0
-# define PJ_IS_LITTLE_ENDIAN 1
-# define PJ_IS_BIG_ENDIAN 0
+# if !defined(PJ_IS_LITTLE_ENDIAN) && !defined(PJ_IS_BIG_ENDIAN)
+# define PJ_IS_LITTLE_ENDIAN 1
+# define PJ_IS_BIG_ENDIAN 0
+# endif
#elif defined (PJ_M_SPARC) || defined( __sparc__) || defined(__sparc)
@@ -220,8 +222,8 @@
# define PJ_M_POWERPC 1
# define PJ_M_NAME "powerpc"
# define PJ_HAS_PENTIUM 0
-# define PJ_IS_LITTLE_ENDIAN 1
-# define PJ_IS_BIG_ENDIAN 0
+# define PJ_IS_LITTLE_ENDIAN 0
+# define PJ_IS_BIG_ENDIAN 1
#else
# error "Please specify target machine."
diff --git a/pjmedia/build/Makefile b/pjmedia/build/Makefile
index c0465f10..f176463f 100644
--- a/pjmedia/build/Makefile
+++ b/pjmedia/build/Makefile
@@ -50,7 +50,8 @@ NULLSOUND_OBJS := nullsound.o
export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \
$(CFLAGS) $(CC_INC)../include $(CC_INC)../../pjlib/include \
$(CC_INC)../../pjlib-util/include \
- $(CC_INC)../src/pjmedia/portaudio
+ $(CC_INC)../src/pjmedia/portaudio \
+ $(CC_INC)../src/pjmedia-codec
export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \
$(HOST_CXXFLAGS) $(CXXFLAGS)
export _LDFLAGS := $(subst /,$(HOST_PSEP),$(PJMEDIA_LIB)) \
@@ -64,7 +65,7 @@ export _LDFLAGS := $(subst /,$(HOST_PSEP),$(PJMEDIA_LIB)) \
#
export PJMEDIA_SRCDIR = ../src/pjmedia
export PJMEDIA_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
- alaw_ulaw.o \
+ aec_port.o alaw_ulaw.o \
clock_thread.o codec.o conference.o endpoint.o errno.o \
g711.o jbuf.o master_port.o mem_capture.o mem_player.o \
null_port.o plc_common.o plc_g711.o \
diff --git a/pjmedia/src/pjmedia-codec/speex/misc.h b/pjmedia/src/pjmedia-codec/speex/misc.h
index 95e5d0cd..ea9cc387 100644
--- a/pjmedia/src/pjmedia-codec/speex/misc.h
+++ b/pjmedia/src/pjmedia-codec/speex/misc.h
@@ -62,7 +62,7 @@
#error I suppose you can have a [ARM4/ARM5E/Blackfin] that has float instructions?
#endif
#ifdef FIXED_POINT_DEBUG
-#error Don't you think enabling fixed-point is a good thing to do if you want to debug that?
+#error Dont you think enabling fixed-point is a good thing to do if you want to debug that?
#endif
diff --git a/pjmedia/src/pjmedia/aec_port.c b/pjmedia/src/pjmedia/aec_port.c
index d00d9298..f772d859 100644
--- a/pjmedia/src/pjmedia/aec_port.c
+++ b/pjmedia/src/pjmedia/aec_port.c
@@ -93,9 +93,13 @@ PJ_DEF(pj_status_t) pjmedia_aec_port_create( pj_pool_t *pool,
/* Done */
*p_port = &aec_port->base;
- PJ_LOG(4,(THIS_FILE, "AEC created for port %.*s",
+ PJ_LOG(4,(THIS_FILE, "AEC created for port %.*s, clock_rate=%d, "
+ "samples per frame=%d, tail length=%d ms",
(int)dn_port->info.name.slen,
- dn_port->info.name.ptr));
+ dn_port->info.name.ptr,
+ dn_port->info.clock_rate,
+ dn_port->info.samples_per_frame,
+ tail_length * 1000 / dn_port->info.clock_rate));
return PJ_SUCCESS;
}
diff --git a/pjsip-apps/build/Makefile b/pjsip-apps/build/Makefile
index e2fe85a3..228a4946 100644
--- a/pjsip-apps/build/Makefile
+++ b/pjsip-apps/build/Makefile
@@ -26,6 +26,7 @@ export _LDFLAGS := $(subst /,$(HOST_PSEP),$(PJSUA_LIB_LIB)) \
$(subst /,$(HOST_PSEP),$(PJSIP_LIB)) \
$(subst /,$(HOST_PSEP),$(PJMEDIA_CODEC_LIB)) \
$(subst /,$(HOST_PSEP),$(PJMEDIA_LIB)) \
+ $(subst /,$(HOST_PSEP),$(PJMEDIA_CODEC_LIB)) \
$(subst /,$(HOST_PSEP),$(PJLIB_UTIL_LIB)) \
$(subst /,$(HOST_PSEP),$(PJLIB_LIB)) \
$(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \
diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c
index 526a6005..02e5cbce 100644
--- a/pjsip-apps/src/pjsua/pjsua_app.c
+++ b/pjsip-apps/src/pjsua/pjsua_app.c
@@ -126,6 +126,7 @@ static void usage(void)
puts (" --quality=N Specify media quality (0-10, default=6)");
puts (" --ptime=MSEC Override codec ptime to MSEC (default=specific)");
puts (" --no-vad Disable VAD/silence detector (default=vad enabled)");
+ puts (" --ec-tail=MSEC Set echo canceller tail length (default=256)");
puts (" --ilbc-mode=MODE Set iLBC codec mode (20 or 30, default is 20)");
puts (" --rx-drop-pct=PCT Drop PCT percent of RX RTP (for pkt lost sim, default: 0)");
puts (" --tx-drop-pct=PCT Drop PCT percent of TX RTP (for pkt lost sim, default: 0)");
@@ -261,7 +262,7 @@ static pj_status_t parse_args(int argc, char *argv[],
OPT_AUTO_CONF, OPT_CLOCK_RATE,
OPT_PLAY_FILE, OPT_RTP_PORT, OPT_ADD_CODEC, OPT_ILBC_MODE,
OPT_COMPLEXITY, OPT_QUALITY, OPT_PTIME, OPT_NO_VAD,
- OPT_RX_DROP_PCT, OPT_TX_DROP_PCT,
+ OPT_RX_DROP_PCT, OPT_TX_DROP_PCT, OPT_EC_TAIL,
OPT_NEXT_ACCOUNT, OPT_NEXT_CRED, OPT_MAX_CALLS,
OPT_DURATION, OPT_NO_TCP, OPT_NO_UDP,
};
@@ -303,6 +304,7 @@ static pj_status_t parse_args(int argc, char *argv[],
{ "quality", 1, 0, OPT_QUALITY},
{ "ptime", 1, 0, OPT_PTIME},
{ "no-vad", 0, 0, OPT_NO_VAD},
+ { "ec-tail", 1, 0, OPT_EC_TAIL},
{ "ilbc-mode", 1, 0, OPT_ILBC_MODE},
{ "rx-drop-pct",1, 0, OPT_RX_DROP_PCT},
{ "tx-drop-pct",1, 0, OPT_TX_DROP_PCT},
@@ -623,6 +625,15 @@ static pj_status_t parse_args(int argc, char *argv[],
cfg->media_cfg.no_vad = PJ_TRUE;
break;
+ case OPT_EC_TAIL:
+ cfg->media_cfg.ec_tail_len = my_atoi(pj_optarg);
+ if (cfg->media_cfg.ec_tail_len > 1000) {
+ PJ_LOG(1,(THIS_FILE, "I think the ec-tail length setting "
+ "is too big"));
+ return -1;
+ }
+ break;
+
case OPT_QUALITY:
cfg->media_cfg.quality = my_atoi(pj_optarg);
if (cfg->media_cfg.quality < 0 || cfg->media_cfg.quality > 10) {
diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h
index 5ca718ce..5e549a34 100644
--- a/pjsip/include/pjsua-lib/pjsua.h
+++ b/pjsip/include/pjsua-lib/pjsua.h
@@ -2131,7 +2131,7 @@ struct pjsua_media_config
/**
* Echo canceller tail length, in miliseconds.
*
- * Default: 256
+ * Default: 0 (disabled, for now)
*/
unsigned ec_tail_len;
};
@@ -2152,7 +2152,7 @@ PJ_INLINE(void) pjsua_media_config_default(pjsua_media_config *cfg)
cfg->thread_cnt = 1;
cfg->quality = 6;
cfg->ilbc_mode = 20;
- cfg->ec_tail_len = 256;
+ cfg->ec_tail_len = 0;
}
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index 284cdb58..ffc228b6 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -969,7 +969,7 @@ PJ_DEF(pj_status_t) pjsua_set_snd_dev( int capture_dev,
pj_assert(conf_port != NULL);
/* Create AEC if it's not created */
- if (pjsua_var.aec_port == NULL) {
+ if (pjsua_var.aec_port == NULL && pjsua_var.media_cfg.ec_tail_len) {
status = pjmedia_aec_port_create(pjsua_var.pool, conf_port,
conf_port->info.clock_rate *
pjsua_var.media_cfg.ec_tail_len /
@@ -984,7 +984,9 @@ PJ_DEF(pj_status_t) pjsua_set_snd_dev( int capture_dev,
}
/* Connect to the AEC port */
- status = pjmedia_snd_port_connect(pjsua_var.snd_port, pjsua_var.aec_port);
+ status = pjmedia_snd_port_connect(pjsua_var.snd_port,
+ pjsua_var.media_cfg.ec_tail_len ?
+ pjsua_var.aec_port : conf_port );
if (status != PJ_SUCCESS) {
pjsua_perror(THIS_FILE, "Unable to connect conference port to "
"sound device", status);