FFmpeg
dolby_e.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2017 foo86
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef AVCODEC_DOLBY_E_H
22 #define AVCODEC_DOLBY_E_H
23 
24 #include "libavutil/float_dsp.h"
25 #include "libavutil/libm.h"
26 #include "libavutil/mem.h"
27 
28 #include "internal.h"
29 #include "get_bits.h"
30 #include "kbdwin.h"
31 #include "fft.h"
32 
33 #define FRAME_SAMPLES 1792
34 
35 #define MAX_PROG_CONF 23
36 #define MAX_PROGRAMS 8
37 #define MAX_CHANNELS 8
38 #define MAX_SEGMENTS 2
39 
40 #define MAX_GROUPS 8
41 #define MAX_EXPONENTS 304
42 #define MAX_MANTISSAS 1024
43 
44 #define MAX_MSTR_EXP 2
45 #define MAX_BIAS_EXP 50
46 
47 typedef struct DBEGroup {
50  uint16_t exp_ofs;
51  uint16_t mnt_ofs;
55  uint16_t win_len;
56  uint16_t dst_ofs;
57  uint16_t win_ofs;
58  uint16_t src_ofs;
59 } DBEGroup;
60 
61 typedef struct DBEChannel {
62  int gr_code;
63  int bw_code;
64 
65  int nb_groups;
68 
73 
75 } DBEChannel;
76 
77 typedef struct DBEContext {
80 
83 
84  int word_bits;
87 
88  int prog_conf;
91 
92  int fr_code;
94 
98 
102 
104 
106 
108 
111 
113 } DBEContext;
114 
115 static const uint8_t nb_programs_tab[MAX_PROG_CONF + 1] = {
116  2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 8, 1, 2, 3, 3, 4, 5, 6, 1, 2, 3, 4, 1, 1
117 };
118 
119 static const uint8_t nb_channels_tab[MAX_PROG_CONF + 1] = {
120  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 8, 8
121 };
122 
123 static const int8_t lfe_channel_tab[MAX_PROG_CONF + 1] = {
124  5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4,
125  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5
126 };
127 
128 static const uint8_t ch_reorder_4[4] = { 0, 2, 1, 3 };
129 static const uint8_t ch_reorder_6[6] = { 0, 2, 4, 1, 3, 5 };
130 static const uint8_t ch_reorder_8[8] = { 0, 2, 6, 4, 1, 3, 7, 5 };
131 static const uint8_t ch_reorder_n[8] = { 0, 2, 4, 6, 1, 3, 5, 7 };
132 
133 static const uint16_t sample_rate_tab[16] = {
134  0, 42965, 43008, 44800, 53706, 53760
135 };
136 
137 static const uint8_t nb_groups_tab[4] = { 1, 8, 7, 1 };
138 
139 static const uint8_t nb_mstr_exp_tab[4] = { 2, 2, 2, 1 };
140 
141 static const uint8_t nb_mantissa_38[38] = {
142  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
143  2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6,
144  7, 8, 9, 10, 11, 12,
145 };
146 
147 static const uint8_t nb_mantissa_44[44] = {
148  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
149  2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 7, 7,
150  8, 9, 10, 11, 12, 13, 15, 16, 18, 20, 22, 25,
151 };
152 
153 static const uint8_t nb_mantissa_50[50] = {
154  1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3,
155  3, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, 12, 13, 14, 16,
156  18, 19, 22, 24, 27, 29, 32, 36, 40, 44, 49, 54, 60, 66, 74, 82,
157  90, 100,
158 };
159 
160 static const uint8_t imdct_bits_tab[3] = { 8, 9, 11 };
161 
162 static const DBEGroup grp_tab_0[1] = {
163  { 50, { 27, 23 }, 0, 0, nb_mantissa_50, 2, 0, 1152, 0, 1408, 0 },
164 };
165 
166 static const DBEGroup grp_tab_1[8] = {
167  { 38, { 12, 26 }, 0, 0, nb_mantissa_38, 0, 0, 192, 0, 256, 0 },
168  { 38, { 12, 26 }, 38, 128, nb_mantissa_38, 0, 1, 256, 64, 448, 0 },
169  { 38, { 12, 26 }, 76, 256, nb_mantissa_38, 0, 1, 256, 192, 704, 0 },
170  { 38, { 12, 26 }, 114, 384, nb_mantissa_38, 0, 1, 256, 320, 0, 0 },
171  { 38, { 12, 26 }, 152, 512, nb_mantissa_38, 0, 1, 256, 448, 0, 0 },
172  { 38, { 12, 26 }, 190, 640, nb_mantissa_38, 0, 1, 256, 576, 0, 0 },
173  { 38, { 12, 26 }, 228, 768, nb_mantissa_38, 0, 1, 256, 704, 0, 0 },
174  { 38, { 12, 26 }, 266, 896, nb_mantissa_38, 0, 1, 256, 832, 0, 0 },
175 };
176 
177 static const DBEGroup grp_tab_2[7] = {
178  { 38, { 12, 26 }, 0, 0, nb_mantissa_38, 0, 0, 192, 0, 256, 0 },
179  { 38, { 12, 26 }, 38, 128, nb_mantissa_38, 0, 1, 256, 64, 448, 0 },
180  { 38, { 12, 26 }, 76, 256, nb_mantissa_38, 0, 1, 256, 192, 704, 0 },
181  { 38, { 12, 26 }, 114, 384, nb_mantissa_38, 0, 1, 256, 320, 0, 0 },
182  { 38, { 12, 26 }, 152, 512, nb_mantissa_38, 0, 1, 256, 448, 0, 0 },
183  { 38, { 12, 26 }, 190, 640, nb_mantissa_38, 0, 1, 256, 576, 0, 0 },
184  { 44, { 19, 25 }, 228, 768, nb_mantissa_44, 1, 1, 448, 704, 960, 64 },
185 };
186 
187 static const DBEGroup grp_tab_3[1] = {
188  { 21, { 21 }, 0, 0, nb_mantissa_50, 2, 0, 1152, 0, 1408, 0 },
189 };
190 
191 static const DBEGroup grp_tab_4[1] = {
192  { 50, { 27, 23 }, 0, 0, nb_mantissa_50, 2, 2, 1152, 0, 1408, 896 },
193 };
194 
195 static const DBEGroup grp_tab_5[8] = {
196  { 38, { 12, 26 }, 0, 0, nb_mantissa_38, 0, 1, 256, 64, 0, 0 },
197  { 38, { 12, 26 }, 38, 128, nb_mantissa_38, 0, 1, 256, 192, 0, 0 },
198  { 38, { 12, 26 }, 76, 256, nb_mantissa_38, 0, 1, 256, 320, 0, 0 },
199  { 38, { 12, 26 }, 114, 384, nb_mantissa_38, 0, 1, 256, 448, 0, 0 },
200  { 38, { 12, 26 }, 152, 512, nb_mantissa_38, 0, 1, 256, 576, 0, 0 },
201  { 38, { 12, 26 }, 190, 640, nb_mantissa_38, 0, 1, 256, 704, 3008, 0 },
202  { 38, { 12, 26 }, 228, 768, nb_mantissa_38, 0, 1, 256, 832, 2752, 0 },
203  { 38, { 12, 26 }, 266, 896, nb_mantissa_38, 0, 2, 192, 960, 2560, 64 },
204 };
205 
206 static const DBEGroup grp_tab_6[7] = {
207  { 44, { 19, 25 }, 0, 0, nb_mantissa_44, 1, 1, 448, 0, 3264, 0 },
208  { 38, { 12, 26 }, 44, 256, nb_mantissa_38, 0, 1, 256, 320, 0, 0 },
209  { 38, { 12, 26 }, 82, 384, nb_mantissa_38, 0, 1, 256, 448, 0, 0 },
210  { 38, { 12, 26 }, 120, 512, nb_mantissa_38, 0, 1, 256, 576, 0, 0 },
211  { 38, { 12, 26 }, 158, 640, nb_mantissa_38, 0, 1, 256, 704, 3008, 0 },
212  { 38, { 12, 26 }, 196, 768, nb_mantissa_38, 0, 1, 256, 832, 2752, 0 },
213  { 38, { 12, 26 }, 234, 896, nb_mantissa_38, 0, 2, 192, 960, 2560, 64 },
214 };
215 
216 static const DBEGroup grp_tab_7[1] = {
217  { 21, { 21 }, 0, 0, nb_mantissa_50, 2, 2, 1152, 0, 1408, 896 },
218 };
219 
220 static const DBEGroup *const frm_ofs_tab[2][4] = {
223 };
224 
225 static const uint8_t mantissa_size1[16][4] = {
226  { 0, 0, 0, 0 }, { 2, 1, 1, 1 }, { 3, 2, 1, 1 }, { 4, 3, 2, 1 },
227  { 5, 4, 3, 2 }, { 6, 5, 4, 3 }, { 7, 6, 5, 4 }, { 8, 7, 6, 5 },
228  { 9, 8, 7, 6 }, { 10, 9, 8, 7 }, { 11, 10, 9, 8 }, { 12, 11, 10, 9 },
229  { 13, 12, 11, 10 }, { 14, 13, 12, 11 }, { 15, 14, 13, 12 }, { 16, 15, 14, 13 },
230 };
231 
232 static const uint8_t mantissa_size2[16][4] = {
233  { 0, 0, 0, 0 }, { 2, 1, 2, 2 }, { 3, 2, 3, 3 }, { 4, 3, 4, 4 },
234  { 5, 4, 5, 5 }, { 6, 5, 6, 6 }, { 7, 6, 7, 7 }, { 8, 7, 8, 8 },
235  { 9, 8, 9, 9 }, { 10, 9, 10, 10 }, { 11, 10, 11, 11 }, { 12, 11, 12, 12 },
236  { 13, 12, 13, 13 }, { 14, 13, 14, 14 }, { 15, 14, 15, 15 }, { 16, 15, 16, 16 },
237 };
238 
239 static const float start_window[192] = {
240  0.00161569379826, 0.00185748233347, 0.00198562758548, 0.00207834078104,
241  0.00215717748523, 0.00223067096393, 0.00230299213147, 0.00237651215396,
242  0.00245275561606, 0.00253281402069, 0.00261754673613, 0.00270768786168,
243  0.00280390761895, 0.00290684998656, 0.00301715751161, 0.00313548872798,
244  0.00326253122934, 0.00339901215995, 0.00354570716636, 0.00370344845023,
245  0.00387313232586, 0.00405572653911, 0.00425227750970, 0.00446391759265,
246  0.00469187240551, 0.00493746822816, 0.00520213944619, 0.00548743597507,
247  0.00579503056737, 0.00612672586953, 0.00648446105606, 0.00687031782873,
248  0.00728652552677, 0.00773546505205, 0.00821967127415, 0.00874183354619,
249  0.00930479393832, 0.00991154278653, 0.01056521116692, 0.01126905994567,
250  0.01202646513050, 0.01284089936559, 0.01371590957417, 0.01465509096066,
251  0.01566205783408, 0.01674041199523, 0.01789370972358, 0.01912542867865,
252  0.02043893626265, 0.02183746113793, 0.02332406961796, 0.02490164852364,
253  0.02657289580178, 0.02834031974193, 0.03020624702903, 0.03217283918354,
254  0.03424211623810, 0.03641598586180, 0.03869627565015, 0.04108476601498,
255  0.04358322107390, 0.04619341515939, 0.04891715301882, 0.05175628239149,
256 
257  0.05471237327267, 0.05778734733755, 0.06098291402413, 0.06430101352084,
258  0.06774345212186, 0.07131188644726, 0.07500780649199, 0.07883251748595,
259  0.08278712056651, 0.08687249228061, 0.09108926295730, 0.09543779401074,
260  0.09991815425851, 0.10453009536427, 0.10927302653894, 0.11414598865987,
261  0.11914762799220, 0.12427616972097, 0.12952939152560, 0.13490459744934,
262  0.14039859233595, 0.14600765712201, 0.15172752528722, 0.15755336077528,
263  0.16347973770491, 0.16950062219342, 0.17560935661442, 0.18179864660619,
264  0.18806055113821, 0.19438647593012, 0.20076717050010, 0.20719272909882,
265  0.21365259576030, 0.22013557367283, 0.22662983904194, 0.23312295958328,
266  0.23960191774666, 0.24605313873388, 0.25246252333253, 0.25881548554631,
267  0.26509699495987, 0.27129162373316, 0.27738359807707, 0.28335685401987,
268  0.28919509723179, 0.29488186663467, 0.30040060148455, 0.30573471157819,
269  0.31086765019993, 0.31578298939317, 0.32046449711227, 0.32489621578468,
270  0.32906254179156, 0.33294830535654, 0.33653885031840, 0.33982011325336,
271  0.34277870140679, 0.34540196889300, 0.34767809062480, 0.34959613344194,
272  0.35114612391958, 0.35231911235422, 0.35310723244504, 0.35350375621308,
273 
274  0.35350314372945, 0.35310108725579, 0.35229454943591, 0.35108179521634,
275  0.34946241721522, 0.34743735430290, 0.34500890320420, 0.34218072298001,
276  0.33895783229541, 0.33534659943168, 0.33135472505060, 0.32699121776996,
277  0.32226636266000, 0.31719168282019, 0.31177989424432, 0.30604485422875,
278  0.30000150362379, 0.29366580327088, 0.28705466500775, 0.28018587766131,
279  0.27307802848095, 0.26575042049535, 0.25822298630189, 0.25051619882000,
280  0.24265097955783, 0.23464860495522, 0.22653061137548, 0.21831869932335,
281  0.21003463746705, 0.20170016703857, 0.19333690717811, 0.18496626177620,
282  0.17660932835062, 0.16828680947474, 0.16001892724986, 0.15182534128597,
283  0.14372507062477, 0.13573642000364, 0.12787691082233, 0.12016321713317,
284  0.11261110693234, 0.10523538898282, 0.09804986534955, 0.09106728977263,
285  0.08429933194438, 0.07775654768810, 0.07144835495683, 0.06538301547324,
286  0.05956762170687, 0.05400808871425, 0.04870915012107, 0.04367435714993,
287  0.03890607899172, 0.03440550179663, 0.03017262174627, 0.02620622428513,
288  0.02250383492507, 0.01906161305732, 0.01587412848221, 0.01293388032354,
289  0.01023019677288, 0.00774641320626, 0.00545109736891, 0.00325868651263,
290 };
291 
292 static const float short_window2[192] = {
293  0.00018861094606, 0.00033433010202, 0.00050309624485, 0.00070306161748,
294  0.00093995174533, 0.00121913067128, 0.00154606505568, 0.00192647806126,
295  0.00236641248692, 0.00287225985240, 0.00345077377440, 0.00410907465023,
296  0.00485464855241, 0.00569534163219, 0.00663935063508, 0.00769520981249,
297  0.00887177436246, 0.01017820046395, 0.01162392194150, 0.01321862359335,
298  0.01497221122468, 0.01689477844427, 0.01899657030441, 0.02128794388846,
299  0.02377932597692, 0.02648116795039, 0.02940389811590, 0.03255787167130,
300  0.03595331854986, 0.03960028941437, 0.04350860009563, 0.04768777479454,
301  0.05214698838949, 0.05689500821121, 0.06194013566525, 0.06729014809766,
302  0.07295224131210, 0.07893297315602, 0.08523820859989, 0.09187306673620,
303  0.09884187012422, 0.10614809690222, 0.11379433608064, 0.12178224641797,
304  0.13011251926531, 0.13878484574660, 0.14779788861830, 0.15714925912610,
305  0.16683549914631, 0.17685206886673, 0.18719334022589, 0.19785259629099,
306  0.20882203671372, 0.22009278936030, 0.23165492816694, 0.24349749722585,
307  0.25560854105961, 0.26797514099368, 0.28058345748882, 0.29341877824732,
308  0.30646557185942, 0.31970754671026, 0.33312771482295, 0.34670846027024,
309 
310  0.36043161174692, 0.37427851885723, 0.38823013163645, 0.40226708279486,
311  0.41636977214436, 0.43051845264462, 0.44469331748632, 0.45887458761470,
312  0.47304259908636, 0.48717788964798, 0.50126128392546, 0.51527397661778,
313  0.52919761310050, 0.54301436685998, 0.55670701320069, 0.57025899869448,
314  0.58365450587230, 0.59687851269542, 0.60991684638414, 0.62275623122793,
315  0.63538433005035, 0.64778977905593, 0.65996221584264, 0.67189230042379,
316  0.68357172916486, 0.69499324160511, 0.70615062019861, 0.71703868307548,
317  0.72765326998919, 0.73799122168099, 0.74805035295521, 0.75782941981995,
318  0.76732808110520, 0.77654685502339, 0.78548707118622, 0.79415081863423,
319  0.80254089047207, 0.81066072573188, 0.81851434910893, 0.82610630922734,
320  0.83344161609862, 0.84052567843230, 0.84736424144524, 0.85396332579459,
321  0.86032916822973, 0.86646816451999, 0.87238681516918, 0.87809167437532,
322  0.88358930263537, 0.88888622333073, 0.89398888356256, 0.89890361943564,
323  0.90363662591861, 0.90819393133744, 0.91258137648979, 0.91680459830070,
324  0.92086901787718, 0.92477983276087, 0.92854201312583, 0.93216030163834,
325  0.93563921662343, 0.93898305819384, 0.94219591693690, 0.94528168477979,
326 
327  0.94823843319821, 0.95106834367330, 0.95377776558539, 0.95636718335775,
328  0.95883679961479, 0.96118650212341, 0.96341583179195, 0.96552395212906,
329  0.96750962060547, 0.96937116231768, 0.97110644638309, 0.97271286544154,
330  0.97418731862798, 0.97552619834964, 0.97672538116257, 0.97778022299974,
331  0.97868555895586, 0.97943570778357, 0.98002448120255, 0.98044519806866,
332  0.98069070339493, 0.98075339216123, 0.98062523779637, 0.98029782516478,
333  0.97976238784222, 0.97900984942031, 0.97803086854002, 0.97681588731895,
334  0.97535518280755, 0.97363892108474, 0.97165721358452, 0.96940017523145,
335  0.96685798395452, 0.96402094114589, 0.96087953263194, 0.95742448973047,
336  0.95364684997699, 0.94953801711660, 0.94508981997396, 0.94029456983253,
337  0.93514511597504, 0.92963489905951, 0.92375800202883, 0.91750919827624,
338  0.91088399681406, 0.90387868421832, 0.89649036314692, 0.88871698725397,
339  0.88055739234735, 0.87201132366062, 0.86307945913336, 0.85376342861693,
340  0.84406582894455, 0.83399023482637, 0.82354120554757, 0.81272428745995,
341  0.80154601230457, 0.79001389138101, 0.77813640562199, 0.76592299164227,
342  0.75338402384395, 0.74053079267526, 0.72737547915460, 0.71393112578527,
343 };
344 
345 static const float short_window3[64] = {
346  0.00326887936450, 0.00550242900936, 0.00786846643791, 0.01045683453520,
347  0.01330402120132, 0.01643221072863, 0.01985798040609, 0.02359509464766,
348  0.02765559221954, 0.03205025893128, 0.03678884369614, 0.04188015679495,
349  0.04733210987781, 0.05315172583924, 0.05934513287609, 0.06591755045290,
350  0.07287327156378, 0.08021564389822, 0.08794705152307, 0.09606889811179,
351  0.10458159240070, 0.11348453632940, 0.12277611617809, 0.13245369691511,
352  0.14251361989876, 0.15295120402567, 0.16376075037904, 0.17493555039885,
353  0.18646789757072, 0.19834910260891, 0.21056951208995, 0.22311853047787,
354  0.23598464546683, 0.24915545655419, 0.26261770674500, 0.27635731727778,
355  0.29035942525136, 0.30460842402318, 0.31908800624032, 0.33378120935681,
356  0.34867046348260, 0.36373764140285, 0.37896411059909, 0.39433078709788,
357  0.40981819096657, 0.42540650327031, 0.44107562429959, 0.45680523287270,
358  0.47257484651351, 0.48836388230077, 0.50415171818214, 0.51991775454258,
359  0.53564147581496, 0.55130251191887, 0.56688069931047, 0.58235614142007,
360  0.59770926827271, 0.61292089506118, 0.62797227945823, 0.64284517745255,
361  0.65752189749349, 0.67198535273209, 0.68621911114984, 0.70020744337099,
362 };
363 
364 static const uint8_t dc_code_tab[5] = { 0, 0, 0, 1, 1 };
365 
366 static const uint8_t ht_code_tab[5] = { 0, 0, 1, 2, 2 };
367 
368 static const uint8_t band_ofs_tab[3][4] = {
369  { 12, 8, 4, 0 }, { 14, 10, 6, 0 }, { 12, 8, 4, 0 }
370 };
371 
372 static const uint8_t band_low_tab[3] = { 9, 17, 24 };
373 
374 static const uint16_t fast_gain_tab[8] = {
375  128, 256, 384, 512, 640, 768, 896, 1024
376 };
377 
378 static const uint16_t slow_decay_tab[2][2] = { { 27, -1 }, { 32, 21 } };
379 
380 static const uint16_t misc_decay_tab[3][2][2] = {
381  { { 354, -1 }, { 425, 425 } },
382  { { 266, -1 }, { 320, -1 } },
383  { { 213, -1 }, { 256, -1 } }
384 };
385 
386 static const uint16_t fast_decay_tab[3][2][2][50] = {
387  {{{
388  142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
389  142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
390  142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
391  142, 142, 142, 142, 142, 142, 142, 142,
392  }, {
393  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
394  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
395  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
396  -1, -1, -1, -1, -1, -1, -1, -1,
397  }}, {{
398  170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
399  170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
400  170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
401  170, 170, 170, 170, 170, 170, 170, 170,
402  }, {
403  64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
404  64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
405  64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
406  64, 64, 64, 64, 64, 64, 64, 64,
407  }}}, {{{
408  266, 266, 106, 106, 106, 106, 106, 106, 106, 106,
409  106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
410  106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
411  106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
412  106, 106, 106, 106,
413  }, {
414  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
415  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
416  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
417  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
418  -1, -1, -1, -1,
419  }}, {{
420  319, 319, 128, 128, 128, 128, 128, 128, 128, 128,
421  128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
422  128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
423  128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
424  128, 128, 128, 128,
425  }, {
426  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
427  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
428  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
429  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
430  -1, -1, -1, -1,
431  }}}, {{{
432  106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
433  106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
434  106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
435  106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
436  106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
437  }, {
438  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
439  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
440  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
441  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
442  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
443  }}, {{
444  128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
445  128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
446  128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
447  128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
448  128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
449  }, {
450  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
451  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
452  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
453  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
454  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
455  }}}
456 };
457 
458 static const uint16_t fast_gain_adj_tab[3][2][62] = {
459  {{
460  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
461  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
462  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
463  0, 1, 2, 4, 7, 11, 16, 29, 44, 59,
464  76, 94, 116, 142, 179, 221, 252, 285, 312, 334,
465  }, {
466  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
467  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
468  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
469  2, 5, 8, 10, 15, 28, 42, 57, 75, 93,
470  115, 140, 177, 219, 247, 280, 308, 330, 427, 533,
471  }}, {{
472  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
473  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
474  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
475  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
476  0, 2, 5, 8, 12, 21, 35, 51, 69, 89,
477  111, 138, 176, 220, 251, 284, 312, 334,
478  }, {
479  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
480  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
481  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
482  0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
483  5, 8, 11, 18, 33, 49, 65, 84, 106, 132,
484  168, 214, 245, 279, 308, 329, 427, 533,
485  }}, {{
486  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
487  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
488  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
489  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
490  0, 0, 0, 0, 0, 1, 4, 7, 10, 17,
491  31, 47, 65, 84, 107, 134, 171, 215, 250, 283,
492  312, 334,
493  }, {
494  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
495  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
496  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
497  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
498  0, 0, 0, 0, 3, 6, 9, 13, 27, 43,
499  60, 79, 100, 126, 160, 207, 242, 276, 307, 329,
500  427, 533,
501  }}
502 };
503 
504 static const uint16_t slow_gain_tab[3][2][50] = {
505  {{
506  3072, 3072, 3072, 3072, 3072, 3072, 1063, 1063, 1063, 1063,
507  1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
508  1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
509  1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
510  }, {
511  3072, 3072, 3072, 3072, 3072, 3072, 850, 850, 850, 850,
512  850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
513  850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
514  850, 850, 850, 850, 850, 850, 850, 850,
515  }}, {{
516  3072, 1212, 1212, 1212, 999, 999, 999, 999, 999, 999,
517  999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
518  999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
519  999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
520  999, 999, 999, 999,
521  }, {
522  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
523  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
524  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
525  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
526  -1, -1, -1, -1,
527  }}, {{
528  3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072,
529  999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
530  999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
531  999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
532  999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
533  }, {
534  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
535  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
536  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
537  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
538  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
539  }}
540 };
541 
542 static const uint16_t hearing_thresh_tab[3][3][50] = {
543  {{
544  1403, 1141, 1000, 959, 948, 957, 946, 925, 899, 871,
545  843, 815, 789, 766, 745, 727, 705, 687, 681, 686,
546  701, 725, 768, 854, 940, 1018, 1075, 1103, 1111, 1106,
547  1098, 1105, 1142, 1237, 1419, 1721, 2169, 2805,
548  }, {
549  1401, 1130, 995, 957, 947, 955, 941, 918, 890, 861,
550  831, 803, 777, 754, 734, 717, 698, 684, 682, 692,
551  712, 743, 798, 894, 976, 1045, 1091, 1109, 1110, 1102,
552  1098, 1116, 1174, 1300, 1526, 1884, 2401, 3072,
553  }, {
554  1393, 1086, 974, 949, 957, 941, 913, 878, 843, 808,
555  777, 750, 727, 708, 695, 686, 681, 689, 714, 752,
556  811, 888, 971, 1044, 1087, 1108, 1110, 1102, 1098, 1115,
557  1172, 1290, 1489, 1812, 2293, 2964, 3072, 3072,
558  }}, {{
559  1412, 1343, 1141, 1047, 1000, 974, 959, 951, 948, 947,
560  957, 953, 946, 936, 925, 906, 878, 850, 822, 795,
561  771, 745, 719, 700, 687, 681, 685, 701, 733, 784,
562  885, 977, 1047, 1092, 1110, 1108, 1099, 1102, 1138, 1233,
563  1413, 1711, 2157, 2797,
564  }, {
565  1412, 1336, 1130, 1040, 995, 970, 957, 950, 947, 947,
566  955, 950, 941, 930, 918, 897, 868, 838, 810, 783,
567  759, 734, 710, 693, 684, 681, 690, 712, 752, 823,
568  924, 1009, 1069, 1102, 1111, 1104, 1098, 1111, 1168, 1295,
569  1518, 1873, 2388, 3072,
570  }, {
571  1411, 1293, 1086, 1009, 974, 957, 949, 947, 957, 951,
572  941, 928, 913, 896, 878, 852, 817, 785, 756, 732,
573  713, 695, 683, 682, 689, 710, 746, 811, 906, 992,
574  1061, 1099, 1111, 1106, 1098, 1107, 1155, 1266, 1471, 1799,
575  2277, 2945, 3072, 3072,
576  }}, {{
577  1431, 1412, 1403, 1379, 1343, 1293, 1229, 1180, 1125, 1075,
578  1040, 1014, 996, 979, 965, 957, 951, 948, 947, 957,
579  951, 940, 924, 903, 877, 846, 815, 785, 753, 725,
580  702, 686, 681, 689, 714, 760, 847, 947, 1028, 1083,
581  1108, 1109, 1101, 1100, 1132, 1222, 1402, 1705, 2160, 2803,
582  }, {
583  1431, 1412, 1401, 1375, 1336, 1278, 1215, 1168, 1115, 1066,
584  1032, 1008, 991, 975, 962, 954, 950, 947, 947, 955,
585  948, 935, 916, 894, 866, 835, 803, 772, 742, 715,
586  695, 683, 683, 697, 729, 784, 887, 982, 1054, 1096,
587  1111, 1106, 1098, 1107, 1159, 1281, 1505, 1865, 2391, 3072,
588  }, {
589  1427, 1411, 1393, 1353, 1293, 1215, 1160, 1118, 1072, 1031,
590  1003, 984, 971, 960, 952, 948, 947, 957, 952, 941,
591  924, 902, 876, 847, 815, 781, 750, 723, 700, 685,
592  681, 691, 719, 766, 858, 958, 1039, 1089, 1109, 1108,
593  1099, 1102, 1141, 1245, 1442, 1766, 2250, 2930, 3072, 3072,
594  }}
595 };
596 
597 static const int16_t lwc_gain_tab[11][7] = {
598  { -21, -197, -271, -466, 32767, 32767, 32767 },
599  { -197, -29, -244, -271, -540, 32767, 32767 },
600  { -271, -244, -29, -249, -271, -593, 32767 },
601  { -466, -271, -249, -29, -251, -271, -632 },
602  { -540, -271, -251, -29, -251, -271, -664 },
603  { -593, -271, -251, -29, -252, -271, -690 },
604  { -632, -271, -252, -29, -252, -271, -711 },
605  { -664, -271, -252, -29, -252, -271, -730 },
606  { -690, -271, -252, -29, -252, -271, -745 },
607  { -711, -271, -252, -29, -253, -271, -759 },
608  { -730, -271, -253, -29, -253, -271, -771 },
609 };
610 
611 static const int16_t lwc_adj_tab[7] = {
612  -192, -320, -448, -512, -448, -320, -192,
613 };
614 
615 static const uint8_t log_add_tab[212] = {
616  64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 52, 51, 50,
617  49, 48, 47, 47, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 38, 38,
618  37, 36, 36, 35, 35, 34, 33, 33, 32, 32, 31, 30, 30, 29, 29, 28,
619  28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 21,
620  20, 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, 16, 16, 16, 15, 15,
621  15, 14, 14, 14, 13, 13, 13, 13, 12, 12, 12, 12, 11, 11, 11, 11,
622  10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8,
623  7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5,
624  5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
625  4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
626  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
627  2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
628  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
629  1, 1, 0, 0,
630 };
631 
632 static const uint8_t bap_tab[64] = {
633  0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4,
634  4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8,
635  8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12,
636  12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 15,
637 };
638 
639 static float mantissa_tab1[17][4];
640 static float mantissa_tab2[17][4];
641 static float mantissa_tab3[17][4];
642 static float exponent_tab[50];
643 static float gain_tab[1024];
644 
645 DECLARE_ALIGNED(32, static float, window)[3712];
646 
647 #endif
ch_reorder_6
static const uint8_t ch_reorder_6[6]
Definition: dolby_e.h:129
mantissa_tab2
static float mantissa_tab2[17][4]
Definition: dolby_e.h:640
MAX_CHANNELS
#define MAX_CHANNELS
Definition: dolby_e.h:37
nb_mantissa_50
static const uint8_t nb_mantissa_50[50]
Definition: dolby_e.h:153
DBEContext::nb_channels
int nb_channels
Definition: dolby_e.h:89
nb_programs_tab
static const uint8_t nb_programs_tab[MAX_PROG_CONF+1]
Definition: dolby_e.h:115
DBEGroup::exp_ofs
uint16_t exp_ofs
Definition: dolby_e.h:50
grp_tab_2
static const DBEGroup grp_tab_2[7]
Definition: dolby_e.h:177
lfe_channel_tab
static const int8_t lfe_channel_tab[MAX_PROG_CONF+1]
Definition: dolby_e.h:123
libm.h
grp_tab_3
static const DBEGroup grp_tab_3[1]
Definition: dolby_e.h:187
DBEContext::history
float history[MAX_CHANNELS][256]
Definition: dolby_e.h:107
log_add_tab
static const uint8_t log_add_tab[212]
Definition: dolby_e.h:615
DBEChannel::bw_code
int bw_code
Definition: dolby_e.h:63
dc_code_tab
static const uint8_t dc_code_tab[5]
Definition: dolby_e.h:364
grp_tab_4
static const DBEGroup grp_tab_4[1]
Definition: dolby_e.h:191
DBEGroup::imdct_idx
uint8_t imdct_idx
Definition: dolby_e.h:53
DBEContext::input
uint8_t * input
Definition: dolby_e.h:81
internal.h
DBEContext::fr_code_orig
int fr_code_orig
Definition: dolby_e.h:93
short_window2
static const float short_window2[192]
Definition: dolby_e.h:292
DBEContext::nb_programs
int nb_programs
Definition: dolby_e.h:90
nb_mstr_exp_tab
static const uint8_t nb_mstr_exp_tab[4]
Definition: dolby_e.h:139
channels
channels
Definition: aptx.c:30
DBEChannel::exp_strategy
int exp_strategy[MAX_GROUPS]
Definition: dolby_e.h:69
mantissa_tab1
static float mantissa_tab1[17][4]
Definition: dolby_e.h:639
grp_tab_1
static const DBEGroup grp_tab_1[8]
Definition: dolby_e.h:166
exponent_tab
static float exponent_tab[50]
Definition: dolby_e.h:642
DBEGroup::nb_bias_exp
uint8_t nb_bias_exp[MAX_MSTR_EXP]
Definition: dolby_e.h:49
DBEChannel::groups
DBEGroup groups[MAX_GROUPS]
Definition: dolby_e.h:67
DBEContext::buffer
uint8_t buffer[1024 *3+AV_INPUT_BUFFER_PADDING_SIZE]
Definition: dolby_e.h:112
misc_decay_tab
static const uint16_t misc_decay_tab[3][2][2]
Definition: dolby_e.h:380
GetBitContext
Definition: get_bits.h:61
DBEContext
Definition: dolby_e.h:77
nb_channels_tab
static const uint8_t nb_channels_tab[MAX_PROG_CONF+1]
Definition: dolby_e.h:119
lwc_adj_tab
static const int16_t lwc_adj_tab[7]
Definition: dolby_e.h:611
grp_tab_0
static const DBEGroup grp_tab_0[1]
Definition: dolby_e.h:162
slow_decay_tab
static const uint16_t slow_decay_tab[2][2]
Definition: dolby_e.h:378
mantissa_size2
static const uint8_t mantissa_size2[16][4]
Definition: dolby_e.h:232
DBEChannel::nb_mstr_exp
int nb_mstr_exp
Definition: dolby_e.h:66
DBEChannel::idx
int idx[MAX_EXPONENTS]
Definition: dolby_e.h:72
DBEContext::input_size
int input_size
Definition: dolby_e.h:82
DBEChannel::gr_code
int gr_code
Definition: dolby_e.h:62
DBEContext::imdct
FFTContext imdct[3]
Definition: dolby_e.h:109
DBEGroup::nb_mantissa
const uint8_t * nb_mantissa
Definition: dolby_e.h:52
DBEContext::key_present
int key_present
Definition: dolby_e.h:86
frm_ofs_tab
static const DBEGroup *const frm_ofs_tab[2][4]
Definition: dolby_e.h:220
short_window3
static const float short_window3[64]
Definition: dolby_e.h:345
DBEContext::word_bits
int word_bits
Definition: dolby_e.h:84
sample_rate_tab
static const uint16_t sample_rate_tab[16]
Definition: dolby_e.h:133
get_bits.h
kbdwin.h
lwc_gain_tab
static const int16_t lwc_gain_tab[11][7]
Definition: dolby_e.h:597
grp_tab_5
static const DBEGroup grp_tab_5[8]
Definition: dolby_e.h:195
DBEGroup::imdct_phs
uint8_t imdct_phs
Definition: dolby_e.h:54
band_low_tab
static const uint8_t band_low_tab[3]
Definition: dolby_e.h:372
band_ofs_tab
static const uint8_t band_ofs_tab[3][4]
Definition: dolby_e.h:368
slow_gain_tab
static const uint16_t slow_gain_tab[3][2][50]
Definition: dolby_e.h:504
MAX_MSTR_EXP
#define MAX_MSTR_EXP
Definition: dolby_e.h:44
nb_groups_tab
static const uint8_t nb_groups_tab[4]
Definition: dolby_e.h:137
DBEContext::fdsp
AVFloatDSPContext * fdsp
Definition: dolby_e.h:110
MAX_MANTISSAS
#define MAX_MANTISSAS
Definition: dolby_e.h:42
fast_gain_adj_tab
static const uint16_t fast_gain_adj_tab[3][2][62]
Definition: dolby_e.h:458
MAX_EXPONENTS
#define MAX_EXPONENTS
Definition: dolby_e.h:41
DBEContext::ch_size
int ch_size[MAX_CHANNELS]
Definition: dolby_e.h:95
float_dsp.h
DBEGroup::mnt_ofs
uint16_t mnt_ofs
Definition: dolby_e.h:51
DBEGroup::nb_exponent
uint8_t nb_exponent
Definition: dolby_e.h:48
DBEContext::end_gain
int end_gain[MAX_CHANNELS]
Definition: dolby_e.h:101
DBEContext::fr_code
int fr_code
Definition: dolby_e.h:92
DBEChannel::nb_groups
int nb_groups
Definition: dolby_e.h:65
MAX_PROG_CONF
#define MAX_PROG_CONF
Definition: dolby_e.h:35
fast_decay_tab
static const uint16_t fast_decay_tab[3][2][2][50]
Definition: dolby_e.h:386
DBEContext::rev_id
int rev_id[MAX_CHANNELS]
Definition: dolby_e.h:99
AVFloatDSPContext
Definition: float_dsp.h:24
ht_code_tab
static const uint8_t ht_code_tab[5]
Definition: dolby_e.h:366
start_window
static const float start_window[192]
Definition: dolby_e.h:239
DBEContext::avctx
AVCodecContext * avctx
Definition: dolby_e.h:78
DBEContext::meter_size
int meter_size
Definition: dolby_e.h:97
DBEContext::gb
GetBitContext gb
Definition: dolby_e.h:79
DBEChannel::bap
int bap[MAX_EXPONENTS]
Definition: dolby_e.h:71
DBEContext::word_bytes
int word_bytes
Definition: dolby_e.h:85
DECLARE_ALIGNED
#define DECLARE_ALIGNED(n, t, v)
Definition: mem.h:112
hearing_thresh_tab
static const uint16_t hearing_thresh_tab[3][3][50]
Definition: dolby_e.h:542
FFTContext
Definition: fft.h:88
DBEGroup::dst_ofs
uint16_t dst_ofs
Definition: dolby_e.h:56
ch_reorder_n
static const uint8_t ch_reorder_n[8]
Definition: dolby_e.h:131
uint8_t
uint8_t
Definition: audio_convert.c:194
DBEContext::multi_prog_warned
int multi_prog_warned
Definition: dolby_e.h:103
DBEGroup::win_len
uint16_t win_len
Definition: dolby_e.h:55
nb_mantissa_44
static const uint8_t nb_mantissa_44[44]
Definition: dolby_e.h:147
nb_mantissa_38
static const uint8_t nb_mantissa_38[38]
Definition: dolby_e.h:141
DBEChannel::mantissas
float mantissas[MAX_MANTISSAS]
Definition: dolby_e.h:74
grp_tab_6
static const DBEGroup grp_tab_6[7]
Definition: dolby_e.h:206
MAX_SEGMENTS
#define MAX_SEGMENTS
Definition: dolby_e.h:38
gain_tab
static float gain_tab[1024]
Definition: dolby_e.h:643
DBEContext::mtd_ext_size
int mtd_ext_size
Definition: dolby_e.h:96
AV_INPUT_BUFFER_PADDING_SIZE
#define AV_INPUT_BUFFER_PADDING_SIZE
Definition: avcodec.h:790
DBEGroup::src_ofs
uint16_t src_ofs
Definition: dolby_e.h:58
DBEChannel
Definition: dolby_e.h:61
fft.h
AVCodecContext
main external API structure.
Definition: avcodec.h:1565
DBEChannel::exponents
int exponents[MAX_EXPONENTS]
Definition: dolby_e.h:70
imdct_bits_tab
static const uint8_t imdct_bits_tab[3]
Definition: dolby_e.h:160
ch_reorder_8
static const uint8_t ch_reorder_8[8]
Definition: dolby_e.h:130
bap_tab
static const uint8_t bap_tab[64]
Definition: dolby_e.h:632
ch_reorder_4
static const uint8_t ch_reorder_4[4]
Definition: dolby_e.h:128
window
static float window[3712]
Definition: dolby_e.h:645
DBEContext::prog_conf
int prog_conf
Definition: dolby_e.h:88
mem.h
grp_tab_7
static const DBEGroup grp_tab_7[1]
Definition: dolby_e.h:216
mantissa_tab3
static float mantissa_tab3[17][4]
Definition: dolby_e.h:641
fast_gain_tab
static const uint16_t fast_gain_tab[8]
Definition: dolby_e.h:374
mantissa_size1
static const uint8_t mantissa_size1[16][4]
Definition: dolby_e.h:225
DBEContext::begin_gain
int begin_gain[MAX_CHANNELS]
Definition: dolby_e.h:100
DBEGroup::win_ofs
uint16_t win_ofs
Definition: dolby_e.h:57
DBEGroup
Definition: dolby_e.h:47
MAX_GROUPS
#define MAX_GROUPS
Definition: dolby_e.h:40