[Matroska-devel] Proposal for a better definition for the 'keyframe' flag
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
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:
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.
More information about the Matroska-devel