summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-08-05 11:13:58 +0000
committerBenny Prijono <bennylp@teluu.com>2006-08-05 11:13:58 +0000
commitad8139439211ba44592ef45a3362bc45cbd3b3b6 (patch)
tree40b22de50c64975f156a7609571b56fed07df7b0
parent84fa519310e0ab383fa107ccddadd94ad56eb1e3 (diff)
AEC and sound backend fixes:
- Changed default sound backend in Windows to PortAudio - Finalizing AEC settings on Windows: - default tail is 256 msec - write AEC configuration with "dc" git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@651 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/include/pjmedia/config.h3
-rw-r--r--pjsip-apps/src/pjsua/pjsua_app.c57
-rw-r--r--pjsip/include/pjsua-lib/pjsua.h18
-rw-r--r--pjsip/src/pjsua-lib/pjsua_call.c2
4 files changed, 69 insertions, 11 deletions
diff --git a/pjmedia/include/pjmedia/config.h b/pjmedia/include/pjmedia/config.h
index 9e4621d2..9e53f562 100644
--- a/pjmedia/include/pjmedia/config.h
+++ b/pjmedia/include/pjmedia/config.h
@@ -57,7 +57,8 @@
*/
#ifndef PJMEDIA_SOUND_IMPLEMENTATION
# if defined(PJ_WIN32) && PJ_WIN32!=0
-# define PJMEDIA_SOUND_IMPLEMENTATION PJMEDIA_SOUND_WIN32_DIRECT_SOUND
+/*# define PJMEDIA_SOUND_IMPLEMENTATION PJMEDIA_SOUND_WIN32_DIRECT_SOUND*/
+# define PJMEDIA_SOUND_IMPLEMENTATION PJMEDIA_SOUND_PORTAUDIO_SOUND
# else
# define PJMEDIA_SOUND_IMPLEMENTATION PJMEDIA_SOUND_PORTAUDIO_SOUND
# endif
diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c
index 02e5cbce..b59365ac 100644
--- a/pjsip-apps/src/pjsua/pjsua_app.c
+++ b/pjsip-apps/src/pjsua/pjsua_app.c
@@ -917,15 +917,25 @@ static int write_settings(const struct app_config *config,
pj_strcat2(&cfg, line);
}
/* Media clock rate. */
- if (config->media_cfg.clock_rate) {
+ if (config->media_cfg.clock_rate != PJSUA_DEFAULT_CLOCK_RATE) {
pj_ansi_sprintf(line, "--clock-rate %d\n",
config->media_cfg.clock_rate);
pj_strcat2(&cfg, line);
+ } else {
+ pj_ansi_sprintf(line, "#using default --clock-rate %d\n",
+ config->media_cfg.clock_rate);
+ pj_strcat2(&cfg, line);
}
- if (config->media_cfg.quality != 10) {
+
+ /* quality */
+ if (config->media_cfg.quality != PJSUA_DEFAULT_CODEC_QUALITY) {
pj_ansi_sprintf(line, "--quality %d\n",
config->media_cfg.quality);
pj_strcat2(&cfg, line);
+ } else {
+ pj_ansi_sprintf(line, "#using default --quality %d\n",
+ config->media_cfg.quality);
+ pj_strcat2(&cfg, line);
}
@@ -936,6 +946,49 @@ static int write_settings(const struct app_config *config,
pj_strcat2(&cfg, line);
}
+ /* no-vad */
+ if (config->media_cfg.no_vad) {
+ pj_strcat2(&cfg, "--no-vad\n");
+ }
+
+ /* ec-tail */
+ if (config->media_cfg.ec_tail_len != PJSUA_DEFAULT_EC_TAIL_LEN) {
+ pj_ansi_sprintf(line, "--ec-tail %d\n",
+ config->media_cfg.ec_tail_len);
+ pj_strcat2(&cfg, line);
+ } else {
+ pj_ansi_sprintf(line, "#using default --ec-tail %d\n",
+ config->media_cfg.ec_tail_len);
+ pj_strcat2(&cfg, line);
+ }
+
+
+ /* ilbc-mode */
+ if (config->media_cfg.ilbc_mode != PJSUA_DEFAULT_ILBC_MODE) {
+ pj_ansi_sprintf(line, "--ilbc-mode %d\n",
+ config->media_cfg.ilbc_mode);
+ pj_strcat2(&cfg, line);
+ } else {
+ pj_ansi_sprintf(line, "#using default --ilbc-mode %d\n",
+ config->media_cfg.ilbc_mode);
+ pj_strcat2(&cfg, line);
+ }
+
+ /* RTP drop */
+ if (config->media_cfg.tx_drop_pct) {
+ pj_ansi_sprintf(line, "--tx-drop-pct %d\n",
+ config->media_cfg.tx_drop_pct);
+ pj_strcat2(&cfg, line);
+
+ }
+ if (config->media_cfg.rx_drop_pct) {
+ pj_ansi_sprintf(line, "--rx-drop-pct %d\n",
+ config->media_cfg.rx_drop_pct);
+ pj_strcat2(&cfg, line);
+
+ }
+
+
/* Start RTP port. */
pj_ansi_sprintf(line, "--rtp-port %d\n",
config->rtp_cfg.port);
diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h
index 6fd640fe..4ee7aba6 100644
--- a/pjsip/include/pjsua-lib/pjsua.h
+++ b/pjsip/include/pjsua-lib/pjsua.h
@@ -2039,6 +2039,10 @@ PJ_DECL(pj_status_t) pjsua_im_typing(pjsua_acc_id acc_id,
# define PJSUA_MAX_CONF_PORTS 254
#endif
+#define PJSUA_DEFAULT_CLOCK_RATE 16000
+#define PJSUA_DEFAULT_CODEC_QUALITY 5
+#define PJSUA_DEFAULT_ILBC_MODE 20
+#define PJSUA_DEFAULT_EC_TAIL_LEN 256
/**
@@ -2087,7 +2091,7 @@ struct pjsua_media_config
* The media quality also sets speex codec quality/complexity to the
* number.
*
- * Default: 6.
+ * Default: 5 (PJSUA_DEFAULT_CODEC_QUALITY).
*/
unsigned quality;
@@ -2108,7 +2112,7 @@ struct pjsua_media_config
/**
* iLBC mode (20 or 30).
*
- * Default: 20
+ * Default: 20 (PJSUA_DEFAULT_ILBC_MODE)
*/
unsigned ilbc_mode;
@@ -2131,7 +2135,7 @@ struct pjsua_media_config
/**
* Echo canceller tail length, in miliseconds.
*
- * Default: 0 (disabled, for now)
+ * Default: 128 (PJSUA_DEFAULT_EC_TAIL_LEN)
*/
unsigned ec_tail_len;
};
@@ -2146,13 +2150,13 @@ PJ_INLINE(void) pjsua_media_config_default(pjsua_media_config *cfg)
{
pj_bzero(cfg, sizeof(*cfg));
- cfg->clock_rate = 16000;
+ cfg->clock_rate = PJSUA_DEFAULT_CLOCK_RATE;
cfg->max_media_ports = 32;
cfg->has_ioqueue = PJ_TRUE;
cfg->thread_cnt = 1;
- cfg->quality = 6;
- cfg->ilbc_mode = 20;
- cfg->ec_tail_len = 500;
+ cfg->quality = PJSUA_DEFAULT_CODEC_QUALITY;
+ cfg->ilbc_mode = PJSUA_DEFAULT_ILBC_MODE;
+ cfg->ec_tail_len = PJSUA_DEFAULT_EC_TAIL_LEN;
}
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c
index 31d7f6c0..68231718 100644
--- a/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/pjsip/src/pjsua-lib/pjsua_call.c
@@ -795,7 +795,7 @@ PJ_DEF(pj_status_t) pjsua_call_hangup(pjsua_call_id call_id,
call = &pjsua_var.calls[call_id];
if (!call->inv) {
- PJ_LOG(3,(THIS_FILE,"Call has been disconnected"));
+ PJ_LOG(3,(THIS_FILE,"Invalid call or call has been disconnected"));
PJSUA_UNLOCK();
return PJ_EINVAL;
}