Commit b272c3a5 authored by Ganesh Ajjanagadde's avatar Ganesh Ajjanagadde

lavc/dsd_tablegen: speed up table generation

Tables are bit identical.
Sample benchmark (Haswell, GNU/Linux+gcc):
old:
 814485 decicycles in dsd_ctables_tableinit,     512 runs,      0 skips

new:
 356808 decicycles in dsd_ctable_tableinit,     512 runs,      0 skips

Binary size should essentially be identical, and is in fact identical on
the configuration I tested on.
Reviewed-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
Signed-off-by: 's avatarGanesh Ajjanagadde <gajjanagadde@gmail.com>
parent 29bc2932
......@@ -78,16 +78,17 @@ static float ctables[CTABLES][256];
static av_cold void dsd_ctables_tableinit(void)
{
int t, e, m, k;
double acc;
for (t = 0; t < CTABLES; ++t) {
k = FFMIN(HTAPS - t * 8, 8);
for (e = 0; e < 256; ++e) {
acc = 0.0;
for (m = 0; m < k; ++m)
acc += (((e >> (7 - m)) & 1) * 2 - 1) * htaps[t * 8 + m];
ctables[CTABLES - 1 - t][e] = (float)acc;
int t, e, m, sign;
double acc[CTABLES];
for (e = 0; e < 256; ++e) {
memset(acc, 0, sizeof(acc));
for (m = 0; m < 8; ++m) {
sign = (((e >> (7 - m)) & 1) * 2 - 1);
for (t = 0; t < CTABLES; ++t)
acc[t] += sign * htaps[t * 8 + m];
}
for (t = 0; t < CTABLES; ++t)
ctables[CTABLES - 1 - t][e] = acc[t];
}
}
#endif /* CONFIG_HARDCODED_TABLES */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment