diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2003-03-05 17:48:19 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2003-03-05 17:48:19 +0000 |
commit | dfb476cbe0de25f3dde7c46d0917b37ac74b0a2e (patch) | |
tree | 2fbdf68b45ec59e2374be44d647b0cb2ce0564a9 /libavcodec/mpegvideo.c | |
parent | 968ea8d9d3d8b0e944d666f5979b7085a8e66bc2 (diff) | |
download | ffmpeg-dfb476cbe0de25f3dde7c46d0917b37ac74b0a2e.tar.gz |
field picture decoding support (16x16 MC blocks only as i dont have any samples which use other modes ...)
Originally committed as revision 1624 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mpegvideo.c')
-rw-r--r-- | libavcodec/mpegvideo.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 8bfc0f049d..12385c9646 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -212,6 +212,8 @@ int DCT_common_init(MpegEncContext *s) ff_init_scantable(s, &s->intra_h_scantable, ff_alternate_horizontal_scan); ff_init_scantable(s, &s->intra_v_scantable, ff_alternate_vertical_scan); + s->picture_structure= PICT_FRAME; + return 0; } @@ -1855,8 +1857,18 @@ static inline void MPV_motion(MpegEncContext *s, s->mv[dir][1][0], s->mv[dir][1][1], 8); } } else { - + int offset; + if(s->picture_structure == s->field_select[dir][0] + 1 || s->pict_type == B_TYPE || s->first_field){ + offset= s->field_select[dir][0] ? s->linesize/2 : 0; + }else{ + ref_picture= s->current_picture.data; + offset= s->field_select[dir][0] ? s->linesize/2 : -s->linesize/2; + } + mpeg_motion(s, dest_y, dest_cb, dest_cr, 0, + ref_picture, offset, + 0, pix_op, + s->mv[dir][0][0], s->mv[dir][0][1], 16); } break; } |