5.3. Коммерческие Unix
MPlayer был портирован на некоторые коммерческие варианты Unix. Поскольку окружения разработки этих систем отличаются от свободных Unix'ов, вам придется самостоятельно произвести некоторые действия, чтобы сборка заработала.
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).
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 Мб по умолчанию может хватить или не хватить в зависимости от Ваших приложений.)
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