home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 13 / AACD13.ISO / AACD / Sound / LAME / src / quantize-pvt.h < prev    next >
C/C++ Source or Header  |  2000-07-31  |  4KB  |  142 lines

  1. #ifndef LOOP_PVT_H
  2. #define LOOP_PVT_H
  3. #include "l3side.h"
  4. #define IXMAX_VAL 8206 /* ix always <= 8191+15.    see count_bits() */
  5. #define PRECALC_SIZE (IXMAX_VAL+2)
  6.  
  7.  
  8. extern int convert_mdct, convert_psy, reduce_sidechannel;
  9. extern unsigned int nr_of_sfb_block[6][3][4];
  10. extern int pretab[SBMAX_l];
  11. extern const int slen1_tab[16];
  12. extern const int slen2_tab[16];
  13.  
  14. extern const scalefac_struct sfBandIndex[9];
  15.  
  16. extern FLOAT8 pow43[PRECALC_SIZE];
  17. extern FLOAT8 adj43[PRECALC_SIZE];
  18. extern FLOAT8 adj43asm[PRECALC_SIZE];
  19.  
  20. #define Q_MAX 330
  21.  
  22. extern FLOAT8 pow20[Q_MAX];
  23. extern FLOAT8 ipow20[Q_MAX];
  24.  
  25. typedef struct calc_noise_result_t {
  26.     int over_count;        /* number of quantization noise > masking */
  27.     int tot_count;        /* all */
  28.     FLOAT8 over_noise;    /* sum of quantization noise > masking */
  29.     FLOAT8 tot_noise;    /* sum of all quantization noise */
  30.     FLOAT8 max_noise;    /* max quantization noise */
  31. } calc_noise_result;
  32.  
  33. void compute_ath(lame_global_flags *gfp,FLOAT8 ATH_l[SBPSY_l],FLOAT8 ATH_s[SBPSY_l]);
  34. void ms_convert(FLOAT8 xr[2][576],FLOAT8 xr_org[2][576]);
  35. int on_pe(lame_global_flags *gfp,FLOAT8 pe[2][2],III_side_info_t *l3_side,
  36. int targ_bits[2],int mean_bits, int gr);
  37. void reduce_side(int targ_bits[2],FLOAT8 ms_ener_ratio,int mean_bits,int max_bits);
  38.  
  39.  
  40. void outer_loop( lame_global_flags *gfp,
  41.                 FLOAT8 xr[576],     /*vector of the magnitudees of the spectral values */
  42.                 int bits,
  43.         FLOAT8 noise[4],
  44.                 III_psy_xmin *l3_xmin, /* the allowed distortion of the scalefactor */
  45.                 int l3_enc[576],    /* vector of quantized values ix(0..575) */
  46.          III_scalefac_t *scalefac, /* scalefactors */
  47.          gr_info *,
  48.                 FLOAT8 xfsf[4][SBMAX_l],
  49.         int ch, FLOAT8 xrpow[576]);
  50.  
  51.  
  52.  
  53. void iteration_init( lame_global_flags *gfp,III_side_info_t *l3_side, int l3_enc[2][2][576]);
  54.  
  55. void huffman_init( lame_global_flags *gfp );
  56.  
  57. int inner_loop( lame_global_flags *gfp,FLOAT8 xrpow[576],
  58.                 int l3_enc[576],
  59.                 int max_bits,
  60.                 gr_info *cod_info);
  61.  
  62. int calc_xmin( lame_global_flags *gfp,FLOAT8 xr[576],
  63.                 III_psy_ratio *ratio,
  64.                 gr_info *cod_info,
  65.                 III_psy_xmin *l3_xmin);
  66.  
  67. int scale_bitcount( III_scalefac_t *scalefac, gr_info *cod_info);
  68. int scale_bitcount_lsf( III_scalefac_t *scalefac, gr_info *cod_info);
  69. int calc_noise( lame_global_flags *gfp, FLOAT8 xr[576],
  70.                  int ix[576],
  71.                  gr_info *cod_info,
  72.                  FLOAT8 xfsf[4][SBMAX_l], 
  73.          FLOAT8 distort[4][SBMAX_l],
  74.                  III_psy_xmin *l3_xmin,
  75.          III_scalefac_t *,
  76.                  calc_noise_result *);
  77.  
  78. int loop_break( III_scalefac_t *scalefac, gr_info *cod_info);
  79.  
  80. void amp_scalefac_bands(lame_global_flags *gfp, FLOAT8 xrpow[576],
  81.             gr_info *cod_info,
  82.             III_scalefac_t *scalefac,
  83.             FLOAT8 distort[4][SBMAX_l]);
  84.  
  85. #ifdef ASM_QUANTIZE
  86. void quantize_xrpow_ASM( FLOAT8 xr[576],
  87.                int  ix[576],
  88.                int );
  89.  
  90. void quantize_xrpow_ISO_ASM( FLOAT8 xr[576],
  91.                int  ix[576],
  92.                int);
  93. #else
  94. void quantize_xrpow( FLOAT8 xr[576],
  95.                int  ix[576],
  96.                gr_info *cod_info );
  97.  
  98. void quantize_xrpow_ISO( FLOAT8 xr[576],
  99.                int  ix[576],
  100.                gr_info *cod_info );
  101. #endif
  102.  
  103. int
  104. new_choose_table( int ix[576],
  105.           unsigned int begin,
  106.           unsigned int end, int * s );
  107.  
  108. int bin_search_StepSize2(lame_global_flags *gfp,int desired_rate, int start, int ix[576],
  109.                          FLOAT8 xrspow[576], gr_info * cod_info);
  110. int count_bits(lame_global_flags *gfp,int  *ix, FLOAT8 xr[576], gr_info *cod_info);
  111.  
  112.  
  113. int quant_compare(int type, calc_noise_result *best_noise, calc_noise_result *noise);
  114.  
  115. void best_huffman_divide(lame_internal_flags *gfc, int gr, int ch, gr_info *cod_info, int *ix);
  116.  
  117. void best_scalefac_store(lame_global_flags *gfp,int gr, int ch,
  118.              int l3_enc[2][2][576],
  119.              III_side_info_t *l3_side,
  120.              III_scalefac_t scalefac[2][2]);
  121.  
  122. void inc_scalefac_scale(lame_global_flags *gfp,
  123.             III_scalefac_t *scalefac,
  124.             gr_info *cod_info,
  125.             FLOAT8 xrpow[576]);
  126.  
  127. void inc_subblock_gain(lame_global_flags *gfp,
  128.                III_scalefac_t *scalefac,
  129.                gr_info *cod_info,
  130.                FLOAT8 xrpow[576]);
  131.  
  132.  
  133. int init_outer_loop(
  134.     lame_global_flags *gfp,
  135.     FLOAT8 xr[576], FLOAT8 xrpow[576],       /*  could be L/R OR MID/SIDE */
  136.     gr_info *cod_info);
  137.  
  138. #define LARGE_BITS 100000
  139.  
  140. #endif
  141.  
  142.