[FFmpeg-cvslog] h264_slice: Fix return of incomplete frames from decoder
John Stebbins
git at videolan.org
Thu Jun 28 22:37:39 EEST 2018
ffmpeg | branch: master | John Stebbins <jstebbins at jetheaddev.com> | Wed Jun 27 15:12:24 2018 -0700| [08b1d1d8122517d07f2335437cde0aeedc50143f] | committer: Michael Niedermayer
h264_slice: Fix return of incomplete frames from decoder
When not using libavformat for demuxing, AVCodecContext.has_b_frames
gets set too late causing the recovery frame heuristic in h264_refs to
incorrectly flag an early frame as recovered.
This patch sets has_b_frames earlier to prevent improperly flagging the
frame as recovered.
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=08b1d1d8122517d07f2335437cde0aeedc50143f
---
libavcodec/h264_slice.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
index d71ddbe9ba..ede9a1a6ea 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -1407,6 +1407,11 @@ static int h264_field_start(H264Context *h, const H264SliceContext *sl,
sps = h->ps.sps;
+ if (sps && sps->bitstream_restriction_flag &&
+ h->avctx->has_b_frames < sps->num_reorder_frames) {
+ h->avctx->has_b_frames = sps->num_reorder_frames;
+ }
+
last_pic_droppable = h->droppable;
last_pic_structure = h->picture_structure;
h->droppable = (nal->ref_idc == 0);
More information about the ffmpeg-cvslog
mailing list