[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