[Asterisk-cvs] asterisk/codecs codec_speex.c,1.8,1.9
markster at lists.digium.com
markster at lists.digium.com
Wed Dec 29 20:46:02 CST 2004
Update of /usr/cvsroot/asterisk/codecs
In directory mongoose.digium.com:/tmp/cvs-serv22820/codecs
Modified Files:
codec_speex.c
Log Message:
Fix Speex config issue (bug #3175)
Index: codec_speex.c
===================================================================
RCS file: /usr/cvsroot/asterisk/codecs/codec_speex.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- codec_speex.c 1 Oct 2004 13:16:44 -0000 1.8
+++ codec_speex.c 30 Dec 2004 01:40:47 -0000 1.9
@@ -21,7 +21,6 @@
static int vbr = 0;
static int vbr_quality = 0;
static int abr = 0;
-static int abr_quality = 0;
static int dtx = 0;
#define TYPE_SILENCE 0x2
@@ -82,20 +81,21 @@
speex_bits_init(&tmp->bits);
speex_bits_reset(&tmp->bits);
speex_encoder_ctl(tmp->speex, SPEEX_GET_FRAME_SIZE, &tmp->framesize);
- speex_encoder_ctl(tmp->speex, SPEEX_SET_QUALITY, &quality);
speex_encoder_ctl(tmp->speex, SPEEX_SET_COMPLEXITY, &complexity);
- if (vad)
- speex_encoder_ctl(tmp->speex, SPEEX_SET_VAD, &vad);
- if (dtx)
- speex_encoder_ctl(tmp->speex, SPEEX_SET_DTX, &vad);
+ if(!abr && !vbr) {
+ speex_encoder_ctl(tmp->speex, SPEEX_SET_QUALITY, &quality);
+ if (vad)
+ speex_encoder_ctl(tmp->speex, SPEEX_SET_VAD, &vad);
+ if (dtx)
+ speex_encoder_ctl(tmp->speex, SPEEX_SET_DTX, &vad);
+ }
if (vbr) {
speex_encoder_ctl(tmp->speex, SPEEX_SET_VBR, &vbr);
speex_encoder_ctl(tmp->speex, SPEEX_SET_VBR_QUALITY, &vbr_quality);
}
if (abr) {
- speex_encoder_ctl(tmp->speex, SPEEX_SET_VBR, &abr);
- speex_encoder_ctl(tmp->speex, SPEEX_SET_VBR_QUALITY, &abr_quality);
+ speex_encoder_ctl(tmp->speex, SPEEX_SET_ABR, &abr);
}
tmp->tail = 0;
}
@@ -342,15 +342,7 @@
} else
ast_log(LOG_ERROR,"Error! VBR Quality must be 0-10\n");
} else if (!strcasecmp(var->name, "abr_quality")) {
- res = abs(atoi(var->value));
- if (option_verbose > 2)
- ast_verbose(VERBOSE_PREFIX_3 "CODEC SPEEX: Setting ABR Quality to %d\n",res);
- if (res > -1 && res < 11) {
- ast_mutex_lock(&localuser_lock);
- abr_quality = res;
- ast_mutex_unlock(&localuser_lock);
- } else
- ast_log(LOG_ERROR,"Error! ABR Quality must be 0-10\n");
+ ast_log(LOG_ERROR,"Error! ABR Quality setting obsolete, set ABR to desired bitrate\n");
} else if (!strcasecmp(var->name, "enhancement")) {
ast_mutex_lock(&localuser_lock);
enhancement = ast_true(var->value) ? 1 : 0;
@@ -364,11 +356,18 @@
ast_verbose(VERBOSE_PREFIX_3 "CODEC SPEEX: VBR Mode. [%s]\n",vbr ? "on" : "off");
ast_mutex_unlock(&localuser_lock);
} else if (!strcasecmp(var->name, "abr")) {
- ast_mutex_lock(&localuser_lock);
- abr = ast_true(var->value) ? 1 : 0;
+ res = abs(atoi(var->value));
if (option_verbose > 2)
- ast_verbose(VERBOSE_PREFIX_3 "CODEC SPEEX: ABR Mode. [%s]\n",vbr ? "on" : "off");
- ast_mutex_unlock(&localuser_lock);
+ if(res > 0)
+ ast_verbose(VERBOSE_PREFIX_3 "CODEC SPEEX: Setting ABR target bitrate to %d\n",res);
+ else
+ ast_verbose(VERBOSE_PREFIX_3 "CODEC SPEEX: Disabling ABR\n",res);
+ if (res >= 0) {
+ ast_mutex_lock(&localuser_lock);
+ abr = res;
+ ast_mutex_unlock(&localuser_lock);
+ } else
+ ast_log(LOG_ERROR,"Error! ABR target bitrate must be >= 0\n");
} else if (!strcasecmp(var->name, "vad")) {
ast_mutex_lock(&localuser_lock);
vad = ast_true(var->value) ? 1 : 0;
More information about the svn-commits
mailing list