[FFmpeg-devel] [PATCH] libavformat/matroskaenc: omit segment UID for webm

Michael Bradshaw mjbshaw at gmail.com
Wed Jun 22 16:16:35 CEST 2016

On Tue, Jun 21, 2016 at 12:22 PM, Michael Niedermayer
<michael at niedermayer.cc> wrote:
> what does "supported" / "unsupported" mean, is this defined somewhere ?

As far as WebM is concerned, SegmentUID doesn't exist.

In this situation, writing SegmentUID is Undefined-Ignore or
Optional-Fail/Forbidden, depending on the file. I concur with Dave's
analysis, but parsing may fail if SegmentUID is written and the master
element has an unknown size (which will be the case if ffmpeg is
writing to an unseakable output, like pipes). This is because master
elements with unknown size are terminated by the first unrecognized
would-be-child element[1], which would cause the parser to terminate
the Info element. This would continue to screw up parsing, because now
there could be other children of Info (like DateUTC) after the
SegmentUID, and since the Info element has terminated and those aren't
valid children of Segment, it would cause the Segment element to
terminate. At that point, the file is pretty broken because now there
is no Segment element containing the Clusters and other elements.

[1]: "The end of a Master-element with unknown size is determined by
the beginning of the next element that is not a valid sub-element of
that Master-element" (from the current EBML spec)

More information about the ffmpeg-devel mailing list