[vorbis-dev] merging monty's branch

Segher Boessenkool segher at chello.nl
Mon May 28 13:08:04 PDT 2001



Monty wrote:
> 
> 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

*applaud*

> testing.  After the merge, I have a few more patches to apply, then
> onto cascading/coupling.

hurray!

> 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).

Another advantage: it can fit more closely to the calculated (by psy)
floor, so the psy can be tuned to be a little less pessimistic, so this
can save quite some bits in the residue.

> 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.

Is there any plan to interleave channel 0 and channel 1?  This could
reduce bitrate somewhat (5-15% in testing), more once we introduce
interchannel redundancy into the psy model.

> 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).

Kudos to the both of you!

> 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.

One can only hope... ;-)

Cheers && happy hacking && more applaud etc.,

Segher

--- >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