aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/dcaenc.h
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2013-04-24 09:41:36 +0000
committerPaul B Mahol <onemda@gmail.com>2013-04-25 14:21:00 +0000
commite1ba5fc96838fdadec2c36820c44af54bd8386eb (patch)
tree0e5fd60e8f9307f816031ef1d520f579917702b5 /libavcodec/dcaenc.h
parent8f0db04b086925f5358ef605e2a77bee041e5dbf (diff)
downloadffmpeg-e1ba5fc96838fdadec2c36820c44af54bd8386eb.tar.gz
dcaenc: update
Long story short: previous code was useless and was port of older dcaenc, this commit just "sync" with current dcaenc, hopefuly making this encoder more useful. Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavcodec/dcaenc.h')
-rw-r--r--libavcodec/dcaenc.h601
1 files changed, 84 insertions, 517 deletions
diff --git a/libavcodec/dcaenc.h b/libavcodec/dcaenc.h
index 121e5dadec..20f557bd21 100644
--- a/libavcodec/dcaenc.h
+++ b/libavcodec/dcaenc.h
@@ -1,6 +1,6 @@
/*
* DCA encoder tables
- * Copyright (C) 2008 Alexander E. Patrakov
+ * Copyright (C) 2008-2012 Alexander E. Patrakov
*
* This file is part of FFmpeg.
*
@@ -24,523 +24,90 @@
#include <stdint.h>
-/* This is a scaled version of the response of the reference decoder to
- this vector of subband samples: ( 1.0 0.0 0.0 ... 0.0 )
- */
+typedef struct {
+ int32_t m;
+ int32_t e;
+} softfloat;
-static const int32_t UnQMF[512] = {
- 7,
- 4,
- -961,
- -2844,
- -8024,
- -18978,
- -32081,
- -15635,
- -16582,
- -18359,
- -17180,
- -14868,
- -11664,
- -8051,
- -4477,
- -1327,
- -1670,
- -6019,
- -11590,
- -18030,
- -24762,
- -30965,
- -35947,
- -36145,
- -37223,
- -86311,
- -57024,
- -27215,
- -11274,
- -4684,
- 42,
- 108,
- 188,
- 250,
- -1007,
- -596,
- -2289,
- -12218,
- -27191,
- -124367,
- -184256,
- -250538,
- -323499,
- -397784,
- -468855,
- -532072,
- -583000,
- -618041,
- -777916,
- -783868,
- -765968,
- -724740,
- -662468,
- -583058,
- -490548,
- -401623,
- -296090,
- -73154,
- -36711,
- -7766,
- -2363,
- -4905,
- 2388,
- 2681,
- 5651,
- 4086,
- 71110,
- 139742,
- 188067,
- 151237,
- 101355,
- 309917,
- 343690,
- 358839,
- 357555,
- 334606,
- 289625,
- 224152,
- 142063,
- 48725,
- 74996,
- 238425,
- 411666,
- 584160,
- 744276,
- 880730,
- 983272,
- 1041933,
- 1054396,
- 789531,
- 851022,
- 864032,
- 675431,
- 418134,
- 35762,
- 66911,
- 103502,
- 136403,
- -55147,
- -245269,
- -499595,
- -808470,
- -1136858,
- -2010912,
- -2581654,
- -3151901,
- -3696328,
- -4196599,
- -4633761,
- -4993229,
- -5262495,
- -5436311,
- -477650,
- -901314,
- -1308090,
- -1677468,
- -1985525,
- -2212848,
- -2341196,
- -2373915,
- -2269552,
- -2620489,
- -2173858,
- -1629954,
- -946595,
- -193499,
- 1119459,
- 1138657,
- 1335311,
- 1126544,
- 2765033,
- 3139603,
- 3414913,
- 3599213,
- 3676363,
- 3448981,
- 3328726,
- 3111551,
- 2810887,
- 2428657,
- 1973684,
- 1457278,
- 893848,
- 300995,
- -292521,
- -867621,
- -1404936,
- -1871278,
- -2229831,
- -2440932,
- -2462684,
- -2255006,
- -1768898,
- -1079574,
- 82115,
- 1660302,
- 3660715,
- 6123610,
- 8329598,
- 11888744,
- 15722147,
- 19737089,
- 25647773,
- 31039399,
- 36868007,
- 43124253,
- 49737161,
- 56495958,
- 63668945,
- 71039511,
- 78540240,
- 86089058,
- 93600041,
- 100981151,
- 108136061,
- 114970055,
- 121718321,
- 127566038,
- 132774642,
- 137247294,
- 140894737,
- 143635018,
- 145395599,
- 146114032,
- 145742999,
- 144211606,
- 141594341,
- 137808404,
- 132914122,
- 126912246,
- 120243281,
- 112155281,
- 103338368,
- 93904953,
- 83439152,
- 72921548,
- 62192990,
- 51434918,
- 40894003,
- 30786726,
- 21384955,
- 12939112,
- 5718193,
- -5790,
- -3959261,
- -5870978,
- -5475538,
- -2517061,
- 3247310,
- 12042937,
- 24076729,
- 39531397,
- 58562863,
- 81297002,
- 107826748,
- 138209187,
- 172464115,
- 210569037,
- 252468018,
- 298045453,
- 347168648,
- 399634888,
- 455137189,
- 513586535,
- 574537650,
- 637645129,
- 702597163,
- 768856566,
- 836022040,
- 903618096,
- 971159680,
- 1038137214,
- 1103987353,
- 1168195035,
- 1230223053,
- 1289539180,
- 1345620373,
- 1397957958,
- 1446063657,
- 1489474689,
- 1527740502,
- 1560502307,
- 1587383079,
- 1608071145,
- 1622301248,
- 1629859340,
- 1630584888,
- 1624373875,
- 1611178348,
- 1591018893,
- 1563948667,
- 1530105004,
- 1489673227,
- 1442904075,
- 1390107674,
- 1331590427,
- 1267779478,
- 1199115126,
- 1126053392,
- 1049146257,
- 968928307,
- 885965976,
- 800851610,
- 714186243,
- 626590147,
- 538672486,
- 451042824,
- 364299927,
- 279026812,
- 195785029,
- 115109565,
- 37503924,
- -36564551,
- -106668063,
- -172421668,
- -233487283,
- -289575706,
- -340448569,
- -385919511,
- -425854915,
- -460174578,
- -488840702,
- -511893328,
- -529405118,
- -541489888,
- -548312207,
- -550036471,
- -547005316,
- -539436808,
- -527630488,
- -512084785,
- -492941605,
- -470665204,
- -445668379,
- -418328829,
- -389072810,
- -358293846,
- -326396227,
- -293769619,
- -260792276,
- -227825056,
- -195208961,
- -163262121,
- -132280748,
- -102533727,
- -74230062,
- -47600637,
- -22817785,
- -25786,
- 20662895,
- 39167253,
- 55438413,
- 69453741,
- 81242430,
- 90795329,
- 98213465,
- 103540643,
- 106917392,
- 108861938,
- 108539682,
- 106780704,
- 103722568,
- 99043289,
- 93608686,
- 87266209,
- 80212203,
- 72590022,
- 64603428,
- 56362402,
- 48032218,
- 39749162,
- 31638971,
- 23814664,
- 16376190,
- 9409836,
- 2988017,
- -2822356,
- -7976595,
- -12454837,
- -16241147,
- -19331944,
- -21735011,
- -23468284,
- -24559822,
- -25042936,
- -25035583,
- -24429587,
- -23346408,
- -21860411,
- -20015718,
- -17025330,
- -14968728,
- -12487138,
- -9656319,
- -7846681,
- -5197816,
- -2621904,
- -144953,
- 2144746,
- 3990570,
- 5845884,
- 7454650,
- 8820394,
- 9929891,
- 10784445,
- 11390921,
- 11762056,
- 11916017,
- 12261189,
- 12117604,
- 11815303,
- 11374622,
- 10815301,
- 10157241,
- 9418799,
- 8629399,
- 7780776,
- 7303680,
- 6353499,
- 5392738,
- 4457895,
- 3543062,
- 1305978,
- 1402521,
- 1084092,
- 965652,
- -151008,
- -666667,
- -1032157,
- -1231475,
- -1319043,
- -1006023,
- -915720,
- -773426,
- -612377,
- -445864,
- -291068,
- -161337,
- -66484,
- -11725,
- 133453,
- 388184,
- 615856,
- 804033,
- 942377,
- 1022911,
- 1041247,
- 995854,
- 891376,
- 572246,
- 457992,
- 316365,
- 172738,
- 43037,
- -117662,
- -98542,
- -70279,
- -41458,
- -535790,
- -959038,
- -1364456,
- -1502265,
- -1568530,
- -2378681,
- -2701111,
- -2976407,
- -3182552,
- -3314415,
- -3366600,
- -3337701,
- -3232252,
- -3054999,
- 1984841,
- 1925903,
- 1817377,
- 1669153,
- 1490069,
- 1292040,
- 1086223,
- 890983,
- 699163,
- 201358,
- 266971,
- 296990,
- 198419,
- 91119,
- 4737,
- 5936,
- 2553,
- 2060,
- -3828,
- -1664,
- -4917,
- -20796,
- -36822,
- -131247,
- -154923,
- -162055,
- -161354,
- -148762,
- -125754,
- -94473,
- -57821,
- -19096,
- 15172,
- 43004,
- 65624,
- 81354,
- 89325,
- 89524,
- 82766,
- 71075,
- 55128,
- 13686,
- 6921,
- 1449,
- 420,
- 785,
- -215,
- -179,
- -113,
- -49,
- 6002,
- 16007,
- 42978,
- 100662,
- 171472,
- 83975,
- 93702,
- 108813,
- 111893,
- 110272,
- 103914,
- 93973,
- 81606,
- 68041,
- -54058,
- -60695,
- -65277,
- -67224,
- -66213,
- -62082,
- -55574,
- -42988,
- -35272,
- -63735,
- -33501,
- -12671,
- -4038,
- -1232,
- 5,
- 7
+static const int sample_rates[] = {
+ 8000, 16000, 32000, 11025, 22050, 44100, 12000, 24000, 48000, 0,
+};
+
+static const uint8_t bitstream_sfreq[] = { 1, 2, 3, 6, 7, 8, 11, 12, 13 };
+
+/* Auditory filter center frequencies and bandwidths, in Hz.
+ * The last two are made up, because there is no scientific data.
+ */
+static uint16_t fc[] = {
+ 50, 150, 250, 350, 450, 570, 700, 840, 1000, 1170, 1370, 1600, 1850, 2150,
+ 2500, 2900, 3400, 4000, 4800, 5800, 7000, 8500, 10500, 13500, 17000
+};
+
+static uint16_t erb[] = {
+ 80, 100, 100, 100, 110, 120, 140, 150, 160, 190, 210, 240, 280,
+ 320, 380, 450, 550, 700, 900, 1100, 1300, 1800, 2500, 3500, 4500
+};
+
+static const softfloat stepsize_inv[27] = {
+ {0, 0}, {1342177360, 21}, {2147483647, 21}, {1342177360, 20},
+ {1819901661, 20}, {2147483647, 20}, {1278263843, 19}, {1579032492, 19},
+ {1412817763, 18}, {1220162327, 17}, {1118482133, 16}, {1917391412, 16},
+ {1766017772, 15}, {1525212826, 14}, {1290553940, 13}, {2097179000, 13},
+ {1677683200, 12}, {1497972244, 11}, {1310893147, 10}, {1165354136, 9},
+ {1748031204, 9}, {1542092044, 8}, {1636178017, 7}, {1636178017, 6},
+ {1636178017, 5}, {1636178017, 4}, {1636178017, 3},
+};
+
+static const softfloat scalefactor_inv[128] = {
+ {2147483647, 1}, {2147483647, 1}, {2147483647, 2}, {2147483647, 2},
+ {2147483647, 2}, {2147483647, 2}, {1431655765, 2}, {1431655765, 2},
+ {1431655765, 2}, {2147483647, 3}, {2147483647, 3}, {1717986918, 3},
+ {1431655765, 3}, {1227133513, 3}, {1227133513, 3}, {2147483647, 4},
+ {1717986918, 4}, {1561806289, 4}, {1431655765, 4}, {1227133513, 4},
+ {2147483647, 5}, {1908874353, 5}, {1717986918, 5}, {1493901668, 5},
+ {1321528398, 5}, {1145324612, 5}, {2021161080, 6}, {1808407282, 6},
+ {1561806289, 6}, {1374389534, 6}, {1227133513, 6}, {2147483647, 7},
+ {1908874353, 7}, {1676084798, 7}, {1477838209, 7}, {1296593900, 7},
+ {1145324612, 7}, {2021161080, 8}, {1773405851, 8}, {1561806289, 8},
+ {1374389534, 8}, {1216273924, 8}, {2139127680, 9}, {1882725390, 9},
+ {1660893697, 9}, {1462116526, 9}, {1287484341, 9}, {1135859119, 9},
+ {1999112050, 10}, {1762037865, 10}, {1552982525, 10}, {1367551775, 10},
+ {1205604855, 10}, {2124660150, 11}, {1871509153, 11}, {1648443220, 11},
+ {1452459217, 11}, {1279990253, 11}, {1127704233, 11}, {1987368509, 12},
+ {1750814693, 12}, {1542632939, 12}, {1359099663, 12}, {1197398995, 12},
+ {2109880792, 13}, {1858853132, 13}, {1638006149, 13}, {1443165385, 13},
+ {1271479187, 13}, {1120235993, 13}, {1973767086, 14}, {1739045674, 14},
+ {1532153461, 14}, {1349922194, 14}, {1189384493, 14}, {2095804865, 15},
+ {1846464029, 15}, {1626872524, 15}, {1433347133, 15}, {1262853884, 15},
+ {1112619678, 15}, {1960569045, 16}, {1727349015, 16}, {1521881227, 16},
+ {1340842289, 16}, {1181357555, 16}, {2081669156, 17}, {1834047752, 17},
+ {1615889229, 17}, {1423675973, 17}, {1254322457, 17}, {1105123583, 17},
+ {1947330755, 18}, {1715693602, 18}, {1511607799, 18}, {1331801790, 18},
+ {1173384427, 18}, {2067616532, 19}, {1821667648, 19}, {1604980024, 19},
+ {1414066955, 19}, {1245861410, 19}, {1097665748, 19}, {1934193616, 20},
+ {1704119624, 20}, {1501412075, 20}, {1322817107, 20}, {1165466323, 20},
+ {2053666205, 21}, {1809379407, 21}, {1594151671, 21}, {1404526328, 21},
+ {1237455941, 21}, {1090259329, 21}, {1921143210, 22}, {1692621231, 22},
+ {1491281857, 22}, {1313892269, 22}, {1157603482, 22}, {2039810470, 23},
+ {1797172644, 23}, {1583396912, 23}, {1395050052, 23}, {1229107276, 23},
+ {1082903494, 23}, {1082903494, 23}, {1082903494, 23}, {1082903494, 23},
+};
+
+/* manually derived from
+ * Table B.5: Selection of quantization levels and codebooks
+ * FIXME: will become invalid when Huffman codes are introduced.
+ */
+static const int bit_consumption[27] = {
+ -8, 28, 40, 48, 52, 60, 68, 76, 80, 96,
+ 112, 128, 144, 160, 176, 192, 208, 224, 240, 256,
+ 272, 288, 304, 320, 336, 352, 368,
+};
+
+/* Table B.5: Selection of quantization levels and codebooks */
+static const int quant_levels[27] = {
+ 1, 3, 5, 7, 9, 13, 17, 25, 32, 64,
+ 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536,
+ 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608,
};
#endif /* AVCODEC_DCAENC_H */