mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-28 02:12:28 +00:00
rv34: use ff_mpeg_update_thread_context only when decoder is fully initialized
MpegEncContext based decoders are only fully initialized after the first ff_thread_get_buffer() call. The RV30/40 decoders may fail before a frame buffer was requested. ff_mpeg_update_thread_context() fails on half initialized MpegEncContexts. Since this can only happen before a the first frame was decoded there is no need to call ff_mpeg_update_thread_context(). Based on patches by John Stebbins and tested by John Stebbins. CC: libav-stable@libav.org
This commit is contained in:
parent
b0bfd09f88
commit
dc4b2e7d33
@ -1555,16 +1555,18 @@ int ff_rv34_decode_update_thread_context(AVCodecContext *dst, const AVCodecConte
|
||||
return err;
|
||||
}
|
||||
|
||||
if ((err = ff_mpeg_update_thread_context(dst, src)))
|
||||
return err;
|
||||
|
||||
r->cur_pts = r1->cur_pts;
|
||||
r->last_pts = r1->last_pts;
|
||||
r->next_pts = r1->next_pts;
|
||||
|
||||
memset(&r->si, 0, sizeof(r->si));
|
||||
|
||||
return 0;
|
||||
// Do no call ff_mpeg_update_thread_context on a partially initialized
|
||||
// decoder context.
|
||||
if (!s1->linesize)
|
||||
return 0;
|
||||
|
||||
return ff_mpeg_update_thread_context(dst, src);
|
||||
}
|
||||
|
||||
static int get_slice_offset(AVCodecContext *avctx, const uint8_t *buf, int n)
|
||||
|
Loading…
Reference in New Issue
Block a user