diff options
author | Benny Prijono <bennylp@teluu.com> | 2012-04-21 02:17:07 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2012-04-21 02:17:07 +0000 |
commit | 6b05067e089b1536a2003d06ddd8bda2de50abb4 (patch) | |
tree | 0ade364c36a786158a3a6df418fbaa9788e2020f /pjmedia/src | |
parent | 824407dfad66205a82037b8212549a5a45e87195 (diff) |
Fixed #1492: The echo options field in the media config and pjsua_set_ec() argument are ignored
git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/1.x@4065 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src')
-rw-r--r-- | pjmedia/src/pjmedia/sound_port.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/pjmedia/src/pjmedia/sound_port.c b/pjmedia/src/pjmedia/sound_port.c index cf2890a2..35f91dc9 100644 --- a/pjmedia/src/pjmedia/sound_port.c +++ b/pjmedia/src/pjmedia/sound_port.c @@ -49,6 +49,7 @@ struct pjmedia_snd_port unsigned samples_per_frame; unsigned bits_per_sample; unsigned options; + unsigned prm_ec_options; /* software ec */ pjmedia_echo_state *ec_state; @@ -179,6 +180,12 @@ static pj_status_t rec_cb_ext(void *user_data, pjmedia_frame *frame) return PJ_SUCCESS; } +/* Initialize with default values (zero) */ +PJ_DEF(void) pjmedia_snd_port_param_default(pjmedia_snd_port_param *prm) +{ + pj_bzero(prm, sizeof(*prm)); +} + /* * Start the sound stream. * This may be called even when the sound stream has already been started. @@ -269,7 +276,8 @@ static pj_status_t start_sound_device( pj_pool_t *pool, } status = pjmedia_snd_port_set_ec(snd_port, pool, - snd_port->aud_param.ec_tail_ms, 0); + snd_port->aud_param.ec_tail_ms, + snd_port->prm_ec_options); if (status != PJ_SUCCESS) { pjmedia_aud_stream_destroy(snd_port->aud_stream); snd_port->aud_stream = NULL; @@ -330,7 +338,7 @@ PJ_DEF(pj_status_t) pjmedia_snd_port_create( pj_pool_t *pool, pjmedia_snd_port_param param; pj_status_t status; - PJ_UNUSED_ARG(options); + pjmedia_snd_port_param_default(¶m); status = pjmedia_aud_dev_default_param(rec_id, ¶m.base); if (status != PJ_SUCCESS) @@ -344,6 +352,7 @@ PJ_DEF(pj_status_t) pjmedia_snd_port_create( pj_pool_t *pool, param.base.samples_per_frame = samples_per_frame; param.base.bits_per_sample = bits_per_sample; param.options = options; + param.ec_options = 0; return pjmedia_snd_port_create2(pool, ¶m, p_port); } @@ -363,7 +372,7 @@ PJ_DEF(pj_status_t) pjmedia_snd_port_create_rec( pj_pool_t *pool, pjmedia_snd_port_param param; pj_status_t status; - PJ_UNUSED_ARG(options); + pjmedia_snd_port_param_default(¶m); status = pjmedia_aud_dev_default_param(dev_id, ¶m.base); if (status != PJ_SUCCESS) @@ -376,6 +385,7 @@ PJ_DEF(pj_status_t) pjmedia_snd_port_create_rec( pj_pool_t *pool, param.base.samples_per_frame = samples_per_frame; param.base.bits_per_sample = bits_per_sample; param.options = options; + param.ec_options = 0; return pjmedia_snd_port_create2(pool, ¶m, p_port); } @@ -396,7 +406,7 @@ PJ_DEF(pj_status_t) pjmedia_snd_port_create_player( pj_pool_t *pool, pjmedia_snd_port_param param; pj_status_t status; - PJ_UNUSED_ARG(options); + pjmedia_snd_port_param_default(¶m); status = pjmedia_aud_dev_default_param(dev_id, ¶m.base); if (status != PJ_SUCCESS) @@ -409,6 +419,7 @@ PJ_DEF(pj_status_t) pjmedia_snd_port_create_player( pj_pool_t *pool, param.base.samples_per_frame = samples_per_frame; param.base.bits_per_sample = bits_per_sample; param.options = options; + param.ec_options = 0; return pjmedia_snd_port_create2(pool, ¶m, p_port); } @@ -436,8 +447,9 @@ PJ_DEF(pj_status_t) pjmedia_snd_port_create2(pj_pool_t *pool, snd_port->channel_count = prm->base.channel_count; snd_port->samples_per_frame = prm->base.samples_per_frame; snd_port->bits_per_sample = prm->base.bits_per_sample; - pj_memcpy(&snd_port->aud_param, prm, sizeof(snd_port->aud_param)); + pj_memcpy(&snd_port->aud_param, &prm->base, sizeof(snd_port->aud_param)); snd_port->options = prm->options; + snd_port->prm_ec_options = prm->ec_options; /* Start sound device immediately. * If there's no port connected, the sound callback will return |