Mercurial > libavcodec.hg
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; |