1dce513f4c06fc0ff4a4384fead18b6b84429a67
[ffmpeg.git] / libavcodec / libac3 / ac3_internal.h
1 /* 
2  *    ac3_internal.h
3  *
4  *      Copyright (C) Aaron Holtzman - May 1999
5  *
6  *  This file is part of ac3dec, a free Dolby AC-3 stream decoder.
7  *      
8  *  ac3dec is free software; you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation; either version 2, or (at your option)
11  *  any later version.
12  *   
13  *  ac3dec 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
16  *  GNU General Public License for more details.
17  *   
18  *  You should have received a copy of the GNU General Public License
19  *  along with GNU Make; see the file COPYING.  If not, write to
20  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
21  *
22  */
23
24 #define LEVEL_PLUS3DB 1.4142135623730951
25 #define LEVEL_3DB 0.7071067811865476
26 #define LEVEL_45DB 0.5946035575013605
27 #define LEVEL_6DB 0.5
28
29 /* Exponent strategy constants */
30 #define EXP_REUSE (0)
31 #define EXP_D15   (1)
32 #define EXP_D25   (2)
33 #define EXP_D45   (3)
34
35 /* Delta bit allocation constants */
36 #define DELTA_BIT_REUSE (0)
37 #define DELTA_BIT_NEW (1)
38 #define DELTA_BIT_NONE (2)
39 #define DELTA_BIT_RESERVED (3)
40
41 void bit_allocate (ac3_state_t * state, ac3_ba_t * ba, int bndstart,
42                    int start, int end, int fastleak, int slowleak,
43                    uint8_t * exp, int8_t * bap);
44
45 int downmix_init (int input, int flags, float * level, float clev, float slev);
46 void downmix (float * samples, int acmod, int output, float level, float bias,
47               float clev, float slev);
48
49 void imdct_init (void);
50 extern void (* imdct_256) (float data[], float delay[]);
51 extern void (* imdct_512) (float data[], float delay[]);