I've been trying to understand the layout of the lfe_fir_64 and
lfe_fir_128 tables in dcadata.h, by comparing with the table in the
spec. In think the layout for lfe_fir_64 could be documented as follows:
/*
Permuted compared to table D.8 in the spec. First, the table in the
spec has twice the number of coefficients, but they are reflected,
T[i] = T[511-i]. Furthermore, the indices are permuted, so that
lfe_fir_64[64* k + j] = T[8*j + k]
for 0 <= k < 4 and 0 <= j < 64. (This corresponds to adding a
leading zero to the 8-bit index, and rotating it left by 3 bits as
a 9-bit field). Values with j >= 32 can be reflected, as
lfe_fir_64[64* k + j] = T[8*(63-j) + (7-k)]
so all values in T get included. */
Correct? (I haven't yet looked closely at the lfe_fir_128 table, maybe
it uses different shifting of the index bits).
Also, the values in dcadata.c are given with higher precision than the
corresponding table in the spec (16 vs 10 digits), so I guess they're
not copied from the spec but computed in some other way. Documenting the
source of the table would also be good.
Regards,
/Niels
--
Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26.
Internet email is subject to wholesale government surveillance.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel