Commit f0ec2394 authored by Michael Niedermayer's avatar Michael Niedermayer

Fix dual prime motion compensation in field pictures.

Fixes issue1125.

Originally committed as revision 20666 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 419bddd3
...@@ -448,18 +448,20 @@ static int mpeg_decode_mb(MpegEncContext *s, ...@@ -448,18 +448,20 @@ static int mpeg_decode_mb(MpegEncContext *s,
for(i=0;i<2;i++) { for(i=0;i<2;i++) {
if (USES_LIST(mb_type, i)) { if (USES_LIST(mb_type, i)) {
int dmx, dmy, mx, my, m; 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], mx = mpeg_decode_motion(s, s->mpeg_f_code[i][0],
s->last_mv[i][0][0]); s->last_mv[i][0][0]);
s->last_mv[i][0][0] = mx; s->last_mv[i][0][0] = mx;
s->last_mv[i][1][0] = mx; s->last_mv[i][1][0] = mx;
dmx = get_dmv(s); dmx = get_dmv(s);
my = mpeg_decode_motion(s, s->mpeg_f_code[i][1], 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); dmy = get_dmv(s);
s->last_mv[i][0][1] = my<<1; s->last_mv[i][0][1] = my<<my_shift;
s->last_mv[i][1][1] = my<<1; s->last_mv[i][1][1] = my<<my_shift;
s->mv[i][0][0] = mx; s->mv[i][0][0] = mx;
s->mv[i][0][1] = my; s->mv[i][0][1] = my;
......
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