[ogg-dev] Oggz 0.9.7 Release

Conrad Parker conrad at metadecks.org
Fri Feb 15 00:52:21 PST 2008

Oggz 0.9.7 Release

Oggz comprises liboggz and the command-line tools oggzinfo, oggzdump,
oggzdiff, oggzmerge, oggzrip, oggz-comment, oggz-scan, oggz-sort and

liboggz is a C library providing a simple programming interface for reading
and writing Ogg files and streams. Ogg is an interleaving data container
developed by Monty at Xiph.Org, originally to support the Ogg Vorbis audio

This release is available as a source tarball at:


New in this release:

This release adds a new oggz-sort tool, includes fixes for serialno generation
on 64bit (LP64) platforms, and adds decoding of FLAC vorbiscomment packets and
basic support for the Ogg mapping of the experimental CELT codec. It also
includes various API additions, documentation updates and new example code.


        * Added new oggz-sort tool: Sort the pages of an Ogg file in order
          of presentation time. (See below for rationale and usage).
        * 'oggzdiff --revert' fixes for long oggzdump packetinfo lines
        * oggz-comment: Modified to copy data pages verbatim.
        * oggzinfo: Fixed for skeleton interpretation on big-endian hosts.
        * oggzinfo: Various cleanups in skeleton.c (ogg.k.ogg.k)

        * Updated known (non-experimental) content types in all man pages.
	* Added information about the use of oggz_tell_granulepos() in
          OggzReadCallbacks for retrieving calculated granulepos values.

        * Added modify-headers example, demonstrating how to write a program
          which modifies Ogg header packets but leaves data pages intact.

liboggz API:
        * Added oggz_comments_copy().
        * Added oggz_comments_generate(), which does not require a packet_type
          argument. Deprecate oggz_comment_generate().
        * Added oggz_stream_get_numheaders(), implemented for all known codecs
        * oggz_serialno_new() now only generates serialnos which will fit
          within a 32bit integer.
        * oggz_write_feed() now fails with OGGZ_ERR_BAD_SERIALNO if it is
          passed a serialno outside of the 32bit range.
        * Added OGGZ_CONTENT_CELT to the public OggzStreamContent enum.

        * Fixed a bunch of x86-64 compiler warnings. (Erik de Castro Lopo)
        * Updated acinclude.m4 to latest ogg.m4. (Ivo Gonçalves)
        * Added basic support for (experimental) Ogg mapping for CELT codec.
        * libtool shared version info updated to 5:0:4

oggz-sort: Rationale and usage directions

Some encoders produce files with incorrect page ordering; for example,
some audio and video pages may occur out of order. Although these files
are usually playable, it can be difficult to accurately seek or scrub
on them, increasing the likelihood of glitches during playback. Players
may also need to use more memory in order to buffer the audio and video
data for synchronized playback, which can be a problem when the files
are viewed on low-memory devices.

The tool oggz-validate can be used to check the relative ordering of
packets in a file. If out of order packets are reported, use oggz-sort
to fix the problem.

About Oggz

Oggz comprises liboggz and the command-line tools oggzinfo, oggzdump,
oggzdiff, oggzmerge, oggzrip, oggz-comment, oggz-scan, oggz-sort  and

liboggz supports the flexibility afforded by the Ogg file format while
presenting the following API niceties:

        * Full API documentation

        * Comprehensive test suite of read, write and seeking behavior.
        The entire test suite can be run under valgrind if available.

        * Developed and tested on GNU/Linux, Darwin/MacOSX, Win32 and
        Symbian OS. May work on other Unix-like systems via GNU autoconf.
        For Win32: nmake Makefiles, Visual Studio .NET 2003 solution files
        and Visual C++ 6.0 workspace files are provided in the source

        * Strict adherence to the formatting requirements of Ogg bitstreams,
        to ensure that only valid bitstreams are generated; writes can fail
        if you try to write illegally structured packets.

        * A simple, callback based open/read/close or open/write/close
        interface to raw Ogg files.

        * Writing automatically interleaves with packet queuing, and provides
        callback based notification when this queue is empty

        * A customisable seeking abstraction for seeking on multitrack Ogg
        data. Seeking works easily and reliably on multitrack and multi-codec
        streams, and can transparently parse Theora, Speex, Vorbis, FLAC,
        CMML, CELT and Ogg Skeleton headers without requiring linking to those
        libraries. This allows efficient use on servers and other devices
        that need to parse and seek within Ogg files, but do not need to do
        a full media decode.

Full documentation of the liboggz API, customization and installation,
and mux and demux examples can be read online at:



The Oggz source tarball also contains the following command-line tools,
which are useful for debugging and testing Ogg bitstreams:

        * oggzinfo: Display information about one or more Ogg files and
        their bitstreams.

        * oggzdump: Hexdump packets of an Ogg file, or revert an Ogg file
        from such a hexdump.

        * oggzdiff: Hexdump the packets of two Ogg files and output

        * oggzmerge: Merge Ogg files together, interleaving pages in order
        of presentation time.

        * oggzrip: Extract one or more logical bitstreams from an Ogg file.

        * oggz-comment: List or edit comments in an Ogg file.

        * oggz-scan: Scan an Ogg file and output characteristic landmarks.

        * oggz-sort: Sort the pages of an Ogg file in order of presentation

        * oggz-validate: Validate the Ogg framing of one or more files.


Oggz is Free Software, available under a BSD style license.

More information is available online at the Oggz homepage:


enjoy :)

Conrad Parker, Annodex Association

More information about the ogg-dev mailing list