]> git.sesse.net Git - vlc/blob - src/ac3_decoder/ac3_decoder.c
43d7d7cdb22239acbcaeb876dc66a843a332d00c
[vlc] / src / ac3_decoder / ac3_decoder.c
1 #include "int_types.h"
2 #include "ac3_decoder.h"
3 #include "ac3_internal.h"
4
5 int ac3_init (ac3dec_t * p_ac3dec)
6 {
7     //p_ac3dec->bit_stream.buffer = 0;
8     //p_ac3dec->bit_stream.i_available = 0;
9
10     return 0;
11 }
12
13 int ac3_decode_frame (ac3dec_t * p_ac3dec, s16 * buffer)
14 {
15     int i;
16
17     if (parse_bsi (p_ac3dec))
18         return 1;
19
20     for (i = 0; i < 6; i++) {
21         if (parse_audblk (p_ac3dec, i))
22             return 1;
23         if (exponent_unpack (p_ac3dec))
24             return 1;
25         bit_allocate (p_ac3dec);
26         mantissa_unpack (p_ac3dec);
27         if  (p_ac3dec->bsi.acmod == 0x2)
28             rematrix (p_ac3dec);
29         imdct (p_ac3dec);
30         downmix (p_ac3dec, buffer);
31
32         buffer += 2*256;
33     }
34
35     parse_auxdata (p_ac3dec);
36
37     return 0;
38 }