Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Energy conservation in MDCT (Read 6330 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Energy conservation in MDCT

Hello,

I've read in Stein's "Digital Signal Processing" book, refering to the Fourier Transform, about the Parseval's relation, which states that the energy of a signal is the same whether we look at it in the time or the frequency domain.  If I've understood it right, Stein's also says that Parseval relation holds for every orthogonal transform.

My doubt now is if Parseval's also holds for the MDCT, or if the fact of being an orthogonal lapped transform "spoils" Parseval's relation to MDCT.

I've found information concerning the MDCT energy compaction property, but nothing about this.

Thank you.

Energy conservation in MDCT

Reply #1
Good question.

The MDCT, AS A WHOLE, obeys Parsival's theorem, but because of the fact it's an orthonormal filterbank, and not a transform, ONE BLOCK does not obey Parsival's theorem. 

If you process the whole thing correctly (see Malvar for how), modulo scaling factors, you should see parsival's theorem upheld. But you have to do the whole signal.
-----
J. D. (jj) Johnston

Energy conservation in MDCT

Reply #2
My doubt now is if Parseval's also holds for the MDCT, or if the fact of being an orthogonal lapped transform "spoils" Parseval's relation to MDCT.

I've found information concerning the MDCT energy compaction property, but nothing about this.


When you overlap sequential blocks during reconstruction, your window is required to have a weighting applied such that the overlapped blocks will combine in a way that conserves energy. 

wikipedia has some info about this:

http://en.wikipedia.org/wiki/Modified_disc...indow_functions

as does this:

http://guru.multimedia.cx/mdct/

Edit:  Meh misunderstood the question I think.

Energy conservation in MDCT

Reply #3
When you overlap sequential blocks during reconstruction, your window is required to have a weighting applied such that the overlapped blocks will combine in a way that conserves energy.


Yes, but don't forget that the weighting is part of what makes the process orthonormal. It's not just the DCT-V that's orthonormal, but the whole thing, of which the window is part.

The window requirement is pretty simple, of course, if you look (again, I know) at Malvar you can see it represented as twiddles and delays, which makes the exact-reconstruction part of the system pretty obvious, and also shows why you need a shorter memory than you expect for the efficient MDCT.
-----
J. D. (jj) Johnston

Energy conservation in MDCT

Reply #4
Quote
The MDCT, AS A WHOLE, obeys Parsival's theorem, but because of the fact it's an orthonormal filterbank, and not a transform, ONE BLOCK does not obey Parsival's theorem.


Thank you very much. That was what I suspected.

My university's library doesn't have Malvar's book (and any library nearby that I know of) and it is quite expensive, but I'm beginning to think it'll worth the investment...

Energy conservation in MDCT

Reply #5
and only if your window function overlaps to unity gain (princen-bradley).  Although this is mostly academic as all practical windows for MDCT (and most windows in general) do.

Energy conservation in MDCT

Reply #6
and only if your window function overlaps to unity gain (princen-bradley).

I don't think that's correct. In order to get an MDCT-based orthonormal filterbank the squared versions of all windows add up to 1. Also, the overlapping parts must be symmetric:
Code: [Select]
  ---_ _---     (OK)
     _X_
   /     \
  /       \


  -_ _____-     (not OK)
    X
   / \_
  /    '--_

Energy conservation in MDCT

Reply #7
I don't think that's correct. In order to get an MDCT-based orthonormal filterbank the squared versions of all windows add up to 1. Also, the overlapping parts must be symmetric:


In particular, the square of the last half of the window must add to 1 with the square of the SAME half-window reversed.

This kinda forces symmetry...  Perhaps I'm being pedantic, the point being that the same window has to be used on the first part of the new data as was used on the last part of the old data.

The front and back halves of the window can be different when block switching is happening, for instance, but each half-window's square must sum to 1 with its time-reverse, which must be used on the other block of data that's involved (before or after depending on which half of the window we're talking about).  This kinda puts  sqrt(.5) in the middle, no matter what.
-----
J. D. (jj) Johnston

Energy conservation in MDCT

Reply #8
Correct me if I'm wrong, but I think the MPEG-4 ELD codec achieves perfect reconstruction with an asymmetric window.

http://www.aes.org/e-lib/browse.cfm?elib=13983

Chris
If I don't reply to your reply, it means I agree with you.

 

Energy conservation in MDCT

Reply #9
Correct me if I'm wrong, but I think the MPEG-4 ELD codec achieves perfect reconstruction with an asymmetric window.

We talked about the "time-reversed symmetry" of window halves that overlap. I don't see how "low overlap windows" would violate this.

I always like to mention that an MDCT-based orthonormal filterbank -- as a whole (multiple blocks) -- can be factored into a series of "butterflies" followed by a series of Type-IV-DCTs for analysis and for synthesis the DCT (type IV) followed by "inverse butterflies", see this thread. This way it's easy to see how and why something will be "perfect reconstructioning". Also, it's easy to see how to correctly do swithing to different block lengths while retaining the PR property. For low overlap windows you simly reduce the number of butterflies around block borders. Also, if you look at it this way you understand what "temporal aliasing" means in context of "temporal noise shaping". Temporal aliasing is introduced and cancelled again via the butterflies.

Cheers,
SG