[FFmpeg-cvslog] r18345 - trunk/libavcodec/qcelpdec.c
reynaldo
subversion
Tue Apr 7 03:39:18 CEST 2009
Author: reynaldo
Date: Tue Apr 7 03:39:17 2009
New Revision: 18345
Log:
Move scale factor computation to its own function. Patch by Kenan
Gillet.
Modified:
trunk/libavcodec/qcelpdec.c
Modified: trunk/libavcodec/qcelpdec.c
==============================================================================
--- trunk/libavcodec/qcelpdec.c Mon Apr 6 23:45:02 2009 (r18344)
+++ trunk/libavcodec/qcelpdec.c Tue Apr 7 03:39:17 2009 (r18345)
@@ -412,18 +412,39 @@ static void compute_svector(QCELPContext
}
/**
- * Apply generic gain control.
+ * Compute the gain control
*
- * @param v_out output vector
* @param v_in gain-controlled vector
* @param v_ref vector to control gain of
*
+ * @return gain control
+ *
* FIXME: If v_ref is a zero vector, it energy is zero
* and the behavior of the gain control is
* undefined in the specs.
*
* TIA/EIA/IS-733 2.4.8.3-2/3/4/5, 2.4.8.6
*/
+static float compute_gain_ctrl(const float *v_ref, const float *v_in, const int len)
+{
+ float scalefactor = ff_dot_productf(v_in, v_in, len);
+
+ if(scalefactor)
+ scalefactor = sqrt(ff_dot_productf(v_ref, v_ref, len) / scalefactor);
+ else
+ ff_log_missing_feature(NULL, "Zero energy for gain control", 1);
+ return scalefactor;
+}
+
+/**
+ * Apply generic gain control.
+ *
+ * @param v_out output vector
+ * @param v_in gain-controlled vector
+ * @param v_ref vector to control gain of
+ *
+ * TIA/EIA/IS-733 2.4.8.3, 2.4.8.6
+ */
static void apply_gain_ctrl(float *v_out, const float *v_ref,
const float *v_in)
{
@@ -432,12 +453,7 @@ static void apply_gain_ctrl(float *v_out
for(i=0, j=0; i<4; i++)
{
- scalefactor = ff_dot_productf(v_in + j, v_in + j, 40);
- if(scalefactor)
- scalefactor = sqrt(ff_dot_productf(v_ref + j, v_ref + j, 40)
- / scalefactor);
- else
- ff_log_missing_feature(NULL, "Zero energy for gain control", 1);
+ scalefactor = compute_gain_ctrl(v_ref + j, v_in + j, 40);
for(len=j+40; j<len; j++)
v_out[j] = scalefactor * v_in[j];
}
More information about the ffmpeg-cvslog
mailing list