mirror of
https://git.videolan.org/git/ffmpeg.git
synced 2024-09-16 11:54:09 +02:00
mpegvideo: set extended_data in ff_update_duplicate_context()
AVFrame.extended_data has to reset to the AVFrame.data of the current
thread context after copying the frame contents.
Fixes crashes with frame-threading after 2bc0de3858
.
This commit is contained in:
parent
45e5d0c3ac
commit
1481e19825
@ -531,6 +531,7 @@ void ff_update_duplicate_context(MpegEncContext *dst, MpegEncContext *src)
|
|||||||
int ff_mpeg_update_thread_context(AVCodecContext *dst,
|
int ff_mpeg_update_thread_context(AVCodecContext *dst,
|
||||||
const AVCodecContext *src)
|
const AVCodecContext *src)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
MpegEncContext *s = dst->priv_data, *s1 = src->priv_data;
|
MpegEncContext *s = dst->priv_data, *s1 = src->priv_data;
|
||||||
|
|
||||||
if (dst == src || !s1->context_initialized)
|
if (dst == src || !s1->context_initialized)
|
||||||
@ -572,6 +573,10 @@ int ff_mpeg_update_thread_context(AVCodecContext *dst,
|
|||||||
memcpy(&s->last_picture, &s1->last_picture,
|
memcpy(&s->last_picture, &s1->last_picture,
|
||||||
(char *) &s1->last_picture_ptr - (char *) &s1->last_picture);
|
(char *) &s1->last_picture_ptr - (char *) &s1->last_picture);
|
||||||
|
|
||||||
|
// reset s->picture[].f.extended_data to s->picture[].f.data
|
||||||
|
for (i = 0; i < s->picture_count; i++)
|
||||||
|
s->picture[i].f.extended_data = s->picture[i].f.data;
|
||||||
|
|
||||||
s->last_picture_ptr = REBASE_PICTURE(s1->last_picture_ptr, s, s1);
|
s->last_picture_ptr = REBASE_PICTURE(s1->last_picture_ptr, s, s1);
|
||||||
s->current_picture_ptr = REBASE_PICTURE(s1->current_picture_ptr, s, s1);
|
s->current_picture_ptr = REBASE_PICTURE(s1->current_picture_ptr, s, s1);
|
||||||
s->next_picture_ptr = REBASE_PICTURE(s1->next_picture_ptr, s, s1);
|
s->next_picture_ptr = REBASE_PICTURE(s1->next_picture_ptr, s, s1);
|
||||||
|
Loading…
Reference in New Issue
Block a user