[ogg-dev] Oggz 0.9.9 Release

Conrad Parker conrad at metadecks.org
Thu Apr 9 19:14:43 PDT 2009

Oggz 0.9.9 Release

Oggz comprises liboggz and the tool oggz, which provides commands to
inspect, edit and validate Ogg files. The oggz-chop tool can also be
used to serve time ranges of Ogg media over HTTP by any web server that
supports CGI.

liboggz is a C library for reading and writing Ogg files and streams.
It offers various improvements over the reference libogg, including
support for seeking, validation and timestamp interpretation. Ogg is
an interleaving data container developed by Monty at Xiph.org,
originally to support the Ogg Vorbis audio format but now used for
many free codecs including Dirac, FLAC, Speex and Theora.

This release is available as a source tarball at:


New in this release

Features: 0.9.9 adds Dirac support, security fixes, improved
low-memory behaviour,
and a new 'oggz' wrapper tool with bash completion.



	* Handle allocation failure due to out of memory throughout, for Mozilla
          bug 468280. Adds new error return OGGZ_ERR_OUT_OF_MEMORY

	* skeleton.c::ogg_from_fisbone(): avoid memcpy of NULL
          fp->message_header_fields. Fixes ticket:408, reported by j^

	* Mozilla bug 463756: return an error when a hole (ie. missing sequence
          number) is detected in the headers of a track

	* Remove dead code from oggz_read.c for ticket:439, reported by Coverity

	* Check for NULL return value of val in cgi.c
	  (ticket:438, reported by Coverity)

	* Add NULL return checks
	  (ticket:440, reported by Coverity)

	* Check for integer overflows in calculations for realloc and when using
          strlen returns.  For Mozilla bug 480014

	* Don't map all errors to OGGZ_ERR_STOP_ERR
	  Required for Mozilla bug 481933
    	  Exposes detected HOLE_IN_DATA as return value from oggz_read(),
          oggz_read_input(), and add documentation for extra return values

	* Apply patch by Jim Blandy from Mozilla bug 480521
	  Avoid overflow in comment lengths

oggz tool

A new 'oggz' tool has been added which provides an overview of available
commands and launches manuals, so that commands like the following work:
      $ oggz dump file.ogv  -- runs "oggz-dump file.ogv"
      $ oggz help info      -- runs "man oggz-info", or "oggz-info --help"
      $ oggz                -- prints a list of common oggz-tools

(so you can use a space instead of a hyphen, like with git)

Additionally, the following tools have been renamed for consistency:

      oggzdump  -> oggz-dump
      oggzdiff  -> oggz-diff
      oggzinfo  -> oggz-info
      oggzmerge -> oggz-merge
      oggzrip   -> oggz-rip

When upgrading using the liboggz 0.9.9 source tarball, symbolic links are
installed from previously installed tool names.

 Add oggz-known-codecs tool, which simply lists the content-types names which
    are valid arguments to -c for other oggz commands

    oggz-validate: add checks on terminal header page:
      Terminal header page has non-zero granulepos
      Terminal header page contains non-header packet
      Terminal header page contains non-header segment

 oggz-merge: allow use of stdin as in input ("-") so that the output of
    an encoder can be piped in and merged with an existing file.


	* Added "X-Accept-TimeURI: application/ogg" HTTP response header to
          oggz-chop CGI output.

	* Added video/ogg and audio/ogg to example apache config for oggz-chop
          CGI (Ivo)

	* Added a check if PATH_TRANSLATED is defined, warn about CGI
          configuration error otherwise (to stderr, ie.  we

	* Added customization for DocumentRoot, for servers that don't provide


	oggz_constants.h: document use of OGGZ_PREFIX and OGGZ_SUFFIX


	* Build fixes for Mac OS X (rillian)

	* Allow compilation of the library on win32 using Visual Studio 2003
          and 2005.  The project files have been updated to fix previous errors
          with compiling using both of these IDEs.
	  Patch by Barry Duncan, and regenerated by ogg.k.ogg.k


	* Add oggz_content_type() public API function:
	  Returns a human-readable string representation of a content type

	* Add API functions for getting and seting preroll:
	  oggz_get_preroll(), oggz_set_preroll()
	  Set preroll in oggz_auto.c for vorbis and speex

	* Kate updates (ogg.k.ogg.k)

	* Parse BOS page before calling first page reader callback.
	  Fixes ticket:416, "oggz-chop writes wrong granulerate in fisbone"

	* Apply patch from dryeo, "off_t not always in stdio.h"
	  Closes ticket:413

	* Apply patch from dryeo, "OS/2 also needs to set stdin/stdout to
          binary" Closes ticket:414

	* Apply patch by j^, Closes ticket:406 "oggzinfo Video-Height is

	* Fix oggz-comment writing bad data into streams
	  Patch by ogg.k.ogg.k:

	* Updated shared version info to 6:0:5

About Oggz

oggz tool

Usage: oggz <subcommand> [options] filename ...

oggz is a commandline tool for manipulating Ogg files. It supports
multiplexed files conformant with RFC3533. Oggz can parse headers for
CELT, CMML, FLAC, Kate, PCM, Speex, Theora and Vorbis, and can read and write
Ogg Skeleton logical bitstreams.

  help          Display help for a specific subcommand (eg. "oggz help chop")

  diff          Hexdump the packets of two Ogg files and output differences.
  dump          Hexdump packets of an Ogg file, or revert an Ogg file from
                such a hexdump.
  info          Display information about one or more Ogg files and their
  scan          Scan an Ogg file and output characteristic landmarks.
  validate      Validate the Ogg framing of one or more files.

  rip           Extract one or more logical bitstreams from an Ogg file.

  chop          Extract the part of an Ogg file between given start and/or
                end times.
  comment       List or edit comments in an Ogg file.
  merge         Merge Ogg files together, interleaving pages in order of
                presentation time.
  sort          Sort the pages of an Ogg file in order of presentation time.

  known-codecs  List codecs known by this version of oggz

The script bash-completion/oggz enables completion of tool options and codec
names when using the bash shell. Source it from your .profile, or install it
in /etc/bash_completion.d to enable it system-wide.


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:



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