[ogg-dev] Some oggdsf utilities and libraries now available on UNIX

Andre Pang Andre.Pang at csiro.au
Wed Jan 5 08:05:27 PST 2005

Hi all,

(This has been cross-posted to vorbis-dev and ogg-dev, since I thought 
various people on vorbis-dev may be interested in it.)

I've been working with illiminable for the past few weeks to port the 
underlying, platform-neutral part of his DirectShow filters (oggdsf) to 
UNIX.  While DirectShow is a Windows-specific media framework, 
illiminable's filters have been designed so that the DirectShow filters 
are actually wrappers around quite platform-neutral C++ libraries. 
Since most Windows-specific code are contained only within the 
DirectShow filters, it was quite easy to port the underlying libraries 
to UNIX systems.  So, some of illiminable's libraries are now available 
for your hacking pleasure on UNIX systems.  Specifically, these 
libraries and tools (note, the "OO" in the names of the libraries and 
tools means "Object-Oriented" -- blame illiminable for that name ;):

* libilliCore: generally useful C++ functions
* libOOOgg: an alternative Ogg bitstream (de)multiplexer (doesn't use 
libogg at all)
* libOOOggSeek: provides seeking in Ogg files
* libVorbisComment: a library to construct and extract Vorbis comments 
from Ogg streams
* libOOOggChef: slice and dice Ogg files by logical bitstreams and time

* OOOggDump: An Ogg page and packet dumper (similar to liboggz's 
oggzdump if you've used that)
* OOOggValidate: An Ogg bitstream validator
* OOOggStat: Tells you what streams are present in an Ogg file
* OOOggChainSplitter: Splits chained Ogg streams up and renames the 
resulting files according to the Vorbis comments stored in the original 
chained file (useful for all you internet radio listeners)
* OOOggCommentDump: Print out Vorbis comments in an Ogg stream
* OOOggSeekFileMaker: Construct a seek table from an Ogg file (not very 
useful on its own, but a good example program on how to use the 
libOOOggSeek library)
* OOOggSeekFileReader: Reads back a seek table constructed with 
OOggSeekFileMaker and prints out the time<->byte mappings

There are many other libraries that I haven't ported across yet (such as 
libOOTheora), but they shouldn't be too hard to port at all if people 
are interested.  OOOggDump, OOOggValidate and OOOggChainSplitter are 
quite useful tools in their own right.

I've tested the libraries and tools on Linux and Mac OS X, although it 
should compile on other UNIXes without much of a problem.  Note that GNU 
g++ 3.3 is required due to the extensive use of #pragma once in the 
header files (and better conformance to the STL).

To play with this code, just check out http://svn.xiph.org/oggdsf/trunk 
(it will take a while!), cd into the unix/ directory, type 'autoreconf' 
there to invoke the GNU autotools chain (autoreconf should come as part 
of your OS distribution), and do the standard ./configure && make && 
make install mantra.

Anyway, if you have more of a C++ bent or just want an alternative to 
libogg on UNIX, have a look at the oggdsf-derived libraries.  Happy hacking!

: André Pang (x4180)
: Software Engineer, Networked Media : CeNTIE

More information about the ogg-dev mailing list