[Matroska-devel] Re: Multi-Angle (summary) + Multi-resolution files

Steve Lhomme steve.lhomme at free.fr
Mon Sep 20 16:42:35 CEST 2004


Steve Lhomme a écrit :

> Let's consider the following tracks :
> Track 1: ---------------------------------------------------
> Track 2: ------------          -----------     -------------
> Track 3:             ----------           -----
> Track 4:       ----------------
> 
> You can play:
> - Track 1 alone
> - Track 1 with Track 2 where applies
> - Track 1 with Track 3 where applies
> - Track 1 with Track 4 & 2 where applies
> - Track 1 with Track 4 & 3 where applies
> - Track 1 with Track 4 & 2 & 3 where applies
> - Track 2 with Track 3 where applies

Some of these groups means it's an "angle" and should have an angle 
number as on DVDs (like 1 & 2). Some of these other groups are forming 
one virtual track (like 2 & 3), in that case when you should have to 
select this virtual track and not the individual ones.

> You can't play:
> - Track 2 alone
> - Track 3 alone
> - Track 4 alone
> - Track 2 with Track 4
> - Track 3 with Track 4

One possible solution would be to include pseudo tracks in the track 
entry. Normal tracks (without a CodecID, FlagLacing, MinCache, MaxCache, 
DefaultDuration, TrackTimecodeScale, TrackOffset, CodecPrivate, 
CodecName) and with the list of tracks that form this virtual track, 
optionally with an angle number. I don't think it's nice to have virtual 
tracks share the same EBML ID as TrackEntry, because a basic player 
would interpret them wrongly (well it won't be able to play them anyway) 
and, more important, it would break the mandotory elements rule... But 
let's consider it's OK for now. A virtual track could have all default 
values where needed and a "" (NULL) codec ID.

Here is how the track definition would go :

<Tracks>
   <-- (real) Track 1 -->
   <TrackEntry>
     <TrackNumber>1</TrackNumber>
     <TrackUID>18665</TrackUID>
     <TrackType>video</TrackType>
     <TrackCodecID>XVID</TrackCodecID>
     <TrackAngle>1</TrackAngle>
     <TrackName>Main 4:3 track<TrackName>
   </TrackEntry>

   <-- (real) Track 2 -->
   <TrackEntry>
     <TrackNumber>2</TrackNumber>
     <TrackUID>832</TrackUID>
     <TrackType>video</TrackType>
     <TrackCodecID>RV9</TrackCodecID>
     <TrackStandAlone>0</TrackStandAlone> <- can't be played alone
     <TrackName>16:9 track<TrackName>
   </TrackEntry>

   <-- (real) Track 3 -->
   <TrackEntry>
     <TrackNumber>3</TrackNumber>
     <TrackUID>68463132</TrackUID>
     <TrackType>video</TrackType>
     <TrackCodecID>MPEG2</TrackCodecID>
     <TrackStandAlone>0</TrackStandAlone> <- can't be played alone
     <TrackName>16:9 other angle<TrackName>
   </TrackEntry>

   <-- (real) Track 4 -->
   <TrackEntry>
     <TrackNumber>4</TrackNumber>
     <TrackUID>247476</TrackUID>
     <TrackType>video</TrackType>
     <TrackCodecID>MJPEG</TrackCodecID>
     <TrackStandAlone>0</TrackStandAlone> <- can't be played alone
     <TrackName>4:3 other angle<TrackName>
   </TrackEntry>

   <-- (virtual) Track 5 -->
   <TrackEntry>
     <TrackNumber>5</TrackNumber>
     <TrackUID>98765</TrackUID>
     <TrackType>video</TrackType>
     <TrackCodecID></TrackCodecID> <- NULL codec ID
     <TrackIncludes>2<TrackIncludes>
     <TrackIncludes>3<TrackIncludes>
     <TrackAngle>3</TrackAngle>
     <TrackName>all in 16:9<TrackName>
   </TrackEntry>

   <-- (angle) Track 6 -->
   <TrackEntry>
     <TrackNumber>6</TrackNumber>
     <TrackUID>32156</TrackUID>
     <TrackType>video</TrackType>
     <TrackCodecID></TrackCodecID> <- NULL codec ID
     <TrackIncludes>1<TrackIncludes>
     <TrackIncludes>2<TrackIncludes>
     <TrackAngle>2</TrackAngle>
     <TrackName>angle 2 as in the DVD<TrackName>
   </TrackEntry>

</Tracks>

This way you can merge any track (real/virtual) to form a new angle ID.



More information about the Matroska-devel mailing list