Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/*
2
 *	quantize_pvt include file
3
 *
4
 *	Copyright (c) 1999 Takehiro TOMINAGA
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_QUANTIZE_PVT_H
23
#define LAME_QUANTIZE_PVT_H
24
 
25
#include "l3side.h"
26
#define IXMAX_VAL 8206  /* ix always <= 8191+15.    see count_bits() */
27
 
28
/* buggy Winamp decoder cannot handle values > 8191 */
29
/* #define IXMAX_VAL 8191 */
30
 
31
#define PRECALC_SIZE (IXMAX_VAL+2)
32
 
33
 
34
extern const int nr_of_sfb_block[6][3][4];
35
extern const char pretab[SBMAX_l];
36
extern const char slen1_tab[16];
37
extern const char slen2_tab[16];
38
 
39
extern const scalefac_struct sfBandIndex[9];
40
 
41
extern FLOAT8 pow43[PRECALC_SIZE];
42
extern FLOAT8 adj43[PRECALC_SIZE];
43
extern FLOAT8 adj43asm[PRECALC_SIZE];
44
 
45
#define Q_MAX 330
46
 
47
extern FLOAT8 pow20[Q_MAX];
48
extern FLOAT8 ipow20[Q_MAX];
49
 
50
typedef struct calc_noise_result_t {
51
    int     over_count;      /* number of quantization noise > masking */
52
    int     tot_count;       /* all */
53
    FLOAT8  over_noise;      /* sum of quantization noise > masking */
54
    FLOAT8  tot_noise;       /* sum of all quantization noise */
55
    FLOAT8  max_noise;       /* max quantization noise */
56
    float   klemm_noise;
57
    FLOAT8  dist_l[SBMAX_l];
58
    FLOAT8  dist_s[3][SBMAX_s];
59
} calc_noise_result;
60
 
61
void    compute_ath (lame_global_flags * gfp, FLOAT8 ATH_l[SBPSY_l],
62
                     FLOAT8 ATH_s[SBPSY_l]);
63
 
64
void    ms_convert (FLOAT8 xr[2][576], FLOAT8 xr_org[2][576]);
65
 
66
int     on_pe (lame_global_flags *gfp, FLOAT8 pe[2][2], III_side_info_t * l3_side,
67
               int targ_bits[2], int mean_bits, int gr);
68
 
69
void    reduce_side (int targ_bits[2], FLOAT8 ms_ener_ratio, int mean_bits,
70
                     int max_bits);
71
 
72
 
73
int     bin_search_StepSize (lame_internal_flags * gfc, gr_info * cod_info,
74
                             int desired_rate, int start,
75
                             const FLOAT8 xrpow[576], int l3enc[576]);
76
 
77
int     inner_loop (lame_internal_flags * gfc, gr_info * cod_info, int max_bits,
78
                    const FLOAT8 xrpow[576], int l3enc[576]);
79
 
80
void    iteration_init (lame_global_flags *gfp);
81
 
82
 
83
int     calc_xmin (lame_global_flags *gfp, const FLOAT8 xr[576],
84
                   const III_psy_ratio * ratio, const gr_info * cod_info,
85
                   III_psy_xmin * l3_xmin);
86
 
87
int     calc_noise (const lame_internal_flags * gfc, const FLOAT8 xr[576],
88
                    const int ix[576], const gr_info * cod_info,
89
                    const III_psy_xmin * l3_xmin,
90
                    const III_scalefac_t * scalefac,
91
                    III_psy_xmin * distort, calc_noise_result * res);
92
 
93
void    set_frame_pinfo (lame_global_flags *gfp, FLOAT8 xr[2][2][576],
94
                         III_psy_ratio ratio[2][2], int l3_enc[2][2][576],
95
                         III_scalefac_t scalefac[2][2]);
96
 
97
 
98
void    quantize_xrpow (const FLOAT8 xr[576], int ix[576], FLOAT8 istep);
99
 
100
void    quantize_xrpow_ISO (const FLOAT8 xr[576], int ix[576], FLOAT8 istep);
101
 
102
 
103
 
104
/* takehiro.c */
105
 
106
int     count_bits (lame_internal_flags * gfc, int *ix, const FLOAT8 xr[576],
107
                    gr_info * cod_info);
108
 
109
 
110
void    best_huffman_divide (const lame_internal_flags * gfc, int gr, int ch,
111
                             gr_info * cod_info, int *ix);
112
 
113
void    best_scalefac_store (const lame_internal_flags * gfc, int gr, int ch,
114
                             int l3_enc[2][2][576], III_side_info_t * l3_side,
115
                             III_scalefac_t scalefac[2][2]);
116
 
117
int     scale_bitcount (III_scalefac_t * scalefac, gr_info * cod_info);
118
 
119
int     scale_bitcount_lsf (const lame_internal_flags *gfp, const III_scalefac_t * scalefac,
120
                            gr_info * cod_info);
121
 
122
void    huffman_init (lame_internal_flags * gfc);
123
 
124
#define LARGE_BITS 100000
125
 
126
#endif /* LAME_QUANTIZE_PVT_H */