]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/ac3dec_data.c
eac3dec: use 16-bit pre-mantissas instead of 24-bit in AHT decoding. it is
[ffmpeg] / libavcodec / ac3dec_data.c
index 86e61aa3795466f83c10078b8b3bc1f9604b2f05..b9f98f904e5491175ef4ba30db0866eaf7cd23b2 100644 (file)
  */
 
 /**
- * @file ac3dec_data.c
+ * @file libavcodec/ac3dec_data.c
  * tables taken directly from the AC-3 spec.
  */
 
 #include "ac3dec_data.h"
 #include "ac3.h"
 
+/**
+ * table used to ungroup 3 values stored in 5 bits.
+ * used by bap=1 mantissas and GAQ.
+ * ff_ac3_ungroup_3_in_5_bits_tab[i] = { i/9, (i%9)/3, (i%9)%3 }
+ */
+const uint8_t ff_ac3_ungroup_3_in_5_bits_tab[32][3] = {
+    { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 2 }, { 0, 1, 0 },
+    { 0, 1, 1 }, { 0, 1, 2 }, { 0, 2, 0 }, { 0, 2, 1 },
+    { 0, 2, 2 }, { 1, 0, 0 }, { 1, 0, 1 }, { 1, 0, 2 },
+    { 1, 1, 0 }, { 1, 1, 1 }, { 1, 1, 2 }, { 1, 2, 0 },
+    { 1, 2, 1 }, { 1, 2, 2 }, { 2, 0, 0 }, { 2, 0, 1 },
+    { 2, 0, 2 }, { 2, 1, 0 }, { 2, 1, 1 }, { 2, 1, 2 },
+    { 2, 2, 0 }, { 2, 2, 1 }, { 2, 2, 2 }, { 3, 0, 0 },
+    { 3, 0, 1 }, { 3, 0, 2 }, { 3, 1, 0 }, { 3, 1, 1 }
+};
+
 const uint8_t ff_eac3_hebap_tab[64] = {
     0, 1, 2, 3, 4, 5, 6, 7, 8, 8,
     8, 8, 9, 9, 9, 10, 10, 10, 10, 11,
@@ -74,15 +90,15 @@ const int16_t ff_eac3_gaq_remap_2_4_a[9][2] = {
  * ff_eac3_gaq_remap_3_4_b[hebap-8][Gk=2,4]
  */
 const int16_t ff_eac3_gaq_remap_2_4_b[9][2] = {
-    {  -5461, -1170},
-    { -11703, -4915},
-    { -14199, -6606},
-    { -15327, -7412},
-    { -15864, -7805},
-    { -16126, -7999},
-    { -16255, -8096},
-    { -16320, -8144},
-    { -16352, -8168}
+    {  -5461, -1170 },
+    { -11703, -4915 },
+    { -14199, -6606 },
+    { -15327, -7412 },
+    { -15864, -7805 },
+    { -16126, -7999 },
+    { -16255, -8096 },
+    { -16320, -8144 },
+    { -16352, -8168 }
 };
 
 static const int16_t vq_hebap1[4][6] = {
@@ -1055,7 +1071,7 @@ static const int16_t vq_hebap7[512][6] = {
 {   3231,   -3284,   27336,    4174,   -1683,     497},
 };
 
-const int16_t (*ff_eac3_vq_hebap[8])[6] = {
+const int16_t (* const ff_eac3_mantissa_vq[8])[6] = {
     NULL,
     vq_hebap1,
     vq_hebap2,