Hi, I am trying to ponder out what dct32 is actually doing. The comment in matrixing() reads:
x[i] = x'[i + 16] i = 0..15 x[i + 17] = -x'[31 - i] i = 0..15 x[i + 32] = -x'[16 - i] i = 0..15 x[i + 48] = -x'[i] i = 0..15 x[16] = 0
the hi and lo are only 16 entries, filter is 32. 'i + 32' and definately 'i + 48' go beyond these bounds.
Now, I understand matrix math, but the numbers just don't seem right here.
Yes, this will take some work to explain. I will go into better depth later, but the short answer is that the comment you see describes the relationship between the 32-point DCT and the desired output vector which is of length 64.
However, as you can see from the fact that all 64 values are obtained from these 32 (due to trig symmetry), the vector of 64 is not explicitly calculated. Instead, the 32 DCT output values are split into two vectors of length 16 (hi and lo) and used directly in the later calculations.
I'll describe this in more detail when I shouldn't instead be sleeping, if there is interest.
-rob