summaryrefslogtreecommitdiff
path: root/pjmedia/src
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-08-07 10:24:52 +0000
committerBenny Prijono <bennylp@teluu.com>2006-08-07 10:24:52 +0000
commitc14e6bf7c11fb28266cab45ccaa477a54fe3fd59 (patch)
treef05279a71b587759964bb0c16fee5259422f2c43 /pjmedia/src
parent7786b1e99d249798e0e394bf473b954b3a612072 (diff)
Change set_ec_tail() API to set_ec() in sound port, also change suppressor to reduce mic signal by division rather than zeroing the signal. Also moved out VAD and EC settings to config.h.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@658 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src')
-rw-r--r--pjmedia/src/pjmedia/echo_suppress.c18
-rw-r--r--pjmedia/src/pjmedia/sound_port.c17
2 files changed, 21 insertions, 14 deletions
diff --git a/pjmedia/src/pjmedia/echo_suppress.c b/pjmedia/src/pjmedia/echo_suppress.c
index a3bf4bfb..39b59a64 100644
--- a/pjmedia/src/pjmedia/echo_suppress.c
+++ b/pjmedia/src/pjmedia/echo_suppress.c
@@ -27,7 +27,6 @@
#define THIS_FILE "echo_suppress.c"
-#define PJMEDIA_ECHO_SUPPRESS_THRESHOLD PJMEDIA_SILENCE_DET_THRESHOLD
/*
@@ -159,7 +158,15 @@ PJ_DEF(pj_status_t) echo_supp_capture( void *state,
delay_ms = PJ_TIME_VAL_MSEC(now);
if (delay_ms < ec->tail_ms) {
+#if defined(PJMEDIA_ECHO_SUPPRESS_FACTOR) && PJMEDIA_ECHO_SUPPRESS_FACTOR!=0
+ unsigned i;
+ for (i=0; i<ec->samples_per_frame; ++i) {
+ rec_frm[i] = (pj_int16_t)(rec_frm[i] >>
+ PJMEDIA_ECHO_SUPPRESS_FACTOR);
+ }
+#else
pjmedia_zero_samples(rec_frm, ec->samples_per_frame);
+#endif
}
return PJ_SUCCESS;
@@ -185,10 +192,17 @@ PJ_DEF(pj_status_t) echo_supp_cancel_echo( void *state,
ec->samples_per_frame, NULL);
if (!silence) {
+#if defined(PJMEDIA_ECHO_SUPPRESS_FACTOR) && PJMEDIA_ECHO_SUPPRESS_FACTOR!=0
+ unsigned i;
+ for (i=0; i<ec->samples_per_frame; ++i) {
+ rec_frm[i] = (pj_int16_t)(rec_frm[i] >>
+ PJMEDIA_ECHO_SUPPRESS_FACTOR);
+ }
+#else
pjmedia_zero_samples(rec_frm, ec->samples_per_frame);
+#endif
}
return PJ_SUCCESS;
}
-
diff --git a/pjmedia/src/pjmedia/sound_port.c b/pjmedia/src/pjmedia/sound_port.c
index dd08a338..ee60dbd9 100644
--- a/pjmedia/src/pjmedia/sound_port.c
+++ b/pjmedia/src/pjmedia/sound_port.c
@@ -249,14 +249,6 @@ static pj_status_t start_sound_device( pj_pool_t *pool,
}
}
- /* Create AEC only when direction is full duplex */
- if (snd_port->dir == PJMEDIA_DIR_CAPTURE_PLAYBACK) {
- status = pjmedia_snd_port_set_ec_tail(snd_port, pool, AEC_TAIL);
- if (status != PJ_SUCCESS) {
- PJ_LOG(4,(THIS_FILE, "Unable to create AEC"));
- snd_port->ec_state = NULL;
- }
- }
/* Start sound stream. */
status = pjmedia_snd_stream_start(snd_port->snd_stream);
@@ -432,9 +424,10 @@ PJ_DEF(pjmedia_snd_stream*) pjmedia_snd_port_get_snd_stream(
/*
* Enable AEC
*/
-PJ_DEF(pj_status_t) pjmedia_snd_port_set_ec_tail(pjmedia_snd_port *snd_port,
- pj_pool_t *pool,
- unsigned tail_ms)
+PJ_DEF(pj_status_t) pjmedia_snd_port_set_ec( pjmedia_snd_port *snd_port,
+ pj_pool_t *pool,
+ unsigned tail_ms,
+ unsigned options)
{
pj_status_t status;
@@ -454,7 +447,7 @@ PJ_DEF(pj_status_t) pjmedia_snd_port_set_ec_tail(pjmedia_snd_port *snd_port,
if (tail_ms != 0) {
status = pjmedia_echo_create(pool, snd_port->clock_rate,
snd_port->samples_per_frame,
- tail_ms, 0, &snd_port->ec_state);
+ tail_ms, options, &snd_port->ec_state);
if (status != PJ_SUCCESS)
snd_port->ec_state = NULL;
} else {