[ogg-dev] Skeletal relations

Conrad Parker conrad at metadecks.org
Fri Feb 15 22:11:37 PST 2008

On 16/02/2008, Ralph Giles <giles at xiph.org> wrote:
>  The general idea is to use the (http-style) Message Headers
>  in the Skeleton track to describe each logical bitstream, but no one
>  has ever written anything down. This is a proposal to get the ball
>  rolling.

awesome, thanks :-)

>  Lang: <locale>

generally I think we should go with existing HTTP and email headers
where possible, eg. Content-Language

>  Description: <string>
>  Human readable description of the track, intended for display in a
>  user interface. This can be localized by appending '.<locale>' to
>  Description.
>  We could also copy general metadata here, e.g. title, creator, date,
>  location, license. That's perhaps more interesting in the fishead
>  packet which describes the stream as a whole rather than the
>  individual tracks.

I kinda feel that this kind of human-readable metadata better belongs
in CMML; the skeleton tells you where to go (for each locale), the
CMML has language-specific metadata.

>  = Relations =
>  The self-description allows us to prioritize tracks implicitly, based
>  on user preferences for showing audio, video, text, or some
>  combination, preferred languages and roles. But there remain areas of
>  ambiguity, so we define a way to mark relationships with other
>  streams.

> The value of each of these is an Ogg stream serial number.

perhaps an ID (labelled by Content-ID or similar) is more robust. By
the ogg spec, serialnos need to be changed when chaining etc., which
would further complicate the remuxing of content with skeleton.

>  Substitutes: <serialno>
>  Parallels: <serialno>

my proposal for these stems from Debian package relationships, where
Provides, Depends, Recommends, Suggests, Conflicts are defined locally
to each package. In aggregate (considering the whole universe of
debian packages) these fields describe the graph of package
relationships, but in isolation they are robust in that changes to
other packages don't necessarily force a change to the relationship

In terms of skeleton, two tracks which provide the same thing (eg.
subtitles, but in different languages) don't need to contain metadata
referencing each other. Instead they simply "Provide: subtitles", and
that metadata does not need to be changed if similar tracks are added
or removed.

I intend to write this up (hopefully this week) as part of the ROE
definition, ie. where the ROE-XML and these skeleton headers should be
mutually invertible.

>  Question: Is it better to specify multiple relations with a list of
>  serial numbers, or with multiple message headers?

these are equivalent, as defined for email/HTTP message headers
(multiple message headers can be intercalated with commas).


 -> boost your vocab, learn Haskell today!

More information about the ogg-dev mailing list