X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Flame%2Fquantize_pvt.h;fp=lib%2Flame%2Fquantize_pvt.h;h=79e7a5aa021a34523f62ce07882cfbb0d3dd5a87;hb=698acf324aaa52147b1486646f6549ffd95804da;hp=0000000000000000000000000000000000000000;hpb=f8d07c79494e8536e682da73cee2057740a0e4db;p=swftools.git diff --git a/lib/lame/quantize_pvt.h b/lib/lame/quantize_pvt.h new file mode 100644 index 0000000..79e7a5a --- /dev/null +++ b/lib/lame/quantize_pvt.h @@ -0,0 +1,124 @@ +/* + * quantize_pvt include file + * + * Copyright (c) 1999 Takehiro TOMINAGA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_QUANTIZE_PVT_H +#define LAME_QUANTIZE_PVT_H + +#include "l3side.h" +#define IXMAX_VAL 8206 /* ix always <= 8191+15. see count_bits() */ + +/* buggy Winamp decoder cannot handle values > 8191 */ +/* #define IXMAX_VAL 8191 */ + +#define PRECALC_SIZE (IXMAX_VAL+2) + + +extern const int nr_of_sfb_block[6][3][4]; +extern const char pretab[SBMAX_l]; +extern const char slen1_tab[16]; +extern const char slen2_tab[16]; + +extern const scalefac_struct sfBandIndex[9]; + +extern FLOAT8 pow43[PRECALC_SIZE]; +extern FLOAT8 adj43[PRECALC_SIZE]; +extern FLOAT8 adj43asm[PRECALC_SIZE]; + +#define Q_MAX 330 + +extern FLOAT8 pow20[Q_MAX]; +extern FLOAT8 ipow20[Q_MAX]; +extern FLOAT8 *iipow20_; + +typedef struct calc_noise_result_t { + int over_count; /* number of quantization noise > masking */ + FLOAT8 over_noise; /* sum of quantization noise > masking */ + FLOAT8 tot_noise; /* sum of all quantization noise */ + FLOAT8 max_noise; /* max quantization noise */ + float klemm_noise; +} calc_noise_result; + +void compute_ath (lame_global_flags * gfp, FLOAT8 ATH_l[SBPSY_l], + FLOAT8 ATH_s[SBPSY_l]); + +void ms_convert (FLOAT8 xr[2][576], FLOAT8 xr_org[2][576]); + +int on_pe (lame_global_flags *gfp, FLOAT8 pe[2][2], III_side_info_t * l3_side, + int targ_bits[2], int mean_bits, int gr); + +void reduce_side (int targ_bits[2], FLOAT8 ms_ener_ratio, int mean_bits, + int max_bits); + + +int bin_search_StepSize (lame_internal_flags * const gfc, gr_info * const cod_info, + const int desired_rate, const int start, + const FLOAT8 xrpow[576], int l3enc[576]); + +int inner_loop (lame_internal_flags * const gfc, gr_info * const cod_info, const int max_bits, + const FLOAT8 xrpow[576], int l3enc[576]); + +void iteration_init (lame_global_flags *gfp); + + +int calc_xmin (lame_global_flags *gfp, const FLOAT8 xr[576], + const III_psy_ratio * const ratio, const gr_info * const cod_info, + III_psy_xmin * const l3_xmin); + +int calc_noise (const lame_internal_flags * const gfc, const FLOAT8 xr[576], + const int ix[576], const gr_info * const cod_info, + const III_psy_xmin * const l3_xmin, + const III_scalefac_t * const scalefac, + III_psy_xmin * distort, calc_noise_result * const res); + +void set_frame_pinfo (lame_global_flags *gfp, FLOAT8 xr[2][2][576], + III_psy_ratio ratio[2][2], int l3_enc[2][2][576], + III_scalefac_t scalefac[2][2]); + + +void quantize_xrpow (const FLOAT8 *xr, int *ix, FLOAT8 istep); + +void quantize_xrpow_ISO (const FLOAT8 *xr, int *ix, FLOAT8 istep); + + + +/* takehiro.c */ + +int count_bits (lame_internal_flags * const gfc, int * const ix, const FLOAT8 * const xr, + gr_info * const cod_info); + + +void best_huffman_divide (const lame_internal_flags * const gfc, + gr_info * const cod_info, int * const ix); + +void best_scalefac_store (const lame_internal_flags * gfc, const int gr, const int ch, + int l3_enc[2][2][576], III_side_info_t * const l3_side, + III_scalefac_t scalefac[2][2]); + +int scale_bitcount (III_scalefac_t * const scalefac, gr_info * const cod_info); + +int scale_bitcount_lsf (const lame_internal_flags *gfp, const III_scalefac_t * const scalefac, + gr_info * const cod_info); + +void huffman_init (lame_internal_flags * const gfc); + +#define LARGE_BITS 100000 + +#endif /* LAME_QUANTIZE_PVT_H */