Commit 5f621dd2 authored by Kostya Shishkov's avatar Kostya Shishkov

Correct motion vector scaling in B-frames for RV3/4

Originally committed as revision 15747 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 1fcb9be3
......@@ -474,13 +474,12 @@ static void rv34_pred_mv(RV34DecContext *r, int block_type, int subblock_no, int
static int calc_add_mv(RV34DecContext *r, int dir, int val)
{
int refdist = GET_PTS_DIFF(r->next_pts, r->last_pts);
int dist = dir ? GET_PTS_DIFF(r->next_pts, r->cur_pts) : GET_PTS_DIFF(r->cur_pts, r->last_pts);
int dist = dir ? -GET_PTS_DIFF(r->next_pts, r->cur_pts) : GET_PTS_DIFF(r->cur_pts, r->last_pts);
int mul;
if(!refdist) return 0;
if(!dir)
return (val * dist + refdist - 1) / refdist;
else
return -(val * dist / refdist);
mul = (dist << 14) / refdist;
return (val * mul + 0x2000) >> 14;
}
/**
......
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