Double motion vector range for HPEL interlaced picture in proper place
authorMashiat Sarker Shakkhar <mashiat.sarker@gmail.com>
Tue, 9 Oct 2012 19:38:19 +0000 (19:38 +0000)
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>
Wed, 10 Oct 2012 18:56:02 +0000 (14:56 -0400)
The existing code is not in the right place and it should cover both
interlaced frame and field pictures.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
libavcodec/vc1.c
libavcodec/vc1dec.c

index b04d570..c7edc25 100644 (file)
@@ -1223,6 +1223,11 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
         break;
     }
 
+    if (v->fcm != PROGRESSIVE && !v->s.quarter_sample) {
+        v->range_x <<= 1;
+        v->range_y <<= 1;
+    }
+
     /* AC Syntax */
     v->c_ac_table_index = decode012(gb);
     if (v->s.pict_type == AV_PICTURE_TYPE_I || v->s.pict_type == AV_PICTURE_TYPE_BI) {
index 40164cc..6bfba68 100644 (file)
@@ -1573,10 +1573,6 @@ static inline void vc1_pred_mv(VC1Context *v, int n, int dmv_x, int dmv_y,
         }
     }
 
-    if (v->field_mode && !s->quarter_sample) {
-        r_x <<= 1;
-        r_y <<= 1;
-    }
     if (v->field_mode && v->numref)
         r_y >>= 1;
     if (v->field_mode && v->cur_field_type && v->ref_field_type[dir] == 0)