Идеальный modeline
Screenshot
(Касается исключително x11 , а ваших вейландах это автоматически кажется и там просто включаете режим 23.976 в gui)
23.976 сопоставлено с кинематографическим восприятием мозга, и существует уже сотню лет в неизменном виде для всех художественых фильмов, естестнвенно снятых на плёнку иначе это трудно назвать КИНО, а большая частота покажется «мыльной» оперой.
(Цифры из моего Sony TV kdl-32ex402 1080p , так как там заявлено только 24Hz попытаюсь создать идеальный modeline для 23.976)
Определяю путь и считываю edid через пакет edid-decode (в репах есть):
(смотрю что подключено)
user-pc1@my-pc:~$ xrandr | grep " connected"
eDP-1 connected (normal left inverted right x axis y axis)
HDMI-2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 1600mm x 900mm
user-pc1@my-pc:~$
(Смотрю как ядро назвывает выход)
user-pc1@my-pc:~$ ls /sys/class/drm/
card0 card0-DP-1 card0-DP-2 card0-eDP-1 card0-HDMI-A-1 card0-HDMI-A-2 renderD128 version
user-pc1@my-pc:~$
(Считываю сам edid подставляя правильный путь)
user-pc1@my-pc:~$ edid-decode /sys/class/drm/card0-HDMI-A-2/edid
Смотрю значения и рсчитываю: Modeline «Имя_Режима» [Pixel_Clock] [H_Act] [H_Start] [H_End] [H_Total] [V_Act] [V_Start] [V_End] [V_Total] [Флаги]
(Смотрю «VIC 32» он для 24Hz и параграф «Detailed Timing Descriptors: 1920x1080@60Hz» там есть цифры котрые не изменны и в 23.976 Hz)
«Имя_Режима» - назыаем например «Sony_1920x1080_23.976»
Вертикаль говорят всегда одинаковая в edid и совпадает и для 23.976Hz
у меня в Detailed Timing Descriptors вот так:
[V_Act] - это сколько пикселей по вертикали , у меня 1080
[V_Start] = V_Act + Vfront , у меня 1080 + 4 = 1084
[V_End] = V_Start + Vsync , у меня 1084 + 5 = 1089
[V_Total] = V_End + Vback , у меня 1089 + 36 = 1125
Горизонтальные импульсы (Hsync и Hback) — они тоже неизменны
Hsync у меня = 44
Hback у меня = 148
H_Act это сколько пикселей по горизонтали , у меня 1920
Беру VIC 32: 1920x1080 24.000000 Hz 16:9 27.000 kHz 74.250000 MHz и считаю полную ширину кадра она будет такой же и в 23.976 [H_Total]
- Заводской Pixel Clock = 74 250 000 Гц (74.25 MHz)
- Заводская строчная развёртка = 27 000 Гц (27.000 kHz)
- Заводская частота кадров = 24.000000 Гц
74250000/27000=2750
Беру общую ширину кадра 2750, которую выдали частоты телевизора, и вычитаю из неё неизменные импульсы матрицы (Hback 148 и Hsync 44):
[H_Total] = 2750
[H_End] = 2750 - 148 = 2602
[H_Start] = 2602 - 44 = 2558
[H_Act] = 1920
Для частоты пикселей беру родную киноскорость телевизора 74 250 000 Гц и делю её на коэффициент 1.001, который является физическим законом для получения дробного кадра 23.976
74250000/1.001 ~74175824.17582417582417582418 (~74.176 МГц) X-сервер поддерживает ровно 6 знаков после запятой и строго в мегагерцах 74.175824 МГц
[Pixel_Clock] = 74.175824
Hpol P Vpol P флаги полярности из edid = +hsync +vsync
Получился такой modeline:
Modeline "Sony_1920x1080_23.976" 74.175824 1920 2558 2602 2750 1080 1084 1089 1125 +hsync +vsync
P.S. google AI помог в создании




