From 0b4c323213343bf514626ee89a7ad91bfd428322 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Mon, 12 Dec 2011 12:02:58 -0800 Subject: [PATCH] h264: don't drop B-frames after next keyframe on POC reset. The keyframe after a POC reset may not be the first to be returned to the user. Therefore, don't reset the expected next POC once we return a keyframe to the user, but once we know that the next frame in the return-queue is a keyframe. --- libavcodec/h264.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 109a109..77acd71 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -1530,7 +1530,11 @@ static void decode_postinit(H264Context *h, int setup_finished){ h->next_outputed_poc = INT_MIN; } } else { - h->next_outputed_poc = out->poc; + if (out_idx == 0 && pics > 1 && h->delayed_pic[0]->f.key_frame) { + h->next_outputed_poc = INT_MIN; + } else { + h->next_outputed_poc = out->poc; + } } h->mmco_reset = 0; }else{ -- 2.7.4