diff options
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/h264.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 7fdae20b7c..e315818f19 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -3457,6 +3457,16 @@ static void idr(H264Context *h){ h->short_ref_count=0; } +/* forget old pics after a seek */ +static void flush_dpb(AVCodecContext *avctx){ + H264Context *h= avctx->priv_data; + int i; + for(i=0; i<16; i++) + h->delayed_pic[i]= NULL; + h->delayed_output_pic= NULL; + idr(h); +} + /** * * @return the removed picture or NULL if an error occures @@ -7208,6 +7218,7 @@ AVCodec h264_decoder = { decode_end, decode_frame, /*CODEC_CAP_DRAW_HORIZ_BAND |*/ CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_DELAY, + .flush= flush_dpb, }; AVCodecParser h264_parser = { |