ffmpeg | branch: master | Michael Niedermayer <michae...@gmx.at> | Mon Nov 17 20:58:21 2014 +0100| [894d10332ca527ef91b29ad6eb52b73bdc95eb22] | committer: Michael Niedermayer
avcodec/lcldec: support rgb24 with width%4 != 0 Fixes Ticket1216 Signed-off-by: Michael Niedermayer <michae...@gmx.at> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=894d10332ca527ef91b29ad6eb52b73bdc95eb22 --- libavcodec/lcldec.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavcodec/lcldec.c b/libavcodec/lcldec.c index ca62b42..1d94041 100644 --- a/libavcodec/lcldec.c +++ b/libavcodec/lcldec.c @@ -180,6 +180,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac int uqvq, ret; unsigned int mthread_inlen, mthread_outlen; unsigned int len = buf_size; + int linesize; if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) return ret; @@ -191,7 +192,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac case AV_CODEC_ID_MSZH: switch (c->compression) { case COMP_MSZH: - if (c->imgtype == IMGTYPE_RGB24 && len == width * height * 3 || + if (c->imgtype == IMGTYPE_RGB24 && len == FFALIGN(width * 3, 4) * height || c->imgtype == IMGTYPE_YUV111 && len == width * height * 3) { ; } else if (c->flags & FLAG_MULTITHREAD) { @@ -411,10 +412,11 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac } break; case IMGTYPE_RGB24: + linesize = len < FFALIGN(3 * width, 4) * height ? 3 * width : FFALIGN(3 * width, 4); for (row = height - 1; row >= 0; row--) { pixel_ptr = row * frame->linesize[0]; memcpy(outptr + pixel_ptr, encoded, 3 * width); - encoded += 3 * width; + encoded += linesize; } break; case IMGTYPE_YUV411: _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog