Source file: /~heha/hsn/zqr.zip/src/lame_enc/quantize_pvt.h

/*	quantize_pvt include file
 *	Copyright (c) 1999 Takehiro TOMINAGA
 */

#pragma once

#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 char 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 FLOAT pow43[PRECALC_SIZE];
#ifdef TAKEHIRO_IEEE754_HACK
extern FLOAT adj43asm[PRECALC_SIZE];
#else
extern FLOAT adj43[PRECALC_SIZE];
#endif

#define Q_MAX (256+1)
#define Q_MAX2 116      /* minimum possible number of
                           -cod_info->global_gain
                           + ((scalefac[] + (cod_info->preflag ? pretab[sfb] : 0))
                           << (cod_info->scalefac_scale + 1))
                           + cod_info->subblock_gain[cod_info->window[sfb]] * 8;

                           for long block, 0+((15+3)<<2) = 18*4 = 72
                           for short block, 0+(15<<2)+7*8 = 15*4+56 = 116
                         */

extern FLOAT pow20[Q_MAX + Q_MAX2 + 1];
extern FLOAT ipow20[Q_MAX];

typedef struct calc_noise_result_t {
    FLOAT   over_noise;      /* sum of quantization noise > masking */
    FLOAT   tot_noise;       /* sum of all quantization noise */
    FLOAT   max_noise;       /* max quantization noise */
    int     over_count;      /* number of quantization noise > masking */
    int     over_SSD;        /* SSD-like cost of distorted bands */
    int     bits;
} calc_noise_result;


/**
* allows re-use of previously
* computed noise values
*/
typedef struct calc_noise_data_t {
    int     global_gain;
    int     sfb_count1;
    int     step[39];
    FLOAT   noise[39];
    FLOAT   noise_log[39];
} calc_noise_data;


int  on_pe(lame_internal_flags&, const FLOAT pe[2][2], int targ_bits[2], int mean_bits, int gr, int cbr);
void reduce_side(int targ_bits[2], FLOAT ms_ener_ratio, int mean_bits, int max_bits);


void iteration_init(lame_internal_flags&);

int  calc_xmin(lame_internal_flags const&,
                  III_psy_ratio const *const ratio, gr_info & cod_info, FLOAT * l3_xmin);

int     calc_noise(const gr_info & cod_info,
                   const FLOAT * l3_xmin,
                   FLOAT * distort, calc_noise_result * const res, calc_noise_data * prev_noise);

void set_frame_pinfo(lame_internal_flags&, const III_psy_ratio ratio[2][2]);

/* takehiro.cpp */
int  count_bits(lame_internal_flags const &, const FLOAT * const xr, gr_info&, calc_noise_data*);
int  noquant_count_bits(lame_internal_flags const &, gr_info&, calc_noise_data*);
void best_huffman_divide(const lame_internal_flags&, gr_info&);
void best_scalefac_store(const lame_internal_flags&, int gr, int ch, III_side_info_t&);
int  scale_bitcount(const lame_internal_flags&, gr_info&);
void huffman_init(lame_internal_flags&);
void init_xrpow_core_init(lame_internal_flags&);
FLOAT athAdjust(FLOAT a, FLOAT x, FLOAT athFloor, float ATHfixpoint);

#define LARGE_BITS 100000
Detected encoding: UTF-80