3 * Copyright (C) 2008-2012 Alexander E. Patrakov
5 * This file is part of FFmpeg.
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 #ifndef AVCODEC_DCAENC_H
23 #define AVCODEC_DCAENC_H
32 static const int sample_rates[] = {
33 8000, 16000, 32000, 11025, 22050, 44100, 12000, 24000, 48000, 0,
36 static const uint8_t bitstream_sfreq[] = { 1, 2, 3, 6, 7, 8, 11, 12, 13 };
38 /* Auditory filter center frequencies and bandwidths, in Hz.
39 * The last two are made up, because there is no scientific data.
41 static const uint16_t fc[] = {
42 50, 150, 250, 350, 450, 570, 700, 840, 1000, 1170, 1370, 1600, 1850, 2150,
43 2500, 2900, 3400, 4000, 4800, 5800, 7000, 8500, 10500, 13500, 17000
46 static const uint16_t erb[] = {
47 80, 100, 100, 100, 110, 120, 140, 150, 160, 190, 210, 240, 280,
48 320, 380, 450, 550, 700, 900, 1100, 1300, 1800, 2500, 3500, 4500
51 static const softfloat stepsize_inv[27] = {
52 {0, 0}, {1342177360, 21}, {2147483647, 21}, {1342177360, 20},
53 {1819901661, 20}, {2147483647, 20}, {1278263843, 19}, {1579032492, 19},
54 {1412817763, 18}, {1220162327, 17}, {1118482133, 16}, {1917391412, 16},
55 {1766017772, 15}, {1525212826, 14}, {1290553940, 13}, {2097179000, 13},
56 {1677683200, 12}, {1497972244, 11}, {1310893147, 10}, {1165354136, 9},
57 {1748031204, 9}, {1542092044, 8}, {1636178017, 7}, {1636178017, 6},
58 {1636178017, 5}, {1636178017, 4}, {1636178017, 3},
61 static const softfloat scalefactor_inv[128] = {
62 {2147483647, 1}, {2147483647, 1}, {2147483647, 2}, {2147483647, 2},
63 {2147483647, 2}, {2147483647, 2}, {1431655765, 2}, {1431655765, 2},
64 {1431655765, 2}, {2147483647, 3}, {2147483647, 3}, {1717986918, 3},
65 {1431655765, 3}, {1227133513, 3}, {1227133513, 3}, {2147483647, 4},
66 {1717986918, 4}, {1561806289, 4}, {1431655765, 4}, {1227133513, 4},
67 {2147483647, 5}, {1908874353, 5}, {1717986918, 5}, {1493901668, 5},
68 {1321528398, 5}, {1145324612, 5}, {2021161080, 6}, {1808407282, 6},
69 {1561806289, 6}, {1374389534, 6}, {1227133513, 6}, {2147483647, 7},
70 {1908874353, 7}, {1676084798, 7}, {1477838209, 7}, {1296593900, 7},
71 {1145324612, 7}, {2021161080, 8}, {1773405851, 8}, {1561806289, 8},
72 {1374389534, 8}, {1216273924, 8}, {2139127680, 9}, {1882725390, 9},
73 {1660893697, 9}, {1462116526, 9}, {1287484341, 9}, {1135859119, 9},
74 {1999112050, 10}, {1762037865, 10}, {1552982525, 10}, {1367551775, 10},
75 {1205604855, 10}, {2124660150, 11}, {1871509153, 11}, {1648443220, 11},
76 {1452459217, 11}, {1279990253, 11}, {1127704233, 11}, {1987368509, 12},
77 {1750814693, 12}, {1542632939, 12}, {1359099663, 12}, {1197398995, 12},
78 {2109880792, 13}, {1858853132, 13}, {1638006149, 13}, {1443165385, 13},
79 {1271479187, 13}, {1120235993, 13}, {1973767086, 14}, {1739045674, 14},
80 {1532153461, 14}, {1349922194, 14}, {1189384493, 14}, {2095804865, 15},
81 {1846464029, 15}, {1626872524, 15}, {1433347133, 15}, {1262853884, 15},
82 {1112619678, 15}, {1960569045, 16}, {1727349015, 16}, {1521881227, 16},
83 {1340842289, 16}, {1181357555, 16}, {2081669156, 17}, {1834047752, 17},
84 {1615889229, 17}, {1423675973, 17}, {1254322457, 17}, {1105123583, 17},
85 {1947330755, 18}, {1715693602, 18}, {1511607799, 18}, {1331801790, 18},
86 {1173384427, 18}, {2067616532, 19}, {1821667648, 19}, {1604980024, 19},
87 {1414066955, 19}, {1245861410, 19}, {1097665748, 19}, {1934193616, 20},
88 {1704119624, 20}, {1501412075, 20}, {1322817107, 20}, {1165466323, 20},
89 {2053666205, 21}, {1809379407, 21}, {1594151671, 21}, {1404526328, 21},
90 {1237455941, 21}, {1090259329, 21}, {1921143210, 22}, {1692621231, 22},
91 {1491281857, 22}, {1313892269, 22}, {1157603482, 22}, {2039810470, 23},
92 {1797172644, 23}, {1583396912, 23}, {1395050052, 23}, {1229107276, 23},
93 {1082903494, 23}, {1082903494, 23}, {1082903494, 23}, {1082903494, 23},
96 /* manually derived from
97 * Table B.5: Selection of quantization levels and codebooks
98 * FIXME: will become invalid when Huffman codes are introduced.
100 static const int bit_consumption[27] = {
101 -8, 28, 40, 48, 52, 60, 68, 76, 80, 96,
102 112, 128, 144, 160, 176, 192, 208, 224, 240, 256,
103 272, 288, 304, 320, 336, 352, 368,
106 /* Table B.5: Selection of quantization levels and codebooks */
107 static const int quant_levels[27] = {
108 1, 3, 5, 7, 9, 13, 17, 25, 32, 64,
109 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536,
110 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608,
113 #endif /* AVCODEC_DCAENC_H */