Re: EBML specification component for review - Element Data Size

Steve Lhomme <[email protected]>
Newsgroups gmane.comp.multimedia.matroska.devel
Message-ID <CAOXsMF+7dYPLo7OG3Xq+0-Hqph3guehYcazfoknvW7efUgdjQg@mail.gmail.com>
On Fri, May 1, 2015 at 5:12 PM, Dave Rice <[email protected]> wrote:

> Yes, it would be possible to parse such an EBML document, as long as
> the parser knows about all elements, and maintains a knowledge about
> their relative ordering. But as I've said, this makes the parser a bit
> more complicated than a simple one, and breaks future extensibility.
>
> To be precise, for each element, the parser needs to know the set of
> allowed sub-elements. The set of sub-elements must not overlap with the
> set of sub-elements allowed in the grandparent element (which affects
> in particular VOID and CRC elements).
>
>
> Right. So perhaps we need a specific constraints on the use of VOID and
> CRC within an element of unknown size. It's hard to imagine the use case of
> a CRC sub-element within an element of unknown size, perhaps this can CRC
> within an unknown length element can simply be forbidden.
>

Correct. Again, one rules that's pretty obvious but that could be written
somewhere.


> Would there be an issue with SimpleTag in the case of an unknown size
> parent? SimpleTag can appear at several different levels.
>

I never thought about that. The current trend is to make servers dumb and
clients smart. In this case that means to generate on-the-fly tags, the
server should not have to know all the elements in memory before being able
to send them. So I would favor allowing it. Meaning a nested element cannot
end an infinite size for the same element. I think that would break libebml
though...


> Also the rules we're discussing presume that an EBML-based format makes
> all sub-elements known. Should we add a statement to the EBML spec that
> defines this to keep the unknown-size parsing possible?
>

Yes, see my other email about the rules that apply on infinite/unknown
sizes.


>
> An EBML element data size with all data bits set to 1 indicate that the
> data size is unknown. This allows for dynamically generated EBML streams
> where the final size isn't known beforehand. The element with unknown size
> MUST be an element with an element list as data payload. The end of the
> element list is determined by the ID of the element. When an element that
> isn't a sub-element of the element with unknown size arrives, the element
> list is ended."
>
>
> The RFC Draft also has this line just after that in the Data Size section:
>
> Since the highest value is used for unknown size the effective maximum
> data size is 2^56-2, using variable size integer width 8.
>
>
> Whereas the EBML spec doesn't give an 8 bit limit, this line seems to
> imply it. There is a probably with the 1 filled unknown length if
> EBMLMaxSizeWidth is greater than 8. Is the unknown length value supposed to
> match the length of the EBMLMaxSizeWidth or be fixed at 8?
>
>
> Bytes, not bits.
>
>
We prefer octets, which are guaranteed to be 8 bits.


-- 
Steve Lhomme
Matroska association Chairman

_______________________________________________
Matroska-devel mailing list
[email protected]
http://lists.matroska.org/cgi-bin/mailman/listinfo/matroska-devel
Read Matroska-Devel on GMane: http://dir.gmane.org/gmane.comp.multimedia.matroska.devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.