summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVittorio Giovara <vittorio.giovara@gmail.com>2015-02-27 19:00:25 +0000
committerVittorio Giovara <vittorio.giovara@gmail.com>2015-03-03 15:08:15 +0000
commite878ec0d47cd6228c367b2f3128b76d7523f7255 (patch)
tree6ec75697d7d8ede8d7f4baf3e35d5989de60f8dd
parent33d412eb4a2a083c1514ddbe69295b37e1918a8c (diff)
downloadffmpeg-streaming-e878ec0d47cd6228c367b2f3128b76d7523f7255.zip
ffmpeg-streaming-e878ec0d47cd6228c367b2f3128b76d7523f7255.tar.gz
aic: Fix decoding files with odd dimensions
Normally the aic decoder finds the proper slice combination (multiple of some number less than 32) but in case of odd width, it resorts to the default values, which were actually swapped. The number of slices is modified to account for such odd width cases. CC: libav-stable@libav.org
-rw-r--r--libavcodec/aic.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libavcodec/aic.c b/libavcodec/aic.c
index dac9d8b..5687dbe 100644
--- a/libavcodec/aic.c
+++ b/libavcodec/aic.c
@@ -434,8 +434,8 @@ static av_cold int aic_decode_init(AVCodecContext *avctx)
ctx->mb_width = FFALIGN(avctx->width, 16) >> 4;
ctx->mb_height = FFALIGN(avctx->height, 16) >> 4;
- ctx->num_x_slices = 16;
- ctx->slice_width = ctx->mb_width / 16;
+ ctx->num_x_slices = (ctx->mb_width + 15) >> 4;
+ ctx->slice_width = 16;
for (i = 1; i < 32; i++) {
if (!(ctx->mb_width % i) && (ctx->mb_width / i < 32)) {
ctx->slice_width = ctx->mb_width / i;
OpenPOWER on IntegriCloud