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 ((Внимание: Это большой риск безопасности). Как вариант, вы можете использовать специальный модуль ядра, как этот:
Скачайте разрабатываемую версию svgalib (например 1.9.17), ИЛИ версию, созданную Alex специально для использования с MPlayer (она не требует наличия исходников svgalib для компиляции) отсюда.
Скомпилируйте модуль в каталоге svgalib_helper (он может быть найден внутри каталога svgalib-1.9.17/kernel/, если вы скачали исходники с сайта svgalib) и выполните insmod для него.
Для создания необходимых устройств в каталоге /dev, выполните от имени root команду
make device
в svgalib_helper.
Переместите каталог svgalib_helper в подкаталог vidix дерева исходных текстов MPlayer.
Удалите комментарий перед строкой CFLAGS, содержащий строку "svgalib_helper" в файле vidix/Makefile.
Перекомпилируйте.
В даный момент для большинства карт ATI, начиная от Mach64 и заканчивая последними Radeon, имеется встроенная поддержка.
Существует два скомпилрованных бинарных файла: radeon_vid для Radeon и rage128_vid для карт Rage 128. Вы можете принудительно использовать один из них или позволить VIDIX автоматически опробовать все доступные драйверы.
Сообщалось, что работают Matrox G200, G400, G450 и G550.
Драйвер поддерживает видео эквалайзеры и должем быть столь же быстр, как и Matrox фреймбуфер
Существует драйвер для чипсета Trident Cyberblade/i1, который можно найти на материнских платах VIA Epia.
Драйвер написан и поддерживается Alastair M. Robinson.
Хотя драйвер для чипов 3DLabs GLINT R3 и Permedia3 существует, никто его не тестировал, так что отчеты приветствуются.
Уникальная особенность драйвера nvidia_vid заключается в способности отображать видео в простой, чисто текстовой консоли - без какого бы то ни было фреймбуфера или магии с X. Для этой цели мы будем использовать драйвер вывода видео cvidix, как показывет следующий пример:
mplayer -vo cvidix example.avi