---
 libavcodec/ac3enc.c |   20 ++++++--------------
 1 files changed, 6 insertions(+), 14 deletions(-)

diff --git libavcodec/ac3enc.c libavcodec/ac3enc.c
index 569ec46..506b709 100644
--- libavcodec/ac3enc.c
+++ libavcodec/ac3enc.c
@@ -87,16 +87,8 @@ static int16_t xsin1[128];
 /* new exponents are sent if their Norm 1 exceed this number */
 #define EXP_DIFF_THRESHOLD 1000
 
-static inline int16_t fix15(float a)
-{
-    int v;
-    v = (int)(a * (float)(1 << 15));
-    if (v < -32767)
-        v = -32767;
-    else if (v > 32767)
-        v = 32767;
-    return v;
-}
+/** convert float in range [-1..1] to int16_t in range [-32767..32767] */
+#define FIX15(a) ((int16_t)av_clip((int)(a * (float)(1 << 15)), -32767, 32767))
 
 typedef struct IComplex {
     int16_t re,im;
@@ -111,8 +103,8 @@ static av_cold void fft_init(int ln)
 
     for (i = 0; i < (n/2); i++) {
         alpha = 2 * M_PI * (float)i / (float)n;
-        costab[i] = fix15(cos(alpha));
-        sintab[i] = fix15(sin(alpha));
+        costab[i] = FIX15(cos(alpha));
+        sintab[i] = FIX15(sin(alpha));
     }
 }
 
@@ -123,8 +115,8 @@ static av_cold void mdct_init(void)
     fft_init(MDCT_NBITS - 2);
     for (i = 0; i < MDCT_SAMPLES/4; i++) {
         float alpha = 2 * M_PI * (i + 1.0 / 8.0) / (float)MDCT_SAMPLES;
-        xcos1[i] = fix15(-cos(alpha));
-        xsin1[i] = fix15(-sin(alpha));
+        xcos1[i] = FIX15(-cos(alpha));
+        xsin1[i] = FIX15(-sin(alpha));
     }
 }
 
_______________________________________________
FFmpeg-soc mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc

Reply via email to