source: titan/libdreamdvd/mpegaudio_enc.h @ 43326

Last change on this file since 43326 was 14963, checked in by nit, 10 years ago

[titan] change to unix format

File size: 15.4 KB
Line 
1/*
2 * The simplest mpeg audio layer 2 encoder
3 * Copyright (c) 2000, 2001 Fabrice Bellard.
4 *
5 * This routines are normaly part of FFmpeg and had been isolated
6 * for use in DreamDVD by Seddi.
7 *
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 *
22 * part of libdreamdvd
23 */
24
25#ifndef __MPEGAUDIO_ENC_H__
26
27#define __MPEGAUDIO_ENC_H__
28
29#include <stdint.h>
30#include <inttypes.h>
31#include <stdlib.h>
32#include <stdio.h>
33#include <string.h>
34#include <assert.h>
35#include <byteswap.h>
36#include <math.h>
37
38#define FLOOR(a)        ((int)(a) - ((a) < 0 && (a) != (int)(a)))
39#define SQRT2 1.41421356237309514547
40#define FRAC_BITS   15   /* fractional bits for sb_samples and dct */
41#define WFRAC_BITS  14   /* fractional bits for window */
42#define FRAC_ONE        (1 << FRAC_BITS)
43#define MUL(a,b) (((int64_t)(a) * (int64_t)(b)) >> FRAC_BITS)
44#define FIX(a)   ((int)((a) * FRAC_ONE))
45#define WSHIFT (WFRAC_BITS + 15 - FRAC_BITS)
46#define MPA_MAX_CHANNELS 2
47
48#define SBLIMIT 32 /* number of subbands */
49/* max frame size, in samples */
50#define MPA_FRAME_SIZE 1152
51
52/* max compressed frame size */
53#define MPA_MAX_CODED_FRAME_SIZE 1792
54#define SAMPLES_BUF_SIZE 4096
55#define NB_CHANNELS 2
56#define MPA_MAX_CODED_FRAME_SIZE 1792
57#define MPA_STEREO  0
58#define MPA_MONO    3
59
60static const int ddvd_mpa_costab32[30] = {
61    FIX(0.54119610014619701222),
62    FIX(1.3065629648763763537),
63
64    FIX(0.50979557910415917998),
65    FIX(2.5629154477415054814),
66    FIX(0.89997622313641556513),
67    FIX(0.60134488693504528634),
68
69    FIX(0.5024192861881556782),
70    FIX(5.1011486186891552563),
71    FIX(0.78815462345125020249),
72    FIX(0.64682178335999007679),
73    FIX(0.56694403481635768927),
74    FIX(1.0606776859903470633),
75    FIX(1.7224470982383341955),
76    FIX(0.52249861493968885462),
77
78    FIX(10.19000812354803287),
79    FIX(0.674808341455005678),
80    FIX(1.1694399334328846596),
81    FIX(0.53104259108978413284),
82    FIX(2.0577810099534108446),
83    FIX(0.58293496820613388554),
84    FIX(0.83934964541552681272),
85    FIX(0.50547095989754364798),
86    FIX(3.4076084184687189804),
87    FIX(0.62250412303566482475),
88    FIX(0.97256823786196078263),
89    FIX(0.51544730992262455249),
90    FIX(1.4841646163141661852),
91    FIX(0.5531038960344445421),
92    FIX(0.74453627100229857749),
93    FIX(0.5006029982351962726),
94};
95
96static const int ddvd_mpa_bitinv32[32] = {
97    0,  16,  8, 24,  4,  20,  12,  28,
98    2,  18, 10, 26,  6,  22,  14,  30,
99    1,  17,  9, 25,  5,  21,  13,  29,
100    3,  19, 11, 27,  7,  23,  15,  31
101};
102
103
104static int16_t ddvd_mpa_filter_bank[512];
105
106const uint16_t ddvd_mpa_ff_mpa_freq_tab[3] = { 44100, 48000, 32000 };
107
108const int ddvd_mpa_ff_mpa_quant_steps[17] = {
109    3,     5,    7,    9,    15,
110    31,    63,  127,  255,   511,
111    1023,  2047, 4095, 8191, 16383,
112    32767, 65535
113};
114
115const uint16_t ddvd_mpa_ff_mpa_bitrate_tab[2][3][15] = {
116    { {0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448 },
117      {0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384 },
118      {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 } },
119    { {0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256},
120      {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160},
121      {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160}
122    }
123};
124
125int ddvd_mpa_ff_mpa_l2_select_table(int bitrate, int nb_channels, int freq, int lsf)
126{
127    int ch_bitrate, table;
128
129    ch_bitrate = bitrate / nb_channels;
130    if (!lsf) {
131        if ((freq == 48000 && ch_bitrate >= 56) ||
132            (ch_bitrate >= 56 && ch_bitrate <= 80))
133            table = 0;
134        else if (freq != 48000 && ch_bitrate >= 96)
135            table = 1;
136        else if (freq != 32000 && ch_bitrate <= 48)
137            table = 2;
138        else
139            table = 3;
140    } else {
141        table = 4;
142    }
143    return table;
144}
145
146const int ddvd_mpa_ff_mpa_sblimit_table[5] = { 27 , 30 , 8, 12 , 30 };
147
148/* encoding tables which give the quantization index. Note how it is
149   possible to store them efficiently ! */
150static const unsigned char ddvd_mpa_alloc_table_0[] = {
151 4,  0,  2,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
152 4,  0,  2,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
153 4,  0,  2,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
154 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
155 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
156 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
157 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
158 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
159 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
160 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
161 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
162 3,  0,  1,  2,  3,  4,  5, 16,
163 3,  0,  1,  2,  3,  4,  5, 16,
164 3,  0,  1,  2,  3,  4,  5, 16,
165 3,  0,  1,  2,  3,  4,  5, 16,
166 3,  0,  1,  2,  3,  4,  5, 16,
167 3,  0,  1,  2,  3,  4,  5, 16,
168 3,  0,  1,  2,  3,  4,  5, 16,
169 3,  0,  1,  2,  3,  4,  5, 16,
170 3,  0,  1,  2,  3,  4,  5, 16,
171 3,  0,  1,  2,  3,  4,  5, 16,
172 3,  0,  1,  2,  3,  4,  5, 16,
173 3,  0,  1,  2,  3,  4,  5, 16,
174 2,  0,  1, 16,
175 2,  0,  1, 16,
176 2,  0,  1, 16,
177 2,  0,  1, 16,
178};
179
180static const unsigned char ddvd_mpa_alloc_table_1[] = {
181 4,  0,  2,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
182 4,  0,  2,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
183 4,  0,  2,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
184 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
185 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
186 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
187 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
188 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
189 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
190 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
191 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 16,
192 3,  0,  1,  2,  3,  4,  5, 16,
193 3,  0,  1,  2,  3,  4,  5, 16,
194 3,  0,  1,  2,  3,  4,  5, 16,
195 3,  0,  1,  2,  3,  4,  5, 16,
196 3,  0,  1,  2,  3,  4,  5, 16,
197 3,  0,  1,  2,  3,  4,  5, 16,
198 3,  0,  1,  2,  3,  4,  5, 16,
199 3,  0,  1,  2,  3,  4,  5, 16,
200 3,  0,  1,  2,  3,  4,  5, 16,
201 3,  0,  1,  2,  3,  4,  5, 16,
202 3,  0,  1,  2,  3,  4,  5, 16,
203 3,  0,  1,  2,  3,  4,  5, 16,
204 2,  0,  1, 16,
205 2,  0,  1, 16,
206 2,  0,  1, 16,
207 2,  0,  1, 16,
208 2,  0,  1, 16,
209 2,  0,  1, 16,
210 2,  0,  1, 16,
211};
212
213static const unsigned char ddvd_mpa_alloc_table_2[] = {
214 4,  0,  1,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
215 4,  0,  1,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
216 3,  0,  1,  3,  4,  5,  6,  7,
217 3,  0,  1,  3,  4,  5,  6,  7,
218 3,  0,  1,  3,  4,  5,  6,  7,
219 3,  0,  1,  3,  4,  5,  6,  7,
220 3,  0,  1,  3,  4,  5,  6,  7,
221 3,  0,  1,  3,  4,  5,  6,  7,
222};
223
224static const unsigned char ddvd_mpa_alloc_table_3[] = {
225 4,  0,  1,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
226 4,  0,  1,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
227 3,  0,  1,  3,  4,  5,  6,  7,
228 3,  0,  1,  3,  4,  5,  6,  7,
229 3,  0,  1,  3,  4,  5,  6,  7,
230 3,  0,  1,  3,  4,  5,  6,  7,
231 3,  0,  1,  3,  4,  5,  6,  7,
232 3,  0,  1,  3,  4,  5,  6,  7,
233 3,  0,  1,  3,  4,  5,  6,  7,
234 3,  0,  1,  3,  4,  5,  6,  7,
235 3,  0,  1,  3,  4,  5,  6,  7,
236 3,  0,  1,  3,  4,  5,  6,  7,
237};
238
239static const unsigned char ddvd_mpa_alloc_table_4[] = {
240 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
241 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
242 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
243 4,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
244 3,  0,  1,  3,  4,  5,  6,  7,
245 3,  0,  1,  3,  4,  5,  6,  7,
246 3,  0,  1,  3,  4,  5,  6,  7,
247 3,  0,  1,  3,  4,  5,  6,  7,
248 3,  0,  1,  3,  4,  5,  6,  7,
249 3,  0,  1,  3,  4,  5,  6,  7,
250 3,  0,  1,  3,  4,  5,  6,  7,
251 2,  0,  1,  3,
252 2,  0,  1,  3,
253 2,  0,  1,  3,
254 2,  0,  1,  3,
255 2,  0,  1,  3,
256 2,  0,  1,  3,
257 2,  0,  1,  3,
258 2,  0,  1,  3,
259 2,  0,  1,  3,
260 2,  0,  1,  3,
261 2,  0,  1,  3,
262 2,  0,  1,  3,
263 2,  0,  1,  3,
264 2,  0,  1,  3,
265 2,  0,  1,  3,
266 2,  0,  1,  3,
267 2,  0,  1,  3,
268 2,  0,  1,  3,
269 2,  0,  1,  3,
270};
271
272const unsigned char *ddvd_mpa_ff_mpa_alloc_tables[5] =
273{ ddvd_mpa_alloc_table_0, ddvd_mpa_alloc_table_1, ddvd_mpa_alloc_table_2, ddvd_mpa_alloc_table_3, ddvd_mpa_alloc_table_4, };
274
275
276const int32_t ddvd_mpa_ff_mpa_enwindow[257] = {
277     0,    -1,    -1,    -1,    -1,    -1,    -1,    -2,
278    -2,    -2,    -2,    -3,    -3,    -4,    -4,    -5,
279    -5,    -6,    -7,    -7,    -8,    -9,   -10,   -11,
280   -13,   -14,   -16,   -17,   -19,   -21,   -24,   -26,
281   -29,   -31,   -35,   -38,   -41,   -45,   -49,   -53,
282   -58,   -63,   -68,   -73,   -79,   -85,   -91,   -97,
283  -104,  -111,  -117,  -125,  -132,  -139,  -147,  -154,
284  -161,  -169,  -176,  -183,  -190,  -196,  -202,  -208,
285   213,   218,   222,   225,   227,   228,   228,   227,
286   224,   221,   215,   208,   200,   189,   177,   163,
287   146,   127,   106,    83,    57,    29,    -2,   -36,
288   -72,  -111,  -153,  -197,  -244,  -294,  -347,  -401,
289  -459,  -519,  -581,  -645,  -711,  -779,  -848,  -919,
290  -991, -1064, -1137, -1210, -1283, -1356, -1428, -1498,
291 -1567, -1634, -1698, -1759, -1817, -1870, -1919, -1962,
292 -2001, -2032, -2057, -2075, -2085, -2087, -2080, -2063,
293  2037,  2000,  1952,  1893,  1822,  1739,  1644,  1535,
294  1414,  1280,  1131,   970,   794,   605,   402,   185,
295   -45,  -288,  -545,  -814, -1095, -1388, -1692, -2006,
296 -2330, -2663, -3004, -3351, -3705, -4063, -4425, -4788,
297 -5153, -5517, -5879, -6237, -6589, -6935, -7271, -7597,
298 -7910, -8209, -8491, -8755, -8998, -9219, -9416, -9585,
299 -9727, -9838, -9916, -9959, -9966, -9935, -9863, -9750,
300 -9592, -9389, -9139, -8840, -8492, -8092, -7640, -7134,
301  6574,  5959,  5288,  4561,  3776,  2935,  2037,  1082,
302    70,  -998, -2122, -3300, -4533, -5818, -7154, -8540,
303 -9975,-11455,-12980,-14548,-16155,-17799,-19478,-21189,
304-22929,-24694,-26482,-28289,-30112,-31947,-33791,-35640,
305-37489,-39336,-41176,-43006,-44821,-46617,-48390,-50137,
306-51853,-53534,-55178,-56778,-58333,-59838,-61289,-62684,
307-64019,-65290,-66494,-67629,-68692,-69679,-70590,-71420,
308-72169,-72835,-73415,-73908,-74313,-74630,-74856,-74992,
309 75038,
310};
311
312
313static int ddvd_mpa_scale_factor_table[64];
314static unsigned char ddvd_mpa_scale_diff_table[128];
315static int8_t ddvd_mpa_scale_factor_shift[64];
316static unsigned short ddvd_mpa_scale_factor_mult[64];
317
318const uint8_t ddvd_mpa_ff_log2_tab[256]={
319        0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
320        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
321        6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
322        6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
323        7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
324        7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
325        7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
326        7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
327};
328
329static inline int ddvd_mpa_av_log2(unsigned int v)
330{
331    int n;
332
333    n = 0;
334    if (v & 0xffff0000) {
335        v >>= 16;
336        n += 16;
337    }
338    if (v & 0xff00) {
339        v >>= 8;
340        n += 8;
341    }
342    n += ddvd_mpa_ff_log2_tab[v];
343
344    return n;
345}
346
347/* fixed psycho acoustic model. Values of SNR taken from the 'toolame'
348   project */
349static const float ddvd_mpa_fixed_smr[SBLIMIT] =  {
350    30, 17, 16, 10, 3, 12, 8, 2.5,
351    5, 5, 6, 6, 5, 6, 10, 6,
352    -4, -10, -21, -30, -42, -55, -68, -75,
353    -75, -75, -75, -75, -91, -107, -110, -108
354};
355
356#define SB_NOTALLOCATED  0
357#define SB_ALLOCATED     1
358#define SB_NOMORE        2
359
360
361
362/* total number of bits per allocation group */
363static unsigned short ddvd_mpa_total_quant_bits[17];
364
365static const unsigned short ddvd_mpa_quant_snr[17] = {
366     70, 110, 160, 208,
367    253, 316, 378, 439,
368    499, 559, 620, 680,
369    740, 800, 861, 920,
370    980
371};
372
373static const unsigned char ddvd_mpa_nb_scale_factors[4] = { 3, 2, 1, 2 };
374
375const int ddvd_mpa_ff_mpa_quant_bits[17] = {
376    -5,  -7,  3, -10, 4,
377     5,  6,  7,  8,  9,
378    10, 11, 12, 13, 14,
379    15, 16
380};
381
382
383#if BYTE_ORDER == BIG_ENDIAN
384#define be2me_16(x) (x)
385#define be2me_32(x) (x)
386#define be2me_64(x) (x)
387#define le2me_16(x) bswap_16(x)
388#define le2me_32(x) bswap_32(x)
389#define le2me_64(x) bswap_64(x)
390#else
391#define be2me_16(x) bswap_16(x)
392#define be2me_32(x) bswap_32(x)
393#define be2me_64(x) bswap_64(x)
394#define le2me_16(x) (x)
395#define le2me_32(x) (x)
396#define le2me_64(x) (x)
397#endif
398
399typedef struct ddvd_mpa_PutBitContext {
400    uint32_t bit_buf;
401    int bit_left;
402    uint8_t *buf, *buf_ptr, *buf_end;
403} ddvd_mpa_PutBitContext;
404
405
406static inline void ddvd_mpa_init_put_bits(ddvd_mpa_PutBitContext *s, uint8_t *buffer, int buffer_size)
407{
408    if(buffer_size < 0) {
409        buffer_size = 0;
410        buffer = NULL;
411    }
412
413    s->buf = buffer;
414    s->buf_end = s->buf + buffer_size;
415    s->buf_ptr = s->buf;
416    s->bit_left=32;
417    s->bit_buf=0;
418}
419
420static inline uint8_t* ddvd_mpa_pbBufPtr(ddvd_mpa_PutBitContext *s)
421{
422        return s->buf_ptr;
423}
424
425static inline void ddvd_mpa_flush_put_bits(ddvd_mpa_PutBitContext *s)
426{
427    s->bit_buf<<= s->bit_left;
428    while (s->bit_left < 32) {
429        /* XXX: should test end of buffer */
430        *s->buf_ptr++=s->bit_buf >> 24;
431        s->bit_buf<<=8;
432        s->bit_left+=8;
433    }
434    s->bit_left=32;
435    s->bit_buf=0;
436}
437
438
439
440static inline void ddvd_mpa_put_bits(ddvd_mpa_PutBitContext *s, int n, unsigned int value)
441{
442    unsigned int bit_buf;
443    int bit_left;
444
445    //    printf("put_bits=%d %x\n", n, value);
446    assert(n == 32 || value < (1U << n));
447
448    bit_buf = s->bit_buf;
449    bit_left = s->bit_left;
450
451    //    printf("n=%d value=%x cnt=%d buf=%x\n", n, value, bit_cnt, bit_buf);
452    /* XXX: optimize */
453    if (n < bit_left) {
454        bit_buf = (bit_buf<<n) | value;
455        bit_left-=n;
456    } else {
457        bit_buf<<=bit_left;
458        bit_buf |= value >> (n - bit_left);
459        *(uint32_t *)s->buf_ptr = be2me_32(bit_buf);
460        //printf("bitbuf = %08x\n", bit_buf);
461        s->buf_ptr+=4;
462        bit_left+=32 - n;
463        bit_buf = value;
464    }
465
466    s->bit_buf = bit_buf;
467    s->bit_left = bit_left;
468}
469
470
471int ddvd_mpa_samples_offset[MPA_MAX_CHANNELS];       /* offset in samples_buf */
472int ddvd_mpa_sb_samples[MPA_MAX_CHANNELS][3][12][SBLIMIT];
473short ddvd_mpa_samples_buf[MPA_MAX_CHANNELS][SAMPLES_BUF_SIZE]; /* buffer for filter */
474int ddvd_mpa_sblimit;
475unsigned char ddvd_mpa_scale_factors[MPA_MAX_CHANNELS][SBLIMIT][3]; /* scale factors */
476/* code to group 3 scale factors */
477unsigned char ddvd_mpa_scale_code[MPA_MAX_CHANNELS][SBLIMIT];
478int ddvd_mpa_frame_size; /* frame size, in bits, without padding */
479int ddvd_mpa_frame_frac, ddvd_mpa_frame_frac_incr, ddvd_mpa_do_padding;
480const unsigned char *ddvd_mpa_alloc_table;
481ddvd_mpa_PutBitContext pb;
482int ddvd_mpa_lsf;           /* 1 if mpeg2 low bitrate selected */
483int ddvd_mpa_bitrate_index; /* bit rate */
484int ddvd_mpa_freq_index;
485int ddvd_mpa_freq;
486int ddvd_mpa_bit_rate;
487int64_t ddvd_mpa_nb_samples;
488
489#endif
Note: See TracBrowser for help on using the repository browser.