[Vorbis-dev] Window function (again)
Sebastian Gesemann
sgeseman at uni-paderborn.de
Sat Jun 4 07:07:33 PDT 2005
Hello !
bender at doanstar.de wrote:
> By the way, I would prefer another proof that Vorbis fulfills the
> Princen Bradley condition.... this one seems a little bit too long (too
> hard?) for me ;-).
This one seems to be shorter although it's pretty much the same thing:
The deal is really that you can turn any window
w : [-1, 1] -> [0, 1]
which satisfies
w(x) = x( -x)
and w(1-x) = 1-x(x) for x>=0 (*)
into a valid MDCT window 'f' by
f : [-1, 1] -> [0, 1]
f : x -> sin(pi/2 * w(x))
Due to the symmetry around x=0 we only need to check that
(f(x))^2 + (f(1-x))^2 = 1
is satisfied to make sure that the window 'f' satisfies the Princen
Bradly condition. If we substitute f(x) with its definition it'll look
like this:
sin^2(pi/2*w(x)) + sin^2(pi/2*w(1-x)) = 1
Lets examine the 2nd argument of the sin() function:
pi/2 * w(1-x)
= pi/2 * (1-w(x)) (equality follows due to *)
= pi/2 - pi/2 w(x)
This lets us rewrite the above equation to
sin^2(pi/2*w(x)) + cos^2(pi/2*w(x)) = 1
which is certainly true.
Since Vorbis uses
w : x -> 0.5 + 0.5*cos(x*pi)
which satisfies the mentioned conditions we're done.
I hope I did not make any mistakes and that this EMail is of help.
Sebastian
More information about the Vorbis-dev
mailing list