mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-27 19:24:06 +00:00
[dual-tree] Matches except for cutoff bottom CTUs for forced depth=1
This commit is contained in:
parent
2017cb122a
commit
ed8496e57e
24
src/intra.c
24
src/intra.c
|
@ -1417,6 +1417,30 @@ void uvg_intra_predict(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This function works on luma coordinates
|
||||||
|
const cu_info_t* kvz_get_co_located_luma_cu(
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int width,
|
||||||
|
int height,
|
||||||
|
const lcu_t* const lcu,
|
||||||
|
const cu_array_t* const cu_array,
|
||||||
|
enum kvz_tree_type tree_type)
|
||||||
|
{
|
||||||
|
assert((cu_array || lcu) && !(cu_array && lcu));
|
||||||
|
assert(tree_type != KVZ_LUMA_T && "Luma only CU shouldn't need colocated luma CU");
|
||||||
|
if(tree_type == KVZ_CHROMA_T) {
|
||||||
|
x += width >> 1;
|
||||||
|
y += height >> 1;
|
||||||
|
}
|
||||||
|
if(cu_array) {
|
||||||
|
return uvg_cu_array_at_const(cu_array, x, y);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return LCU_GET_CU_AT_PX(lcu, SUB_SCU(x), SUB_SCU(y));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void intra_recon_tb_leaf(
|
static void intra_recon_tb_leaf(
|
||||||
encoder_state_t* const state,
|
encoder_state_t* const state,
|
||||||
|
|
|
@ -146,4 +146,13 @@ void uvg_intra_recon_cu(
|
||||||
lcu_t *lcu,
|
lcu_t *lcu,
|
||||||
enum kvz_tree_type tree_type);
|
enum kvz_tree_type tree_type);
|
||||||
|
|
||||||
|
const cu_info_t* kvz_get_co_located_luma_cu(
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int width,
|
||||||
|
int height,
|
||||||
|
const lcu_t* const lcu,
|
||||||
|
const cu_array_t* const cu_array,
|
||||||
|
enum kvz_tree_type tree_type);
|
||||||
|
|
||||||
int uvg_get_mip_flag_context(int x, int y, int width, int height, const lcu_t* lcu, cu_array_t* const cu_a);
|
int uvg_get_mip_flag_context(int x, int y, int width, int height, const lcu_t* lcu, cu_array_t* const cu_a);
|
||||||
|
|
|
@ -944,6 +944,9 @@ static double search_cu(
|
||||||
// rd2. Possibly because the luma mode search already takes chroma
|
// rd2. Possibly because the luma mode search already takes chroma
|
||||||
// into account, so there is less of a chanse of luma mode being
|
// into account, so there is less of a chanse of luma mode being
|
||||||
// really bad for chroma.
|
// really bad for chroma.
|
||||||
|
if(tree_type == KVZ_CHROMA_T) {
|
||||||
|
intra_search.pred_cu.intra = kvz_get_co_located_luma_cu(x, y, luma_width, luma_width, lcu, NULL, KVZ_CHROMA_T)->intra;
|
||||||
|
}
|
||||||
intra_search.pred_cu.intra.mode_chroma = intra_search.pred_cu.intra.mode;
|
intra_search.pred_cu.intra.mode_chroma = intra_search.pred_cu.intra.mode;
|
||||||
if (ctrl->cfg.rdo >= 3 || ctrl->cfg.jccr || ctrl->cfg.lfnst) {
|
if (ctrl->cfg.rdo >= 3 || ctrl->cfg.jccr || ctrl->cfg.lfnst) {
|
||||||
uvg_search_cu_intra_chroma(state, x, y, depth, lcu, &intra_search, tree_type);
|
uvg_search_cu_intra_chroma(state, x, y, depth, lcu, &intra_search, tree_type);
|
||||||
|
|
Loading…
Reference in a new issue