5.3. Коммерческие Unix

5.3. Коммерческие Unix

MPlayer был портирован на некоторые коммерческие варианты Unix. Поскольку окружения разработки этих систем отличаются от свободных Unix'ов, вам придется самостоятельно произвести некоторые действия, чтобы сборка заработала.

5.3.1. Solaris

MPlayer должен работать под Solaris 2.6 и более новыми версиями. Для звука используйте звуковой драйвер SUN с опцией -ao sun.

На UltraSPARC'ах, MPlayer использует преимущество их расширения VIS (эквивалент MMX), но (в настоящий момент) только в libmpeg2, libvo and libavcodec, но не в mp3lib. Вы сможете просматривать VOB'ы на 400MHz CPU. Вам потребуется установленная mLib.

Предостережение:

  • mediaLib в данный момент отключена по умолчанию в MPlayer из-за поломанности. Пользователи SPARC, компилировавшие MPlayer с mediaLib сообщали об изобилии зелёного оттенка в видео, кодируемом и декодируемом libavcodec. Если хотите, можете включить ее:

    $ ./configure --enable-mlib

    Вы делаете это на свой страх и риск, пользователи x86 не жолжны никогда использовать mediaLib, поскольку это очень сильно скажется на производительности MPlayer.

Чтобы собрать программу, Вам потребуется GNU make (gmake, /opt/sfw/gmake), родной Solaris make не будет работать. Типичная ошибка которую Вы будете получать при использовании Solaris make, вместо GNU make:

% /usr/ccs/bin/make
make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen

На Solaris SPARC, Вам потребуется GNU C/C++ Compiler; при этом не имеет значения, был ли GNU C/C++ компилятор сконфигурирован с или без GNU ассемблера.

На Solaris x86, Вам потребуются GNU ассемблер и GNU C/C++ компилятор, сконфигурированный, чтобы использовать GNU ассемблер! На x86 платформах код MPlayer'а использует много MMX, SSE и 3DNOW! инструкций, которые Sun'овский ассемблер /usr/ccs/bin/as не может скомпилировать.

Скрипт configure пытается обнаружить, какой ассемблер используется Вашей командой "gcc" (в том случае, если автоопределение не сработает, используйте опцию --as=/там/где/у/Вас/установлен/gnu-as, чтобы сообщить скрипту configure, где можно обнаружить GNU "as" на Вашей системе).

