Отправьте стереоскопическое изображение через Упаковку Кадра HDMI

Упаковка кадра является методом отправки левого и правильного представления (для 3D стереоскопического) вертикально сложенный в одном кадре с помощью HDMI. Если каждое представление имеет размер width x height получающийся "упакованный" кадр имеет размер width x 49/24 height, т.е. оба представления с некоторыми промежуточными пустыми строками.

Для 1 080 пунктов это приводит к кадрам размера 1920x2205. Для большей части FullHD (но не UHD или подобный) упаковка кадра устройств является единственным методом отправки представления FullHD для каждого глаза.

Следующий метод работает на установку размера:

cvt cvt 1920 2205 24 #generate Modeline
xrandr --newmode "1920x2205_24.00"  .... #Modeline 
xrandr --addmode HDMI1 "1920x2205_24.00"
xrandr --output  HDMI1 --mode 1920x2205_24.00

Однако о стереоскопических режимах нужно объявить ТВ/проектору с так называемыми информационными кадрами, которые указывают 3D Режим. В то время как ядро имеет поддержку отправки этих информационных кадров, xrandr и т.д. не позволяют передавать релевантную информацию DRM.

Как я могу заставить ядро отправить необходимые информационные кадры?

PS: Я не могу добавить тег "stereo3d" из-за недостающей репутации. "3-й" тег не соответствует.

3
задан 10 August 2016 в 10:50

1 ответ

Следующее решение прибывает без любой гарантии. Знайте, что отправка сигналов HDMI, которые нарушают стандарт, может быть плохой для Вашего ТВ/проектора и что следующий крошечный взлом повреждает уровни абстракции, которые были представлены по причине. Не просите патч ядра (т.е. регистрируйте ошибку там).

Один метод является крошечной модификацией модуля ядра DRM. Читайте Как (рецепт) для создания только одного модуля ядра? сначала.

файл, который необходимо изменить: drivers/gpu/drm/drm_edid.c. Мы изменяемся эта строка к:

    s3d_flags = (mode->flags & DRM_MODE_FLAG_3D_MASK) ||
            (mode->vdisplay == 2205);

и вставляют здесь следующие строки:

    if(mode->vdisplay == 2205)
            return HDMI_3D_STRUCTURE_FRAME_PACKING;

необходимо удалить большинство (если не все) видеокарта, которую определенные модули от drivers/gpu/drm/Makefile прежде, чем скомпилировать модуль DRM согласно вопросу упомянули в начале. Знайте, что необходимо обновить initramfs, так как модуль DRM загружается во время начальной загрузки.

Это решение было протестировано с проектором Epson, и видеокарта Intel (использует i915). Прежде, чем изменить модуль DRM необходимо проверить, что модуль ядра видеокарты на самом деле использует соответствующие функции модуля DRM. Иначе этот взлом бессмыслен.

2
ответ дан 1 December 2019 в 16:57

Другие вопросы по тегам:

Похожие вопросы: