diff options
-rw-r--r-- | pjlib/include/pj/config.h | 14 | ||||
-rw-r--r-- | pjmedia/build/Makefile | 5 | ||||
-rw-r--r-- | pjmedia/src/pjmedia-codec/speex/misc.h | 2 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/aec_port.c | 8 | ||||
-rw-r--r-- | pjsip-apps/build/Makefile | 1 | ||||
-rw-r--r-- | pjsip-apps/src/pjsua/pjsua_app.c | 13 | ||||
-rw-r--r-- | pjsip/include/pjsua-lib/pjsua.h | 4 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_media.c | 6 |
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); |