Commit 8b29d5b5 authored by voroshil's avatar voroshil

Fix MJPEG decoder for AMV files.

Since decoding is doing from the end and aligned by 16
previous code worked correctly only when picture height was dividable by 16,
otherwise it provides garbage in top lines and truncates bottom.
New code adjusts data[] pointers taking in account alignment issue.



git-svn-id: file:///var/local/repositories/ffmpeg/trunk@10727 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 67128662
......@@ -671,7 +671,8 @@ static int mjpeg_decode_scan(MJpegDecodeContext *s, int nb_components, int ss, i
linesize[c]=s->linesize[c];
if(s->avctx->codec->id==CODEC_ID_AMV) {
//picture should be flipped upside-down for this codec
data[c] += (linesize[c] * (s->v_scount[i] * 8 * s->mb_height - 1));
assert(!(s->avctx->flags & CODEC_FLAG_EMU_EDGE));
data[c] += (linesize[c] * (s->v_scount[i] * (8 * s->mb_height -((s->height/s->v_max)&7)) - 1 ));
linesize[c] *= -1;
}
}
......
......@@ -87,6 +87,7 @@ static int sp5x_decode_frame(AVCodecContext *avctx,
recoded[j++] = 0xFF;
recoded[j++] = 0xD9;
avctx->flags &= ~CODEC_FLAG_EMU_EDGE;
i = ff_mjpeg_decode_frame(avctx, data, data_size, recoded, j);
av_free(recoded);
......@@ -207,6 +208,5 @@ AVCodec amv_decoder = {
ff_mjpeg_decode_init,
NULL,
ff_mjpeg_decode_end,
sp5x_decode_frame,
CODEC_CAP_DR1
sp5x_decode_frame
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment