[FFmpeg-soc] [soc]: r3216 - aacenc/aacpsy.c
kostya
subversion at mplayerhq.hu
Wed Aug 13 14:28:38 CEST 2008
Author: kostya
Date: Wed Aug 13 14:28:38 2008
New Revision: 3216
Log:
Use common pow2sf_tab
Modified:
aacenc/aacpsy.c
Modified: aacenc/aacpsy.c
==============================================================================
--- aacenc/aacpsy.c (original)
+++ aacenc/aacpsy.c Wed Aug 13 14:28:38 2008
@@ -26,10 +26,7 @@
#include "avcodec.h"
#include "aacpsy.h"
-
-//borrowed from aac.c
-static float pow2sf_tab[340];
-
+#include "aactab.h"
/**
* Convert coefficients to integers.
@@ -41,8 +38,8 @@ static inline int convert_coeffs(float *
int i, sign, sum = 0;
for(i = 0; i < size; i++){
sign = in[i] > 0.0;
- out[i] = (int)(pow(FFABS(in[i]) * pow2sf_tab[200 - scale_idx + SCALE_ONE_POS - SCALE_DIV_512], 0.75) + 0.4054);
- if(out[i] > 8191) out[i] = 8191;
+ out[i] = (int)(pow(FFABS(in[i]) * ff_aac_pow2sf_tab[200 - scale_idx + SCALE_ONE_POS - SCALE_DIV_512], 0.75) + 0.4054);
+ out[i] = av_clip(out[i], 0, 8191);
sum += out[i];
if(sign) out[i] = -out[i];
}
@@ -50,7 +47,7 @@ static inline int convert_coeffs(float *
}
static inline float unquant(int q, int scale_idx){
- return (FFABS(q) * cbrt(q*1.0)) * pow2sf_tab[200 + scale_idx - SCALE_ONE_POS];
+ return (FFABS(q) * cbrt(q*1.0)) * ff_aac_pow2sf_tab[200 + scale_idx - SCALE_ONE_POS];
}
static inline float calc_distortion(float *c, int size, int scale_idx)
{
@@ -59,9 +56,9 @@ static inline float calc_distortion(floa
float coef, unquant, sum = 0.0f;
for(i = 0; i < size; i++){
coef = FFABS(c[i]);
- q = (int)(pow(FFABS(coef) * pow2sf_tab[200 - scale_idx + SCALE_ONE_POS - SCALE_DIV_512], 0.75) + 0.4054);
+ q = (int)(pow(FFABS(coef) * ff_aac_pow2sf_tab[200 - scale_idx + SCALE_ONE_POS - SCALE_DIV_512], 0.75) + 0.4054);
q = av_clip(q, 0, 8191);
- unquant = (q * cbrt(q)) * pow2sf_tab[200 + scale_idx - SCALE_ONE_POS + SCALE_DIV_512];
+ unquant = (q * cbrt(q)) * ff_aac_pow2sf_tab[200 + scale_idx - SCALE_ONE_POS + SCALE_DIV_512];
sum += (coef - unquant) * (coef - unquant);
}
return sum;
@@ -873,8 +870,10 @@ int av_cold ff_aac_psy_init(AACPsyContex
return -1;
}
- for (i = 0; i < 340; i++)
- pow2sf_tab[i] = pow(2, (i - 200)/4.);
+#ifndef CONFIG_HARDCODED_TABLES
+ for (i = 0; i < 316; i++)
+ ff_aac_pow2sf_tab[i] = pow(2, (i - 200)/4.);
+#endif /* CONFIG_HARDCODED_TABLES */
ctx->avctx = avctx;
ctx->flags = flags;
More information about the FFmpeg-soc
mailing list