From f105fe5c22c5b7f426f65d82bee0de47c14bad65 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 1 Jan 2013 00:35:02 +0100 Subject: [PATCH] rawdec: fix decoding of odd dimensioned raw yv12 Fix Ticket339 part 2 of 2 Signed-off-by: Michael Niedermayer --- libavcodec/rawdec.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavcodec/rawdec.c b/libavcodec/rawdec.c index 5002ccc1fc..af42114138 100644 --- a/libavcodec/rawdec.c +++ b/libavcodec/rawdec.c @@ -246,6 +246,11 @@ static int raw_decode(AVCodecContext *avctx, || avctx->codec_tag == MKTAG('Y', 'V', 'U', '9')) FFSWAP(uint8_t *, picture->data[1], picture->data[2]); + if (avctx->codec_tag == AV_RL32("I420") && (avctx->width+1)*(avctx->height+1) * 3/2 == buf_size) { + picture->data[1] = picture->data[1] + (avctx->width+1)*(avctx->height+1) -avctx->width*avctx->height; + picture->data[2] = picture->data[2] + ((avctx->width+1)*(avctx->height+1) -avctx->width*avctx->height)*5/4; + } + if(avctx->codec_tag == AV_RL32("yuv2") && avctx->pix_fmt == AV_PIX_FMT_YUYV422) { int x, y;