reworked compression handling logic
[swftools.git] / lib / lame / l3side.h
1 /*
2  *      Layer 3 side include file
3  *
4  *      Copyright (c) 1999 Mark Taylor
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library 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  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public
17  * License along with this library; if not, write to the
18  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19  * Boston, MA 02111-1307, USA.
20  */
21
22 #ifndef LAME_L3SIDE_H
23 #define LAME_L3SIDE_H
24
25 #include "encoder.h"
26 #include "machine.h"
27
28 /* Layer III side information. */
29
30 typedef FLOAT8  D576[576];
31 typedef int     I576[576];
32 typedef FLOAT8  D192_3[192][3];
33 typedef int     I192_3[192][3];
34
35
36 typedef struct 
37 {
38    int l[1+SBMAX_l];
39    int s[1+SBMAX_s];
40 } scalefac_struct;
41
42
43 typedef struct {
44         FLOAT8  l[SBMAX_l];
45         FLOAT8  s[SBMAX_s][3];
46 } III_psy_xmin;
47
48 typedef struct {
49     III_psy_xmin thm;
50     III_psy_xmin en;
51 } III_psy_ratio;
52
53 typedef struct {
54         int part2_3_length;
55         int big_values;
56         int count1;
57         int global_gain;
58         int scalefac_compress;
59         int window_switching_flag;
60         int block_type;
61         int mixed_block_flag;
62         int table_select[3];
63          int subblock_gain[3];
64          int region0_count;
65          int region1_count;
66          int preflag;
67          int scalefac_scale;
68          int count1table_select;
69
70          int part2_length;
71          int sfb_lmax;
72          int sfb_smin;
73          int count1bits;
74         /* added for LSF */
75          const int *sfb_partition_table;
76          int slen[4];
77 } gr_info;
78
79 typedef struct {
80         int main_data_begin; 
81         int private_bits;
82         int resvDrain_pre;
83         int resvDrain_post;
84         int scfsi[2][4];
85         struct {
86                 struct gr_info_ss {
87                         gr_info tt;
88                         } ch[2];
89                 } gr[2];
90         } III_side_info_t;
91
92 /* Layer III scale factors. */
93 /* note: there are only SBPSY_l=(SBMAX_l-1) and SBPSY_s=(SBMAX_s-1) scalefactors.
94  * Dont know why these would be dimensioned SBMAX_l and SBMAX-s */
95 typedef struct {
96         int l[SBMAX_l];            /* [cb] */
97         int s[SBMAX_s][3];         /* [window][cb] */
98 } III_scalefac_t;  /* [gr][ch] */
99
100 #endif