diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-12-30 02:46:57 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-12-30 02:46:57 +0000 |
commit | 1c649378ac22d512909ebb2fbabfac041378991e (patch) | |
tree | f10e1790240c9574d0653888d95cd35bca60401b /pjmedia/src/pjmedia-codec/ilbc.c | |
parent | 9169ab7a66e2370f5d5733e4b37e6a22ea3ba758 (diff) |
Implement ticket #40: support for asymmetric encoding/decoding ptime (e.g. with iLBC when local and remote have different mode)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@874 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src/pjmedia-codec/ilbc.c')
-rw-r--r-- | pjmedia/src/pjmedia-codec/ilbc.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/pjmedia/src/pjmedia-codec/ilbc.c b/pjmedia/src/pjmedia-codec/ilbc.c index a16ed1cf..a21b6889 100644 --- a/pjmedia/src/pjmedia-codec/ilbc.c +++ b/pjmedia/src/pjmedia-codec/ilbc.c @@ -63,7 +63,7 @@ static pj_status_t ilbc_dealloc_codec(pjmedia_codec_factory *factory, static pj_status_t ilbc_codec_init(pjmedia_codec *codec, pj_pool_t *pool ); static pj_status_t ilbc_codec_open(pjmedia_codec *codec, - const pjmedia_codec_param *attr ); + pjmedia_codec_param *attr ); static pj_status_t ilbc_codec_close(pjmedia_codec *codec ); static pj_status_t ilbc_codec_modify(pjmedia_codec *codec, const pjmedia_codec_param *attr ); @@ -364,20 +364,15 @@ static pj_status_t ilbc_codec_init(pjmedia_codec *codec, * Open codec. */ static pj_status_t ilbc_codec_open(pjmedia_codec *codec, - const pjmedia_codec_param *param_attr ) + pjmedia_codec_param *attr ) { struct ilbc_codec *ilbc_codec = (struct ilbc_codec*)codec; - pjmedia_codec_param attr_copy, *attr; pj_status_t status; pj_assert(ilbc_codec != NULL); pj_assert(ilbc_codec->enc_ready == PJ_FALSE && ilbc_codec->dec_ready == PJ_FALSE); - /* Copy param to temporary location since we need to modify fmtp_mode */ - pj_memcpy(&attr_copy, param_attr, sizeof(*param_attr)); - attr = &attr_copy; - /* Decoder mode must be set */ PJ_ASSERT_RETURN(attr->setting.dec_fmtp_mode==20 || attr->setting.dec_fmtp_mode==30, PJMEDIA_CODEC_EINMODE); @@ -392,6 +387,13 @@ static pj_status_t ilbc_codec_open(pjmedia_codec *codec, PJ_ASSERT_RETURN(attr->setting.enc_fmtp_mode==20 || attr->setting.enc_fmtp_mode==30, PJMEDIA_CODEC_EINMODE); + /* Update enc_ptime in the param */ + if (attr->setting.enc_fmtp_mode != attr->setting.dec_fmtp_mode) { + attr->info.enc_ptime = attr->setting.enc_fmtp_mode; + } else { + attr->info.enc_ptime = 0; + } + /* Create enc */ ilbc_codec->enc_frame_size = initEncode(&ilbc_codec->enc, attr->setting.enc_fmtp_mode); |