mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-04-14 00:58:38 +02:00
Swap back and forward motion vectors to achieve correct picture
Originally committed as revision 6237 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
1884a48bee
commit
e179fbc850
@ -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
|
|||||||
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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user