mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-27 19:24:06 +00:00
[isp] Add ISP checks to search. LFNST can be used with ISP for larger blocks. Transform skip cannot be used with ISP.
This commit is contained in:
parent
7282534879
commit
5713fbff1a
|
@ -333,7 +333,9 @@ static double search_intra_trdepth(
|
||||||
}
|
}
|
||||||
const int mts_start = trafo;
|
const int mts_start = trafo;
|
||||||
//TODO: height
|
//TODO: height
|
||||||
if (state->encoder_control->cfg.trskip_enable && width <= (1 << state->encoder_control->cfg.trskip_max_size) /*&& height == 4*/) {
|
if (state->encoder_control->cfg.trskip_enable &&
|
||||||
|
width <= (1 << state->encoder_control->cfg.trskip_max_size) /*&& height == 4*/ &&
|
||||||
|
pred_cu->intra.isp_mode == ISP_MODE_NO_ISP) { // tr_skip cannot be used wit ISP
|
||||||
num_transforms = MAX(num_transforms, 2);
|
num_transforms = MAX(num_transforms, 2);
|
||||||
}
|
}
|
||||||
pred_cu->intra.mode_chroma = -1;
|
pred_cu->intra.mode_chroma = -1;
|
||||||
|
@ -349,10 +351,9 @@ static double search_intra_trdepth(
|
||||||
}
|
}
|
||||||
|
|
||||||
int start_idx = 0;
|
int start_idx = 0;
|
||||||
int end_idx = state->encoder_control->cfg.lfnst && depth == pred_cu->
|
int end_idx = state->encoder_control->cfg.lfnst &&
|
||||||
tr_depth ?
|
depth == pred_cu->tr_depth &&
|
||||||
max_lfnst_idx :
|
uvg_can_use_isp_with_lfnst(width, height, pred_cu->intra.isp_mode, tree_type) ? max_lfnst_idx : 0;
|
||||||
0;
|
|
||||||
for (int i = start_idx; i < end_idx + 1; ++i) {
|
for (int i = start_idx; i < end_idx + 1; ++i) {
|
||||||
search_data->lfnst_costs[i] = MAX_DOUBLE;
|
search_data->lfnst_costs[i] = MAX_DOUBLE;
|
||||||
}
|
}
|
||||||
|
@ -365,10 +366,10 @@ static double search_intra_trdepth(
|
||||||
pred_cu->violates_lfnst_constrained_chroma = false;
|
pred_cu->violates_lfnst_constrained_chroma = false;
|
||||||
pred_cu->lfnst_last_scan_pos = false;
|
pred_cu->lfnst_last_scan_pos = false;
|
||||||
|
|
||||||
if (pred_cu->lfnst_idx != 0) {
|
//if (pred_cu->lfnst_idx != 0) {
|
||||||
// Cannot use ISP with LFNST for small blocks
|
// // Cannot use ISP with LFNST for small blocks
|
||||||
pred_cu->intra.isp_mode = uvg_can_use_isp_with_lfnst(width, height, pred_cu->intra.isp_mode, tree_type) ? pred_cu->intra.isp_mode : ISP_MODE_NO_ISP;
|
// pred_cu->intra.isp_mode = uvg_can_use_isp_with_lfnst(width, height, pred_cu->intra.isp_mode, tree_type) ? pred_cu->intra.isp_mode : ISP_MODE_NO_ISP;
|
||||||
}
|
//}
|
||||||
|
|
||||||
for (trafo = mts_start; trafo < num_transforms; trafo++) {
|
for (trafo = mts_start; trafo < num_transforms; trafo++) {
|
||||||
pred_cu->tr_idx = trafo;
|
pred_cu->tr_idx = trafo;
|
||||||
|
|
Loading…
Reference in a new issue