@ -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 */