mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-24 02:24:07 +00:00
[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:
parent
dea3ca12aa
commit
9e95b16368
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue