[Deblock] Fix chroma deblocking issues when inter is enabled

Added cbf_copy() calls for chroma components in the lcu_fill_cbf() function since deblocking now uses that information for chroma as well.
This commit is contained in:
Jaakko Laitinen 2021-12-09 18:04:58 +02:00
parent dea3ca12aa
commit 9e95b16368
2 changed files with 4 additions and 1 deletions

View file

@ -1305,6 +1305,7 @@ static void filter_deblock_lcu_rightmost(encoder_state_t * const state,
// - Luma deblocking on a 4x4 grid // - Luma deblocking on a 4x4 grid
// - Deblocking filter for subblock boundaries // - Deblocking filter for subblock boundaries
// - Allow loop filtering across slice/tile boundaries? // - Allow loop filtering across slice/tile boundaries?
// - Account for bi-pred and multi ref P frames
void kvz_filter_deblock_lcu(encoder_state_t * const state, int x_px, int y_px) void kvz_filter_deblock_lcu(encoder_state_t * const state, int x_px, int y_px)
{ {
assert(!state->encoder_control->cfg.lossless); assert(!state->encoder_control->cfg.lossless);

View file

@ -200,8 +200,10 @@ static void lcu_fill_cbf(lcu_t *lcu, int x_local, int y_local, int width, cu_inf
cu_info_t *cu_from = LCU_GET_CU_AT_PX(lcu, x & mask, y & mask); cu_info_t *cu_from = LCU_GET_CU_AT_PX(lcu, x & mask, y & mask);
cu_info_t *cu_to = LCU_GET_CU_AT_PX(lcu, x, y); cu_info_t *cu_to = LCU_GET_CU_AT_PX(lcu, x, y);
if (cu_from != cu_to) { if (cu_from != cu_to) {
// Chroma coeff data is not used, luma is needed for deblocking // Chroma and luma coeff data is needed for deblocking
cbf_copy(&cu_to->cbf, cu_from->cbf, COLOR_Y); cbf_copy(&cu_to->cbf, cu_from->cbf, COLOR_Y);
cbf_copy(&cu_to->cbf, cu_from->cbf, COLOR_U);
cbf_copy(&cu_to->cbf, cu_from->cbf, COLOR_V);
} }
} }
} }