[ogg-dev] Album art - requirements

ogg.k.ogg.k at googlemail.com ogg.k.ogg.k at googlemail.com
Fri Oct 17 02:51:27 PDT 2008


[ Was away the last few days, so this partly overlaps on things that
that have been mentioned in this thread. Since the consensus seems
that Vorbis comment encoding is the way to go, it's a bit moot, but
here it is anyway ]

Following up on the possibility to tag various images as different
types of album art, I thought of adding that tagging information in
a Skeleton stream. Since Skeleton's purpose is to describe the set
of tracks in a physical bitstream, as well as the relationship between
those tracks, it is well suited to such a use.

So, a possible way to encode album art would be:

- a Skeleton stream with appropriate header messages
- one Kate stream per image, carrying a PNG image
  (alternatively, use Ogg/MNG, if someone brings it from the dead)

The semantics of those images would be carried by predefined message
headers in the Skeleton stream. Something along the lines of (for
each separate image stream):

X-Content-Semantics: album art
X-Album-Art-Type: front cover    (or back cover, etc)

There would be some overhead with having one stream per image: Kate
headers would weight at 162 bytes for header payload, plus two Ogg
frames at 29 bytes each, and would be per image rather than per file.
If carrying a 25 KB PNG image, this is only about 0.1% though.

One drawback is streaming, where all of this is stuffed into the
headers, so there's a biggish hit at connection if sending a stream
loaded with images. Caveat icecast operator I suppose. Icecast could
also be made to automatically strip those as an option too, if needed
(I'd have to look, not sure if this'd be that easy to do).

This is a good chance to actually have Skeleton used for what it's
meant to be (AFAICT): relationships between tracks: one could define
a particular image to be related to a particular track, if a whole
album gets encoded as several Vorbis tracks in a single stream.
Most of the images would be common to all tracks, but some could
be track specific. This could also be used for lyrics: map a given
lyrics track to the matching Vorbis track.

Is there a list of relationships that Skeleton can define somewhere,
or is this not done yet ?

More information about the ogg-dev mailing list