Skip to content
Snippets Groups Projects
Commit 86b84302 authored by Michael Niedermayer's avatar Michael Niedermayer
Browse files

avcodec/vp56rac: delay signaling an error on truncated input


A threshold of 1 is sufficient for simple_dump_cut.webm, 10 is used
just to be sure the next truncated file doesnt cause the same issue

Obvious alternative fixes are to simply accept that the file is broken or to
write some advanced error concealment or to
simply accept that the decoder wont stop at the end of input.

Fixes: Ticket 8069 (artifacts not the differing md5 which was there before 1afd2469)
Fixes: simple_dump_cut.webm
Fixes: regression of 1afd2469

fate-vp5 changes because the last frame is truncated and now handled
differently.

Signed-off-by: default avatarMichael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit b6b9ac56)
Signed-off-by: default avatarMichael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 70fb3fa990d604211d5b24fc43cdfe31560de250)
Signed-off-by: default avatarMichael Niedermayer <michael@niedermayer.cc>
parent ebe45f58
No related branches found
No related tags found
No related merge requests found
......@@ -88,6 +88,7 @@ typedef struct VP56RangeCoder {
const uint8_t *buffer;
const uint8_t *end;
unsigned int code_word;
int end_reached;
} VP56RangeCoder;
typedef struct VP56RefDc {
......@@ -231,7 +232,9 @@ int ff_vp56_init_range_decoder(VP56RangeCoder *c, const uint8_t *buf, int buf_si
*/
static av_always_inline int vpX_rac_is_end(VP56RangeCoder *c)
{
return c->end <= c->buffer && c->bits >= 0;
if (c->end <= c->buffer && c->bits >= 0)
c->end_reached ++;
return c->end_reached > 10;
}
static av_always_inline unsigned int vp56_rac_renorm(VP56RangeCoder *c)
......
......@@ -43,6 +43,7 @@ int ff_vp56_init_range_decoder(VP56RangeCoder *c, const uint8_t *buf, int buf_si
c->bits = -16;
c->buffer = buf;
c->end = buf + buf_size;
c->end_reached = 0;
if (buf_size < 1)
return AVERROR_INVALIDDATA;
c->code_word = bytestream_get_be24(&c->buffer);
......
......@@ -249,4 +249,4 @@
0, 243, 243, 1, 233472, 0x6f530ac6
0, 244, 244, 1, 233472, 0x94f7466c
0, 245, 245, 1, 233472, 0xa8c1d365
0, 246, 246, 1, 233472, 0xbf73f1b7
0, 246, 246, 1, 233472, 0x4f3ef38c
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment