[FFmpeg-soc] [soc]: r2549 - in aac: aac.c aactab.h

superdump subversion at mplayerhq.hu
Sun Jun 22 19:41:19 CEST 2008


Author: superdump
Date: Sun Jun 22 19:41:18 2008
New Revision: 2549

Log:
Make vq into a set of static const tables


Modified:
   aac/aac.c
   aac/aactab.h

Modified: aac/aac.c
==============================================================================
--- aac/aac.c	(original)
+++ aac/aac.c	Sun Jun 22 19:41:18 2008
@@ -372,7 +372,6 @@ typedef struct {
     MDCTContext mdct_small;
     MDCTContext *mdct_ltp;
     DSPContext dsp;
-    int * vq[11];
     ssr_context ssrctx;
     AVRandomState random_state;
     /** @} */
@@ -826,26 +825,6 @@ static int aac_decode_init(AVCodecContex
         tmp[10].a_code, sizeof(tmp[10].a_code[0]), sizeof(tmp[10].a_code[0]),
         384);
 
-    for (i = 0; i < 11; i++) {
-        static const int mod_cb[11] = { 3, 3, 3, 3, 9, 9, 8, 8, 13, 13, 17 };
-        static const int off_cb[11] = { 1, 1, 0, 0, 4, 4, 0, 0,  0,  0,  0 };
-
-        int j, k, values = tmp[i].s/sizeof(tmp[i].a_code[0]);
-        int dim = (i >= 4 ? 2 : 4);
-        int mod = mod_cb[i], off = off_cb[i], index = 0;
-
-        if(!(ac->vq[i] = av_malloc(dim * values * sizeof(int))))
-            return -1;
-
-        for (j = 0; j < values * dim; j += dim) {
-            index = j/dim;
-            for (k = dim - 1; k >= 0; k--) {
-                ac->vq[i][j+k] = (index % mod) - off;
-                index /= mod;
-            }
-        }
-    }
-
     dsputil_init(&ac->dsp, avccontext);
 
     /* Initialize RNG dither */
@@ -1195,7 +1174,8 @@ static int decode_spectral_data(AACConte
                 for (group = 0; group < ics->group_len[g]; group++) {
                     for (k = offsets[i]; k < offsets[i+1]; k += dim) {
                         const int index = get_vlc2(gb, books[cur_cb - 1].table, 6, 3);
-                        const int *vq_ptr = &ac->vq[cur_cb - 1][index * dim], coef_idx = (group << 7) + k;
+                        const int coef_idx = (group << 7) + k;
+                        const int8_t *vq_ptr = &codebook_vectors[cur_cb - 1][index * dim];
                         int j;
                         if (index == -1) {
                             av_log(ac->avccontext, AV_LOG_ERROR, "Error in spectral data\n");
@@ -2168,9 +2148,6 @@ static int aac_decode_close(AVCodecConte
             che_freep(&ac->che[j][i]);
     }
 
-    for (i = 0; i < 11; i++) {
-        av_free(ac->vq[i]);
-    }
     ff_mdct_end(&ac->mdct);
     ff_mdct_end(&ac->mdct_small);
     if (ac->mdct_ltp) {

Modified: aac/aactab.h
==============================================================================
--- aac/aactab.h	(original)
+++ aac/aactab.h	Sun Jun 22 19:41:18 2008
@@ -573,6 +573,152 @@ static const uint8_t bits11[289] = {
 
 #define IVQUANT_SIZE 1024
 
+static const int8_t aac_codebook_vector0[324] = {
+ -1, -1, -1, -1, -1, -1, -1,  0, -1, -1, -1,  1, -1, -1,  0, -1,
+ -1, -1,  0,  0, -1, -1,  0,  1, -1, -1,  1, -1, -1, -1,  1,  0,
+ -1, -1,  1,  1, -1,  0, -1, -1, -1,  0, -1,  0, -1,  0, -1,  1,
+ -1,  0,  0, -1, -1,  0,  0,  0, -1,  0,  0,  1, -1,  0,  1, -1,
+ -1,  0,  1,  0, -1,  0,  1,  1, -1,  1, -1, -1, -1,  1, -1,  0,
+ -1,  1, -1,  1, -1,  1,  0, -1, -1,  1,  0,  0, -1,  1,  0,  1,
+ -1,  1,  1, -1, -1,  1,  1,  0, -1,  1,  1,  1,  0, -1, -1, -1,
+  0, -1, -1,  0,  0, -1, -1,  1,  0, -1,  0, -1,  0, -1,  0,  0,
+  0, -1,  0,  1,  0, -1,  1, -1,  0, -1,  1,  0,  0, -1,  1,  1,
+  0,  0, -1, -1,  0,  0, -1,  0,  0,  0, -1,  1,  0,  0,  0, -1,
+  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  1, -1,  0,  0,  1,  0,
+  0,  0,  1,  1,  0,  1, -1, -1,  0,  1, -1,  0,  0,  1, -1,  1,
+  0,  1,  0, -1,  0,  1,  0,  0,  0,  1,  0,  1,  0,  1,  1, -1,
+  0,  1,  1,  0,  0,  1,  1,  1,  1, -1, -1, -1,  1, -1, -1,  0,
+  1, -1, -1,  1,  1, -1,  0, -1,  1, -1,  0,  0,  1, -1,  0,  1,
+  1, -1,  1, -1,  1, -1,  1,  0,  1, -1,  1,  1,  1,  0, -1, -1,
+  1,  0, -1,  0,  1,  0, -1,  1,  1,  0,  0, -1,  1,  0,  0,  0,
+  1,  0,  0,  1,  1,  0,  1, -1,  1,  0,  1,  0,  1,  0,  1,  1,
+  1,  1, -1, -1,  1,  1, -1,  0,  1,  1, -1,  1,  1,  1,  0, -1,
+  1,  1,  0,  0,  1,  1,  0,  1,  1,  1,  1, -1,  1,  1,  1,  0,
+  1,  1,  1,  1,
+};
+
+static const int8_t aac_codebook_vector2[324] = {
+  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  2,  0,  0,  1,  0,
+  0,  0,  1,  1,  0,  0,  1,  2,  0,  0,  2,  0,  0,  0,  2,  1,
+  0,  0,  2,  2,  0,  1,  0,  0,  0,  1,  0,  1,  0,  1,  0,  2,
+  0,  1,  1,  0,  0,  1,  1,  1,  0,  1,  1,  2,  0,  1,  2,  0,
+  0,  1,  2,  1,  0,  1,  2,  2,  0,  2,  0,  0,  0,  2,  0,  1,
+  0,  2,  0,  2,  0,  2,  1,  0,  0,  2,  1,  1,  0,  2,  1,  2,
+  0,  2,  2,  0,  0,  2,  2,  1,  0,  2,  2,  2,  1,  0,  0,  0,
+  1,  0,  0,  1,  1,  0,  0,  2,  1,  0,  1,  0,  1,  0,  1,  1,
+  1,  0,  1,  2,  1,  0,  2,  0,  1,  0,  2,  1,  1,  0,  2,  2,
+  1,  1,  0,  0,  1,  1,  0,  1,  1,  1,  0,  2,  1,  1,  1,  0,
+  1,  1,  1,  1,  1,  1,  1,  2,  1,  1,  2,  0,  1,  1,  2,  1,
+  1,  1,  2,  2,  1,  2,  0,  0,  1,  2,  0,  1,  1,  2,  0,  2,
+  1,  2,  1,  0,  1,  2,  1,  1,  1,  2,  1,  2,  1,  2,  2,  0,
+  1,  2,  2,  1,  1,  2,  2,  2,  2,  0,  0,  0,  2,  0,  0,  1,
+  2,  0,  0,  2,  2,  0,  1,  0,  2,  0,  1,  1,  2,  0,  1,  2,
+  2,  0,  2,  0,  2,  0,  2,  1,  2,  0,  2,  2,  2,  1,  0,  0,
+  2,  1,  0,  1,  2,  1,  0,  2,  2,  1,  1,  0,  2,  1,  1,  1,
+  2,  1,  1,  2,  2,  1,  2,  0,  2,  1,  2,  1,  2,  1,  2,  2,
+  2,  2,  0,  0,  2,  2,  0,  1,  2,  2,  0,  2,  2,  2,  1,  0,
+  2,  2,  1,  1,  2,  2,  1,  2,  2,  2,  2,  0,  2,  2,  2,  1,
+  2,  2,  2,  2,
+};
+
+static const int8_t aac_codebook_vector4[162] = {
+ -4, -4, -4, -3, -4, -2, -4, -1, -4,  0, -4,  1, -4,  2, -4,  3,
+ -4,  4, -3, -4, -3, -3, -3, -2, -3, -1, -3,  0, -3,  1, -3,  2,
+ -3,  3, -3,  4, -2, -4, -2, -3, -2, -2, -2, -1, -2,  0, -2,  1,
+ -2,  2, -2,  3, -2,  4, -1, -4, -1, -3, -1, -2, -1, -1, -1,  0,
+ -1,  1, -1,  2, -1,  3, -1,  4,  0, -4,  0, -3,  0, -2,  0, -1,
+  0,  0,  0,  1,  0,  2,  0,  3,  0,  4,  1, -4,  1, -3,  1, -2,
+  1, -1,  1,  0,  1,  1,  1,  2,  1,  3,  1,  4,  2, -4,  2, -3,
+  2, -2,  2, -1,  2,  0,  2,  1,  2,  2,  2,  3,  2,  4,  3, -4,
+  3, -3,  3, -2,  3, -1,  3,  0,  3,  1,  3,  2,  3,  3,  3,  4,
+  4, -4,  4, -3,  4, -2,  4, -1,  4,  0,  4,  1,  4,  2,  4,  3,
+  4,  4,
+};
+
+static const int8_t aac_codebook_vector6[128] = {
+  0,  0,  0,  1,  0,  2,  0,  3,  0,  4,  0,  5,  0,  6,  0,  7,
+  1,  0,  1,  1,  1,  2,  1,  3,  1,  4,  1,  5,  1,  6,  1,  7,
+  2,  0,  2,  1,  2,  2,  2,  3,  2,  4,  2,  5,  2,  6,  2,  7,
+  3,  0,  3,  1,  3,  2,  3,  3,  3,  4,  3,  5,  3,  6,  3,  7,
+  4,  0,  4,  1,  4,  2,  4,  3,  4,  4,  4,  5,  4,  6,  4,  7,
+  5,  0,  5,  1,  5,  2,  5,  3,  5,  4,  5,  5,  5,  6,  5,  7,
+  6,  0,  6,  1,  6,  2,  6,  3,  6,  4,  6,  5,  6,  6,  6,  7,
+  7,  0,  7,  1,  7,  2,  7,  3,  7,  4,  7,  5,  7,  6,  7,  7,
+
+};
+
+static const int8_t aac_codebook_vector8[338] = {
+  0,  0,  0,  1,  0,  2,  0,  3,  0,  4,  0,  5,  0,  6,  0,  7,
+  0,  8,  0,  9,  0, 10,  0, 11,  0, 12,  1,  0,  1,  1,  1,  2,
+  1,  3,  1,  4,  1,  5,  1,  6,  1,  7,  1,  8,  1,  9,  1, 10,
+  1, 11,  1, 12,  2,  0,  2,  1,  2,  2,  2,  3,  2,  4,  2,  5,
+  2,  6,  2,  7,  2,  8,  2,  9,  2, 10,  2, 11,  2, 12,  3,  0,
+  3,  1,  3,  2,  3,  3,  3,  4,  3,  5,  3,  6,  3,  7,  3,  8,
+  3,  9,  3, 10,  3, 11,  3, 12,  4,  0,  4,  1,  4,  2,  4,  3,
+  4,  4,  4,  5,  4,  6,  4,  7,  4,  8,  4,  9,  4, 10,  4, 11,
+  4, 12,  5,  0,  5,  1,  5,  2,  5,  3,  5,  4,  5,  5,  5,  6,
+  5,  7,  5,  8,  5,  9,  5, 10,  5, 11,  5, 12,  6,  0,  6,  1,
+  6,  2,  6,  3,  6,  4,  6,  5,  6,  6,  6,  7,  6,  8,  6,  9,
+  6, 10,  6, 11,  6, 12,  7,  0,  7,  1,  7,  2,  7,  3,  7,  4,
+  7,  5,  7,  6,  7,  7,  7,  8,  7,  9,  7, 10,  7, 11,  7, 12,
+  8,  0,  8,  1,  8,  2,  8,  3,  8,  4,  8,  5,  8,  6,  8,  7,
+  8,  8,  8,  9,  8, 10,  8, 11,  8, 12,  9,  0,  9,  1,  9,  2,
+  9,  3,  9,  4,  9,  5,  9,  6,  9,  7,  9,  8,  9,  9,  9, 10,
+  9, 11,  9, 12, 10,  0, 10,  1, 10,  2, 10,  3, 10,  4, 10,  5,
+ 10,  6, 10,  7, 10,  8, 10,  9, 10, 10, 10, 11, 10, 12, 11,  0,
+ 11,  1, 11,  2, 11,  3, 11,  4, 11,  5, 11,  6, 11,  7, 11,  8,
+ 11,  9, 11, 10, 11, 11, 11, 12, 12,  0, 12,  1, 12,  2, 12,  3,
+ 12,  4, 12,  5, 12,  6, 12,  7, 12,  8, 12,  9, 12, 10, 12, 11,
+ 12, 12,
+};
+
+static const int8_t aac_codebook_vector10[578] = {
+  0,  0,  0,  1,  0,  2,  0,  3,  0,  4,  0,  5,  0,  6,  0,  7,
+  0,  8,  0,  9,  0, 10,  0, 11,  0, 12,  0, 13,  0, 14,  0, 15,
+  0, 16,  1,  0,  1,  1,  1,  2,  1,  3,  1,  4,  1,  5,  1,  6,
+  1,  7,  1,  8,  1,  9,  1, 10,  1, 11,  1, 12,  1, 13,  1, 14,
+  1, 15,  1, 16,  2,  0,  2,  1,  2,  2,  2,  3,  2,  4,  2,  5,
+  2,  6,  2,  7,  2,  8,  2,  9,  2, 10,  2, 11,  2, 12,  2, 13,
+  2, 14,  2, 15,  2, 16,  3,  0,  3,  1,  3,  2,  3,  3,  3,  4,
+  3,  5,  3,  6,  3,  7,  3,  8,  3,  9,  3, 10,  3, 11,  3, 12,
+  3, 13,  3, 14,  3, 15,  3, 16,  4,  0,  4,  1,  4,  2,  4,  3,
+  4,  4,  4,  5,  4,  6,  4,  7,  4,  8,  4,  9,  4, 10,  4, 11,
+  4, 12,  4, 13,  4, 14,  4, 15,  4, 16,  5,  0,  5,  1,  5,  2,
+  5,  3,  5,  4,  5,  5,  5,  6,  5,  7,  5,  8,  5,  9,  5, 10,
+  5, 11,  5, 12,  5, 13,  5, 14,  5, 15,  5, 16,  6,  0,  6,  1,
+  6,  2,  6,  3,  6,  4,  6,  5,  6,  6,  6,  7,  6,  8,  6,  9,
+  6, 10,  6, 11,  6, 12,  6, 13,  6, 14,  6, 15,  6, 16,  7,  0,
+  7,  1,  7,  2,  7,  3,  7,  4,  7,  5,  7,  6,  7,  7,  7,  8,
+  7,  9,  7, 10,  7, 11,  7, 12,  7, 13,  7, 14,  7, 15,  7, 16,
+  8,  0,  8,  1,  8,  2,  8,  3,  8,  4,  8,  5,  8,  6,  8,  7,
+  8,  8,  8,  9,  8, 10,  8, 11,  8, 12,  8, 13,  8, 14,  8, 15,
+  8, 16,  9,  0,  9,  1,  9,  2,  9,  3,  9,  4,  9,  5,  9,  6,
+  9,  7,  9,  8,  9,  9,  9, 10,  9, 11,  9, 12,  9, 13,  9, 14,
+  9, 15,  9, 16, 10,  0, 10,  1, 10,  2, 10,  3, 10,  4, 10,  5,
+ 10,  6, 10,  7, 10,  8, 10,  9, 10, 10, 10, 11, 10, 12, 10, 13,
+ 10, 14, 10, 15, 10, 16, 11,  0, 11,  1, 11,  2, 11,  3, 11,  4,
+ 11,  5, 11,  6, 11,  7, 11,  8, 11,  9, 11, 10, 11, 11, 11, 12,
+ 11, 13, 11, 14, 11, 15, 11, 16, 12,  0, 12,  1, 12,  2, 12,  3,
+ 12,  4, 12,  5, 12,  6, 12,  7, 12,  8, 12,  9, 12, 10, 12, 11,
+ 12, 12, 12, 13, 12, 14, 12, 15, 12, 16, 13,  0, 13,  1, 13,  2,
+ 13,  3, 13,  4, 13,  5, 13,  6, 13,  7, 13,  8, 13,  9, 13, 10,
+ 13, 11, 13, 12, 13, 13, 13, 14, 13, 15, 13, 16, 14,  0, 14,  1,
+ 14,  2, 14,  3, 14,  4, 14,  5, 14,  6, 14,  7, 14,  8, 14,  9,
+ 14, 10, 14, 11, 14, 12, 14, 13, 14, 14, 14, 15, 14, 16, 15,  0,
+ 15,  1, 15,  2, 15,  3, 15,  4, 15,  5, 15,  6, 15,  7, 15,  8,
+ 15,  9, 15, 10, 15, 11, 15, 12, 15, 13, 15, 14, 15, 15, 15, 16,
+ 16,  0, 16,  1, 16,  2, 16,  3, 16,  4, 16,  5, 16,  6, 16,  7,
+ 16,  8, 16,  9, 16, 10, 16, 11, 16, 12, 16, 13, 16, 14, 16, 15,
+ 16, 16,
+};
+
+static const int8_t *codebook_vectors[] = {
+    aac_codebook_vector0, aac_codebook_vector0, aac_codebook_vector2,
+    aac_codebook_vector2, aac_codebook_vector4, aac_codebook_vector4,
+    aac_codebook_vector6, aac_codebook_vector6, aac_codebook_vector8,
+    aac_codebook_vector8, aac_codebook_vector10,
+};
+
 #ifdef CONFIG_HARDCODED_TABLES
 
 static const float ivquant_tab[IVQUANT_SIZE] = {



More information about the FFmpeg-soc mailing list