mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-24 02:24:07 +00:00
Temporal merge candidate selection
This commit is contained in:
parent
f83042f4a1
commit
5fa8226ac9
34
src/inter.c
34
src/inter.c
|
@ -1353,8 +1353,38 @@ uint8_t kvz_inter_get_merge_cand(const encoder_state_t * const state,
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_TEMPORAL_MVP
|
#if ENABLE_TEMPORAL_MVP
|
||||||
if(candidates < AMVP_MAX_NUM_CANDS) {
|
if (candidates < MRG_MAX_NUM_CANDS && state->global->ref->used_size) {
|
||||||
//TODO: add temporal mv predictor
|
|
||||||
|
uint32_t poc_diff = UINT_MAX;
|
||||||
|
int32_t closest_ref = 0;
|
||||||
|
|
||||||
|
for (int temporal_cand = 0; temporal_cand < state->global->ref->used_size; temporal_cand++) {
|
||||||
|
int td = state->global->poc - state->global->ref->pocs[temporal_cand];
|
||||||
|
td = td < 0 ? -td : td;
|
||||||
|
if (td < poc_diff) {
|
||||||
|
closest_ref = temporal_cand;
|
||||||
|
poc_diff = td;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cu_info_t *C3 = NULL;
|
||||||
|
cu_info_t *H = NULL;
|
||||||
|
cu_info_t *selected_CU = NULL;
|
||||||
|
|
||||||
|
kvz_inter_get_temporal_merge_candidates(state, x, y, width, height, &C3, &H, lcu);
|
||||||
|
|
||||||
|
if (H != NULL) {
|
||||||
|
selected_CU = H;
|
||||||
|
} else if (C3 != NULL) {
|
||||||
|
selected_CU = C3;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selected_CU) {
|
||||||
|
mv_cand[candidates].mv[0][0] = selected_CU->inter.mv[0][0];
|
||||||
|
mv_cand[candidates].mv[0][1] = selected_CU->inter.mv[0][1];
|
||||||
|
mv_cand[candidates].dir = 1;
|
||||||
|
candidates++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue