Build from sources

The installation of Disko is highly customizable. Since lots of developers asked for a minimal installation, we provide the steps to do so. Based on this, you can add the features you want, as you can see in the following sections.

Minimal installation

To use basic disko features but avoid the installation of lots of dependencies, you can use this type of installation. You still have to install some packages first. Usually your distribution will provide them, if not, you can use the download links.

Required packages

Now you're ready to choose the graphics backend, you're going to use. The following table shows the available backends as well as their dependencies:

Graphics Backend Graphics Outputtype Dependencies
FBDev stdfb, matroxfb, davincifb, omapfb Kernel headers
FBDev + OpenGL ES ogl Kernel headers, libGLESv2, libEGL
X11 (XImage) xshm, viafb libx11, libxxf86vm
X11 (XV) xvshm libx11, libxxf86vm, libxv,libxrender, libxcomposite
X11 + OpenGL ogl libx11,libxxf86vm,libGLEW, libGL, libGLU
DirectFB stdfb, matroxfb, viafb, davincifb DirectFB

Then you have to choose one database backend. Here is a list of the supported ones and their dependencies:

Database backend Dependencies
SQLite3 http://www.sqlite.org
MySQL http://www.mysql.com
ODBC http://www.unixodbc.org

Building and Installing

After you have finished installing the required packages described in the previous section, you can start building the Disko-Framework.
cd <path to disko directory>
scons graphics_backend=[fbdev|x11|dfb|all]
scons [prefix=...] install
The parameter graphics lets you choose the graphics backend.

The database backend will be chosen automatically by checking the installed requirements (priority order: SQLite3, MySQL, ODBC). If you want to choose it manually, use the database option (i.e. database=sqlite3).

prefix is used to determine the location of your disko installation. The default is /usr.

Note: Remember to set the environment variable PKG_CONFIG_PATH if you are installing to an extraordinary location.

Using a media backend

If you meet all requirements of the minimal installation and want to use media playback facilities, you can choose between xine and/or gstreamer.

xine

At first you have to install libxine. Please install at least version 1.1.15 otherwise disko won't compile.

Now you can build disko with the parameter media=xine to enable xine-support.

gstreamer

Disko was and is using libxine for media playback for good reason for years now. In the last years GStreamer developed into a very serious alternative on embedded devices. Now that TI is going to support GStreamer for their Davinci and OMAP platforms there is a way to add GSreamer support to Disko.
Actually thats a bit tricky, because a little bootstrapping needs to be done here. This section will create a basic GSTreamer instance from scratch, not using any distribution GStreamer packages.

We assume that you have already a working disko installation. If not, see here. To install gstreamer there are some more dependencies. Probably your distribution will have packaged them.

Once you meet all dependencies, you can start by downloading and installing GStreamer:

wget http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.23.tar.bz2
tar jxf gstreamer-0.10.23.tar.bz2
cd gstreamer-0.10.23
./configure [--prefix=<gstreamer-location>] && make && make install;

If you are using --prefix, don't forget to set PKG_CONFIG_PATH:

export PKG_CONFIG_PATH=<gstreamer-location>/lib/pkgconfig

Now you can install the GStreamer base plugins:

wget http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.10.23.tar.bz2
tar jxf gst-plugins-base-0.10.23.tar.bz2
cd gst-plugins-base-0.10.23
./configure [--prefix=<gstreamer-location>] && make && make install;

And now the bad plugins. Naturally the Disko output plugin resides here, as we plan to propose Disko to be added to the GStreamer upstream.

wget http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-0.10.12.tar.bz2
tar jxf gst-plugins-bad-0.10.13.tar.bz2
cd gst-plugins-bad-0.10.13

Before the bad plugins are installed the disko patch has to be applied. It can be found in the disko source tree as ext/gst-plugins-bad-0.10.13_diskovideosink.diff.

patch -Np1 < gst-plugins-bad-0.10.13_diskovideosink.diff

After that compile and install the plugins the usual way. Make sure that the PKG_CONFIG_PATH includes the current disko installation.

./configure [--prefix=<gstreamer-location>] && make && make install;

After gstreamer is installed, Disko needs to be rebuilt. This is necessary to compile the now provided GStreamer support into the Disko installation. This process is needed because disko is a single package within the SCons build system. This should be fixed somewhen, but today this seems to be sufficent for testing.

If the PKG_CONFIG_PATH is set correctly and scons is invoked with the parameter media=gstreamer, the build should result in a Disko installation supporting GStreamer.

Some words on how it works:
Multimedia playback is done using the mmsmedia component. Using xine as backend made the handling of different content fairly easy, by using MRLs to identify sources. GStreamer does not support this by its engine. Therefore we are using the GSTreamer playbin plugin to achieve this result.

To cut a long story short, from the application point of view there are no changes to be made. An application like Morphine.TV is working without any change on GStreamer.

Mixer facilities

The mixer classes of mmsmedia provide a simple interface to access volume settings of your soundcard.
To install the mixer classes, you have to install alsa-libs first. In Debian based distributions the package is named libasound2-dev. Now the mixer will be enabled automatically if using one of the media backends.