[Matroska-devel] Segment hard/soft/medium linking

Steve Lhomme steve.lhomme at free.fr
Mon Mar 14 11:39:55 CET 2005

I have added a new element in the specs to handle medium linking. It's 
"ChapterSegmentUID" which is a segment UID that takes place of a dummy 
chapter. So that the content of that segment is played in place of that 
chapter. There is still a pending problem with that, since start/end 
time shouldn't apply here (to allow changing them independantly of other 
segments). But so far "ChapterTimeStart" is mandatory. This change is 
easy to do in the specs/code. But does it make sense and what is the 
impact ???

KaxChapterSegmentUID was added to libmatroska. An recompilation of 
mkvmerge with the SVN build of libmatroska should allow this from XML 
files directly.

Steve Lhomme a écrit :
> Hi,
> As I'm adding support for more complex stuff in VLC, I encountered a pb 
> with segment linking and the demos of Haali.
> Haali uses tags to define what segments should be played and when. I 
> didn't look precisely at the content of his tags, because this is not 
> the way to do it anyway. In short, as I said on IRC, "tags are not meant 
> to influence the content, especially the way it's played". Matroska is 
> modular and tags are not a part that is used for playback.
> Nevertheless, we found a grey area in the specs and some use case might 
> not be covered by our current system. So let's find out what and clarify 
> things for everyone.
> Segment linking is a way to virtually link some segment so that when 
> playback one, you can easily reference the other. So far we have the 
> following :
> - hard linking, that's when you split a segment. The resulting segments 
> have continuous timecodes. They are linked using PrevUID and NextUID. In 
> the end, on playback the user should see them as just one (the original 
> unsplit). Chapters only reference content from the segment they are in 
> (so segments should be merged on playback).
> Hard linking is somehow like .VOB files but in a more liberal way.
> Mosu and alexnoe, could you confirm that splitting works this way in 
> your software ?
> - soft linking, that was recently introduced for the DVD domains. Each 
> chapter is related to the other because they share the same family UID. 
> The timecodes of each segment are independant. That means each segment 
> is standalone, but a chapter codec could reference a segment in the same 
> family, to jump there. This reference is done with the ChapterTranslate 
> table in the segment Info (translate a codec ID to a segment UID).
> Now what Haali is trying to do is somehow different. He wants segments 
> to have the following playback scheme :
> intro -> ep1 -> outro -> intro -> ep2 -> outro
> - I will call that medium linking as it needs features from hard and 
> soft linking. The timecode of the outro has to be independant of the 
> episode. That means hard linking is not possible. Also the NextUID of 
> the intro and the PrevUID of the outro should not be set because they 
> can only reference one item. It could be done with soft linking but we 
> would miss a key feature : each intro+epX+outro would not be seen as one 
> item. That means the total duration would not be specified and the 
> tracks might differ.
> So we might need an additional system for medium linking.
> I'll think about it. But until then, comments/ideas are welcome.
> They are always welcome, anyway..

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

More information about the Matroska-devel mailing list