mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-30 12:44:07 +00:00
Fix spatial merge candidate selection
This commit is contained in:
parent
63760ca0cf
commit
571a545416
16
src/inter.c
16
src/inter.c
|
@ -1310,11 +1310,15 @@ static bool is_duplicate_candidate(const cu_info_t* cu1, const cu_info_t* cu2)
|
||||||
static bool add_merge_candidate(const cu_info_t *cand,
|
static bool add_merge_candidate(const cu_info_t *cand,
|
||||||
const cu_info_t *possible_duplicate1,
|
const cu_info_t *possible_duplicate1,
|
||||||
const cu_info_t *possible_duplicate2,
|
const cu_info_t *possible_duplicate2,
|
||||||
|
const cu_info_t *possible_duplicate3,
|
||||||
|
const cu_info_t *possible_duplicate4,
|
||||||
inter_merge_cand_t *merge_cand_out)
|
inter_merge_cand_t *merge_cand_out)
|
||||||
{
|
{
|
||||||
if (!cand ||
|
if (!cand ||
|
||||||
is_duplicate_candidate(cand, possible_duplicate1) ||
|
is_duplicate_candidate(cand, possible_duplicate1) ||
|
||||||
is_duplicate_candidate(cand, possible_duplicate2)) {
|
is_duplicate_candidate(cand, possible_duplicate2) ||
|
||||||
|
is_duplicate_candidate(cand, possible_duplicate3) ||
|
||||||
|
is_duplicate_candidate(cand, possible_duplicate4)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1365,12 +1369,12 @@ uint8_t kvz_inter_get_merge_cand(const encoder_state_t * const state,
|
||||||
if (!use_a1) a[1] = NULL;
|
if (!use_a1) a[1] = NULL;
|
||||||
if (!use_b1) b[1] = NULL;
|
if (!use_b1) b[1] = NULL;
|
||||||
|
|
||||||
if (add_merge_candidate(a[1], NULL, NULL, &mv_cand[candidates])) candidates++;
|
if (add_merge_candidate(a[1], NULL, NULL, NULL, NULL, &mv_cand[candidates])) candidates++;
|
||||||
if (add_merge_candidate(b[1], a[1], NULL, &mv_cand[candidates])) candidates++;
|
if (add_merge_candidate(b[1], a[1], NULL, NULL, NULL, &mv_cand[candidates])) candidates++;
|
||||||
if (add_merge_candidate(b[0], b[1], NULL, &mv_cand[candidates])) candidates++;
|
if (add_merge_candidate(b[0], b[1], a[1], NULL, NULL, &mv_cand[candidates])) candidates++;
|
||||||
if (add_merge_candidate(a[0], a[1], NULL, &mv_cand[candidates])) candidates++;
|
if (add_merge_candidate(a[0], a[1], b[1], b[0], NULL, &mv_cand[candidates])) candidates++;
|
||||||
if (candidates < 4 &&
|
if (candidates < 4 &&
|
||||||
add_merge_candidate(b[2], a[1], b[1], &mv_cand[candidates])) candidates++;
|
add_merge_candidate(b[2], a[1], b[1], a[0], b[0], &mv_cand[candidates])) candidates++;
|
||||||
|
|
||||||
bool can_use_tmvp =
|
bool can_use_tmvp =
|
||||||
state->encoder_control->cfg.tmvp_enable &&
|
state->encoder_control->cfg.tmvp_enable &&
|
||||||
|
|
Loading…
Reference in a new issue