lavc/flicvideo: Implement padding in COPY chunks.
Reviewed-by: Reimar
This commit is contained in:
parent
c06bdc60c9
commit
de1a0d4359
@ -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;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user