[FFmpeg-cvslog] r15747 - trunk/libavcodec/rv34.c
kostya
subversion
Thu Oct 30 07:08:47 CET 2008
Author: kostya
Date: Thu Oct 30 07:08:47 2008
New Revision: 15747
Log:
Correct motion vector scaling in B-frames for RV3/4
Modified:
trunk/libavcodec/rv34.c
Modified: trunk/libavcodec/rv34.c
==============================================================================
--- trunk/libavcodec/rv34.c (original)
+++ trunk/libavcodec/rv34.c Thu Oct 30 07:08:47 2008
@@ -474,13 +474,12 @@ static void rv34_pred_mv(RV34DecContext
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;
}
/**
More information about the ffmpeg-cvslog
mailing list