comparison vorbis_enc.c @ 3902:bd0cb21d956d libavcodec

Original Commit: r103 | ods15 | 2006-10-01 18:00:43 +0200 (Sun, 01 Oct 2006) | 2 lines slight optimization, don't calculate average twice
author ods15
date Mon, 02 Oct 2006 06:09:24 +0000
parents e255692302f0
children 7a57a82cfa10
comparison
equal deleted inserted replaced
3901:e255692302f0 3902:bd0cb21d956d
1114 1114
1115 static void floor_fit(venc_context_t * venc, floor_t * fc, float * coeffs, int * posts, int samples) { 1115 static void floor_fit(venc_context_t * venc, floor_t * fc, float * coeffs, int * posts, int samples) {
1116 int range = 255 / fc->multiplier + 1; 1116 int range = 255 / fc->multiplier + 1;
1117 int i; 1117 int i;
1118 float tot_average = 0.; 1118 float tot_average = 0.;
1119 for (i = 0; i < fc->values; i++) tot_average += get_floor_average(fc, coeffs, i); 1119 float averages[fc->values];
1120 for (i = 0; i < fc->values; i++) tot_average += averages[i] = get_floor_average(fc, coeffs, i);
1120 tot_average /= fc->values; 1121 tot_average /= fc->values;
1121 tot_average /= venc->quality; 1122 tot_average /= venc->quality;
1122 1123
1123 for (i = 0; i < fc->values; i++) { 1124 for (i = 0; i < fc->values; i++) {
1124 int position = fc->list[fc->list[i].sort].x; 1125 int position = fc->list[fc->list[i].sort].x;
1125 float average = get_floor_average(fc, coeffs, i); 1126 float average = averages[i];
1126 int j; 1127 int j;
1127 1128
1128 average /= pow(average, 0.5) / tot_average * pow(0.8, position/200.); // MAGIC! 1129 average /= pow(average, 0.5) / tot_average * pow(0.8, position/200.); // MAGIC!
1129 for (j = 0; j < range - 1; j++) if (ff_vorbis_floor1_inverse_db_table[j * fc->multiplier] > average) break; 1130 for (j = 0; j < range - 1; j++) if (ff_vorbis_floor1_inverse_db_table[j * fc->multiplier] > average) break;
1130 posts[fc->list[i].sort] = j; 1131 posts[fc->list[i].sort] = j;