[Matroska-devel] clarifications on the use of Unknown Sized Elements
slhomme at matroska.org
Thu Jun 11 07:42:32 CEST 2015
On Tue, Jun 9, 2015 at 8:48 AM, Moritz Bunkus <moritz at bunkus.org> wrote:
>> - Only Elements that are Master-elements may use an unknown size.
> I would be good with this, even though I don't know whether or not we
> had that restriction before.
>> - When is the Element of Unknown Size ended. In discussions (in
>> github, mailing list, and irc) there has been two answers to this:
>> 1. Upon the first occurrence of an Element that is not a valid
>> sub-element of the unknown-sized element.
>> 2. Upon the first occurrence of an Element that is at the same or a
>> higher level than the one with an infite size
> I was the one who said 2.; basically what I meant was 1. 1. is more
> precise than my wording yesterday (2.), therefore disregard 2., please.
> 1. also hints at the problem with elements than can occur at multiple
> levels (EbmlVoid, SimpleTags).
>> - Dependency on Schema
>> For the SimpleTag option available, the interpretation of the ending
>> of the element presumes that the parse has knowledge of the EBML
>> Schema/Profile of mastroska in any version 1-4. I'd like to include
>> some statement to say that the use of an element of unknown size
>> requires the use of the corresponding schema.
> Hmm… going with 1. from before we could indeed have a scenario where an
> element from (a hypothetical version) v5 may include an element from
> earlier versions, e.g. we introduce KaxÜberTags (v5 element) which may
> include the already existing KaxTag elements (v4).
> In that situation a parser that only knows v1-v4 but not v5 could find
> itself in a situation where a KaxÜberTags master has an infinite size,
> but the parser would then erroneously see that KaxTag as the end of the
> unknown infinite-sized KaxÜberTags.
That's a problem only if the shared KagTag element is found at a lower
level than where we found the infinite size element. If it's at a
higher level, it's skipped until some element at a similar or lower
level is found. But still a valid case that should be mutually
exclusive with the use on unknown elements.
libebml already works like that to skip data as it rely on the context level.
> So you may be right, and Steve might be wrong.
> Kind regards,
> Matroska-devel mailing list
> Matroska-devel at lists.matroska.org
> Read Matroska-Devel on GMane: http://dir.gmane.org/gmane.comp.multimedia.matroska.devel
Matroska association Chairman
More information about the Matroska-devel