[FFmpeg-cvslog] mpegvideo: dont allow last == current
Michael Niedermayer
git at videolan.org
Tue Mar 12 03:31:00 CET 2013
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Mon Mar 11 20:19:34 2013 +0100| [9e73f6d1f9a242ea0b2fdb3bf22890d2a4422be0] | committer: Michael Niedermayer
mpegvideo: dont allow last == current
this fixes deadlocks
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9e73f6d1f9a242ea0b2fdb3bf22890d2a4422be0
---
libavcodec/mpegvideo.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 0628f58..9fe93bf 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 {
More information about the ffmpeg-cvslog
mailing list