7.15. VIDIX
Пред. | Глава 7. Устройства вывода видео | След.

## 7.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. Перекомпилируйте.

### 7.15.1. ATI карты

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

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

### 7.15.2. Matrox карты

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

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

### 7.15.3. Trident карты

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

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

### 7.15.4. 3DLabs карты

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

### 7.15.5. nVidia карты

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

    mplayer -vo cvidix example.avi

### 7.15.6. SiS карты

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

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

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

Пред. | Уровень выше | След.
7.14. X11 | Начало | 7.16. DirectFB