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

Steve Lhomme steve.lhomme at free.fr
Fri Mar 11 14:54:09 CET 2005


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