[ogg-dev] Re: [Vorbis] metadata

Silvia.Pfeiffer at csiro.au Silvia.Pfeiffer at csiro.au
Sun Nov 20 02:14:36 PST 2005

Hi Ian,

CMML is still a draft, so we can change the addressing if required. You're correct, currently something like


points to a clip (or temporal section) of the stream, but


points to a 12 seconds offset.

(same for annodex, i.e. ogg files with skeleton track).

For pointing to logical streams inside ogg, I'd really suggest you have a look at skeleton. Skeleton has all the information that is required, when used with CMML. CMML provides an id tag for each logical bitstream that provides a name (in addition to the rather arbitrary serial number). Then "id" and the name get encoded in the binary skeleton header as a message header field and can be used for addressing. You can use this mechanism also without using CMML, by the way.

And as for queries: they work with Annodex in the same way that fragments work. As per URI standard, the fragments get interpreted locally on the client, while the queries can be transported to the server and thus perform offset options before streaming.

There are libraries for doing all this stuff on annodex.net.

I'm not sure if this helps at all since I missed half the discussion. But I thought I'd throw in my 5c.


-----Original Message-----
From:	ogg-dev-bounces at xiph.org on behalf of Ian Malone
Sent:	Fri 11/18/2005 3:26 AM
To:	vorbis at xiph.org; ogg-dev at xiph.org
Subject:	[ogg-dev] Re: [Vorbis] metadata
Ralph Giles wrote:
> On Sun, Oct 02, 2005 at 07:50:25PM +0100, Ian Malone wrote:

>>It's not clear to me what the type should be,
>>"<?xml version='1.0'?>" is clear enough to determine XML, but the
>>header should probably indicate the type of stream.
> Right. The XML declaration provides enough information for a muxer
> to hand off the stream to an xml parser, analogous to how stream
> identification can be done with our other codecs. Requiring this
> should probably be part of a general XML-in-Ogg spec or best 
> practices document.
> Also having a doctype or namespaced root element in the initial 
> packet to further identify the stream data is, as you suggest,
> another good idea. I'd make that a SHOULD.

CMML may have more on this (a document I should read properly
sometime), but it seems that a way of specifying a logical stream
via a URI would be useful too.  Within rfc3986 the query or
fragment components could be used.  Both have problems; fragment
prevents us further specifying a fragment within a logical stream,
query's meaning seems to be determined by the scheme (also a
problem with using part of the path).  Fragment would also (as I
understand) conflict with CMML's use, query might conflict.

Another possibility is a scheme solely for use within ogg streams,
so ogg:6789abcd (the semantics here aren't quite right) is a
relative reference to the stream with serial:6789abcd.  Then
ogg:6789abcd/#dolphin refers to id=dolphin in that stream,
ogg:/#dolphin refers to id=dolphin in the physical stream.
Defining a scheme is probably a long and difficult task, and
with such limited use it doesn't make much sense (it would
hardly be uniform).

Query is the most attractive;
but I don't yet understand if this is compatible with existing

ogg-dev mailing list
ogg-dev at xiph.org

More information about the ogg-dev mailing list