Skip to content
  • Sesse's avatar
    avformat mux: Mark keyframe blocks as such. · afac3fec
    Sesse authored and Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf committed
    
    
    Some browsers, such as Firefox, are very picky about WebM streams needing to
    start with a keyframe. To be able to handle this correctly when streaming,
    the avformat mux needs to mark keyframe-containing blocks (or clusters, in
    Matroska terminology) as such even after they have been muxed. The next patch
    in the series will make httpd actually care about this flag.
    
    Unfortunately, as avformat does not actually propagate this status, we need
    to use some heuristics to figure out which blocks contain keyframes. The natural
    thing to do would be to say that when we write a keyframe, the block that comes
    back has to be a keyframe block, but the WebM/Matroska muxer thwarts this by
    having its own internal buffering of clusters, flushing the _previous_ cluster
    when we send it a keyframe. Thus, we need to explicitly send a flush (a NULL
    packet) before the one that comes back when we mux a keyframe.
    
    Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
    afac3fec