[Matroska-devel] Proposal for a better definition for the 'keyframe' flag

Jan Ekstrom jeebjp at gmail.com
Wed Jun 12 12:56:50 CEST 2013

As I brought up in my e-mail to the HEVC/H.265 mapping thread
there is a need for a new, more refined definition for the 'keyframe'
flag in Matroska.

Currently the definitions that can be found are as follows:

1. "Keyframe, set when the Block contains only keyframes" (from the
Matroska.org web documentation)
2. "No frame after this frame can reference any frame before this
frame and vice versa (in AVC-words: this frame is an IDR frame). The
frame itself doesn't reference any other frames." (from the Matroska
'specification' PDF)

With all due respect to the writers of the aforementioned
explanations, I don't think I need to specify the exact problematic
points in both of these :)

My proposal, as to get this discussion rolling, would be as follows:

- keyframe
    A keyframe flag in a SimpleBlock signals that the SimpleBlock is
    a random access point. A random access point is a point from which
    when decoding starts, it itself as well as all the following multiplexed
    data in presentation order can be correctly decoded without having
    access to previous multiplexed data in coding order.

    If a decoder needs additional data in order to properly initialize (such as
    the parameter sets in AVC or HEVC), that data must be provided as
defined in the
    applicable format's mapping specification. If that additional data is not
    available, this flag shall not be enabled.

As a separate point, the 'keyframe' name of the flag is not exactly
the best thing around if we consider what it actually is, but I guess
renaming it at this point wouldn't exactly be possible.

Jan Ekström

More information about the Matroska-devel mailing list