[Flac-dev] Ogg encapsulation

Arc Riley arc at Xiph.org
Thu Jul 29 23:56:06 PDT 2004

I've been implementing Ogg FLAC support in an editor I'm working on, and 
I must admit to being frustrated by the lack of support for the codec on 
the Ogg layer... and this is more than lacking granulepos.

The codec's I've worked with, and my own (Writ), use Page 0 for general 
information about the codec.  Specifically, the samplerate, bitrate, 
quality, number of channels, all that jazz that end users may want to 
know.  Codec setup is often in a second header page, etc.

I have yet to fully grok where things have been mapped from the FLAC 
spec to where they actually are in an Ogg FLAC file.  What I have seen 
is that this is not readily accessable in specifically marked Ogg 
headers, and this is also a hurdle to getting native support in Icecast 
for chaining FLAC with other codecs in a stream.  Page 0 should really 
contain enough information to atleast preform granulepos -> time mapping 
and the codec version for future use.

My recommendation, and my offer, is to redesign the "OggFLAC" stream 
and leave an easy compatability system in place for software that wants 
to support both older and newer OggFlac files.  This will make adoption 
of FLAC alongside Theora, etc, much easier (and thus faster).  This 
should be fully documented along with the rest of the FLAC format spec.

I believe this transition should happen along with porting libOggFlac to 
libogg2, and would like to make this happen in the very near future.  I 
would also like to put energy into helping complete the transition from 
sourceforge to Xiph servers, including transition from cvs to svn, now 
that motherfish-III is setup and our server situation has stabalized.

btw, the app I'm working on:

 Xinloe - svn co http://svn.xiph.org/trunk/xinloe
 |. depends on:
    wxPython (most distros have this available)
    py-ogg2 - svn co http://svn.xiph.org/trunk/py-ogg2
    |. depends on:
       libogg2 - svn co http://svn.xiph.org/branches/ogg2-arc
       (Note that my branch has api additions that allows py-ogg2 to
        compile, these should be merged with the trunk fairly soon)

 latest screenshot: http://westfish.xiph.org/~arc/Xinloe-07-29.png

I would greatly appreciate any help in grokking the currently OggFLAC 
format as well as feedback on my ideas for improving it.

More information about the Flac-dev mailing list