[FFmpeg-cvslog] AVRn: fix progressive

Michael Niedermayer git at videolan.org
Mon Aug 20 02:55:05 CEST 2012


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Mon Aug 20 02:50:59 2012 +0200| [b1acf5d7a646b98df9bbc59650baf6ded024ec86] | committer: Michael Niedermayer

AVRn: fix progressive

Fixes Ticket970

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

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

 libavcodec/avrndec.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavcodec/avrndec.c b/libavcodec/avrndec.c
index b173c6d..83180f0 100644
--- a/libavcodec/avrndec.c
+++ b/libavcodec/avrndec.c
@@ -76,6 +76,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
     AVFrame *p = &a->frame;
     const uint8_t *buf = avpkt->data;
     int buf_size       = avpkt->size;
+    int true_height    = buf_size / (2*avctx->width);
     int y;
 
     if(a->is_mjpeg)
@@ -97,7 +98,6 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
     p->key_frame= 1;
 
     if(a->interlace) {
-        int true_height = buf_size / (2*avctx->width);
         buf += (true_height - avctx->height)*avctx->width;
         for(y = 0; y < avctx->height-1; y+=2) {
             memcpy(p->data[0] + (y+ a->tff)*p->linesize[0], buf                             , 2*avctx->width);
@@ -105,6 +105,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
             buf += 2*avctx->width;
         }
     } else {
+        buf += (true_height - avctx->height)*avctx->width*2;
         for(y = 0; y < avctx->height; y++) {
             memcpy(p->data[0] + y*p->linesize[0], buf, 2*avctx->width);
             buf += 2*avctx->width;



More information about the ffmpeg-cvslog mailing list