From 97bbb8851bf25f5a42cb0ecd7c8ca997563e8f1f Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Wed, 21 Feb 2007 21:16:07 +0000 Subject: [PATCH] output delayed frames fixes: CANL4_SVA_B.264 NL3_SVA_C.264 NL3_SVA_E.264 Originally committed as revision 8055 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/h264.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index c66c9c7..c87707d 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -8244,6 +8244,26 @@ static int decode_frame(AVCodecContext *avctx, /* no supplementary picture */ if (buf_size == 0) { + Picture *out; + int i, out_idx; + +//FIXME factorize this with the output code below + out = h->delayed_pic[0]; + out_idx = 0; + for(i=1; h->delayed_pic[i] && !h->delayed_pic[i]->key_frame; i++) + if(h->delayed_pic[i]->poc < out->poc){ + out = h->delayed_pic[i]; + out_idx = i; + } + + for(i=out_idx; h->delayed_pic[i]; i++) + h->delayed_pic[i] = h->delayed_pic[i+1]; + + if(out){ + *data_size = sizeof(AVFrame); + *pict= *(AVFrame*)out; + } + return 0; } -- 2.7.4