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 #define IXMAX_VAL 8206 /* ix always <= 8191+15. see count_bits() */ 26 27 /* buggy Winamp decoder cannot handle values > 8191 */ 28 /* #define IXMAX_VAL 8191 */ 29 30 #define PRECALC_SIZE (IXMAX_VAL+2) 31 32 33 extern const int nr_of_sfb_block[6][3][4]; 34 extern const int pretab[SBMAX_l]; 35 extern const int slen1_tab[16]; 36 extern const int slen2_tab[16]; 37 38 extern const scalefac_struct sfBandIndex[9]; 39 40 extern FLOAT pow43[PRECALC_SIZE]; 41 #ifdef TAKEHIRO_IEEE754_HACK 42 extern FLOAT adj43asm[PRECALC_SIZE]; 43 #else 44 extern FLOAT adj43[PRECALC_SIZE]; 45 #endif 46 47 #define Q_MAX (256+1) 48 #define Q_MAX2 116 /* minimum possible number of 49 -cod_info->global_gain 50 + ((scalefac[] + (cod_info->preflag ? pretab[sfb] : 0)) 51 << (cod_info->scalefac_scale + 1)) 52 + cod_info->subblock_gain[cod_info->window[sfb]] * 8; 53 54 for long block, 0+((15+3)<<2) = 18*4 = 72 55 for short block, 0+(15<<2)+7*8 = 15*4+56 = 116 56 */ 57 58 extern FLOAT pow20[Q_MAX + Q_MAX2 + 1]; 59 extern FLOAT ipow20[Q_MAX]; 60 61 typedef struct calc_noise_result_t { 62 FLOAT over_noise; /* sum of quantization noise > masking */ 63 FLOAT tot_noise; /* sum of all quantization noise */ 64 FLOAT max_noise; /* max quantization noise */ 65 int over_count; /* number of quantization noise > masking */ 66 int over_SSD; /* SSD-like cost of distorted bands */ 67 int bits; 68 } calc_noise_result; 69 70 71 /** 72 * allows re-use of previously 73 * computed noise values 74 */ 75 typedef struct calc_noise_data_t { 76 int global_gain; 77 int sfb_count1; 78 int step[39]; 79 FLOAT noise[39]; 80 FLOAT noise_log[39]; 81 } calc_noise_data; 82 83 84 int on_pe(lame_internal_flags * gfc, const FLOAT pe[2][2], 85 int targ_bits[2], int mean_bits, int gr, int cbr); 86 87 void reduce_side(int targ_bits[2], FLOAT ms_ener_ratio, int mean_bits, int max_bits); 88 89 90 void iteration_init(lame_internal_flags * gfc); 91 92 93 int calc_xmin(lame_internal_flags const *gfc, 94 III_psy_ratio const *const ratio, gr_info * const cod_info, FLOAT * l3_xmin); 95 96 int calc_noise(const gr_info * const cod_info, 97 const FLOAT * l3_xmin, 98 FLOAT * distort, calc_noise_result * const res, calc_noise_data * prev_noise); 99 100 void set_frame_pinfo(lame_internal_flags * gfc, const III_psy_ratio ratio[2][2]); 101 102 103 104 105 /* takehiro.c */ 106 107 int count_bits(lame_internal_flags const *const gfc, const FLOAT * const xr, 108 gr_info * const cod_info, calc_noise_data * prev_noise); 109 int noquant_count_bits(lame_internal_flags const *const gfc, 110 gr_info * const cod_info, calc_noise_data * prev_noise); 111 112 113 void best_huffman_divide(const lame_internal_flags * const gfc, gr_info * const cod_info); 114 115 void best_scalefac_store(const lame_internal_flags * gfc, const int gr, const int ch, 116 III_side_info_t * const l3_side); 117 118 int scale_bitcount(const lame_internal_flags * gfc, gr_info * cod_info); 119 120 void huffman_init(lame_internal_flags * const gfc); 121 122 void init_xrpow_core_init(lame_internal_flags * const gfc); 123 124 FLOAT athAdjust(FLOAT a, FLOAT x, FLOAT athFloor, float ATHfixpoint); 125 126 #define LARGE_BITS 100000 127 128 #endif /* LAME_QUANTIZE_PVT_H */ 129