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

Steve Lhomme steve.lhomme at free.fr
Sun Sep 19 11:18:44 CEST 2004


Hi,

As we are in the middle of having nice DVD rips (the whole content 
mapping to Matroska chapters is done) we are facing 2 problems :

- multi-angle
- resolution changing on the fly

I think these problems are somehow related. Especially because the 
solution for one will have to be compatible with the other.

For multi-angle we have 2 solutions :

- use one video track per angle, and marking this track with the number 
of the angle (new element required)
- use one video track and put the angles for the same timecodes in the 
same BlockGroup

The latter is closer to the DVD philosophy. Which means you only need 
one video stream output. But that video stream is dynamic and can be 
changed on the fly, especially the resolution change. But in the other 
hand I don't think the resolution of an angle can change in the 
middle... The thing is that DVD uses MPEG2 which can change the 
resolution any time, as long as it stays in the limits of the original 
resolution. But that wouldn't apply to Matroska which can have a lot of 
resolutions and cropping of original DVD content...

It probably doesn't make sense to have different codec for different 
angles (well, I think it does but let's not consider this case). So both 
solutions are probably valid. But there is another problem. It's very 
common on the DVD to have the menu in 4:3 and the movie in 16:9. And I'm 
sure anyone would want to crop the content of the 16:9 part for better 
encoding efficiency. So the question is: should we use the same video 
track for the menu and the movie ? Or not...

In the first case that means the codec has to support internal 
resolution change. So that would limit the possibility to only a few codec.

In the second case that means we have different video streams and that 
the player has to select another video track when seeking to another 
part of the file (let alone the angle selection).


I'm quite undecided on which way we should go. If we go the separate 
tracks way, we need managed chapters for playback. Otherwise the file 
will break older players. But in the other hand, a file should be 
playable without chapters... But doesn't seem possible in this case. For 
example the AngleNumber set in the TrackEntry would be used by the 
"chapter processor". And I think instead of a TrackSubID, it should be a 
TrackChapterPrivate, some private data that the "chapter processor" can 
use when seeking is used. So I think it should go in the chapters 
section, and not in the track section, especially since it depends on 
the "chapter codec". Something like:
<Chapters>
   <EditionEntry>  <- the managed edition
     <ChapterAtom> <- track-related values
       <ChapterTrack>
         <ChapterTrackNumber>2541654</ChapterTrackNumber>
         <ChapterTrackProcessPrivate>1</ChapterTrackProcessPrivate>  <- 
the angle number
       </ChapterTrack>
     </ChapterAtom>
     <ChapterAtom>
       <ChapterTrack>
         <ChapterTrackNumber>5621</ChapterTrackNumber>
         <ChapterTrackProcessPrivate>2</ChapterTrackProcessPrivate>  <- 
the angle number
       </ChapterTrack>
     </ChapterAtom>
     <ChapterAtom> <- the actual chapters
     </ChapterAtom>
   </EditionEntry>
</Chapters>

So, with this solution, that means that when seeking in the file:

- you have no chapter, so you have to manually select the video/audio 
streams you want to play, knowing that some video tracks are overlays of 
other tracks.
- you have managed chapters, and so the "chapter processor" (or chapter 
codec) has to handle the track changes, and also inform the player of 
resolution changes if needed...

Opinions ?

There is also the possibility of having a Segment for each DVD domain 
(3). And have a fix (final) resolution for each video track in each 
domain. I think that's the kind of limitation you have on DVDs.

-- 
robUx4 on blog <http://robux4.blogspot.com/>




More information about the Matroska-devel mailing list