Don't half hfreq for 4:2:0 timings - the character clock is halved, but the number of characters per line is also halved (two luminance values per character for 4:2:0), so there's no change in hfreq. Don't half pixel clock because it looks weird. Character clock is halved but the number of pixels remains the same (two luminance values per character for 4:2:0). Continue to use the half hfreq and half pixel clock for the ranges calculations because some non-HDMI 2.0 displays have max pixel clock halved when they have 4:2:0 modes and because other reasons that lead to adding this code in the first place? Signed-off-by: Joe van Tunen <joevt@xxxxxxx> --- edid-decode.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/edid-decode.cpp b/edid-decode.cpp index 6aa93fb..0c83e0e 100644 --- a/edid-decode.cpp +++ b/edid-decode.cpp @@ -513,6 +513,7 @@ bool edid_state::print_timings(const char *prefix, const struct timings *t, if (t->interlaced) vact /= 2; + double out_hor_freq_khz = hor_freq_khz; if (t->ycbcr420) hor_freq_khz /= 2; @@ -558,6 +559,7 @@ bool edid_state::print_timings(const char *prefix, const struct timings *t, dtd_max_vsize_mm = t->vsize_mm; if (!s.empty()) s = " (" + s + ")"; + unsigned out_pixclk_khz = t->pixclk_khz; unsigned pixclk_khz = t->pixclk_khz / (t->ycbcr420 ? 2 : 1); char buf[10]; @@ -568,8 +570,8 @@ bool edid_state::print_timings(const char *prefix, const struct timings *t, t->hact, buf, refresh, t->hratio, t->vratio, - hor_freq_khz, - pixclk_khz / 1000.0, + out_hor_freq_khz, + out_pixclk_khz / 1000.0, s.c_str()); unsigned len = strlen(prefix) + 2; -- 2.24.3 (Apple Git-128)