diff --git a/libavcodec/h264.c b/libavcodec/h264.c index c66c9c7a1735b870adc1fd854f9c6d243ff13013..c87707d65be988e3b5f62e2d979ad272c58bc798 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; }