limit x/ymin/max to me_range
slight psnr/bitrate gain for most but not all files if me_range is used Originally committed as revision 7325 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
6f3e4e1712
commit
a6daaf7cce
@ -689,6 +689,7 @@ static inline void set_p_mv_tables(MpegEncContext * s, int mx, int my, int mv4)
|
|||||||
static inline void get_limits(MpegEncContext *s, int x, int y)
|
static inline void get_limits(MpegEncContext *s, int x, int y)
|
||||||
{
|
{
|
||||||
MotionEstContext * const c= &s->me;
|
MotionEstContext * const c= &s->me;
|
||||||
|
int range= c->avctx->me_range >> (1 + !!(c->flags&FLAG_QPEL));
|
||||||
/*
|
/*
|
||||||
if(c->avctx->me_range) c->range= c->avctx->me_range >> 1;
|
if(c->avctx->me_range) c->range= c->avctx->me_range >> 1;
|
||||||
else c->range= 16;
|
else c->range= 16;
|
||||||
@ -710,6 +711,12 @@ static inline void get_limits(MpegEncContext *s, int x, int y)
|
|||||||
c->xmax = - x + s->mb_width *16 - 16;
|
c->xmax = - x + s->mb_width *16 - 16;
|
||||||
c->ymax = - y + s->mb_height*16 - 16;
|
c->ymax = - y + s->mb_height*16 - 16;
|
||||||
}
|
}
|
||||||
|
if(range){
|
||||||
|
c->xmin = FFMAX(c->xmin,-range);
|
||||||
|
c->xmax = FFMIN(c->xmax, range);
|
||||||
|
c->ymin = FFMAX(c->ymin,-range);
|
||||||
|
c->ymax = FFMIN(c->ymax, range);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void init_mv4_ref(MotionEstContext *c){
|
static inline void init_mv4_ref(MotionEstContext *c){
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user