mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-25 08:42:39 +00:00
idcinvideo: if decoding fails return error
Previously if frame decoding failed it would be silently reported as valid frame. The fate ref is updated because sample have truncated last video packet. While here return meaningful error codes. Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
aadb7b3ac4
commit
527224830a
@ -173,7 +173,7 @@ static av_cold int idcin_decode_init(AVCodecContext *avctx)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void idcin_decode_vlcs(IdcinContext *s)
|
||||
static int idcin_decode_vlcs(IdcinContext *s)
|
||||
{
|
||||
hnode *hnodes;
|
||||
long x, y;
|
||||
@ -192,7 +192,7 @@ static void idcin_decode_vlcs(IdcinContext *s)
|
||||
if(!bit_pos) {
|
||||
if(dat_pos >= s->size) {
|
||||
av_log(s->avctx, AV_LOG_ERROR, "Huffman decode error.\n");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
bit_pos = 8;
|
||||
v = s->buf[dat_pos++];
|
||||
@ -207,6 +207,8 @@ static void idcin_decode_vlcs(IdcinContext *s)
|
||||
prev = node_num;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int idcin_decode_frame(AVCodecContext *avctx,
|
||||
@ -217,6 +219,7 @@ static int idcin_decode_frame(AVCodecContext *avctx,
|
||||
int buf_size = avpkt->size;
|
||||
IdcinContext *s = avctx->priv_data;
|
||||
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
|
||||
int ret;
|
||||
|
||||
s->buf = buf;
|
||||
s->size = buf_size;
|
||||
@ -224,12 +227,13 @@ static int idcin_decode_frame(AVCodecContext *avctx,
|
||||
if (s->frame.data[0])
|
||||
avctx->release_buffer(avctx, &s->frame);
|
||||
|
||||
if (avctx->get_buffer(avctx, &s->frame)) {
|
||||
if ((ret = avctx->get_buffer(avctx, &s->frame))) {
|
||||
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
|
||||
return -1;
|
||||
return ret;
|
||||
}
|
||||
|
||||
idcin_decode_vlcs(s);
|
||||
if (idcin_decode_vlcs(s))
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
if (pal) {
|
||||
s->frame.palette_has_changed = 1;
|
||||
|
@ -104,4 +104,3 @@
|
||||
1, 78750, 78750, 1575, 6300, 0xe3bfa403
|
||||
0, 51, 51, 1, 230400, 0x488de02d
|
||||
1, 80325, 80325, 1575, 6300, 0x2c5bd9c9
|
||||
0, 52, 52, 1, 230400, 0x488de02d
|
||||
|
Loading…
Reference in New Issue
Block a user