summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2013-02-14 02:00:13 +0000
committerLiong Sauw Ming <ming@teluu.com>2013-02-14 02:00:13 +0000
commitebfdfba881be90f397cbefad1535a24e56650f42 (patch)
tree60952e6873562c266468595ba8309ff10228afa0
parentdaf6fa9d2e92d91df192d59540058f5f0f99a477 (diff)
Re #1608: Fixed array size calculation of amr bitrates array.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4348 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/src/pjmedia-codec/opencore_amr.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/pjmedia/src/pjmedia-codec/opencore_amr.c b/pjmedia/src/pjmedia-codec/opencore_amr.c
index cc6a4ab3..152439b5 100644
--- a/pjmedia/src/pjmedia-codec/opencore_amr.c
+++ b/pjmedia/src/pjmedia-codec/opencore_amr.c
@@ -142,7 +142,7 @@ static pjmedia_codec_factory_op amr_factory_op =
&amr_enum_codecs,
&amr_alloc_codec,
&amr_dealloc_codec,
- &pjmedia_codec_opencore_amrnb_deinit
+ &pjmedia_codec_opencore_amr_deinit
};
@@ -194,6 +194,12 @@ static pjmedia_codec_amr_config def_config[2] =
static const pj_uint16_t* amr_bitrates[2] =
{pjmedia_codec_amrnb_bitrates, pjmedia_codec_amrwb_bitrates};
+static const unsigned amr_bitrates_size[2] =
+{
+ PJ_ARRAY_SIZE(pjmedia_codec_amrnb_bitrates),
+ PJ_ARRAY_SIZE(pjmedia_codec_amrwb_bitrates)
+};
+
/*
* Initialize and register AMR codec factory to pjmedia endpoint.
@@ -326,7 +332,7 @@ amr_set_config(unsigned idx, const pjmedia_codec_amr_config *config)
def_config[idx] = *config;
/* Normalize bitrate. */
- nbitrates = PJ_ARRAY_SIZE(amr_bitrates[idx]);
+ nbitrates = amr_bitrates_size[idx];
if (def_config[idx].bitrate < amr_bitrates[idx][0]) {
def_config[idx].bitrate = amr_bitrates[idx][0];
} else if (def_config[idx].bitrate > amr_bitrates[idx][nbitrates-1]) {
@@ -409,7 +415,7 @@ static pj_status_t amr_default_attr( pjmedia_codec_factory *factory,
attr->info.clock_rate = (id->clock_rate <= 8000? 8000: 16000);
attr->info.channel_cnt = 1;
attr->info.avg_bps = def_config[idx].bitrate;
- attr->info.max_bps = amr_bitrates[idx][PJ_ARRAY_SIZE(amr_bitrates[idx])-1];
+ attr->info.max_bps = amr_bitrates[idx][amr_bitrates_size[idx]-1];
attr->info.pcm_bits_per_sample = 16;
attr->info.frm_ptime = 20;
attr->info.pt = (pj_uint8_t)id->pt;
@@ -562,8 +568,7 @@ static pj_status_t amr_codec_open( pjmedia_codec *codec,
idx = (attr->info.clock_rate <= 8000? IDX_AMR_NB: IDX_AMR_WB);
enc_mode = pjmedia_codec_amr_get_mode(attr->info.avg_bps);
- pj_assert(enc_mode >= 0 &&
- enc_mode < PJ_ARRAY_SIZE(amr_bitrates[idx]));
+ pj_assert(enc_mode >= 0 && enc_mode < amr_bitrates_size[idx]);
/* Check octet-align */
for (i = 0; i < attr->setting.dec_fmtp.cnt; ++i) {
@@ -597,9 +602,7 @@ static pj_status_t amr_codec_open( pjmedia_codec *codec,
p = pj_strbuf(&attr->setting.enc_fmtp.param[i].val);
l = pj_strlen(&attr->setting.enc_fmtp.param[i].val);
while (l--) {
- if (*p>='0' &&
- *p<=('0'+PJ_ARRAY_SIZE(amr_bitrates[idx])-1))
- {
+ if (*p>='0' && *p<=('0'+amr_bitrates_size[idx]-1)) {
pj_int8_t tmp = *p - '0' - enc_mode;
if (PJ_ABS(diff) > PJ_ABS(tmp) ||
@@ -775,7 +778,7 @@ static pj_status_t amr_codec_parse( pjmedia_codec *codec,
return status;
/* Check for Change Mode Request. */
- if (cmr < PJ_ARRAY_SIZE(amr_bitrates[idx]) && amr_data->enc_mode != cmr) {
+ if (cmr < amr_bitrates_size[idx] && amr_data->enc_mode != cmr) {
amr_data->enc_mode = cmr;
TRACE_((THIS_FILE, "AMR encoder switched mode to %d (%dbps)",
amr_data->enc_mode,