Commit e179fbc8 authored by Kostya Shishkov's avatar Kostya Shishkov

Swap back and forward motion vectors to achieve correct picture

Originally committed as revision 6237 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 1884a48b
...@@ -2104,6 +2104,16 @@ static always_inline int scale_mv(int value, int bfrac, int inv, int qs) ...@@ -2104,6 +2104,16 @@ static always_inline int scale_mv(int value, int bfrac, int inv, int qs)
*/ */
static inline void vc1_b_mc(VC1Context *v, int dmv_x[2], int dmv_y[2], int direct, int mode) static inline void vc1_b_mc(VC1Context *v, int dmv_x[2], int dmv_y[2], int direct, int mode)
{ {
int t;
//XXX: more elegant solution is possible
t = v->s.mv[0][0][0];
v->s.mv[0][0][0] = v->s.mv[1][0][0];
v->s.mv[1][0][0] = t;
t = v->s.mv[0][0][1];
v->s.mv[0][0][1] = v->s.mv[1][0][1];
v->s.mv[1][0][1] = t;
if(direct) { if(direct) {
vc1_mc_1mv(v, 0); vc1_mc_1mv(v, 0);
vc1_interp_mc(v); vc1_interp_mc(v);
...@@ -2115,7 +2125,7 @@ static inline void vc1_b_mc(VC1Context *v, int dmv_x[2], int dmv_y[2], int direc ...@@ -2115,7 +2125,7 @@ static inline void vc1_b_mc(VC1Context *v, int dmv_x[2], int dmv_y[2], int direc
return; return;
} }
vc1_mc_1mv(v, (mode == BMV_TYPE_FORWARD)); vc1_mc_1mv(v, (mode == BMV_TYPE_BACKWARD));
} }
static inline void vc1_pred_b_mv(VC1Context *v, int dmv_x[2], int dmv_y[2], int direct, int mvtype) static inline void vc1_pred_b_mv(VC1Context *v, int dmv_x[2], int dmv_y[2], int direct, int mvtype)
......
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