mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-24 02:24:07 +00:00
Add MV constraint check to motion estimation start point
This commit is contained in:
parent
9753820b3a
commit
d1abf85229
|
@ -1244,13 +1244,14 @@ static void search_pu_inter_ref(inter_search_info_t *info,
|
|||
const cu_array_t* ref_array = info->state->frame->ref->cu_arrays[info->ref_idx];
|
||||
const cu_info_t* ref_cu = kvz_cu_array_at_const(ref_array, mid_x, mid_y);
|
||||
if (ref_cu->type == CU_INTER) {
|
||||
vector2d_t mv_previous = { 0, 0 };
|
||||
if (ref_cu->inter.mv_dir & 1) {
|
||||
mv.x = ref_cu->inter.mv[0][0];
|
||||
mv.y = ref_cu->inter.mv[0][1];
|
||||
mv_previous.x = ref_cu->inter.mv[0][0];
|
||||
mv_previous.y = ref_cu->inter.mv[0][1];
|
||||
}
|
||||
else {
|
||||
mv.x = ref_cu->inter.mv[1][0];
|
||||
mv.y = ref_cu->inter.mv[1][1];
|
||||
mv_previous.x = ref_cu->inter.mv[1][0];
|
||||
mv_previous.y = ref_cu->inter.mv[1][1];
|
||||
}
|
||||
// Apply mv scaling if neighbor poc is available
|
||||
if (info->state->frame->ref_LX_size[ref_list] > 0) {
|
||||
|
@ -1284,9 +1285,14 @@ static void search_pu_inter_ref(inter_search_info_t *info,
|
|||
[col_list]
|
||||
[ref_cu->inter.mv_ref[col_list]]
|
||||
],
|
||||
&mv
|
||||
&mv_previous
|
||||
);
|
||||
}
|
||||
|
||||
// Check if the mv is valid after scaling
|
||||
if (fracmv_within_tile(info, mv_previous.x, mv_previous.y)) {
|
||||
mv = mv_previous;
|
||||
}
|
||||
}
|
||||
|
||||
int search_range = 32;
|
||||
|
|
Loading…
Reference in a new issue