[Haskell-cafe] HOgg 0.3.0 Released

Conrad Parker conrad at metadecks.org
Thu Dec 6 08:26:41 EST 2007

HOgg 0.3.0 Released

The HOgg package provides a commandline tool for manipulating Ogg files,
and a corresponding Haskell library. HOgg is in hackage, or on the web at:


This is the second public release. The focus is on correctness of Ogg
parsing, production and editing. The capabilities of the hogg commandline
tool are roughly on par with those of the oggz* [0] tools. Although hogg
does not yet provide an equivalent to oggz-validate, it has subcommands
for chopping out a section of a file, and for adding skeleton metadata.

HOgg supports chained and multiplexed Ogg bitstreams conformant with
RFC3533[1]. HOgg can parse headers for CMML, FLAC, OggPCM, Speex, Theora
and Vorbis media codecs, and can read and write Ogg Skeleton bitstreams.

[0] Oggz: http://www.annodex.net/software/liboggz/index.html
[1] RFC3533: http://www.ietf.org/rfc/rfc3533.txt

New in this release

The hogg tool contains new subcommands: chop, addskel and list-codecs.
Additionally, subcommands for inspecting streams (hogg dump, hogg pagedump)
can now take start and end time options.

$ hogg help chop
chop: Extract a section (specify start and/or end time)
Usage: hogg chop [options] filename ...

  Extract the first minute of file.ogg:
    hogg chop -e 1:00 file.ogg

  Extract from the second to the fifth minute of file.ogg:
    hogg chop -s 2:00 -e 5:00 -o output.ogg file.ogg

  Extract only the Theora video stream, from 02:00 to 05:00, of file.ogg:
    hogg chop -c theora -s 2:00 -e 5:00 -o output.ogg file.ogg

  Extract, specifying SMPTE-25 frame offsets:
    hogg chop -c theora -s smpte-25:00:02:03::12 -e
smpte-25:00:05:02::04 -o output.ogg file.ogg

  -h, -?           --help                       Display this help and exit
  -V               --version                    Output version
information and exit
  -c Content-Type  --content-type=Content-Type  Select the logical
bitstreams for a specified content type
  -s Timestamp     --start=Timestamp            Specify a start time
  -e Timestamp     --end=Timestamp              Specify an end time
  -o filename      --output=filename            Specify output filename

Additionally, the HOgg package now contains support for building with GHC
version 6.8, and the Codec.Container.Ogg library contains various internal


I am very interested in hearing about problems with building or installing
the package, particularly from people who are not yet familiar with building
from Haskell source. You need ghc instead of gcc; it compiles to a binary:

    $ ./Setup.hs configure
    $ ./Setup.hs build
    $ sudo ./Setup.hs install

Building of this release has been tested with:
  * GHC versions 6.4, 6.6 and 6.8.1 [2]
  * The Haskell build system "Cabal" versions 1.1.3, 1.1.4, 1.1.6, and the
    current development trunk. [3]

The GHC and Cabal versions listed above span the packages available in most
current distributions. I've tested on Debian unstable and Ubuntu Feisty. I'm
particularly interested to hear reports of build success or failure on other
distributions or operating systems.

[2] GHC: http://www.haskell.org/ghc/
[3] Cabal: http://www.haskell.org/cabal/


$ hogg help
Usage: hogg <subcommand> [options] filename ...

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

  info          Display information about the file and its bitstreams
  dump          Hexdump packets of an Ogg file
  pagedump      Display page structure of an Ogg file
  dumpraw       Dump raw (unparsed) page data

  rip           Rip selected logical bistreams from an Ogg file (default: all)
  reconstruct   Reconstruct an Ogg file by doing a full packet demux

  chop          Extract a section (specify start and/or end time)
  merge         Merge, interleaving pages in order of presentation time
  addskel       Write a Skeleton logical bitstream

  known-codecs  List codecs known by this version of hogg

Please report bugs to <ogg-dev at xiph.org>


Source code is available from the darcs repository at:

  darcs get http://www.kfish.org/~conrad/software/hogg/



More information about the Haskell-Cafe mailing list