From 9e73f6d1f9a242ea0b2fdb3bf22890d2a4422be0 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Mon, 11 Mar 2013 20:19:34 +0100 Subject: [PATCH] mpegvideo: dont allow last == current this fixes deadlocks Signed-off-by: Michael Niedermayer --- libavcodec/mpegvideo.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 0628f58c06..9fe93bf4ab 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -1434,6 +1434,8 @@ static inline int pic_is_unused(MpegEncContext *s, Picture *pic) && pic->f.qscale_table //check if the frame has anything allocated && pic->period_since_free < s->avctx->thread_count) return 0; + if (pic == s->last_picture_ptr) + return 0; if (pic->f.data[0] == NULL) return 1; if (pic->needs_realloc && !(pic->reference & DELAYED_PIC_REF)) @@ -1447,7 +1449,7 @@ static int find_unused_picture(MpegEncContext *s, int shared) if (shared) { for (i = 0; i < MAX_PICTURE_COUNT; i++) { - if (s->picture[i].f.data[0] == NULL) + if (s->picture[i].f.data[0] == NULL && &s->picture[i] != s->last_picture_ptr) return i; } } else {