GST cookbook/gNewSense

From XiphWiki
Revision as of 08:24, 18 March 2013 by GChriss (talk | contribs) (add gNewSense build instructions. traces of nuts, but a good set overall)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

gNewSense GStreamer 0.10 Build Instructions
Tested on 18-March-2013 by GChriss

Prepare live USB key as documented, double-check boot flag

Boot USB key in BIOS -> Install to disk -> Manual partition
Use a smaller '/' partition (~20GB), ~20GB swap space, the remainder as '/home'

reboot

apt-get update

apt-get dist-upgrade

apt-get install fakeroot kernel-package libncurses5-dev libqt3-mt-dev bzip2 wget build-essential autoconf libtool libglib2.0-dev bison flex libxml2-dev alsa-tools libasound2-dev vim mlocate libxmu-dev libxi-dev libsamplerate0-dev libsndfile1-dev git-core curl lm-sensors sensors-applet openssh-server flex bison iasl automake libsdl1.2-dev libgtk2.0-dev libglib2.0-dev libglade2-dev libffi4-dev pciutils-dev cu sysfsutils mkvtoolnix mkvtoolnix-gui subversion cpuburn

[For realtime GNUSense kernel, optional but helpful for audio quality]
http://www.gnewsense.org/Documentation/BuildKernel
+apply patch: http://twobit.us/blog/2010/06/debian-lenny-make-kpkg-broken-with-new-kernel/
sudo su
cd /usr/src
wget "http://linux-libre.fsfla.org/pub/linux-libre/releases/LATEST-3.8.N/linux-libre-3.8.1-gnu.tar.bz2"
tar xvjf linux-libre-3.8.1-gnu.tar.bz2
cd linux-3.8.1/
cp /boot/config-2.6.24-32-generic ./.config
make oldconfig
make gconfig
[See attached .config. 'CONFIG_PREEMPT=y' + ALSA built as modules, 'CONFIG_HZ_100=y']
CONCURRENCY_LEVEL=4 fakeroot make-kpkg --initrd kernel_image kernel_headers
[See http://www.debian-administration.org/articles/90 ]
cd /usr/src/
dpkg -i linux-headers-3.8.1-gnu_3.8.1-gnu-10.00.Custom_i386.deb linux-image-3.8.1-gnu_3.8.1-gnu-10.00.Custom_i386.deb
chmod 4755 /usr/bin/cpufreq-selector
reboot
Test GNOME CPU freq applet

gsc@host:~$ uname -a
Linux host 3.8.1-gnu #1 SMP PREEMPT Sun Mar 3 16:40:14 EST 2013 i686 GNU/Linux

sudo su
mkdir -p /packages/openvideopro && mkdir -p /packages/openvideopro/lib && mkdir -p /packages/openvideopro/bin
mkdir -p /packages/openvideopro/lib/pkgconfig
chown -R gchriss:users /packages/openvideopro
exit
rm -Rf ~/.gstreamer-0.10
vi ~/.bashrc, add the following:
export GST_PLUGIN_SYSTEM_PATH="/packages/openvideopro/lib"
export GST_PLUGIN_PATH="/packages/openvideopro/lib"
export PKG_CONFIG_PATH=/packages/openvideopro/lib/pkgconfig
export PATH=/packages/openvideopro/bin:$PATH


cd /packages
git clone git://repo.or.cz/nasm.git nasm_3march2013
cd nasm_3march2013
./autogen.sh --no-configure &>gsc_autogen.log
./configure --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_make.log
make install &>gsc_install.log

[Optional]
cd /packages
git clone git://github.com/yasm/yasm.git && cd yasm
./configure --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_make.log
make install &>gsc_install.log

git clone git://code.entropywave.com/git/orc.git && cd orc
./autogen.sh &>gsc_autogen.log
./configure --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_make.log
make install &>gsc_install.log

cd /packages && wget "http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz"
tar -xvzf libogg-1.3.0.tar.gz && cd libogg-1.3.0
./configure --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_make.log
make install &>gsc_install.log

cd /packages && wget "http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz"
tar -xvzf libvorbis-1.3.3.tar.gz && cd libvorbis-1.3.3/
./configure --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_make.log
export PKG_CONFIG_PATH=/packages/openvideopro/lib/pkgconfig
make V=1 &>gsc_config.log
make install &>gsc_install.log

cd /packages && wget "http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2"
tar -xvjf libtheora-1.1.1.tar && cd libtheora-1.1.1
./configure --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_config.log
make install &>gsc_install.log

Open browser, download:
http://sourceforge.net/projects/libjpeg-turbo/files/1.2.90%20%281.3beta1%29/libjpeg-turbo-1.2.90.tar.gz/download
cd /packages && tar -xvzf libjpeg-turbo-1.2.90.tar.gz && cd libjpeg-turbo-1.2.90
./configure --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_make.log
make install &>gsc_install.log

wget "http://dl.matroska.org/downloads/libebml/libebml-1.2.2.tar.bz2"
tar -xvjf libebml-1.2.2.tar.bz2 & cd libebml-1.2.2
make -C make/linux install_staticlib install_headers prefix=/packages/openvideopro &>gsc_make.log
make install &>gsc_install.log

wget "http://dl.matroska.org/downloads/libmatroska/libmatroska-1.3.0.tar.bz2"
tar -xvjf libmatroska-1.3.0.tar.bz2 && cd libmatroska-1.3.0/
CXXFLAGS='-I/packages/openvideopro/include' make -C make/linux install_staticlib install_headers prefix=/packages/openvideopro &>gsc_make.log
make install &>gsc_install.log

wget "http://downloads.xiph.org/releases/libshout/libshout-2.3.1.tar.gz" && tar -xvzf libshout-2.3.1.tar.gz && cd libshout-2.3.1
./configure --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_make.log
make install &>gsc_install.log

wget "http://ftp.acc.umu.se/pub/gnome/sources/glib/2.28/glib-2.28.8.tar.bz2"
tar -xvjf glib-2.28.8.tar.bz2 && cd glib-2.28.8
./configure --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_make.log
['make check' failures are "OK"]
make install &>gsc_install.log

cd /packages && wget "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.26.tar.bz2"
tar -xvjf alsa-lib-1.0.26.tar.bz2 && cd alsa-lib-1.0.26
./configure --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_make.log
make install &>gsc_install.log

wget "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.36.tar.gz"
tar -xvzf gstreamer-0.10.36.tar.gz && cd gstreamer-0.10.36
./configure --enable-failing-tests --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_make.log
make install &>gsc_install.log

wget "http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.10.36.tar.gz"
tar -xvzf gst-plugins-base-0.10.36.tar.gz && cd gst-plugins-base-0.10.36
export CFLAGS='-msse -mmmx -msse2' && export CXXFLAGS='-msse -mmmx -msse2'
./configure --enable-orc --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_config.log
make install &>gsc_install.log

wget "http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-0.10.31.tar.gz"
export CFLAGS='-msse -mmmx -msse2' && export CXXFLAGS='-msse -mmmx -msse2'
tar -xvzf gst-plugins-good-0.10.31.tar.gz && cd gst-plugins-good-0.10.31
./configure --enable-experimental --enable-orc --prefix=/packages/openvideopro &>gsc_configure.log
make V=1 &>gsc_make.log
make install &>gsc_install.log

cd /packages
svn checkout http://gst-plugins-elphel.googlecode.com/svn/trunk/ gst-plugins-elphel
cd gst-plugins-elphel/jp462bayer
./autogen &>gsc_autogen.log
./configure --enable-debug --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_make.log
make install &>gsc_install.log
cd ../bayer2rgb2/

cd /packages
wget "http://jackaudio.org/downloads/jack-audio-connection-kit-0.121.3.tar.gz"
tar -xvzf jack-audio-connection-kit-0.121.3.tar.gz && cd jack-audio-connection-kit-0.121.3
vi tools/alsa_in.c, change:
delay = snd_pcm_avail( alsa_handle ); ==to==
delay = snd_pcm_avail_update( alsa_handle );
vi tools/alsa_out.c, change:
delay = (num_periods*period_size)-snd_pcm_avail( alsa_handle ) ; ==to==
delay = (num_periods*period_size)-snd_pcm_avail_update( alsa_handle ) ;
[Breaks alsa_in, alsa_out playback/recording but enables compilation...]
./configure --enable-optimize --prefix=/packages/openvideopro &>gsc_config.log
make V=1 &>gsc_make.log
make install &>gsc_install.log

updatedb

Close any extra windows, file caching services, etc.

Set CPU cores to >= 3.2GHz

Stress-test CPU temperature stability (necessary, but proceed at own risk):
burnMMX & burnMMX & burnMMX & burnMMX

Disable screensaver, start JACK, launch GStreamer pipeline, renice pipeline to -18, set color controls via Elphel web interface (adjust brightness to achieve 18FPS, most other controls work).


To use Totem from the command line:
unset GST_PLUGIN_SYSTEM_PATH && unset GST_PLUGIN_PATH
totem
rm -Rf ~/.gstreamer-0.10
exit