BeagleBoard/GSoC/2010 Projects/XBMC

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:

Weekly report 10

Weekly report 9

Weekly report 8

Weekly report 7

Weekly report 6

What to do when you have the dirty regions

Announcement

Lightning talk:

http://www.youtube.com/watch?v=gvJ32T-W3Gw

http://vimeo.com/12917275

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)

1

Note that algorithm 0 is just redraw everything always, 1 is unified region, 2 is cost reduction.

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 --enable-omap-overlay --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 SRCREV 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