12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- $OpenBSD: patch-libavcodec_aactab_h,v 1.2 2015/12/06 08:51:46 ajacoutot Exp $
- aactab: move ltp_coef[] from aacdectab to aactab
- avcodec/aac_tablegen: get rid of hardcoded tables entirely
- --- libavcodec/aactab.h.orig Thu Nov 12 02:08:28 2015
- +++ libavcodec/aactab.h Sun Nov 29 18:31:00 2015
- @@ -32,14 +32,69 @@
-
- #include "libavutil/mem.h"
- #include "aac.h"
- -#include "aac_tablegen_decl.h"
-
- #include <stdint.h>
-
- /* NOTE:
- - * Tables in this file are used by the AAC decoder and will be used by the AAC
- - * encoder.
- + * Tables in this file are shared by the AAC decoders and encoder
- */
- +
- +extern float ff_aac_pow2sf_tab[428];
- +extern float ff_aac_pow34sf_tab[428];
- +
- +static inline void ff_aac_tableinit(void)
- +{
- + int i;
- +
- + /* 2^(i/16) for 0 <= i <= 15 */
- + static const float exp2_lut[] = {
- + 1.00000000000000000000,
- + 1.04427378242741384032,
- + 1.09050773266525765921,
- + 1.13878863475669165370,
- + 1.18920711500272106672,
- + 1.24185781207348404859,
- + 1.29683955465100966593,
- + 1.35425554693689272830,
- + 1.41421356237309504880,
- + 1.47682614593949931139,
- + 1.54221082540794082361,
- + 1.61049033194925430818,
- + 1.68179283050742908606,
- + 1.75625216037329948311,
- + 1.83400808640934246349,
- + 1.91520656139714729387,
- + };
- + float t1 = 8.8817841970012523233890533447265625e-16; // 2^(-50)
- + float t2 = 3.63797880709171295166015625e-12; // 2^(-38)
- + int t1_inc_cur, t2_inc_cur;
- + int t1_inc_prev = 0;
- + int t2_inc_prev = 8;
- +
- + for (i = 0; i < 428; i++) {
- + t1_inc_cur = 4 * (i % 4);
- + t2_inc_cur = (8 + 3*i) % 16;
- + if (t1_inc_cur < t1_inc_prev)
- + t1 *= 2;
- + if (t2_inc_cur < t2_inc_prev)
- + t2 *= 2;
- + // A much more efficient and accurate way of doing:
- + // ff_aac_pow2sf_tab[i] = pow(2, (i - POW_SF2_ZERO) / 4.0);
- + // ff_aac_pow34sf_tab[i] = pow(ff_aac_pow2sf_tab[i], 3.0/4.0);
- + ff_aac_pow2sf_tab[i] = t1 * exp2_lut[t1_inc_cur];
- + ff_aac_pow34sf_tab[i] = t2 * exp2_lut[t2_inc_cur];
- + t1_inc_prev = t1_inc_cur;
- + t2_inc_prev = t2_inc_cur;
- + }
- +}
- +
- +/* @name ltp_coef
- + * Table of the LTP coefficients
- + */
- +static const INTFLOAT ltp_coef[8] = {
- + Q30(0.570829f), Q30(0.696616f), Q30(0.813004f), Q30(0.911304f),
- + Q30(0.984900f), Q30(1.067894f), Q30(1.194601f), Q30(1.369533f),
- +};
-
- /* @name tns_tmp2_map
- * Tables of the tmp2[] arrays of LPC coefficients used for TNS.
|