]> git.sesse.net Git - vlc/blob - src/ac3_decoder/ac3_decoder.c
Created a small&clean public interface for the ac3 decoder (see ac3_decoder.h)
[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     parse_bsi (p_ac3dec);
18
19     for (i = 0; i < 6; i++) {
20         parse_audblk (p_ac3dec);
21         if (exponent_unpack (p_ac3dec))
22             return 1;
23         bit_allocate (p_ac3dec);
24         mantissa_unpack (p_ac3dec);
25         if  (p_ac3dec->bsi.acmod == 0x2)
26             rematrix (p_ac3dec);
27         imdct (p_ac3dec);
28         downmix (p_ac3dec, buffer);
29
30         buffer += 2*256;
31     }
32
33     parse_auxdata (p_ac3dec);
34
35     return 0;
36 }