float * samples;
float * floor; // also used for tmp values for mdct
float * coeffs; // also used for residue after floor
+ float quality;
int ncodebooks;
codebook_t * codebooks;
float tot_average = 0.;
for (i = 0; i < fc->values; i++) tot_average += get_floor_average(fc, coeffs, i);
tot_average /= fc->values;
- tot_average /= 0.5;
+ tot_average /= venc->quality;
for (i = 0; i < fc->values; i++) {
int position = fc->list[fc->list[i].sort].x;
float average = get_floor_average(fc, coeffs, i);
int j;
- average /= pow(average, 0.7) / tot_average * pow(0.9, position/200.); // MAGIC!
+ average /= pow(average, 0.5) / tot_average * pow(0.8, position/200.); // MAGIC!
for (j = 0; j < range - 1; j++) if (floor1_inverse_db_table[j * fc->multiplier] > average) break;
posts[fc->list[i].sort] = j;
}
create_vorbis_context(venc, avccontext);
- //if (avccontext->flags & CODEC_FLAG_QSCALE) avccontext->global_quality / (float)FF_QP2LAMBDA); else avccontext->bit_rate;
+ if (avccontext->flags & CODEC_FLAG_QSCALE) venc->quality = avccontext->global_quality / (float)FF_QP2LAMBDA;
+ else venc->quality = 0.17;
//if(avccontext->cutoff > 0) cfreq = avccontext->cutoff / 1000.0;
avccontext->extradata_size = put_main_header(venc, (uint8_t**)&avccontext->extradata);