4.15. VIDIX

4.15. VIDIX

ПРЕАМБУЛА.  VIDIX - это аббревиатура для VIDeo Interface for *niX (Видео интерфейс для Unix). VIDIX разработан и введен как интерфейс для быстрых драйверов пространства пользователя[user-space], обеспечивающих такую же производительность, как mga_vid для карт Matrox. Они к тому же хорошо переносимы.

Этот интерфейс был разработан, чтобы уместить существующие интерфейсы ускорения видео (известные как mga_vid, rage128_vid, radeon_vid, pm3_vid) в единую схему. Он предоставляет высокоуровневый интерфейс к чипам, известным как BES (BackEnd scalers) или OV (Video Overlays). Он не предоставляет низкоуровневого интерфейса к вещам, известным как графические серверы (Я не хочу соревноваться с командой X11 в переключении режимов.) Т.е. основная цель интерфейса - ускорить до максимума скорость воспроизведения видео.

ИСПОЛЬЗОВАНИЕ

  • Вы можете использовать отдельный видеодрайвер: -vo xvidix. Этот драйвер был разработан как X11 фронтенд к VIDIX технологии. Он требует X сервер и может работать только под ним. Имейте ввиду, что поскольку этот драйвер напрямую обращается к оборудованию в обход драйвера X, то могут быть повреждены растровые изображения, кешированные в памяти видеокарты. Вы можете предотвратить это, ограничив размер видеопамяти, используемой X, XF86Config опцией "VideoRam" в разделе устройств. Вам следует установить этот параметр в количество установленной видеопамяти минус 4Мб. Если у вас меньше 8Мб видеопамяти, вместо этого можно использовать опцию "XaaNoPixmapCache" в разделе экранов.

  • Существует консольный VIDIX драйвер: -vo cvidix. Для большинства карт требуется работающий и инициализированный фреймбуфер (в противном случае просто испортите изображение на экране), и вы будете иметь тот же эффект, что и с -vo mga или -vo fbdev. Карты nVidia, тем не менее, способны выводить полностью графическое видео в настоящей текстовой консоли. Смотрите раздел nvidia_vid для более подробной информации. Чтобы избавиться от такста на полях и мерцающего курсора попробуйте нечто подобное

    setterm -cursor off > /dev/tty9

    (предполагая, что tty9 ранее не использовался) и затем переключитесь на tty9. С другой стороны, -colorkey 0 должна дать вам видео, работающее "на фоне", однако правильность работы этого зависит от функцинальности colorkey.

  • Вы можете использовать подустройство VIDIX, примененное к различным драйверам видео вывода, например: -vo vesa:vidix (только Linux) и -vo fbdev:vidix.

Это действительно неважно, какой драйвер вывода видео используется с VIDIX.

ТРЕБОВАНИЯ

  • Видеокарта должна находиться в графическом режиме (кроме карт nVidia с драйвером -vo cvidix).

  • Драйвер вывода видео MPlayer должен знать текущий видеорежим и быть способным сообщить VIDIX некоторые видео характеристики сервера.

СПОСОБЫ ИСПОЛЬЗОВАНИЯ.  Когда VIDIX используется в качестве подустройства (-vo vesa:vidix), настройка видеорежима производится драйвером вывода видео (короче говоря vo_server). Следовательно, вы можете передать в командную строку MPlayer те же ключи, что и для vo_server. Дополнительно он понимает ключ -double как глобально видимый параметр. (Я рекомендую использовать этот ключ с VIDIX как минимум для карт ATI). -vo xvidix дополнительно понимает следующие опции: -fs -zoom -x -y -double.

Вы можете напрямую указать VIDIX драйвер третьим параметром к командной строке:

mplayer -vo xvidix:mga_vid.so -fs -zoom -double file.avi

или

mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 file.avi

Но это опасно, и вам не следует этого делать. В этом случае принудительно запускается указанный драйвер и результат может быть непредсказуемым (он может подвесить ваш компьютер). Вам следует это делать ТОЛЬКО если вы абсолютно уверены, что он работает и MPlayer не использует его автоматически. Пожалуйста, сообщите об этом разработчикам. Правильный путь - использование VIDIX без аргументов для задействования автоопределения драйвера.

Поскольку VIDIX требует прямой доступ к оборудованию, вы можете либо запускать его от имени root, либо установить SUID бит на исполняемый файл MPlayer ((Внимание: Это большой риск безопасности). Как вариант, вы можете использовать специальный модуль ядра, как этот:

  1. Скачайте разрабатываемую версию svgalib (например 1.9.17), ИЛИ версию, созданную Alex специально для использования с MPlayer (она не требует наличия исходников svgalib для компиляции) отсюда.

  2. Скомпилируйте модуль в каталоге svgalib_helper (он может быть найден внутри каталога svgalib-1.9.17/kernel/, если вы скачали исходники с сайта svgalib) и выполните insmod для него.

  3. Для создания необходимых устройств в каталоге /dev, выполните от имени root команду

    make device

    в svgalib_helper.

  4. Переместите каталог svgalib_helper в подкаталог vidix дерева исходных текстов MPlayer.

  5. Удалите комментарий перед строкой CFLAGS, содержащий строку "svgalib_helper" в файле vidix/Makefile.

  6. Перекомпилируйте.

4.15.1. ATI карты

В даный момент для большинства карт ATI, начиная от Mach64 и заканчивая последними Radeon, имеется встроенная поддержка.

Существует два скомпилрованных бинарных файла: radeon_vid для Radeon и rage128_vid для карт Rage 128. Вы можете принудительно использовать один из них или позволить VIDIX автоматически опробовать все доступные драйверы.

4.15.2. Matrox карты

Сообщалось, что работают Matrox G200, G400, G450 и G550.

Драйвер поддерживает видео эквалайзеры и должем быть столь же быстр, как и Matrox фреймбуфер

4.15.3. Trident карты

Существует драйвер для чипсета Trident Cyberblade/i1, который можно найти на материнских платах VIA Epia.

Драйвер написан и поддерживается Alastair M. Robinson.

4.15.4. 3DLabs карты

Хотя драйвер для чипов 3DLabs GLINT R3 и Permedia3 существует, никто его не тестировал, так что отчеты приветствуются.

4.15.5. nVidia карты

Уникальная особенность драйвера nvidia_vid заключается в способности отображать видео в простой, чисто текстовой консоли - без какого бы то ни было фреймбуфера или магии с X. Для этой цели мы будем использовать драйвер вывода видео cvidix, как показывет следующий пример:

mplayer -vo cvidix example.avi

4.15.6. SiS карты

Это, как и nvidia_vid, весьма экспериментальный код.

Он тестировался на SiS 650/651/740 (наиболее распространный чипсет, используемый в SiS версиях байрбонов[barebones] "Shuttle XPC")

Отчеты ожидаются!