[FFmpeg-cvslog] rawdec: fix decoding of odd dimensioned raw yv12

Michael Niedermayer git at videolan.org
Tue Jan 1 00:57:56 CET 2013


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Tue Jan  1 00:35:02 2013 +0100| [f105fe5c22c5b7f426f65d82bee0de47c14bad65] | committer: Michael Niedermayer

rawdec: fix decoding of odd dimensioned raw yv12

Fix Ticket339 part 2 of 2

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

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

 libavcodec/rawdec.c |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libavcodec/rawdec.c b/libavcodec/rawdec.c
index 5002ccc..af42114 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;



More information about the ffmpeg-cvslog mailing list