[FFmpeg-cvslog] aic: Fix decoding files with odd dimensions

Vittorio Giovara git at videolan.org
Sat Mar 21 02:30:11 CET 2015


ffmpeg | branch: release/2.5 | Vittorio Giovara <vittorio.giovara at gmail.com> | Fri Feb 27 19:00:25 2015 +0000| [9246eb1ec50402eda3cf5873749c95688d074a8e] | committer: Michael Niedermayer

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 at libav.org
(cherry picked from commit e878ec0d47cd6228c367b2f3128b76d7523f7255)

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9246eb1ec50402eda3cf5873749c95688d074a8e
---

 libavcodec/aic.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/aic.c b/libavcodec/aic.c
index 3472301..5882bf1 100644
--- a/libavcodec/aic.c
+++ b/libavcodec/aic.c
@@ -438,8 +438,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;



More information about the ffmpeg-cvslog mailing list