[FFmpeg-soc] [soc]: r4786 - in amr: amrnbfloatdata.h amrnbfloatdec.c

cmcq subversion at mplayerhq.hu
Thu Jul 23 12:19:24 CEST 2009


Author: cmcq
Date: Thu Jul 23 12:19:24 2009
New Revision: 4786

Log:
Copy a typo in the ref source

Modified:
   amr/amrnbfloatdata.h
   amr/amrnbfloatdec.c

Modified: amr/amrnbfloatdata.h
==============================================================================
--- amr/amrnbfloatdata.h	Thu Jul 23 12:18:54 2009	(r4785)
+++ amr/amrnbfloatdata.h	Thu Jul 23 12:19:24 2009	(r4786)
@@ -2302,6 +2302,10 @@ static const float gains_low[64][2] = {
 
 // pre-processing tables
 
+// The specification says 0.8, which should be 13107, but the reference C code
+// uses 13017 instead. (Amusingly the same applies to SHARP_MAX in g729dec.c.)
+#define SHARP_MAX 0.79449462890625
+
 // impulse response filter tables converted to float from Q15 int32_t used for
 // anti-sparseness processing
 static const float ir_filter_strong_MODE_795[AMR_SUBFRAME_SIZE] = {

Modified: amr/amrnbfloatdec.c
==============================================================================
--- amr/amrnbfloatdec.c	Thu Jul 23 12:18:54 2009	(r4785)
+++ amr/amrnbfloatdec.c	Thu Jul 23 12:19:24 2009	(r4786)
@@ -71,7 +71,7 @@ typedef struct AMRContext {
     float                     pitch_gain[5]; ///< quantified pitch gains for the current and previous four subframes
     float                     fixed_gain[5]; ///< quantified fixed gains for the current and previous four subframes
 
-    float                              beta; ///< beta = previous pitch_gain, bounded by [0.0,0.8]
+    float                              beta; ///< beta = previous pitch_gain, bounded by [0.0,SHARP_MAX]
     int                          diff_count; ///< the number of subframes for which diff has been above 0.65
     int                          hang_count; ///< the number of subframes since a hangover period started
 
@@ -807,7 +807,7 @@ static void decode_gains(AMRContext *p, 
     // MODE_475 only updates on the 2nd and 4th subframes - this follows from
     // the fact that the gains for two subframes are jointly quantised.
     if (mode != MODE_475 || subframe & 1)
-        p->beta = av_clipf(p->pitch_gain[4], 0.0, 0.8);
+        p->beta = av_clipf(p->pitch_gain[4], 0.0, SHARP_MAX);
 
     // ^g_c = g_c' * ^gamma_gc
     p->fixed_gain[4] = fixed_gain_factor


More information about the FFmpeg-soc mailing list