Решение общих проблем:

  • Сообщения об ошибках configure на Solaris x86 системах при использовании GCC без GNU ассемблера:

    % configure
    ...
    Checking assembler (/usr/ccs/bin/as) ... , failed
    Please upgrade(downgrade) binutils to 2.10.1...

    (Решение: Установите и используйте gcc, сконфигурированный с --with-as=gas)

    Типичная ошибка при сборке GNU C компилятором, который не использует GNU as:

    % gmake
    ...
    gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math
        -fomit-frame-pointer  -I/usr/local/include   -o mplayer.o mplayer.c
    Assembler: mplayer.c
    "(stdin)", line 3567 : Illegal mnemonic
    "(stdin)", line 3567 : Syntax error
    ... more "Illegal mnemonic" and "Syntax error" errors ...
    

  • MPlayer может сообщить о нарушении сегментации при кодировании и декодировании видео, использующего win32codecs:

    ...
    Trying to force audio codec driver family acm...
    Opening audio decoder: [acm] Win32/ACM decoders
    sysi86(SI86DSCR): Invalid argument
    Couldn't install fs segment, expect segfault
    
    
    MPlayer interrupted by signal 11 in module: init_audio_codec
    ...

    Это из-за изменений в sysi86() в Solaris 10 и пре-Solaris Nevada b31 релизах. Исправлено в Solaris Nevada b32; тем не менее Sun еще следует портировать исправление обратно на Solaris 10. Проект MPlayer осведомил Sun об этой проблеме и патч в данный момент готовится для Solaris 10. Больше информации об этой ошибке ищите на: http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413.

  • В связи с ошибками в Solaris 8, Вы не сможете проигрывать DVD диски, размером больше 4 Гб:

    • Под Solaris 8 x86 драйвер sd(7D) содержит ошибку, проявляющуюся при доступе к дискам, размером > 4 Гб на устройствах с логическим размером блока != DEV_BSIZE (например CD-ROM и DVD диски). Из-за целочисленного 32-х битного переполнения, происходит доступ к дисковому адресу по модулю 4 Гб (http://groups.yahoo.com/group/solarisonintel/message/22516). Проблема отсутствует в SPARC версиях Solaris 8.

    • Похожая ошибка существует в коде файловой системы hsfs(7FS) (ISO9660), hsfs может не поддерживать разделы/диски больше 4 Гб, доступ к данным происходит по модулю 4 Гб (http://groups.yahoo.com/group/solarisonintel/message/22592). Проблемы с hsfs могут быть исправлены установкой патча 109764-04 (sparc) / 109765-04 (x86).

5.3.2. HP-UX

Joe Page на своей домашней странице держит подробное HOWTO по MPlayer на HP-UX, написанное Martin Gansser. С этими инструкциями сборка должна работать "прямо из коробки". Следующая информация взята оттуда.

Вам потребуется GCC 3.4.0 или полее поздней версии, GNU make версии 3.80 или новее и SDL 1.2.7 или более новый. HP cc не может создать работоспособную программу, предыдущие версии GCC глючат. Для функционирования OpenGL необходимо установить Mesa, после чего должны заработать драйвера вывода видео gl и gl2, хотя, в зависимости от быстродействия CPU, скорость может быть ужасной. GNU esound является хорошей заменой довольно бедной звуковой системе HP-UX.

Произведите сканирование шины SCSI на предмет наличия DVD устройства:

# ioscan -fn

Class          I            H/W   Path          Driver    S/W State    H/W Type        Description
...
ext_bus 1    8/16/5      c720  CLAIMED INTERFACE  Built-in SCSI
target  3    8/16/5.2    tgt   CLAIMED DEVICE
disk    4    8/16/5.2.0  sdisk CLAIMED DEVICE     PIONEER DVD-ROM DVD-305
                         /dev/dsk/c1t2d0 /dev/rdsk/c1t2d0
target  4    8/16/5.7    tgt   CLAIMED DEVICE
ctl     1    8/16/5.7.0  sctl  CLAIMED DEVICE     Initiator
                         /dev/rscsi/c1t7d0 /dev/rscsi/c1t7l0 /dev/scsi/c1t7l0
...

Вывод показывает, что по адресу 2 шины SCSI находится Pioneer DVD-ROM. Экземпляр карты для аппаратного пути 8/16 равен 1.

Создайте ссылку от сырого устройства к DVD устройству.

ln -s /dev/rdsk/c<SCSI bus instance>t<SCSI target ID>d<LUN> /dev/<device>

Пример:

ln -s /dev/rdsk/c1t2d0 /dev/dvd

Далее следуют решения некоторых общих проблем:

  • Крах при запуске с таким сообщением об ошибке:

    /usr/lib/dld.sl: Unresolved symbol: finite (code) from /usr/local/lib/gcc-lib/hppa2.0n-hp-hpux11.00/3.2/../../../libGL.sl

    Это значит, что функция .finite(). недоступна в стандартной математической библиотеке HP-UX. Вместо этого используйте .isfinite().. Решение: Используйте последнюю версию Mesa из репозитория.

  • Крах при воспроизведении со следующей ошибкой:

    /usr/lib/dld.sl: Unresolved symbol: sem_init (code) from /usr/local/lib/libSDL-1.2.sl.0

    Решение: Используйте опцию extralibdir программы configure --extra-ldflags="/usr/lib -lrt"

  • MPlayer вылетает с нарушением сегментации и сообщением вроде этого:

    Pid 10166 received a SIGSEGV for stack growth failure.
    Possible causes: insufficient memory or swap space, or stack size exceeded maxssiz.
    Segmentation fault

    Решение: Ядро HP-UX по-умолчанию для каждого процесса имеет размер стека равный 8MB(?). (11.0 и новые патчи для 10.20 позволяют вам увеличить maxssiz вплоть до 350MB для 32-х битных программ). Вы должны расширить maxssiz и перекомпилировать ядро (и перезагрузиться). Чтобы сделать это, можно использовать SAM. (Находясь в нем, проверьте параметр maxdsiz на предмет максимального количества данных, которые могут использоваться программами. 64 Мб по умолчанию может хватить или не хватить в зависимости от Ваших приложений.)

5.3.3. AIX

MPlayer успешно собирается на AIX 5.1, 5.2, и 5.3, используя GCC 3.3 или новее. Сборка MPlayer не проверена на AIX 4.3.3 и более ранних. Крайне рекомендуется собирать MPlayer используя GCC 3.4 или старше, и, как минимум, GCC 4.0, если собираете на POWER5.

Убедитесь, что используете GNU make (/opt/freeware/bin/gmake) для сборки MPlayer, поскольку столкнетесь с проблемами при использовании /usr/ccs/bin/make.

По-прежнему ведется работа над кодом определения CPU. Проверены следующие архитектуры:

  • 604e

  • POWER3

  • POWER4

На следующих архитектурах не проверялось, но должно работать:

  • POWER

  • POWER2

  • POWER5

Вывод звука через Ultimedia Services не поддерживается, т.к. Ultimedia была убрана из AIX 5.1; таким образом, остается единственный вариант: использовать драйвер AIX Open Sound system (OSS) от 4Front Technologies с http://www.opensound.com/aix.html. Для некоммерческого использования 4Front Technologies распространяет драйвер OSS под AIX 5.1 бесплатно; несмотря на это, на текущий день нет драйверов вывода звука для AIX 5.2 или 5.3. drivers for AIX 5.2 or 5.3. Это означает, что сейчас AIX 5.2 и 5.3 несовместимы с выводом звука MPlayer.

Решения для общих проблем:

  • Если вы столкнулись с такой ошибкой configure:

    $ ./configure
    ...
    Checking for iconv program ... no
    No working iconv program found, use
    --charset=US-ASCII to continue anyway.
    Messages in the GTK-2 interface will be broken then.

    Это из-за того, что AIX использует нестандартные имена кодировок; поэтому перекодировка сообщений в данный момент не работает. Решение - использовать:

    $ ./configure --charset=noconv

5.3.4. QNX

Вам нужно скачать и установить SDL для QNX. Затем запустите MPlayer с опциями -vo sdl:photon и -ao sdl:nto, и все будет работать быстро.

Вывод -vo x11 будет ещё медленнее, чем под Linux, поскольку под QNX X'ы эмулируются, что ОЧЕНЬ медленно.