[vorbis-dev] merging monty's branch
Monty
xiphmont at xiph.org
Sat May 26 13:02:22 PDT 2001
Hi folks,
I'm doing a merge of my current branch onto the mainline (for testing)
today. I believe it to be stable. Just a little more vorbisfile
testing. After the merge, I have a few more patches to apply, then
onto cascading/coupling.
New stuff:
Floor backend 1 and residue backend 1; both are present, but the
mainline modes won't use either yet. Naturally, both are enabled for
decoding future streams that use them.
Floor 1 is a piecewise linear approximation of the spectral envelope.
Advantages: more stable local spectral behavior (no more spreading
stereo image at lower bitrates), more control over tuning specific
error characteristics. Disadvantages: it takes more bits than LSP,
but not by an absurd margin (20%-30% premiun).
Residue 1: Same as residue 0, but uninterleaved. The advantages are
that this is faster and allows one to more easily exploit
adjacent-line structure in the MDCT, assuming that that's what the
codebook model wants to do.
Vorbisfile optimizations; I took HB's optimization patch, fixed a few
infinite loop problems in it, and then decided to go a little nuts
eliminating unneeded machine initializations and decoding work. The
end result is that ov_open (and friends), ov_raw_seek and
ov_pcm_seek_page are more than 100x faster (and even faster than that
on a network file system), and the other seek functions (that do
actually require some internal background PCM decode to get sample
boundaries right) are a shade under 2x faster (again, much larger
margin on distributed file systems).
I also added an ov_test() function as a fast partial open that
verifies the vorbis-ness of a file (and loads the headers for
perusal), but doesn't seek to learn the chain structure or total
length. A partially open file can then be fully opened using
ov_test_open().
Libvorbis now has an official vorbis_packet_blocksize() function to
learn the block size of a packet without decoding it. Libogg also has
one new function, ogg_stream_packetpeek(), which fetches the next
packet in a logical stream without removing it from the stream head.
None of these changes should affect binary compatability with prebuilt
applications.
Monty
--- >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