mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-28 12:32:17 +02:00
mpegvideo: set reference/pict_type on generated reference frames
Otherwise the generic code will unref them, which can then result in last_picture_ptr == current_picture_ptr, which causes deadlocks at least in rv40. Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC:libav-stable@libav.org
This commit is contained in:
parent
58f0d164de
commit
feded990e3
@ -1540,6 +1540,10 @@ int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx)
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
s->last_picture_ptr = &s->picture[i];
|
s->last_picture_ptr = &s->picture[i];
|
||||||
|
|
||||||
|
s->last_picture_ptr->reference = 3;
|
||||||
|
s->last_picture_ptr->f.pict_type = AV_PICTURE_TYPE_I;
|
||||||
|
|
||||||
if (ff_alloc_picture(s, s->last_picture_ptr, 0) < 0) {
|
if (ff_alloc_picture(s, s->last_picture_ptr, 0) < 0) {
|
||||||
s->last_picture_ptr = NULL;
|
s->last_picture_ptr = NULL;
|
||||||
return -1;
|
return -1;
|
||||||
@ -1567,6 +1571,10 @@ int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx)
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
s->next_picture_ptr = &s->picture[i];
|
s->next_picture_ptr = &s->picture[i];
|
||||||
|
|
||||||
|
s->next_picture_ptr->reference = 3;
|
||||||
|
s->next_picture_ptr->f.pict_type = AV_PICTURE_TYPE_I;
|
||||||
|
|
||||||
if (ff_alloc_picture(s, s->next_picture_ptr, 0) < 0) {
|
if (ff_alloc_picture(s, s->next_picture_ptr, 0) < 0) {
|
||||||
s->next_picture_ptr = NULL;
|
s->next_picture_ptr = NULL;
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user