BeagleBoard/GSoC/2010 Projects/XBMC
Contents
Project: XBMC
Student: Tobias Arrskog
Mentors: Mike Zucchi, Mans Rullgard, Søren Steen Christensen
Repository-git: git://xbmc.git.sourceforge.net/gitroot/xbmc/xbmc and branch gsoc-2010-beagleboard
Repository-svn: http://xbmc.svn.sourceforge.net/svnroot/xbmc/branches/gsoc-2010-beagleboard
Blog: http://xbmc.org/author/topfs2/
Latest blog entries:
What to do when you have the dirty regions
Lightning talk:
http://www.youtube.com/watch?v=gvJ32T-W3Gw
Documentation
Dependencies
Koen have been nice enough to add a dependency list to narcissus but for those that doesn't want to make a new image here is the package list
opkg install task-native-sdk boost-dev libgles-omap3-dev libsamplerate0-dev liblzo2-dev bzip2-dev libwavpack-dev mpeg2dec-dev libfribidi-dev libpcre-dev libcdio-dev libmodplug-dev flac-dev libsdl-mixer-1.2-dev libsdl-image-1.2-dev alsa-dev enca-dev libxt-dev libxtst-dev libxmu-dev libxinerama-dev curl-dev libmicrohttpd-dev gperf cmake zip git python-devel openssl-dev cvs pkgconfig-dev libxrender-dev libxrandr-dev git glibc-gconv-ibm850 glibc-charmap-ibm850 angstrom-version
Interesting patches for beagleboard
To enable the experimental omap overlay video renderer use configure option --enable-omap-overlay
To enable dirty region based rendering add this as advancedsettings.xml (~/.xbmc/userdata/advancedsettings.xml)
<advandedsettings>
<gui>
<usedirtyregions>true</usedirtyregions>
</gui>
</advancedsettings>
Build Instructions (native)
Since XBMC is a big application it takes up the entire ram of the beagleboard on link, this means that we need swap (here is how this can be done http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/custom-guide/s1-swap-adding.html)
export CFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -O2"
export LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu"
./bootstrap.angstrom
./configure --enable-gles --prefix=/usr --sysconfdir=/etc --cache=config.cache --disable-optical-drive
make
make install
Sit back and enjoy, the build process will take a few hours.
Build Instructions (cross compile)
First begin by setting up OpenEmbedded by following this tutorial http://www.angstrom-distribution.org/building-angstrom
While its ok to build xbmc directly now it will take a lot of diskspace so first build dependencies .
MACHINE=beagleboard bitbake libxmu fribidi mpeg2dec ffmpeg samba fontconfig curl libmodplug libmicrohttpd wavpack libmms cmake-native
MACHINE=beagleboard bitbake libsdl-image libsdl-mixer mysql5 sqlite3 libmms faad2 libcdio libpcre boost lzo2 enca avahi libsamplerate0 libxrandr bzip2 virtual/libsdl
Get ahold of the SDK for SGX and put it into downloads and run
MACHINE=beagleboard bitbake virtual/egl
Koen have already provided a bitbake recipe for trunk but if you wish to follow progress on my branch these are the steps you need to take.
If you wish to follow using git just open the xbmc_svn.bb and switch branch to gsoc-2010-beagleboard. The gsoc branch have all the required patches for crosscompilation so no need for patches. Set SRC_URI to:
SRC_URI = "git://xbmc.git.sourceforge.net/gitroot/xbmc/xbmc;protocol=git;branch=gsoc-2010-beagleboard"
Then all thats needed is to follow my branch is to change SRC_REV to be the hash sum of the revision you wish to base from, this is kindof annoying to change all the time so I use a local git which I update instead. Here I have cloned git repository from xbmc to /home/topfs/xbmc/ and using the following recipe http://pastebin.com/cF33fPhg
Now its possible to build xbmc using:
MACHINE=beagleboard bitbake xbmc