Xbmc

Материал из Toshiba AC100 wiki
Перейти к навигации Перейти к поиску

По словам phh плеер xbmc поддерживает аппаратное декодирование видео на тегре.

Установка xbmc под Debian testing: 1) Подключаем deb http://www.debian-multimedia.org/ testing main non-free в /etc/apt/sources.lst 2) aptitude update 3) aptitude install debian-multimedia-keyring 4) aptitude install xbmc

Сейчас проверю, как декодирует, отпишусь. user:ArSoron

Upd: при запуске говорит, что требует глубину цвета как минимум 24 бита. Кто поборет - отпишитесь. user:ArSoron выставил глубину цвета в 24 бита. xbmc падает с ошибкой "Illegal Instriction" Есть старая тема на форуме нвидии: http://developer.nvidia.com/archived-tegra-forums/forum/xbmc-tegra-illegal-instruction

Идем дальше. Гит ветки xbmc для Tegra2 (September 15 2010): http://gitorious.org/xbmc/xbmc-antiquated/commits/arm-tegra2 Эта ветка старая, q53 собирал из дебиана пакет.


user:q53 Upd:user:q53 Похоже что пакет из debian-multimedia собран с поддержкой NEON, что для tegra не приемлимо, соответственно будем пересобирать. Собираем только с подержкой gles, без omx, см. пункт 4. Итак сборка: 1. Подготовка. На моем 11.10 toolchain похоже (сломана), поэтому надежней пересобирать на самом девайсе. В /etc/apt/sources.list прописываем: deb http://www.debian-multimedia.org testing main non-free deb-src http://www.debian-multimedia.org testing main non-free Делаем apt-get update. Кроме того нужны дрова от nvidia и хидеры, можно взять здесь здесь и здесь . Кроме того нужны пару патчей. Для уменьшения потребления памяти лучше прибить все лишнее, иначе при сборке можем вылететь от oom (если кто знает, как корректировать потребление памяти gcc, u r wellcome для правки). Прибиваем иксы:

  1. initctl stop lightdm

и, eсли есть, zram:

  1. initctl stop zramswap

2. Сборка: В директории сборки делаем: apt-get source xbmc Скачиваем fixfp.patch, переходим в xbmc-dmo-10.1+git20110912, делаем patch -p1 < ../fixfp.patch (вероятно патчи можно прошить в src пакет, но я не силен в дебиановской сборке, кто может дополните). Редактируем debian/control и прописываемы желаемый вам список зависимостей. Скажем я не уверен что кому-то нужен встроенный вэм сервер для удаленного управления. Устанавливаем нужные зависимости. В debian/rules прописываем configure типа: ./configure --disable-static \ --enable-external-libraries \ --enable-external-python \ --enable-external-ffmpeg \ --enable-avahi \ --enable-gles \ --disable-debug \ --disable-pulse \ --disable-gl \ --disable-vdpau \ --disable-dvdcss \ --disable-hal \ --disable-joystick \ --disable-openmax \ --enable-tegra \ --prefix=/usr Главное здесь "--disable-openmax --enable-tegra", остальное на свое усмотрение. Можно еще добавить: - unshar debian/XBMCRemote.uue + chmod 700 debian/XBMCRemote.uue + unshare debian/XBMCRemote.uue (на самом деле ошибок при сборке у меня вываливалась куча, но это что я помню как исправить). Выполняем: dpkg-buildpackage -rfakeroot -D -us -uc -nc В случае возниктновения ошибок корректируем, и повторяем команду. В итоге должен получится список пакетов (xbmc-skins разбит, чтобы обойти ограничение на размер): xbmc-bin_10.1+git20110912-0.1_armel.deb (md5 45e0045c02c4f1dab993a18913ab05d8) xbmc-data_10.1+git20110912-0.1_all.deb (md5 f8a7b045c59628fdc63f743b30e769ab) xbmc-eventclients-common_10.1+git20110912-0.1_all.deb (md5 85e320e164ac6ff340ff452a42704800) xbmc-eventclients-dev_10.1+git20110912-0.1_all.deb (md5 6e567d738672dfc2093deeb85139d72f) xbmc-eventclients-j2me_10.1+git20110912-0.1_all.deb (md5 13b4b1465329479993de6a2f5a022b98) xbmc-eventclients-ps3_10.1+git20110912-0.1_all.deb (md5 403a06a08f4184bb3ca7f3383c0d6ee2) xbmc-eventclients-wiiremote_10.1+git20110912-0.1_armel.deb (md5 136c758d98d647080b8e24a85e0d5de7) xbmc-skin-confluence_10.1+git20110912-0.1_all.deb.1 (md5 15d98152be72255a3e5b5ae013ee1ad9) xbmc-skin-confluence_10.1+git20110912-0.1_all.deb.2 (md5 59c4713cb15f8859f09455e97e99df16) xbmc-standalone_10.1+git20110912-0.1_all.deb (md5 0bba12ff42cae67870fe228a4797ad5d) xbmc_10.1+git20110912-0.1_all.deb (md5 37b859487f8b6aa30df9207a15f7c475)

