mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-28 12:32:17 +02:00
libavcodec/rv34: error out earlier on missing references
Fixes visual corruption on seeking Fixes: downloadTest_clip_24M.rmvb Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
6261ef4251
commit
6cd81d68c5
@ -1585,7 +1585,7 @@ int ff_rv34_decode_update_thread_context(AVCodecContext *dst, const AVCodecConte
|
|||||||
|
|
||||||
// Do no call ff_mpeg_update_thread_context on a partially initialized
|
// Do no call ff_mpeg_update_thread_context on a partially initialized
|
||||||
// decoder context.
|
// decoder context.
|
||||||
if (!s1->linesize)
|
if (!s1->context_initialized)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return ff_mpeg_update_thread_context(dst, src);
|
return ff_mpeg_update_thread_context(dst, src);
|
||||||
@ -1733,6 +1733,8 @@ int ff_rv34_decode_frame(AVCodecContext *avctx,
|
|||||||
if ((err = rv34_decoder_realloc(r)) < 0)
|
if ((err = rv34_decoder_realloc(r)) < 0)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
if (faulty_b)
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
s->pict_type = si.type ? si.type : AV_PICTURE_TYPE_I;
|
s->pict_type = si.type ? si.type : AV_PICTURE_TYPE_I;
|
||||||
if (ff_mpv_frame_start(s, s->avctx) < 0)
|
if (ff_mpv_frame_start(s, s->avctx) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
@ -1786,8 +1788,6 @@ int ff_rv34_decode_frame(AVCodecContext *avctx,
|
|||||||
"multithreading mode (start MB is %d).\n", si.start);
|
"multithreading mode (start MB is %d).\n", si.start);
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
}
|
}
|
||||||
if (faulty_b)
|
|
||||||
return AVERROR_INVALIDDATA;
|
|
||||||
|
|
||||||
for(i = 0; i < slice_count; i++){
|
for(i = 0; i < slice_count; i++){
|
||||||
int offset = get_slice_offset(avctx, slices_hdr, i , slice_count, buf_size);
|
int offset = get_slice_offset(avctx, slices_hdr, i , slice_count, buf_size);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user