[FFmpeg-devel] [PATCH]lavf/matroskaenc: Do not write 0 duration for subtitles

Jerome Martinez jerome at mediaarea.net
Thu Nov 23 13:04:31 EET 2017

On 12/11/2017 03:12, Carl Eugen Hoyos wrote:
> The matroska spec says blockduration == 0 means the frame is not a
> keyframe.  Since all subtitles are "keyframes", 0 blockduration should
> not be written.

As I understand from discussion on CELLAR mailing-list:
- if is not expected to have a frame with block duration of 0, in a 
perfect world the previous frame should have the right duration and the 
player should hide the previous frame after blockduration of the 
previous frame.
- as a workaround, it would make sense to put an empty frame with 
"unlimited" duration, so no blockduration, as implemented in the patch.

The only issue is in the case someone puts a "not empty" frame with a 
duration of 0, this patch would change the behavior (from nothing 
displayed to the frame displayed) but as it is not expected to have a 
duration of 0 when something is displayed, this is not a real use case IMO.

Suggestion of changes for this patch:
- Remove the outdated part about specs. A duration of 0 is not coherent, 
that's all.
- Add a comment (in the code?) stipulating that duration of 0 is a 
special case which means "up to the next frame".

More information about the ffmpeg-devel mailing list