mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-27 21:40:34 +00:00
avcodec/motion_est: remove duplicate function
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
1db30d6cec
commit
483d029188
@ -633,7 +633,7 @@ static inline int h263_mv4_search(MpegEncContext *s, int mx, int my, int shift)
|
|||||||
if(P[i][1] > (c->ymax<<shift)) P[i][1]= (c->ymax<<shift);
|
if(P[i][1] > (c->ymax<<shift)) P[i][1]= (c->ymax<<shift);
|
||||||
}
|
}
|
||||||
|
|
||||||
dmin4 = epzs_motion_search4(s, &mx4, &my4, P, block, block, s->p_mv_table, (1<<16)>>shift);
|
dmin4 = epzs_motion_search2(s, &mx4, &my4, P, block, block, s->p_mv_table, (1<<16)>>shift, 1);
|
||||||
|
|
||||||
dmin4= c->sub_motion_search(s, &mx4, &my4, dmin4, block, block, size, h);
|
dmin4= c->sub_motion_search(s, &mx4, &my4, dmin4, block, block, size, h);
|
||||||
|
|
||||||
@ -795,7 +795,7 @@ static int interlaced_search(MpegEncContext *s, int ref_index,
|
|||||||
P_MV1[0]= mx; //FIXME not correct if block != field_select
|
P_MV1[0]= mx; //FIXME not correct if block != field_select
|
||||||
P_MV1[1]= my / 2;
|
P_MV1[1]= my / 2;
|
||||||
|
|
||||||
dmin = epzs_motion_search2(s, &mx_i, &my_i, P, block, field_select+ref_index, mv_table, (1<<16)>>1);
|
dmin = epzs_motion_search2(s, &mx_i, &my_i, P, block, field_select+ref_index, mv_table, (1<<16)>>1, 0);
|
||||||
|
|
||||||
dmin= c->sub_motion_search(s, &mx_i, &my_i, dmin, block, field_select+ref_index, size, h);
|
dmin= c->sub_motion_search(s, &mx_i, &my_i, dmin, block, field_select+ref_index, size, h);
|
||||||
|
|
||||||
|
@ -989,76 +989,16 @@ int ff_epzs_motion_search(MpegEncContext *s, int *mx_ptr, int *my_ptr,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int epzs_motion_search4(MpegEncContext * s,
|
|
||||||
int *mx_ptr, int *my_ptr, int P[10][2],
|
|
||||||
int src_index, int ref_index, int16_t (*last_mv)[2],
|
|
||||||
int ref_mv_scale)
|
|
||||||
{
|
|
||||||
MotionEstContext * const c= &s->me;
|
|
||||||
int best[2]={0, 0};
|
|
||||||
int d, dmin;
|
|
||||||
unsigned map_generation;
|
|
||||||
const int penalty_factor= c->penalty_factor;
|
|
||||||
const int size=1;
|
|
||||||
const int h=8;
|
|
||||||
const int ref_mv_stride= s->mb_stride;
|
|
||||||
const int ref_mv_xy= s->mb_x + s->mb_y *ref_mv_stride;
|
|
||||||
me_cmp_func cmpf, chroma_cmpf;
|
|
||||||
LOAD_COMMON
|
|
||||||
int flags= c->flags;
|
|
||||||
LOAD_COMMON2
|
|
||||||
|
|
||||||
cmpf = s->mecc.me_cmp[size];
|
|
||||||
chroma_cmpf = s->mecc.me_cmp[size + 1];
|
|
||||||
|
|
||||||
map_generation= update_map_generation(c);
|
|
||||||
|
|
||||||
dmin = 1000000;
|
|
||||||
|
|
||||||
/* first line */
|
|
||||||
if (s->first_slice_line) {
|
|
||||||
CHECK_MV(P_LEFT[0]>>shift, P_LEFT[1]>>shift)
|
|
||||||
CHECK_CLIPPED_MV((last_mv[ref_mv_xy][0]*ref_mv_scale + (1<<15))>>16,
|
|
||||||
(last_mv[ref_mv_xy][1]*ref_mv_scale + (1<<15))>>16)
|
|
||||||
CHECK_MV(P_MV1[0]>>shift, P_MV1[1]>>shift)
|
|
||||||
}else{
|
|
||||||
CHECK_MV(P_MV1[0]>>shift, P_MV1[1]>>shift)
|
|
||||||
//FIXME try some early stop
|
|
||||||
CHECK_MV(P_MEDIAN[0]>>shift, P_MEDIAN[1]>>shift)
|
|
||||||
CHECK_MV(P_LEFT[0]>>shift, P_LEFT[1]>>shift)
|
|
||||||
CHECK_MV(P_TOP[0]>>shift, P_TOP[1]>>shift)
|
|
||||||
CHECK_MV(P_TOPRIGHT[0]>>shift, P_TOPRIGHT[1]>>shift)
|
|
||||||
CHECK_CLIPPED_MV((last_mv[ref_mv_xy][0]*ref_mv_scale + (1<<15))>>16,
|
|
||||||
(last_mv[ref_mv_xy][1]*ref_mv_scale + (1<<15))>>16)
|
|
||||||
}
|
|
||||||
if(dmin>64*4){
|
|
||||||
CHECK_CLIPPED_MV((last_mv[ref_mv_xy+1][0]*ref_mv_scale + (1<<15))>>16,
|
|
||||||
(last_mv[ref_mv_xy+1][1]*ref_mv_scale + (1<<15))>>16)
|
|
||||||
if(s->mb_y+1<s->end_mb_y) //FIXME replace at least with last_slice_line
|
|
||||||
CHECK_CLIPPED_MV((last_mv[ref_mv_xy+ref_mv_stride][0]*ref_mv_scale + (1<<15))>>16,
|
|
||||||
(last_mv[ref_mv_xy+ref_mv_stride][1]*ref_mv_scale + (1<<15))>>16)
|
|
||||||
}
|
|
||||||
|
|
||||||
dmin= diamond_search(s, best, dmin, src_index, ref_index, penalty_factor, size, h, flags);
|
|
||||||
|
|
||||||
*mx_ptr= best[0];
|
|
||||||
*my_ptr= best[1];
|
|
||||||
|
|
||||||
return dmin;
|
|
||||||
}
|
|
||||||
|
|
||||||
//try to merge with above FIXME (needs PSNR test)
|
|
||||||
static int epzs_motion_search2(MpegEncContext * s,
|
static int epzs_motion_search2(MpegEncContext * s,
|
||||||
int *mx_ptr, int *my_ptr, int P[10][2],
|
int *mx_ptr, int *my_ptr, int P[10][2],
|
||||||
int src_index, int ref_index, int16_t (*last_mv)[2],
|
int src_index, int ref_index, int16_t (*last_mv)[2],
|
||||||
int ref_mv_scale)
|
int ref_mv_scale, const int size)
|
||||||
{
|
{
|
||||||
MotionEstContext * const c= &s->me;
|
MotionEstContext * const c= &s->me;
|
||||||
int best[2]={0, 0};
|
int best[2]={0, 0};
|
||||||
int d, dmin;
|
int d, dmin;
|
||||||
unsigned map_generation;
|
unsigned map_generation;
|
||||||
const int penalty_factor= c->penalty_factor;
|
const int penalty_factor= c->penalty_factor;
|
||||||
const int size=0; //FIXME pass as arg
|
|
||||||
const int h=8;
|
const int h=8;
|
||||||
const int ref_mv_stride= s->mb_stride;
|
const int ref_mv_stride= s->mb_stride;
|
||||||
const int ref_mv_xy= s->mb_x + s->mb_y *ref_mv_stride;
|
const int ref_mv_xy= s->mb_x + s->mb_y *ref_mv_stride;
|
||||||
|
Loading…
Reference in New Issue
Block a user