Author: cmcq
Date: Thu Jun  4 01:05:07 2009
New Revision: 4381

Log:
Use separate constants for clipping and scaling PCM values.

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

Modified: amr/amrnbfloatdata.h
==============================================================================
--- amr/amrnbfloatdata.h        Thu Jun  4 01:00:21 2009        (r4380)
+++ amr/amrnbfloatdata.h        Thu Jun  4 01:05:07 2009        (r4381)
@@ -39,7 +39,8 @@
 #define AMR_SUBFRAME_SIZE  40
 
 // AMR is designed to produce 16-bit PCM samples (3GPP TS 26.090 4.2)
-#define AMR_SAMPLE_SCALE 32768.0
+#define AMR_SAMPLE_BOUND 32768.0
+#define AMR_SAMPLE_SCALE (1.0/32768.0)
 
 // definition of modes for decoder
 #define NO_DATA 15

Modified: amr/amrnbfloatdec.c
==============================================================================
--- amr/amrnbfloatdec.c Thu Jun  4 01:00:21 2009        (r4380)
+++ amr/amrnbfloatdec.c Thu Jun  4 01:05:07 2009        (r4381)
@@ -872,9 +872,9 @@ static int synthesis(AMRContext *p, floa
 
     for (i = 0; i < AMR_SUBFRAME_SIZE; i++)
         // detect overflow
-        if (fabsf(samples[i]) > AMR_SAMPLE_SCALE) {
+        if (fabsf(samples[i]) > AMR_SAMPLE_BOUND) {
             overflow_temp = 1;
-            samples[i] = av_clipf(samples[i], -AMR_SAMPLE_SCALE, 
AMR_SAMPLE_SCALE);
+            samples[i] = av_clipf(samples[i], -AMR_SAMPLE_BOUND, 
AMR_SAMPLE_BOUND);
         }
 
     return overflow_temp;
@@ -998,7 +998,7 @@ static int amrnb_decode_frame(AVCodecCon
 
         for (i = 0; i < AMR_SUBFRAME_SIZE; i++)
             buf_out[subframe * AMR_SUBFRAME_SIZE + i] =
-                p->samples_in[LP_FILTER_ORDER + i] / AMR_SAMPLE_SCALE;
+                p->samples_in[LP_FILTER_ORDER + i] * AMR_SAMPLE_SCALE;
     }
 
     /* report how many samples we got */
_______________________________________________
FFmpeg-soc mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc

Reply via email to