fix 384col and 480p preset processing when PR2x is disabled

This commit is contained in:
marqs 2026-09-05 12:26:19 +03:00
parent 56509de3b6
commit e800f095de

View File

@ -244,7 +244,6 @@ int get_pure_lm_mode(avconfig_t *cc, mode_data_t *vm_in, mode_data_t *vm_out, vm
vm_out->vic = HDMI_Unknown; vm_out->vic = HDMI_Unknown;
memset(vm_conf, 0, sizeof(vm_proc_config_t)); memset(vm_conf, 0, sizeof(vm_proc_config_t));
vm_conf->si_pclk_mult = 1;
mindiff_lm &= mode_preset->flags; //ensure L2 mode uniqueness mindiff_lm &= mode_preset->flags; //ensure L2 mode uniqueness
@ -310,9 +309,7 @@ int get_pure_lm_mode(avconfig_t *cc, mode_data_t *vm_in, mode_data_t *vm_out, vm
vm_conf->x_rpt = 1; vm_conf->x_rpt = 1;
} }
} else if (cc->hdmi_pr2x_disable && ((mode_preset->group == GROUP_480P) || (mode_preset->group == GROUP_576P))) { } else if (cc->hdmi_pr2x_disable && ((mode_preset->group == GROUP_480P) || (mode_preset->group == GROUP_576P))) {
vmode_hv_mult(vm_in, 2, 1); vm_conf->x_rpt = 1;
vmode_hv_mult(vm_out, 2, VM_OUT_YMULT);
skip_hv_mult = 1;
} }
break; break;
case MODE_L3_GEN_4_3: case MODE_L3_GEN_4_3:
@ -329,6 +326,7 @@ int get_pure_lm_mode(avconfig_t *cc, mode_data_t *vm_in, mode_data_t *vm_out, vm
vm_out->timings.h_total_adj = 0; vm_out->timings.h_total_adj = 0;
vmode_hv_mult(vm_out, 4, VM_OUT_YMULT); vmode_hv_mult(vm_out, 4, VM_OUT_YMULT);
skip_hv_mult = 1; skip_hv_mult = 1;
vm_conf->si_pclk_mult = 4;
break; break;
case MODE_L4_GEN_4_3: case MODE_L4_GEN_4_3:
// Upsample / pixel-repeat horizontal resolution of 480i mode // Upsample / pixel-repeat horizontal resolution of 480i mode
@ -392,6 +390,8 @@ int get_pure_lm_mode(avconfig_t *cc, mode_data_t *vm_in, mode_data_t *vm_out, vm
vm_conf->x_rpt = vm_conf->h_skip = 2; vm_conf->x_rpt = vm_conf->h_skip = 2;
break; break;
case MODE_L6_384_COL: case MODE_L6_384_COL:
vm_conf->x_rpt = vm_conf->h_skip = cc->hdmi_pr2x_disable ? 4 : 2;
break;
case MODE_L6_320_COL: case MODE_L6_320_COL:
vm_conf->x_rpt = vm_conf->h_skip = cc->hdmi_pr2x_disable ? 5 : 2; vm_conf->x_rpt = vm_conf->h_skip = cc->hdmi_pr2x_disable ? 5 : 2;
break; break;
@ -424,10 +424,8 @@ int get_pure_lm_mode(avconfig_t *cc, mode_data_t *vm_in, mode_data_t *vm_out, vm
if (!skip_hv_mult) if (!skip_hv_mult)
vmode_hv_mult(vm_out, VM_OUT_XMULT, VM_OUT_YMULT); vmode_hv_mult(vm_out, VM_OUT_XMULT, VM_OUT_YMULT);
// Set clock multiplication factor // Set clock multiplication factor if not done earlier
if (mindiff_lm == MODE_L3_GEN_4_3) if (!vm_conf->si_pclk_mult)
vm_conf->si_pclk_mult = 4;
else
vm_conf->si_pclk_mult = VM_OUT_PCLKMULT; vm_conf->si_pclk_mult = VM_OUT_PCLKMULT;
// Reduce x_rpt for 1:1 PAR 256col mode // Reduce x_rpt for 1:1 PAR 256col mode