void schro_encoder_choose_quantisers_simple (SchroEncoderFrame *frame) { SchroParams *params = &frame->params; int i; int component; double noise_amplitude; double a; double max; double *table; noise_amplitude = 255.0 * pow(0.1, frame->encoder->noise_threshold*0.05); SCHRO_DEBUG("noise %g", noise_amplitude); table = frame->encoder->subband_weights[params->wavelet_filter_index] [params->transform_depth-1]; for(component=0;component<3;component++){ for(i=0;i<1 + 3*params->transform_depth; i++) { a = noise_amplitude * frame->encoder->subband_weights[params->wavelet_filter_index] [params->transform_depth-1][i]; frame->quant_index[component][i] = schro_utils_multiplier_to_quant_index (a); } } #if 0 max = table[0]; for(i=0;i<1 + 3*params->transform_depth; i++) { if (table[i] > max) max = table[i]; } #else max = 1.0; #endif for(i=0;i<1 + 3*params->transform_depth; i++) { params->quant_matrix[i] = schro_utils_multiplier_to_quant_index (max/table[i]); SCHRO_DEBUG("%g %g %d", table[i], max/table[i], params->quant_matrix[i]); } }
int main (int argc, char *argv[]) { int i; double x; int j,k; schro_init(); for(i=0;i<100;i++){ x = i*1; j = schro_utils_multiplier_to_quant_index (x); k = schro_table_quant[j]; printf("%g %d %d\n", x, j, k); } exit(0); }