[FFmpeg-cvslog] r20666 - trunk/libavcodec/mpeg12.c
michael
subversion
Mon Nov 30 03:37:03 CET 2009
Author: michael
Date: Mon Nov 30 03:37:03 2009
New Revision: 20666
Log:
Fix dual prime motion compensation in field pictures.
Fixes issue1125.
Modified:
trunk/libavcodec/mpeg12.c
Modified: trunk/libavcodec/mpeg12.c
==============================================================================
--- trunk/libavcodec/mpeg12.c Mon Nov 30 00:30:46 2009 (r20665)
+++ trunk/libavcodec/mpeg12.c Mon Nov 30 03:37:03 2009 (r20666)
@@ -448,18 +448,20 @@ static int mpeg_decode_mb(MpegEncContext
for(i=0;i<2;i++) {
if (USES_LIST(mb_type, i)) {
int dmx, dmy, mx, my, m;
+ const int my_shift= s->picture_structure == PICT_FRAME;
+
mx = mpeg_decode_motion(s, s->mpeg_f_code[i][0],
s->last_mv[i][0][0]);
s->last_mv[i][0][0] = mx;
s->last_mv[i][1][0] = mx;
dmx = get_dmv(s);
my = mpeg_decode_motion(s, s->mpeg_f_code[i][1],
- s->last_mv[i][0][1] >> 1);
+ s->last_mv[i][0][1] >> my_shift);
dmy = get_dmv(s);
- s->last_mv[i][0][1] = my<<1;
- s->last_mv[i][1][1] = my<<1;
+ s->last_mv[i][0][1] = my<<my_shift;
+ s->last_mv[i][1][1] = my<<my_shift;
s->mv[i][0][0] = mx;
s->mv[i][0][1] = my;
More information about the ffmpeg-cvslog
mailing list