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

@ -174,7 +174,7 @@ int get_pure_lm_mode(avconfig_t *cc, mode_data_t *vm_in, mode_data_t *vm_out, vm
valid_lm[3] = MODE_L4_GEN_4_3; valid_lm[3] = MODE_L4_GEN_4_3;
break; break;
case GROUP_480P: case GROUP_480P:
if (mode_preset->vic == HDMI_480p60) { if (mode_preset->vic == HDMI_480p60) {
switch (cc->s480p_mode) { switch (cc->s480p_mode) {
case 0: // Auto case 0: // Auto
if (vm_in->timings.h_synclen > 82) if (vm_in->timings.h_synclen > 82)
@ -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