diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2003-07-29 02:09:12 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2003-07-29 02:09:12 +0000 |
commit | 7d1c3fc1d683d53982a1dec14f0f9749a07ae48d (patch) | |
tree | 23a9984eef372f9710641e2cb6f302ea9af1727f /libavcodec/mpeg12.c | |
parent | 80adda8efd35c920c7ba0c43d530102a2fd22bc3 (diff) | |
download | ffmpeg-7d1c3fc1d683d53982a1dec14f0f9749a07ae48d.tar.gz |
rate distortion mb decision support
fix decoding of old %16!=0 divx
fix assertion failure in motion_est.c
Originally committed as revision 2094 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mpeg12.c')
-rw-r--r-- | libavcodec/mpeg12.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 4f007ca3ca..f15b336d2b 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -1924,6 +1924,7 @@ static int mpeg_decode_slice(AVCodecContext *avctx, s->resync_mb_x= s->mb_x; s->resync_mb_y= s->mb_y = start_code; s->mb_skip_run= 0; + ff_init_block_index(s); for(;;) { s->dsp.clear_blocks(s->block[0]); @@ -1959,8 +1960,12 @@ static int mpeg_decode_slice(AVCodecContext *avctx, s->motion_val[xy + 1 + wrap][1] = motion_y; } - MPV_decode_mb(s, s->block); + s->dest[0] += 16; + s->dest[1] += 8; + s->dest[2] += 8; + MPV_decode_mb(s, s->block); + if (++s->mb_x >= s->mb_width) { if(s->avctx->codec_tag == ff_get_fourcc("VCR2")) exchange_uv((AVFrame*)s->current_picture_ptr); @@ -1983,6 +1988,8 @@ static int mpeg_decode_slice(AVCodecContext *avctx, }else goto eos; } + + ff_init_block_index(s); } /* skip mb handling */ |