|
|
@ -1044,7 +1044,7 @@ static void ipvideo_decode_format_10_opcodes(IpvideoContext *s, AVFrame *frame) |
|
|
|
for (x = 0; x < s->avctx->width; x += 8) { |
|
|
|
for (x = 0; x < s->avctx->width; x += 8) { |
|
|
|
s->pixel_ptr = s->cur_decode_frame->data[0] + x + y * s->cur_decode_frame->linesize[0]; |
|
|
|
s->pixel_ptr = s->cur_decode_frame->data[0] + x + y * s->cur_decode_frame->linesize[0]; |
|
|
|
|
|
|
|
|
|
|
|
while (skip <= 0) { |
|
|
|
while (skip <= 0 && bytestream2_get_bytes_left(&decoding_map_ptr) > 1) { |
|
|
|
if (skip != -0x8000 && skip) { |
|
|
|
if (skip != -0x8000 && skip) { |
|
|
|
opcode = bytestream2_get_le16(&decoding_map_ptr); |
|
|
|
opcode = bytestream2_get_le16(&decoding_map_ptr); |
|
|
|
ipvideo_format_10_passes[pass](s, frame, opcode); |
|
|
|
ipvideo_format_10_passes[pass](s, frame, opcode); |
|
|
@ -1069,6 +1069,8 @@ static void ipvideo_decode_format_10_opcodes(IpvideoContext *s, AVFrame *frame) |
|
|
|
changed_block = 1; |
|
|
|
changed_block = 1; |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (bytestream2_get_bytes_left(&skip_map_ptr) < 2) |
|
|
|
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
skip = bytestream2_get_le16(&skip_map_ptr); |
|
|
|
skip = bytestream2_get_le16(&skip_map_ptr); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|