[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