ПРЕАМБУЛА. 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