[FFmpeg-devel] [PATCH v2] avformat/matroskaenc: Write level 1 elements in one go

Carl Eugen Hoyos ceffmpeg at gmail.com
Wed Mar 25 15:35:30 EET 2020


Am Mi., 25. März 2020 um 05:45 Uhr schrieb Andreas Rheinhardt
<andreas.rheinhardt at gmail.com>:
>
> Up until now, writing level 1 elements proceeded as follows: First, the
> element id was written to the ordinary output AVIOContext and a dynamic
> buffer was opened for the content of the level 1 element in
> start_ebml_master_crc32(). Then this buffer was actually used and after it
> was closed (in end_ebml_master_crc32()), the size field corresponding to
> the buffer's size was written, after which the actual data was written.
>
> This commit changes this: Nothing is written to the main AVIOContext any
> more in start_ebml_master_crc32(). end_ebml_master_crc32() now writes
> both the id, the length field as well as the data. This implies that
> one can start a level 1 element in memory without outputting anything.
> This is done to enable to test whether enough space has been reserved
> for the Cues (if space has been reserved for them) before writing them.
> A large duration between outputting the header and outputting the rest
> could also break certain streaming usecases like the one from #8578
> (which this commit fixes).
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
> The commit message has been updated in light of ticket #8578; nothing
> else has changed.

Please mention the ticket in the commit message.

Thank you, Carl Eugen


More information about the ffmpeg-devel mailing list