|
|
@ -423,7 +423,7 @@ static int flic_decode_frame_8BPP(AVCodecContext *avctx, |
|
|
|
|
|
|
|
|
|
|
|
case FLI_COPY: |
|
|
|
case FLI_COPY: |
|
|
|
/* copy the chunk (uncompressed frame) */ |
|
|
|
/* copy the chunk (uncompressed frame) */ |
|
|
|
if (chunk_size - 6 != s->avctx->width * s->avctx->height) { |
|
|
|
if (chunk_size - 6 != FFALIGN(s->avctx->width, 4) * s->avctx->height) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "In chunk FLI_COPY : source data (%d bytes) " \
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "In chunk FLI_COPY : source data (%d bytes) " \
|
|
|
|
"has incorrect size, skipping chunk\n", chunk_size - 6); |
|
|
|
"has incorrect size, skipping chunk\n", chunk_size - 6); |
|
|
|
bytestream2_skip(&g2, chunk_size - 6); |
|
|
|
bytestream2_skip(&g2, chunk_size - 6); |
|
|
@ -432,6 +432,8 @@ static int flic_decode_frame_8BPP(AVCodecContext *avctx, |
|
|
|
y_ptr += s->frame->linesize[0]) { |
|
|
|
y_ptr += s->frame->linesize[0]) { |
|
|
|
bytestream2_get_buffer(&g2, &pixels[y_ptr], |
|
|
|
bytestream2_get_buffer(&g2, &pixels[y_ptr], |
|
|
|
s->avctx->width); |
|
|
|
s->avctx->width); |
|
|
|
|
|
|
|
if (s->avctx->width & 3) |
|
|
|
|
|
|
|
bytestream2_skip(&g2, 4 - (s->avctx->width & 3)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
@ -711,7 +713,7 @@ static int flic_decode_frame_15_16BPP(AVCodecContext *avctx, |
|
|
|
case FLI_COPY: |
|
|
|
case FLI_COPY: |
|
|
|
case FLI_DTA_COPY: |
|
|
|
case FLI_DTA_COPY: |
|
|
|
/* copy the chunk (uncompressed frame) */ |
|
|
|
/* copy the chunk (uncompressed frame) */ |
|
|
|
if (chunk_size - 6 > (unsigned int)(s->avctx->width * s->avctx->height)*2) { |
|
|
|
if (chunk_size - 6 > (unsigned int)(FFALIGN(s->avctx->width, 2) * s->avctx->height)*2) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "In chunk FLI_COPY : source data (%d bytes) " \
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "In chunk FLI_COPY : source data (%d bytes) " \
|
|
|
|
"bigger than image, skipping chunk\n", chunk_size - 6); |
|
|
|
"bigger than image, skipping chunk\n", chunk_size - 6); |
|
|
|
bytestream2_skip(&g2, chunk_size - 6); |
|
|
|
bytestream2_skip(&g2, chunk_size - 6); |
|
|
@ -727,6 +729,8 @@ static int flic_decode_frame_15_16BPP(AVCodecContext *avctx, |
|
|
|
pixel_ptr += 2; |
|
|
|
pixel_ptr += 2; |
|
|
|
pixel_countdown--; |
|
|
|
pixel_countdown--; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (s->avctx->width & 1) |
|
|
|
|
|
|
|
bytestream2_skip(&g2, 2); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
|