The integer wavelet codec, and Re: [vorbis-dev] A different take at video encoding - I'm stuck though

Lourens Veen jsr at dds.nl
Sun Feb 11 13:57:36 PST 2001



Kenneth Arnold wrote:
> 
> Obviously having the as fast as possible is a good thing, but to what
> extent do you sacrifice compression for speed? In my opinion the
> codec, or at least bitstream format, should be flexible enough to
> handle everything from storing raw RGB / YUV data, through fast but
> not as efficient lossless, slow but small lossless, MPEG-style DCT and
> motion compensation (where possible while avoiding the patent issues),
> to your single-pass wavelet, then adding textures, to various levels
> of Lourens's polygon-based coder. Getting a bitstream format to
> accomodate all of those, possibly simultaneously, has been what I've
> been keeping myself busy with.

Now that sounds interesting. I have a new idea for merging motion
compensation and wavelet compression: What if we extract triangle
information from each frame, match triangles, then stack all the
textures and 3D wavelet compress them?
 
[snip]
> at once): How do you actually apply wavelets to real data in more than
> one dimension? Perhaps this is elementary for the author, but none of
> the references I have read cover that. Once I understand everything
> involved in the coder, perhaps I can write up something to describe it
> to the less math-inclined?

That's what I found myself wondering when I started studying them. If
you have a 1D array of data, and you run it through the wavelet filter
once, you get the average of every two values in the first half, and the
wavelet coefficients in the second half. Run it again on the first half
and you have the next set of averages and coefficients. Every time you
run the filter, it gives you a new level of averages, which is like
scaling down the original signal each time. Without having looked at the
code closely, that's what the scales are.

Now if you want to calculate the wavelet transform of a 2D image, you
just run the filter on all scanlines separately. So in the lefthand half
you'll have the image scaled by 0.5, and in the righthand half the
coefficients. Then you do this again, but not on scanlines bun on rows.
The new averages end up in the top left corner, the new coefficients in
the bottom left corner. Then do scanlines again, etc. For 3D it works in
a similar way, after doing the rows you take the block that's left over
and do the 'depth rows' (don't quite know how to describe that).
 

[snip]
> 
> Thanks all,
> --
> Kenneth Arnold <ken at arnoldnet.net> / kcarnold / Linux user #180115

Lourens

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'vorbis-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the Vorbis-dev mailing list