diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-08-07 10:24:52 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-08-07 10:24:52 +0000 |
commit | c14e6bf7c11fb28266cab45ccaa477a54fe3fd59 (patch) | |
tree | f05279a71b587759964bb0c16fee5259422f2c43 /pjmedia/src | |
parent | 7786b1e99d249798e0e394bf473b954b3a612072 (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.c | 18 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/sound_port.c | 17 |
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 { |