diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-04-25 12:01:44 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-04-25 12:01:44 +0200 |
commit | 0c278545321373b5bdff926adc0f645c319872a2 (patch) | |
tree | 9b6d312bcd2965ee416641031e9d0aa4ed211793 /libavcodec/ffv1.c | |
parent | 16524d1be0c965808a64a4dbac10392fcdd9bcec (diff) | |
download | ffmpeg-0c278545321373b5bdff926adc0f645c319872a2.tar.gz |
ffv1: Always store slice size when error reobustness is enabled.
This simplifies finding slices within a damaged bitstream.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/ffv1.c')
-rw-r--r-- | libavcodec/ffv1.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libavcodec/ffv1.c b/libavcodec/ffv1.c index 3a957b1761..5e8fd18750 100644 --- a/libavcodec/ffv1.c +++ b/libavcodec/ffv1.c @@ -1290,7 +1290,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, flush_put_bits(&fs->pb); //nicer padding FIXME bytes= fs->ac_byte_count + (put_bits_count(&fs->pb)+7)/8; } - if(i>0){ + if(i>0 || f->ec){ av_assert0(bytes < pkt->size/f->slice_count); memmove(buf_p, fs->c.bytestream_start, bytes); av_assert0(bytes < (1<<24)); @@ -1990,8 +1990,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac int trailer = 3 + 4*!!f->ec; int v; - if(i) v = AV_RB24(buf_p-trailer)+trailer; - else v = buf_p - c->bytestream_start; + if(i || f->ec) v = AV_RB24(buf_p-trailer)+trailer; + else v = buf_p - c->bytestream_start; if(buf_p - c->bytestream_start < v){ av_log(avctx, AV_LOG_ERROR, "Slice pointer chain broken\n"); return -1; |