diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-12-26 21:18:11 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-12-26 21:18:11 +0000 |
commit | 47d417ed5eb941ec7bdde985a05340ae184d6fc7 (patch) | |
tree | 8ba9b4af43f4745f0f73ff36b4624689c0e08499 /pjmedia/src/pjmedia-codec/gsm.c | |
parent | f9017cbd238e567ae0bea2c60611bd8fd8814e3e (diff) |
Ticket #54: added ability to modify some codec parameters on the fly
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@867 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src/pjmedia-codec/gsm.c')
-rw-r--r-- | pjmedia/src/pjmedia-codec/gsm.c | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/pjmedia/src/pjmedia-codec/gsm.c b/pjmedia/src/pjmedia-codec/gsm.c index 633ddc1b..00b7d3fd 100644 --- a/pjmedia/src/pjmedia-codec/gsm.c +++ b/pjmedia/src/pjmedia-codec/gsm.c @@ -54,8 +54,10 @@ static pj_status_t gsm_dealloc_codec( pjmedia_codec_factory *factory, static pj_status_t gsm_codec_init( pjmedia_codec *codec, pj_pool_t *pool ); static pj_status_t gsm_codec_open( pjmedia_codec *codec, - pjmedia_codec_param *attr ); + const pjmedia_codec_param *attr ); static pj_status_t gsm_codec_close( pjmedia_codec *codec ); +static pj_status_t gsm_codec_modify(pjmedia_codec *codec, + const pjmedia_codec_param *attr ); static pj_status_t gsm_codec_parse( pjmedia_codec *codec, void *pkt, pj_size_t pkt_size, @@ -80,6 +82,7 @@ static pjmedia_codec_op gsm_op = &gsm_codec_init, &gsm_codec_open, &gsm_codec_close, + &gsm_codec_modify, &gsm_codec_parse, &gsm_codec_encode, &gsm_codec_decode, @@ -385,15 +388,13 @@ static pj_status_t gsm_codec_init( pjmedia_codec *codec, * Open codec. */ static pj_status_t gsm_codec_open( pjmedia_codec *codec, - pjmedia_codec_param *attr ) + const pjmedia_codec_param *attr ) { struct gsm_data *gsm_data = codec->codec_data; pj_assert(gsm_data != NULL); pj_assert(gsm_data->encoder == NULL && gsm_data->decoder == NULL); - PJ_UNUSED_ARG(attr); - gsm_data->encoder = gsm_create(); if (!gsm_data->encoder) return PJMEDIA_CODEC_EFAILED; @@ -431,6 +432,24 @@ static pj_status_t gsm_codec_close( pjmedia_codec *codec ) /* + * Modify codec settings. + */ +static pj_status_t gsm_codec_modify(pjmedia_codec *codec, + const pjmedia_codec_param *attr ) +{ + struct gsm_data *gsm_data = codec->codec_data; + + pj_assert(gsm_data != NULL); + pj_assert(gsm_data->encoder == NULL && gsm_data->decoder == NULL); + + gsm_data->vad_enabled = (attr->setting.vad != 0); + gsm_data->plc_enabled = (attr->setting.plc != 0); + + return PJ_SUCCESS; +} + + +/* * Get frames in the packet. */ static pj_status_t gsm_codec_parse( pjmedia_codec *codec, |