On Mon, May 12, 2014 at 11:20:35AM +0200, Niels Möller wrote: > 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).
Look at the commit 766fefe8 > 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. It's libdts and it could've come from any place - some old version of specification or even patent where they got large tables from (the ones like D.10.2 from the spec). _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
