#8343: h261dec doesn't mark keyframes
-------------------------------------+-----------------------------------
             Reporter:  Lastique     |                    Owner:  (none)
                 Type:  enhancement  |                   Status:  open
             Priority:  wish         |                Component:  avcodec
              Version:  git-master   |               Resolution:
             Keywords:  h261         |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-----------------------------------
Comment (by Lastique):

 Replying to [comment:6 Balling]:
 > I have a concern here from the code
 02b7c630875c0bc63cee5ec597aa33baf9bf4e20
 >
 > They say that they mark all I frames as key frames, even those that
 start the GOP. Is it possible in ancient H261 for such a frame to not be a
 key frame?

 This is not a question about the spec but rather the encoder
 implementation (i.e. h261enc.c).

 The H.261 spec defines two modes of coding, INTER and INTRA. The latter
 ones do not use inter-frame prediction and frames entirely coded in this
 mode pretty much are what is understood as I-frames in the more modern
 MPEG codecs. The INTER mode uses motion compensation (MC) which references
 the previously coded picture. Pictures entirely coded in this mode are
 similar to the modern P-frames. I do not think the spec restricts the
 encoder to use only one mode for coding the entire picture, and in fact
 the spec doesn't specify pretty much anything about the encoder behavior.

 But it does specify that upon a Fast update request (4.3.2) the encoder
 uses INTRA mode to encode the next **picture** and then uses the Freeze
 picture release (4.3.3) to signal the decoder that it may exit the freeze
 mode and start displaying decoded pictures after this one.

 So, really, if the ffmpeg encoder always uses INTRA mode to encode entire
 pictures that were requested as AV_PICTURE_TYPE_I by the caller (or
 selected by the encoder as such), it has every reason to also mark these
 frames as Freeze picture release.

 Respectively, if a decoder is seeing a Freeze picture release-marked
 frame, per H.261 spec, it should trust the encoder and assume this is an
 INTRA-only-coded picture and, in case of libavcodec, mark it as
 AV_PICTURE_TYPE_I and a keyframe. Which is what this patch does.
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/8343#comment:7>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac

To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to