# Портинг

## Linux

Основная платформа разработки — это Linux на x86, хотя MPlayer работает под многими другими портами Linux. Бинарные пакеты MPlayer'а доступны из нескольких источников. Тем не менее, ни один из этих пакетов не поддерживается. Сообщайте о проблемах их авторам, а не нам.

### Упаковка под Debian

Чтобы создать Debian пакет, выполните следующие команды в каталоге с исходным кодом MPlayer'а:

    fakeroot debian/rules binary

Затем, став root'ом Вы, как обычно, Вы можете установить `.deb` пакет:

    dpkg -i ../mplayer_версия.deb

Какое-то время Christian Marillat собирал неофициальные Debian пакеты с MPlayer'ом, MEncoder'ом и шрифтами, так что вы можете их скачать (apt-get'нуть) их с его сайта.

### RPM пакеты

Dominik Mierzejewski собирает и поддерживает официальные Red Hat RPM пакеты MPlayer'а. Они доступны с его сайта.

Mandrake RPM пакеты доступны с P.L.F.. SuSE включала искалеченную версию MPlayer'а в дистрибутив. Из последних релизов они убрали эти пакеты. Вы можете взять работающие RPM'ники с links2linux.de.

### ARM

MPlayer работает на Linux PDAs с ARM процессором, например Sharp Zaurus, Compaq Ipaq. Простейший способ получить MPlayer — это скачать его с пакетных пастбищ[feeds] OpenZaurus. Если Вы хотите скомпилировать его самостоятельно, обратите внимание на каталоги mplayer и libavcodec в корне сборки[buildroot] дистрибутива OpenZaurus. Там всегда найдутся свежий Makefile и патчи, используемые для сборки CVS MPlayer'а вместе с libavcodec. Если Вам нужен GUI, используйте xmms-embedded.

## *BSD

MPlayer работает под FreeBSD, OpenBSD, NetBSD, BSD/OS и Darwin. Существуют портированные[ports]/пакеты сорцов[pkgsrcs]/fink/ и т. п. версии MPlayer'а, которые наверное проще использовать, чем просто исходный код.

Чтобы собрать MPlayer, Вам понадобится GNU make (gmake — родной BSD make не будет работать) и свежая версия binutils.

Если MPlayer ругается, что он не может найти `/dev/cdrom` или `/dev/dvd`, создайте соответствующую ссылку:

    ln -s /dev/Ваше_cdrom_устройство /dev/cdrom

Чтобы использовать Win32 DLL'и с MPlayer'ом, Вам необходимо перекомпилировать ядро с "`option USER_LDT`" (если только у Вас не FreeBSD-CURRENT, где это включено по умолчанию).

### FreeBSD

Если Ваш CPU поддерживает SSE, перекомпилируйте ядро с "`options CPU_ENABLE_SSE`" (необходимо FreeBSD-STABLE или патчи к ядру).

### OpenBSD

В связи с ограничениями в различных версиях gas'а (переносы[relocation] и MMX), Вы должны будете компилировать в два шага: сначала убедитесь, что не родной as — первый в Вашем `$PATH` и выполните `gmake -k` , затем убедитесь, что будет использоваться родная версия и запустите `gmake`.

### Darwin

См. секцию Mac OS.

## Sun Solaris

MPlayer должен работать под Solaris 2.6 и более новыми версиями.

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

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

       % /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 ...

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

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

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

## Silicon Graphics Irix

Вы либо можете попробовать установить программу GNU install, и (если Вы не поместили её в Ваш глобальный путь), то укажите на её местонахождение:

    ./configure --with-install=

Или Вы можете использовать стандартную программу install, поставляемую вместе с IRIX 6.5, но в этом случае Вы должны будете вручную немножко подправить `Makefile`. Поменяйте следующие две строки:

      $(INSTALL) -c -m 644 DOCS/mplayer.1 $(MANDIR)/man1/mplayer.1

      $(INSTALL) -c -m 644 etc/codecs.conf $(CONFDIR)/codecs.conf

на:

      $(INSTALL) -m 644 mplayer.1 $(MANDIR)/man1/

      $(INSTALL) -m 644 codecs.conf $(CONFDIR)/

И затем выполните (из корневого каталога MPlayer'а):

    cp DOCS/mplayer.1 . ; cp etc/codecs.conf .

И затем просто соберите и установите MPlayer.

## QNX

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

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

## Windows

Да, MPlayer работает под Windows под Cygwin и MinGW. Пока ещё нет GUI, но версия командной строки почти функциональна. Мы всегда будем благодарны за патчи. Вы можете получить помощь и последнюю информацию на рассылке mplayer-cygwin.

Лучшие результаты получаются при использовании родного DirectX видео вывода (`-vo directx`) и родного Windows waveout аудио драйвера (`-ao win32`). Альтернативой является использование OpenGL или SDL, но производительность OpenGL сильно зависит от машины, а SDL на некоторых системах искажает звук и видео или ломает систему. Если изображение искажено, попробуйте отключить аппаратное ускорение, указав `-vo directx:noaccel`. Скачайте файлы заголовков DirectX 7, чтобы скомпилировать видео драйвер DirectX.

VIDIX теперь доступен из-под Windows, как `-vo winvidix`, хотя это ещё экспериментально и требует небольшой ручной установки. Скачайте dhahelper.sys и скопируйте его в каталог `libdha/dhahelperwin` в Вашем дереве исходного кода MPlayer'а. Откройте консоль и перейдите в этот каталог. Теперь наберите

    gcc -o dhasetup.exe dhasetup.c

и запустите

    dhasetup.exe install

под Администратором[Administrator]. Теперь Вам нужно перезагрузить машину. Когда всё будет закончено, скопируйте файлы .so из каталога `vidix/drivers` в каталог `mplayer/vidix` относительно вашего `mplayer.exe`.

Для получения наилучших результатов, MPlayer должен использовать пространство цветов, аппаратно поддерживаемое Вашей видеокартой. К сожалению, многие графические драйверы под Windows ошибочно сообщают, что некоторые пространства цветов поддерживаются аппаратно. Чтобы найти какие именно, попробуйте

    mplayer -benchmark -nosound -frames 100 -vf format=colorspace movie

, где colorspace может быть любым пространством цветов из вывода опции `-vf format=fmt=help`. Если Вы найдёте пространство цветов, которое Ваша карта особенно плохо поддерживает, опция `-vf noformat=colorspace` помешает его использовани. Добавьте это в ваш конфигурационный файл, чтобы это пространство цветов больше никогда не использовалось.

Вы можете использовать Win32 кодеки и Real Win32 кодеки (не Real Linux кодеки), если хотите. Поместите их куда-нибудь в пути или укажите `configure` опцию `--with-codecsdir=c:/path/to/your/codecs` (или `--with-codecsdir=/path/to/your/codecs`, но только под Cygwin). У нас были сообщения о том, что Real DLL'и должны быть доступны пользователю, запускающему MPlayer, для записи, но только на некоторых системах. Если у Вас проблемы с ними, попробуйте сделать их записываемыми. QuickTime DLL'и также работают, но Вы должны поместить их в системный Windows каталог (`C:\Windows\system\` или что-то в этом духе). В крайнем случае, попробуйте поместить их в тотже каталог, что и MPlayer.

Вы можете воспроизводить VCD, проигрывая `.DAT` или `.MPG` файлы, которые Windows показывает на VCD. Вот как это работает (указывайте букву диска Вашего CD-ROM):

    mplayer d:/mpegav/avseq01.dat

DVDs также работают, укажите `-dvd-device` с буквой Вашего DVD-ROM:

    mplayer dvd://<title> -dvd-device d:

Консоль Cygwin/MinGW слегка медленная. Перенаправление вывода или использование опции `-quiet` улучшает производительность на некоторых системах. Прямое воспроизведение[Direct rendering] (`-dr` ) также может помочь. Вы можете избежать мерцания OSD, включив опцией `-double` двойную буферизацию. Если воспроизведение прерывисто, попробуйте `-autosync 100`. Если какие-то из этих опций Вам помогут, стоит поместить их в конфигурационный файл.

Иногда Саша Зоммер [Sascha Sommer] выпускает оффициальные бинарии под Windows, Джой Пэрриш[Joey Parrish] собирает неофициальные Windows пакеты с установочником. Ищщите ссылки в секции Windows нашей страницы проектов.

### Cygwin

Cygwin версий до 1.5.0 не включал `inttypes.h`. Поместите этот inttypes.h в `/usr/include/`, чтобы MPlayer мог скомпилироваться.

Файлы заголовков DirectX надо распаковать в `/usr/include/` или `/usr/local/include/` .

Вы можете найти инструкции и файлы для запуска SDL под Cygwin на сайте libsdl.

### MinGW

Прежде, установка версии MinGW, способной скомпилировать MPlayer, была слегка сложной, но сейчас все работает с самого начала. Просто установите MinGW 3.1.0 или более новый и укажите MSYS постустановщику, что MinGW установлен.

Если Вы используете более раннюю, чем 3.1.0 версию MinGW, Вам нужно заменить `/mingw/include/sys/types.h` этим файлом: `types.h`.

Распакуйте файлы заголовков DirectX в `/mingw/include/`.

Для поддержки сжатых заголовкоав MOV необходима zlib, которую MinGW по умолчанию не предоставляет. Сконфигурируйте её, указав `--prefix=/mingw` и установите её до компиляции MPlayer'а.

## Mac OS

Только Mac OS X 10.2 и выше "напрямую" поддреживаются сорцами MPlayer'а. Если хотите, добавьте поддержку юолее старых версий Mac OS и пришлите патч!

Для компиляции MPlayer'а предпочтителен изменённый фирмой Apple GCC 3.x, особенно при использовании libavcodec, поскольку Apple'вский GCC 2.95.x не очень хорошо поддерживает C99 синтакс.

Вы можете получить Aqua GUI для MPlayer вместе с откомпилированными Mac OS X бинариями MPlayer'а на сайте MPlayerOSX проекта.

## HP-UX

Martin Gansser поддерживает HOWTO по сборке MPlayer под HP-UX. Там даже есть FAQ!

Как бы то ни было, наши "сырые" исходники MPlayer'а компилируются на HP-UX безошибочно.

## Amiga/MorphOS (GeekGadgets)

Nicholas Det at Genesi сделал большой и значительный MPlayer 'а под MorphOS. К сожалению, он основан на серии 0.90.

Получите их с MorphZone:

- MPlayer 0.91 бинарник

- MPlayer 0.91 исходный код

- MEncoder 0.91 бинарник