3. Устанока и запуск. Устанавливаем нужные пакеты (минимум): dpkg -i xbmc_10.1+git20110912-0.1_all.deb xbmc-bin_10.1+git20110912-0.1_armel.deb xbmc-data_10.1+git20110912-0.1_all.deb xbmc-skin-confluence_10.1+git20110912-0.1_all.d


Небольшой костыль для установки xbmc в Ubuntu 11.10 и выше (?) (спасибо novkostya): 1. Скачиваем xbmc-bin_10.1+git20110912-0.1ubuntu1_armel.deb xbmc-bin_10.1+git20110912-0.1ubuntu1_armel.deb (md5 46b6a306c05e86e3c429ea52d589d014) 2. Подключаем репы от natty $ sed 's/oneiric/natty/g' /etc/apt/sources.list | sudo tee /etc/apt/sources.list.d/natty.list $ sudo apt-get update 3. Устанавливаем вышеперечисленные пакеты, заменяя xbmc-bin_10.1+git20110912-0.1_armel.deb на только что скачанный файл. (сравнение этого пакета с оригинальным: http://diffchecker.com/92pm28G; md5 файлов внутри пакетов одинаков) $ sudo dpkg -i xbmc* $ sudo apt-get -f install 4. Убираем репы natty подальше $ sudo rm /etc/apt/sources.list.d/natty.list $ sudo apt-get update


Проверяем все ли у нас правильно слинковалось: ldd /usr/lib/xbmc/xbmc.bin | grep GL libGLESv2.so => /usr/lib/libGLESv2.so (0x41350000) libEGL.so => /usr/lib/libEGL.so (0x4019c000) Никаких mesa в выводе быть не должно, только библиотеки от nvidia. В соответствии с README.armel запускать надо прямо бинарник :) (/usr/lib/xbmc/xbmc.bin, иначе запускается обертка, проверяющая поддержку gl на системе, которая у нас работает не правильно), но можно просто закоментировать:

  1. python ${datarootdir}/xbmc/FEH.py $SAVED_ARGS

в /usr/bin/xbmc. Вообщем с gles можно без особых тормозов смотреть DivX 1280x720. С h264 все гараздо хуже.

4. omx. Если коротко, то он не работает. Если интересно можно поставить патч , собрать с configure типа: ./configure --disable-static \ --enable-external-libraries \ --enable-external-python \ --enable-external-ffmpeg \ --enable-avahi \ --enable-gles \ --disable-debug \ --disable-pulse \ --disable-gl \ --disable-vdpau \ --disable-dvdcss \ --disable-hal \ --disable-lirc \ --disable-joystick \ --enable-tegra \ --prefix=/usr \ --enable-openmax \ OPENMAX_CFLAGS="-I/usr/include/OpenMAX/IL -DHAVE_LIBOPENMAX" OPENMAX_LIBS=" " и переименовать /usr/lib/libnvrm_graphics_impl.so в /usr/lib/libnvrm_graphics.so. Оно даже запустится. Но на малых разрешения h264 показывает с жуткими артефактами, а на высоких просто падает. В коментариях к коду написано что проблема в firmware от nvidia.

Собрал для арчика пакет. Инструкция по сборке рядом