From 931c48d853c586090b85beb75335d26eda88de6a Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Tue, 27 May 2008 00:24:26 +0000 Subject: Changed build optimizations settings for Speex, pjmedia, and symbian_sound for Symbian. Speex/8000 now also runs on Symbian! git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1965 74dad513-b988-da41-8d7b-12977e46ad98 --- pjmedia/src/pjmedia-codec/speex_codec.c | 51 +++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 5 deletions(-) (limited to 'pjmedia/src/pjmedia-codec/speex_codec.c') diff --git a/pjmedia/src/pjmedia-codec/speex_codec.c b/pjmedia/src/pjmedia-codec/speex_codec.c index a01ccb06..dc2c7400 100644 --- a/pjmedia/src/pjmedia-codec/speex_codec.c +++ b/pjmedia/src/pjmedia-codec/speex_codec.c @@ -37,9 +37,6 @@ #define THIS_FILE "speex_codec.c" -#define DEFAULT_QUALITY 10 -#define DEFAULT_COMPLEXITY 10 - /* Prototypes for Speex factory */ static pj_status_t spx_test_alloc( pjmedia_codec_factory *factory, const pjmedia_codec_info *id ); @@ -211,8 +208,12 @@ PJ_DEF(pj_status_t) pjmedia_codec_speex_init( pjmedia_endpt *endpt, } /* Get defaults */ - if (quality <= 0) quality = DEFAULT_QUALITY; - if (complexity <= 0) complexity = DEFAULT_COMPLEXITY; + if (quality < 0) quality = PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY; + if (complexity < 0) complexity = PJMEDIA_CODEC_SPEEX_DEFAULT_COMPLEXITY; + + /* Validate quality & complexity */ + PJ_ASSERT_RETURN(quality >= 0 && quality <= 10, PJ_EINVAL); + PJ_ASSERT_RETURN(complexity >= 1 && complexity <= 10, PJ_EINVAL); /* Create Speex codec factory. */ spx_factory.base.op = &spx_factory_op; @@ -299,6 +300,46 @@ PJ_DEF(pj_status_t) pjmedia_codec_speex_init_default(pjmedia_endpt *endpt) return pjmedia_codec_speex_init(endpt, 0, -1, -1); } +/* + * Change the settings of Speex codec. + */ +PJ_DEF(pj_status_t) pjmedia_codec_speex_set_param(unsigned clock_rate, + int quality, + int complexity) +{ + unsigned i; + + /* Get defaults */ + if (quality < 0) quality = PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY; + if (complexity < 0) complexity = PJMEDIA_CODEC_SPEEX_DEFAULT_COMPLEXITY; + + /* Validate quality & complexity */ + PJ_ASSERT_RETURN(quality >= 0 && quality <= 10, PJ_EINVAL); + PJ_ASSERT_RETURN(complexity >= 1 && complexity <= 10, PJ_EINVAL); + + /* Apply the settings */ + for (i=0; i= 0) { + PJ_LOG(5,(THIS_FILE, "Adjusting quality to 5 for uwb")); + spx_factory.speex_param[PARAM_UWB].quality = 5; + } + + status = get_speex_info(&spx_factory.speex_param[i]); + + return status; + } + } + + return PJ_EINVAL; +} + /* * Unregister Speex codec factory from pjmedia endpoint and deinitialize * the Speex codec library. -- cgit v1.2.3