[theora] Fwd: [theora-dev] handling multitrack Ogg

Silvia Pfeiffer silviapfeiffer1 at gmail.com
Tue Feb 2 14:17:58 PST 2010

On Wed, Feb 3, 2010 at 9:08 AM, Benjamin M. Schwartz
<bmschwar at fas.harvard.edu> wrote:
> Silvia Pfeiffer wrote:
>> QuickTime doesn't force a player to use this information. But it needs
>> to be present, otherwise the player has no idea which information goes
>> on top of which other information, e.g. the caption track goes on top
>> of the video. Of course, the player is free to not do any overlaying
>> and draw separate display areas etc.
> The player should know that the caption track goes on top of the video
> because the caption track is labeled "caption" and the video is labeled
> "main", or whatever the agreed-upon labels are for track types.

No, those labels don't exist - at least not in Ogg and not right now.
This is another thing that we will need to introduce (see Conrad's
email). It will likely be a "role:caption" or "role:subtitle" or
"role:sign" label, but this is actually different from the display

For some things like captions, the display order is obvious. But for
others, e.g. slides or sign language, it's not. The sign language
video and the slides video could both be sub-videos of a talk
recording. OTOH, the sign language video could be the main video on
the others could be sub-videos. In such cases a recommended display
order needs to be given.

>> The issue is that this kind of information is not currently available
>> for Ogg tracks, so we need to add it to skeleton.
> I agree.  I'm just suggesting that the skeleton content should be
> semantic, as much as possible, rather than prescriptive.

OK, fair enough.

>> Nobody wants to refer to such long numbers. They are also really hard
>> to "loop through". But I'll see what we come up with.
> They're not numbers; they're strings.  They're opaque identifiers.
> Programmers use opaque identifiers all the time.  As for looping through
> them, you can do
> for (var t in video.tracks) {
>        if (video.tracks[t].role == "caption") video.tracks[t].enabled = true;
>        if (video.tracks[t].lang == "fr")          video.tracks[t].enabled = true;
> }
> To me, that seems even easier than the equivalent int-array for loop.

Hmm, interesting...


More information about the theora mailing list