Building VLC for the Roku HD1000

*nix specific usage questions
SimonGales

Building VLC for the Roku HD1000

Postby SimonGales » 30 Apr 2006 19:35

I'm trying to cross-compile VLC 0.8.4 (on a Fedora Core 4 system) for the Roku HD1000.

I'm so tantalizingly close, it's driving me nuts. :? At this point, I'm only trying to play MP3's (streaming, video, etc, will come later).

Everything appears to be working, but it's being sent to the "dummy" audio_output module, because the hd1000a module fails to load (see full trace log at the end of this post).

[00000001] main vlc warning: cannot load module `/mnt/flash1/vlc/lib/vlc/audio_output/libhd1000a_plugin.so' (/mnt/flash1
/vlc/lib/vlc/audio_output/libhd1000a_plugin.so: undefined symbol: __14PCMAudioPlayer)


The libhd1000a_plugin.so module is looking for __14PCMAudioPlayer which is defined in /usr/local/lib/libHDMachineX225.so (which configure found and was happy about).

Any clues? hints? pointers? I'm stuck. FYI, building vlc with everything builtin was useless - just hung, no log output, etc.

If you want more details, feel free to ask...

Thanks,
Simon (sgales AT simonandchristy.com)

# ./vlc --reset-plugins-cache --reset-config --extraintf logger -vvv ../../brick1.mp3
VLC media player 0.8.4a Janus
[00000001] main vlc debug: checking builtin modules
[00000001] main vlc debug: checking plugin modules
[00000001] main vlc debug: removing plugins cache file /root/.vlc/cache/plugins-04041e.dat
[00000001] main vlc debug: recursively browsing `modules'
[00000001] main vlc debug: recursively browsing `/mnt/flash1/vlc/lib/vlc'
[00000001] main vlc warning: cannot load module `/mnt/flash1/vlc/lib/vlc/audio_output/libhd1000a_plugin.so' (/mnt/flash1
/vlc/lib/vlc/audio_output/libhd1000a_plugin.so: undefined symbol: __14PCMAudioPlayer)

[00000001] main vlc debug: recursively browsing `plugins'
[00000001] main vlc debug: module bank initialized, found 135 modules
[00000001] main vlc debug: opening config file /root/.vlc/vlcrc
[00000001] main vlc debug: opening config file /root/.vlc/vlcrc
[00000001] main vlc debug: CPU has capabilities
[00000001] main vlc debug: looking for memcpy module: 1 candidate
[00000133] main module debug: using memcpy module "memcpy"
[00000174] main playlist debug: waiting for thread completion
[00000174] main playlist debug: thread 1026 (playlist) created at priority 0 (src/playlist/playlist.c:182)
[00000175] main private debug: waiting for thread completion
[00000175] main private debug: thread 2051 (preparser) created at priority 0 (src/playlist/playlist.c:204)
[00000176] main interface debug: looking for interface module: 1 candidate
[00000176] logger interface: Using the logger interface module...
[00000176] logger interface warning: no log filename provided, using `vlc-log.txt'
[00000176] logger interface debug: opening logfile `vlc-log.txt'
[00000141] main module debug: using interface module "logger"
[00000176] main interface debug: interface initialized
[00000176] main interface debug: thread 3076 (interface) created at priority 0 (src/interface/interface.c:210)
[00000177] main interface debug: looking for interface module: 1 candidate
[00000086] main module debug: using interface module "hotkeys"
[00000177] main interface debug: interface initialized
[00000177] main interface debug: thread 4101 (interface) created at priority 0 (src/interface/interface.c:210)
[00000174] main playlist debug: adding playlist item `../../brick1.mp3' ( ../../brick1.mp3 )
[00000178] main interface debug: looking for interface module: 2 candidates
Remote control interface initialized, `h' for help
[00000087] main module debug: using interface module "rc"
[00000178] main interface debug: interface initialized
[00000174] main playlist debug: creating new input thread
[00000178] main interface debug: thread 5126 (manager) created at priority 0 (src/interface/interface.c:195)
[00000179] main input debug: waiting for thread completion
[00000179] main input debug: thread 6151 (input) created at priority 0 (src/input/input.c:229)
status change: ( New input: ../../brick1.mp3 )
status change: ( audio volume: 256 )
status change: ( play state: 1 )
[00000179] main input debug: `../../brick1.mp3' gives access `' demux `' path `../../brick1.mp3'
[00000179] main input debug: creating demux: access='' demux='' path='../../brick1.mp3'
[00000180] main demuxer debug: looking for access_demux module: 0 candidates
[00000180] main demuxer warning: no access_demux module matched "any"
[00000179] main input debug: creating access '' path='../../brick1.mp3'
[00000181] main access debug: looking for access2 module: 2 candidates
[00000181] access_file access debug: opening file `../../brick1.mp3'
[00000017] main module debug: using access2 module "access_file"
[00000182] main private debug: pre buffering
[00000182] main private debug: received first data for our buffer
[00000182] main private debug: prebuffering done 622573 bytes in 0s - 4676 kbytes/s
[00000179] main input debug: creating demux: access='' demux='' path='../../brick1.mp3'
[00000183] main demuxer debug: looking for demux2 module: 34 candidates
[00000184] main packetizer debug: looking for packetizer module: 13 candidates
[00000070] main module debug: using packetizer module "mpeg_audio"
[00000184] mpeg_audio packetizer debug: MPGA channels:2 samplerate:44100 bitrate:128
[00000179] main input debug: selecting program id=0
[00000183] main demuxer debug: looking for id3 module: 0 candidates
[00000183] main demuxer error: no id3 module matched "any"
[00000093] main module debug: using demux2 module "mpga"
[00000179] main input debug: looking for a subtitle file in ../../
[00000185] main decoder debug: looking for decoder module: 16 candidates
[00000069] main module debug: using decoder module "mpeg_audio"
[00000185] main decoder debug: thread 7176 (decoder) created at priority 0 (src/input/decoder.c:158)
[00000179] main input debug: `../../brick1.mp3' successfully opened
[00000185] mpeg_audio decoder debug: MPGA channels:2 samplerate:44100 bitrate:128
[00000185] main decoder debug: no aout present, spawning one
[00000186] main audio output debug: looking for audio output module: 1 candidate
[00000130] main module debug: using audio output module "dummy"
[00000186] main audio output debug: output 'mpga' 44100 Hz Stereo frame=1152 samples/1053 bytes
[00000186] main audio output debug: mixer 'mpga' 44100 Hz Stereo frame=1152 samples/1053 bytes
[00000186] main audio output debug: filter(s) 'fi32'->'mpga' 44100 Hz->44100 Hz Stereo->Stereo
[00000187] main private debug: looking for audio filter module: 23 candidates
[00000186] main audio output error: couldn't find a filter for the conversion
[00000186] main audio output error: couldn't set an output pipeline
[00000130] main module debug: unlocking module "dummy"
quit
quit: returned 0 (no error)
status change: ( stop state: 0 )
status change: ( quit )
[00000001] main vlc debug: removing all interfaces
[00000178] main interface debug: thread 5126 joined (src/interface/interface.c:238)
[00000087] main module debug: unlocking module "rc"
[00000179] main input debug: control type=0
[00000179] main input debug: control: stopping input
[00000179] main input debug: closing input
[00000070] main module debug: unlocking module "mpeg_audio"
[00000093] main module debug: unlocking module "mpga"
[00000017] main module debug: unlocking module "access_file"
[00000069] main module debug: unlocking module "mpeg_audio"
[00000185] main decoder debug: thread 7176 joined (src/input/decoder.c:191)
[00000185] main decoder debug: killing decoder fourcc `mpga', 0 PES in FIFO
[00000177] main interface debug: thread 4101 joined (src/interface/interface.c:238)
[00000086] main module debug: unlocking module "hotkeys"
[00000179] main input debug: thread 6151 joined (src/input/input.c:386)
[00000176] main interface debug: thread 3076 joined (src/interface/interface.c:238)
[00000141] main module debug: unlocking module "logger"
[00000001] main vlc debug: removing all playlists
[00000175] main private debug: thread 2051 joined (src/playlist/playlist.c:237)
[00000174] main playlist debug: thread 1026 joined (src/playlist/playlist.c:238)
[00000174] main playlist: stopping playback
[00000174] main playlist debug: deleting playlist item `../../brick1.mp3'
[00000001] main vlc debug: removing all video outputs
[00000001] main vlc debug: removing all audio outputs
[00000001] main vlc debug: removing announce handler
[00000133] main module debug: unlocking module "memcpy"
[00000001] main vlc debug: saving plugins cache file /root/.vlc/cache/plugins-04041e.dat




Configure script:

CFLAGS="-I/usr/tools/roku/include -I/mnt/flash1/vlc/include -I/ROKU/usr/include -I/ROKU/usr/local/include -I/ROKU/usr/local/include/roku -I/ROKU/usr/share/rokudev/usr/include" \
CXXFLAGS="${CFLAGS}" \
CPPFLAGS="${CFLAGS}" \
LDFLAGS="-L/usr/tools/roku/mipsel-linux/lib -L/mnt/flash1/vlc/lib -L/usr/local/lib -L/ROKU/usr/share/rokudev/usr/lib -L/ROKU/lib -Wl,-rpath-link -Wl,/ROKU/lib -Wl,-rpath-link -Wl,/ROKU/usr/local/lib" \
CC=mipsel-linux-gcc CXX=mipsel-linux-g++ AR=mipsel-linux-ar LD=mipsel-linux-ld RANLIB=mipsel-linux-ranlib STRIP=mipsel-linux-strip \
./configure --host=mipsel --enable-trace --enable-debug \
--prefix=/mnt/flash1/vlc \
--disable-optimizations \
--disable-hal \
--disable-sdl \
--enable-mad --with-mad-tree=${SRC}/libmad-0.15.1b \
--enable-libmpeg2 --with-libmpeg2-tree=${SRC}/mpeg2dec-0.4.0 \
--enable-dvbpsi \
--disable-vcd --disable-vcdx --disable-cdda --disable-cddax --disable-libcdio --disable-libcddb \
--disable-dvd --disable-dvdread --disable-dvdnav --disable-dvdplay \
--disable-dshow --disable-directx --disable-wingdi --disable-waveout \
--disable-macosx --disable-coreaudio --disable-quicktime \
--disable-bonjour \
--disable-daap \
--disable-wxwidgets \
--disable-opengl \
--disable-png \
--disable-mpc \
--disable-smb \
--disable-gnutls \
--disable-vlm \
--disable-qnx \
--enable-ncurses \
--disable-corba \
--disable-mozilla \
--disable-mga \
--disable-svgalib --disable-ggi --disable-glide \
--disable-aa --disable-caca \
--disable-qte --disable-qt_video \
--disable-livedotcom \
--disable-corba \
--disable-v4l \
--disable-pvr \
--disable-satellite --disable-dvb \
--disable-slp \
--disable-speex \
--enable-ffmpeg \
--with-ffmpeg-mp3lame \
--with-ffmpeg-zlib \
--with-ffmpeg-tree=${SRC}/ffmpeg-20051126/ \
--disable-ogg --disable-vorbis --disable-tremor --disable-tarkin --disable-theora \
--disable-mod \
--disable-mkv \
--enable-a52 \
--with-a52=/ROKU/src/a52dec-0.7.4 \
--with-a52-tree=/ROKU/src/a52dec-0.7.4 \
--disable-dts \
--disable-faad \
--disable-flac \
--disable-lirc --disable-joystick \
--disable-x11 --disable-xvideo --disable-xosd --disable-glx \
--disable-gtk --disable-gnome --disable-esd \
--disable-gnomevfs \
--disable-wxwindows \
--disable-kde --disable-arts \
--disable-pda --disable-opie \
--disable-cmml \
--disable-skins --disable-skins2 \
--disable-fribidi --disable-freetype \
--disable-sout \
--disable-oss --disable-alsa --disable-fb \
--disable-visual --disable-goom \
--disable-screen \
--enable-libxml2 \
--disable-x264 \
--disable--httpd \
--disable-nls \
--with-included-gettext \
--enable-hd1000a --disable-hd1000v

xtophe
Big Cone-huna
Big Cone-huna
Posts: 1209
Joined: 24 Nov 2003 10:12
Location: Bristol, England

Postby xtophe » 02 May 2006 12:11

is your ld.so.conf correct on the roku ? so the plugin can find the libraries .

Also for a start you could try to link staticaly
Xtophe

SimonGales

Building VLC for the Roku HD1000

Postby SimonGales » 02 May 2006 19:37

The ld.so.conf appears correct on the roku. The libraries in /usr/local/lib are used by all kinds of apps, and they're all functioning fine.

I haven't done much work with shared libraries, and don't rightly know how a compiled module knows what libraries to load (ld.so.conf just tells it where to look). Can you point me to a good source of info on this?

When I cross-build VLC for the Roku, that library is not in the same location (/ROKU/usr/local/lib instead of /usr/local/lib). Is it possible that my vlc is looking for the lib in /ROKU/usr/local/lib?

I tried force loading the library with LD_PRELOAD, but got nowhere at all - vlc locked up, I got no trace output at all, and gdb's backtrace wasn't helpful. So I appear to have other problems than just dynamic linking issues.
BTW, VERY similar things happen when I try to compile with everything built-in.

Is it possible that the hd1000a module hasn't been updated to work with VLC 0.8.4? I know it hasn't been updated to work with the latest Roku API...

Thanks again, any/all help is greatly appreciated...

SimonGales

Building VLC for the Roku HD1000

Postby SimonGales » 04 May 2006 01:30

Got it working, through a small hack and another small fix.

1) Small-fix - My cross-compile kit (per http://home.planet.nl/~jpsaman/linux/ro ... howto.html) was a mess. The symbolic links in /usr/tools/roku/mipsel-linux/lib were bad:

Code: Select all

drwxr-xr-x 4 root root 4096 May 3 15:50 . drwxr-xr-x 6 root root 4096 May 3 15:31 .. -rw-r--r-- 1 root root 11773 May 26 2004 crt1.o -rw-r--r-- 1 root root 2152 May 26 2004 crti.o -rw-r--r-- 1 root root 1536 May 26 2004 crtn.o -rw-r--r-- 1 root root 31774 May 26 2004 gcrt1.o -rwxr-xr-x 1 root root 112688 May 26 2004 ld-2.2.4.so drwxr-xr-x 2 root root 4096 Apr 7 15:57 ldscripts lrwxrwxrwx 1 root root 11 Apr 7 15:57 ld.so.1 -> ld-2.2.4.so -rwxr-xr-x 1 root root 11812 May 26 2004 libanl-2.2.4.so -rw-r--r-- 1 root root 201574 May 26 2004 libanl.a lrwxrwxrwx 1 root root 12 Apr 7 15:57 libanl.so -> libanl.so.1' lrwxrwxrwx 1 root root 15 Apr 7 15:57 libanl.so.1 -> libanl-2.2.4.so -rwxr-xr-x 1 root root 4540 May 26 2004 libBrokenLocale-2.2.4.so -rw-r--r-- 1 root root 28106 May 26 2004 libBrokenLocale.a lrwxrwxrwx 1 root root 21 Apr 7 15:57 libBrokenLocale.so -> libBrokenLocale.so.1' lrwxrwxrwx 1 root root 24 Apr 7 15:57 libBrokenLocale.so.1 -> libBrokenLocale-2.2.4.so lrwxrwxrwx 1 root root 15 Apr 7 15:57 libbsd.a -> libbsd-compat.a -rw-r--r-- 1 root root 3530 May 26 2004 libbsd-compat.a -rwxr-xr-x 1 root root 1526452 May 26 2004 libc-2.2.4.so -rw-r--r-- 1 root root 16777215 May 26 2004 libc.a -rw-r--r-- 1 root root 82768 May 26 2004 libc_nonshared.a -rwxr-xr-x 1 root root 25980 May 26 2004 libcrypt-2.2.4.so -rw-r--r-- 1 root root 130786 May 26 2004 libcrypt.a lrwxrwxrwx 1 root root 14 Apr 7 15:57 libcrypt.so -> libcrypt.so.1' lrwxrwxrwx 1 root root 17 Apr 7 15:57 libcrypt.so.1 -> libcrypt-2.2.4.so -rw-r--r-- 1 root root 271 Apr 7 15:36 libc.so lrwxrwxrwx 1 root root 13 Apr 7 15:57 libc.so.6 -> libc-2.2.4.so -rw-r--r-- 1 root root 18009 May 26 2004 libc_stubs.a -rwxr-xr-x 1 root root 11944 May 26 2004 libdl-2.2.4.so -rw-r--r-- 1 root root 53276 May 26 2004 libdl.a lrwxrwxrwx 1 root root 11 Apr 7 15:57 libdl.so -> libdl.so.2' lrwxrwxrwx 1 root root 14 Apr 7 15:57 libdl.so.2 -> libdl-2.2.4.so -rw-r--r-- 1 root root 3530 May 26 2004 libg.a -rw-r--r-- 1 root root 1084962 Apr 7 15:47 libiberty.a -rw-r--r-- 1 root root 3816 May 26 2004 libieee.a -rwxr-xr-x 1 root root 1029404 May 26 2004 libm-2.2.4.so -rw-r--r-- 1 root root 3918430 May 26 2004 libm.a -rw-r--r-- 1 root root 4340 May 26 2004 libmcheck.a lrwxrwxrwx 1 root root 10 Apr 7 15:57 libm.so -> libm.so.6' lrwxrwxrwx 1 root root 13 Apr 7 15:57 libm.so.6 -> libm-2.2.4.so -rwxr-xr-x 1 root root 100560 May 26 2004 libnsl-2.2.4.so -rw-r--r-- 1 root root 2078056 May 26 2004 libnsl.a lrwxrwxrwx 1 root root 12 Apr 7 15:57 libnsl.so -> libnsl.so.1' lrwxrwxrwx 1 root root 15 Apr 7 15:57 libnsl.so.1 -> libnsl-2.2.4.so -rwxr-xr-x 1 root root 63580 May 26 2004 libnss_compat-2.2.4.so lrwxrwxrwx 1 root root 19 Apr 7 15:57 libnss_compat.so -> libnss_compat.so.2' lrwxrwxrwx 1 root root 22 Apr 7 15:57 libnss_compat.so.2 -> libnss_compat-2.2.4.so -rwxr-xr-x 1 root root 15000 May 26 2004 libnss_dns-2.2.4.so lrwxrwxrwx 1 root root 16 Apr 7 15:57 libnss_dns.so -> libnss_dns.so.2' lrwxrwxrwx 1 root root 19 Apr 7 15:57 libnss_dns.so.2 -> libnss_dns-2.2.4.so -rwxr-xr-x 1 root root 64248 May 26 2004 libnss_files-2.2.4.so lrwxrwxrwx 1 root root 18 Apr 7 15:57 libnss_files.so -> libnss_files.so.2' lrwxrwxrwx 1 root root 21 Apr 7 15:57 libnss_files.so.2 -> libnss_files-2.2.4.so -rwxr-xr-x 1 root root 20560 May 26 2004 libnss_hesiod-2.2.4.so lrwxrwxrwx 1 root root 19 Apr 7 15:57 libnss_hesiod.so -> libnss_hesiod.so.2' lrwxrwxrwx 1 root root 22 Apr 7 15:57 libnss_hesiod.so.2 -> libnss_hesiod-2.2.4.so -rwxr-xr-x 1 root root 54768 May 26 2004 libnss_nis-2.2.4.so -rwxr-xr-x 1 root root 59144 May 26 2004 libnss_nisplus-2.2.4.so lrwxrwxrwx 1 root root 20 Apr 7 15:57 libnss_nisplus.so -> libnss_nisplus.so.2' lrwxrwxrwx 1 root root 23 Apr 7 15:57 libnss_nisplus.so.2 -> libnss_nisplus-2.2.4.so lrwxrwxrwx 1 root root 16 Apr 7 15:57 libnss_nis.so -> libnss_nis.so.2' lrwxrwxrwx 1 root root 19 Apr 7 15:57 libnss_nis.so.2 -> libnss_nis-2.2.4.so -rwxr-xr-x 1 root root 108932 May 26 2004 libpthread-0.9.so -rw-r--r-- 1 root root 1749438 May 26 2004 libpthread.a lrwxrwxrwx 1 root root 16 Apr 7 15:57 libpthread.so -> libpthread.so.2' lrwxrwxrwx 1 root root 17 Apr 7 15:57 libpthread.so.0 -> libpthread-0.9.so lrwxrwxrwx 1 root root 17 Apr 7 15:57 libpthread.so.2 -> libpthread-0.9.so -rwxr-xr-x 1 root root 76348 May 26 2004 libresolv-2.2.4.so -rw-r--r-- 1 root root 775814 May 26 2004 libresolv.a lrwxrwxrwx 1 root root 15 Apr 7 15:57 libresolv.so -> libresolv.so.2' lrwxrwxrwx 1 root root 18 Apr 7 15:57 libresolv.so.2 -> libresolv-2.2.4.so -rw-r--r-- 1 root root 641910 May 26 2004 librpcsvc.a -rw-r--r-- 1 root root 671246 May 26 2004 librt.a -rw-r--r-- 1 root root 178 Apr 7 15:36 librt.so -rwxr-xr-x 1 root root 9520 May 26 2004 libSegFault.so -rw-r--r-- 1 root root 2607928 Apr 7 15:47 libstdc++-3-libc6.2-2-2.10.0.a -r-xr-xr-x 1 root root 1521031 Apr 7 15:47 libstdc++-3-libc6.2-2-2.10.0.so lrwxrwxrwx 1 root root 30 Apr 7 15:57 libstdc++-libc6.2-2.a.3 -> libstdc++-3-libc6.2-2-2.10.0.a lrwxrwxrwx 1 root root 31 Apr 7 15:57 libstdc++-libc6.2-2.so.3 -> libstdc++-3-libc6.2-2-2.10.0.so -rwxr-xr-x 1 root root 17208 May 26 2004 libthread_db-1.0.so lrwxrwxrwx 1 root root 18 Apr 7 15:57 libthread_db.so -> libthread_db.so.1' lrwxrwxrwx 1 root root 19 Apr 7 15:57 libthread_db.so.1 -> libthread_db-1.0.so -rwxr-xr-x 1 root root 9312 May 26 2004 libutil-2.2.4.so -rw-r--r-- 1 root root 140456 May 26 2004 libutil.a lrwxrwxrwx 1 root root 13 Apr 7 15:57 libutil.so -> libutil.so.1' lrwxrwxrwx 1 root root 16 Apr 7 15:57 libutil.so.1 -> libutil-2.2.4.so -rw-r--r-- 1 root root 2884 May 26 2004 Mcrt1.o
Note that the targets of some of the symbolic links have a quote at the end, making them invalid. Long story short, this made the compiler (linker) use the static libraries, which is a "bad thing" for libpthread. Not sure how this happened, and would be interested to hear if others see this. I fixed this with:

Code: Select all

rm -f libanl.so rm -f libBrokenLocale.so rm -f libcrypt.so rm -f libdl.so rm -f libm.so rm -f libnsl.so rm -f libnss_compat.so rm -f libnss_dns.so rm -f libnss_files.so rm -f libnss_hesiod.so rm -f libnss_nisplus.so rm -f libnss_nis.so rm -f libpthread.so rm -f libresolv.so rm -f libthread_db.so rm -f libutil.so ln -s libanl.so.1 libanl.so ln -s libBrokenLocale.so.1 libBrokenLocale.so ln -s libcrypt.so.1 libcrypt.so ln -s libdl.so.2 libdl.so ln -s libm.so.6 libm.so ln -s libnsl.so.1 libnsl.so ln -s libnss_compat.so.2 libnss_compat.so ln -s libnss_dns.so.2 libnss_dns.so ln -s libnss_files.so.2 libnss_files.so ln -s libnss_hesiod.so.2 libnss_hesiod.so ln -s libnss_nisplus.so.2 libnss_nisplus.so ln -s libnss_nis.so.2 libnss_nis.so ln -s libpthread.so.2 libpthread.so ln -s libresolv.so.2 libresolv.so ln -s libthread_db.so.1 libthread_db.so ln -s libutil.so.1 libutil.so
2) Small-hack (fixes the original problem): The hd1000a.cpp module/plugin wasn't being linked with everything it needed. I added the following to vlc-config at line 90:

Code: Select all

hd1000a) ldflags="${ldflags} -lm -ldvbpsi -lHDMachineX225 -lCascade -lacl -lCascadeCore -lati2DM -latiutils -lfreetype -lcore -l2dcore -lbcl" ;;
I'm not sure all of these libraries were really needed, but it works. :wink: Unfortunately, running configure again wipes this out, though I modified vlc.config.in. Haven't had time to figure out how to fix this properly...

I'm now able to play MP3's and Shoutcast streams, via the Roku. Similar to what dtaubert's vlc (in HexRadio) can do. For the adventurous among you, here's my configuration:

Code: Select all

CFLAGS="-I/usr/tools/roku/mipsel-linux/include -I/ROKU/usr/share/rokudev/usr/include -I/mnt/flash1/vlc/include -I/ROKU/usr/include -I/ROKU/usr/local/include -I/ROKU/usr/local/include/roku -I/usr/tools/roku/include" \ LDFLAGS="-L/usr/tools/roku/mipsel-linux/lib -L/ROKU/lib -L/ROKU/usr/local/lib -L/ROKU/usr/share/rokudev/usr/lib -L/mnt/flash1/vlc/lib -L/usr/tools/roku/lib" \ CC=mipsel-linux-gcc CXX=mipsel-linux-g++ AR=mipsel-linux-ar LD=mipsel-linux-ld RANLIB=mipsel-linux-ranlib STRIP=mipsel-linux-strip \ ./configure \ --host=mipsel \ --enable-release \ --disable-debug \ --disable-trace \ --enable-mostly-builtin \ --prefix=/mnt/flash1/vlc \ --disable-hal \ --disable-sdl \ --enable-mad --with-mad-tree=${SRC}/libmad-0.15.1b \ --enable-libmpeg2 --with-libmpeg2-tree=${SRC}/mpeg2dec-0.4.0 \ --enable-dvbpsi \ --disable-vcd --disable-vcdx --disable-cdda --disable-cddax --disable-libcdio --disable-libcddb \ --disable-dvd --disable-dvdread --disable-dvdnav --disable-dvdplay \ --disable-dshow --disable-directx --disable-wingdi --disable-waveout \ --disable-macosx --disable-coreaudio --disable-quicktime \ --disable-bonjour \ --disable-daap \ --disable-wxwidgets \ --disable-opengl \ --disable-png \ --disable-mpc \ --disable-smb \ --disable-gnutls \ --disable-vlm \ --disable-qnx \ --enable-ncurses \ --disable-corba \ --disable-mozilla \ --disable-mga \ --disable-svgalib --disable-ggi --disable-glide \ --disable-aa --disable-caca \ --disable-qte --disable-qt_video \ --disable-livedotcom \ --disable-corba \ --disable-v4l \ --disable-pvr \ --disable-satellite --disable-dvb \ --disable-slp \ --disable-speex \ --enable-ffmpeg \ --with-ffmpeg-mp3lame \ --with-ffmpeg-zlib \ --with-ffmpeg-tree=${SRC}/ffmpeg-20051126/ \ --disable-ogg --disable-vorbis --disable-tremor --disable-tarkin --disable-theora \ --disable-mod \ --disable-mkv \ --enable-a52 \ --with-a52=/ROKU/src/a52dec-0.7.4 \ --with-a52-tree=/ROKU/src/a52dec-0.7.4 \ --disable-dts \ --disable-faad \ --disable-flac \ --disable-lirc --disable-joystick \ --disable-x11 --disable-xvideo --disable-xosd --disable-glx \ --disable-gtk --disable-gnome --disable-esd \ --disable-gnomevfs \ --disable-wxwindows \ --disable-kde --disable-arts \ --disable-pda --disable-opie \ --disable-cmml \ --disable-skins --disable-skins2 \ --disable-fribidi --disable-freetype \ --disable-sout \ --disable-oss --disable-alsa --disable-fb \ --disable-visual --disable-goom \ --disable-screen \ --enable-libxml2 \ --disable-x264 \ --disable--httpd \ --disable-nls \ --with-included-gettext \ --enable-hd1000a --disable-hd1000v

Wish me luck!

xtophe
Big Cone-huna
Big Cone-huna
Posts: 1209
Joined: 24 Nov 2003 10:12
Location: Bristol, England

Postby xtophe » 04 May 2006 10:43

About the extra flags for the hd1000 module, you need to modify configure.ac. Locate the section about hd1000a and add some VLC_ADD_LDFLAGS. then run ./bootstrap and configure with your options
Xtophe

SimonGales

Building VLC for the Roku HD1000

Postby SimonGales » 04 May 2006 21:21

That worked fine, here's the diffs for configure.ac:

Code: Select all

[root@laptop vlc-0.8.4a]# diff -c configure.ac.orig configure.ac *** configure.ac.orig 2006-05-04 12:11:30.000000000 -0500 --- configure.ac 2006-05-04 12:12:24.000000000 -0500 *************** *** 3650,3656 **** AC_LANG_PUSH([C++]) AC_CHECK_HEADERS(deschutes/libraries/hdmachinex225/PCMAudioPlayer.h, [ VLC_ADD_PLUGINS([hd1000a]) ! AC_CHECK_LIB(HDMachineX225,main,VLC_ADD_LDFLAGS([hd1000a],[-lHDMachineX225])) ]) AC_LANG_POP([C++]) fi --- 3650,3657 ---- AC_LANG_PUSH([C++]) AC_CHECK_HEADERS(deschutes/libraries/hdmachinex225/PCMAudioPlayer.h, [ VLC_ADD_PLUGINS([hd1000a]) ! AC_CHECK_LIB(HDMachineX225,main,VLC_ADD_LDFLAGS([hd1000a],[-lm -ldvbpsi -lHDMachineX225 -lCascade -lacl -lCascadeCore -lati2DM -latiutils -lfreetype -lcore -l2dcore -lbcl]),) ]) ! VLC_ADD_LDFLAGS([hd1000a],[-lm -ldvbpsi -lHDMachineX225 -lCascade -lacl -lCascadeCore -lati2DM -latiutils -lfreetype -lcore -l2dcore -lbcl]) AC_LANG_POP([C++]) fi
This works perfectly with the hd1000a module built as a plugin. Will try with plugins disabled a little later...

xtophe
Big Cone-huna
Big Cone-huna
Posts: 1209
Joined: 24 Nov 2003 10:12
Location: Bristol, England

Postby xtophe » 04 May 2006 21:37

Good. Do you know if all the libs are necessary ?

When you have completly check, please tell us so we can incorporate it in the SVN.

(Also if you could use diff -u to do the diff )
Xtophe

SimonGales

Building VLC for the Roku HD1000

Postby SimonGales » 04 May 2006 23:24

Certainly. I'm trying to get Ogg/Vorbis support working now.

The libraries built fine, but vlc doesn't link -lvorbis -lvorbisenc -logg into the vlc executable (I'm configured for --enable-mostly-builtin).

Here's configure's output - it definitely finds the ogg/vorbis stuff, AFAIK:

Code: Select all

[root@laptop vlc-0.8.4a]# ./roku-configure configure: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used. checking build system type... i686-pc-linux-gnu checking host system type... mipsel-unknown-elf checking target system type... mipsel-unknown-elf checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking for mipsel-strip... mipsel-linux-strip checking whether to enable maintainer-specific portions of Makefiles... no checking for mipsel-gcc... mipsel-linux-gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... yes checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether mipsel-linux-gcc accepts -g... yes checking for mipsel-linux-gcc option to accept ANSI C... none needed checking for style of include used by make... GNU checking dependency style of mipsel-linux-gcc... gcc3 checking whether mipsel-linux-gcc and cc understand -c and -o together... yes checking how to run the C preprocessor... mipsel-linux-cpp checking for mipsel-g++... mipsel-linux-g++ checking whether we are using the GNU C++ compiler... yes checking whether mipsel-linux-g++ accepts -g... yes checking dependency style of mipsel-linux-g++... gcc3 checking how to run the C++ preprocessor... mipsel-linux-g++ -E checking whether make sets $(MAKE)... (cached) yes checking for a BSD-compatible install... /usr/bin/install -c checking for egrep... grep -E checking for an Objective-C compiler... checking dependency style of mipsel-linux-g++... gcc3 not implemented yet checking for mipsel-ranlib... mipsel-linux-ranlib checking for mipsel-strip... (cached) mipsel-linux-strip checking for mipsel-ar... mipsel-linux-ar checking for mipsel-ld... mipsel-linux-ld checking for a BSD-compatible install... /usr/bin/install -c checking for an ANSI C-conforming const... yes checking for inline... inline checking for msgfmt... /usr/bin/msgfmt checking for gmsgfmt... /usr/bin/msgfmt checking for xgettext... /usr/bin/xgettext checking for msgmerge... /usr/bin/msgmerge checking for mipsel-ranlib... (cached) mipsel-linux-ranlib checking for library containing strerror... none required checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for off_t... yes checking for size_t... yes checking for working alloca.h... yes checking for alloca... yes checking for stdlib.h... (cached) yes checking for unistd.h... (cached) yes checking for getpagesize... yes checking for working mmap... no checking whether we are using the GNU C Library 2.1 or newer... yes checking whether integer division by zero raises SIGFPE... guessing no checking for inttypes.h... yes checking for stdint.h... yes checking for unsigned long long... yes checking for inttypes.h... yes checking whether the inttypes.h PRIxNN macros are broken... no checking for ld used by GCC... mipsel-linux-ld checking if the linker (mipsel-linux-ld) is GNU ld... yes checking for shared library run path origin... done checking argz.h usability... yes checking argz.h presence... yes checking for argz.h... yes checking limits.h usability... yes checking limits.h presence... yes checking for limits.h... yes checking locale.h usability... yes checking locale.h presence... yes checking for locale.h... yes checking nl_types.h usability... yes checking nl_types.h presence... yes checking for nl_types.h... yes checking malloc.h usability... yes checking malloc.h presence... yes checking for malloc.h... yes checking stddef.h usability... yes checking stddef.h presence... yes checking for stddef.h... yes checking for stdlib.h... (cached) yes checking for string.h... (cached) yes checking for unistd.h... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking for feof_unlocked... yes checking for fgets_unlocked... yes checking for getc_unlocked... yes checking for getcwd... yes checking for getegid... yes checking for geteuid... yes checking for getgid... yes checking for getuid... yes checking for mempcpy... yes checking for munmap... yes checking for putenv... yes checking for setenv... yes checking for setlocale... yes checking for stpcpy... yes checking for strcasecmp... yes checking for strdup... yes checking for strtoul... yes checking for tsearch... yes checking for __argz_count... yes checking for __argz_stringify... yes checking for __argz_next... yes checking for iconv... yes checking for iconv declaration... extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); checking for nl_langinfo and CODESET... yes checking for LC_MESSAGES... yes checking for bison... bison checking version of bison... 2.0, ok checking whether NLS is requested... no checking for textdomain... yes checking for shared objects suffix... .so checking for prefix to exported symbols... checking for gettimeofday... yes checking for select... yes checking for strerror... yes checking for strtod... yes checking for strtol... yes checking for strtof... yes checking for strtoll... yes checking for strtoull... yes checking for strsep... yes checking for isatty... yes checking for vasprintf... yes checking for asprintf... yes checking for swab... yes checking for sigrelse... yes checking for getpwuid... yes checking for memalign... yes checking for posix_memalign... yes checking for if_nametoindex... yes checking for atoll... yes checking for getenv... yes checking for putenv... (cached) yes checking for setenv... (cached) yes checking for gmtime_r... yes checking for ctime_r... yes checking for localtime_r... yes checking for lrintf... no checking for daemon... yes checking for scandir... yes checking for fork... yes checking for bsearch... yes checking for strdup... (cached) yes checking for strndup... yes checking for atof... yes checking for strcasecmp... (cached) yes checking for strncasecmp... yes checking for strcasestr... yes checking for setlocale... (cached) yes checking langinfo.h usability... yes checking langinfo.h presence... yes checking for langinfo.h... yes checking for nl_langinfo... yes checking for nl_langinfo and CODESET... yes checking for connect... yes checking for send... yes checking for gethostbyname... yes checking for socklen_t... yes checking for struct sockaddr_storage... yes checking for getaddrinfo... yes checking for getnameinfo... yes checking for gai_strerror... yes checking for struct addrinfo... yes checking for va_copy... yes checking for __va_copy... yes checking for inet_aton... yes checking for getopt_long... yes checking return type of signal handlers... void checking for cos in -lm... yes checking for pow in -lm... yes checking for sqrt in -lm... yes checking for sqrtf in -lmx... no checking mach-o/dyld.h usability... no checking mach-o/dyld.h presence... no checking for mach-o/dyld.h... no checking dl.h usability... no checking dl.h presence... no checking for dl.h... no checking for shl_load... no checking for dld_link in -ldld... no checking image.h usability... no checking image.h presence... no checking for image.h... no checking for load_add_on... no checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking sys/dl.h usability... no checking sys/dl.h presence... no checking for sys/dl.h... no checking for dlopen... no checking for dlopen in -ldl... yes checking for main in -lpthread... yes checking for cthread_fork in -lthreads... no checking for sem_init in -lrt... no checking for nanosleep... yes checking for pthread_cond_t in pthread.h... yes checking for pthread_once in pthread.h... yes checking for strncasecmp in strings.h... yes checking signal.h usability... yes checking signal.h presence... yes checking for signal.h... yes checking time.h usability... yes checking time.h presence... yes checking for time.h... yes checking errno.h usability... yes checking errno.h presence... yes checking for errno.h... yes checking for stdint.h... (cached) yes checking stdbool.h usability... yes checking stdbool.h presence... yes checking for stdbool.h... yes checking getopt.h usability... yes checking getopt.h presence... yes checking for getopt.h... yes checking for strings.h... (cached) yes checking for inttypes.h... (cached) yes checking sys/int_types.h usability... no checking sys/int_types.h presence... no checking for sys/int_types.h... no checking wchar.h usability... yes checking wchar.h presence... yes checking for wchar.h... yes checking sys/sockio.h usability... no checking sys/sockio.h presence... no checking for sys/sockio.h... no checking fcntl.h usability... yes checking fcntl.h presence... yes checking for fcntl.h... yes checking for sys/types.h... (cached) yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking sys/times.h usability... yes checking sys/times.h presence... yes checking for sys/times.h... yes checking sys/ioctl.h usability... yes checking sys/ioctl.h presence... yes checking for sys/ioctl.h... yes checking for sys/stat.h... (cached) yes checking arpa/inet.h usability... yes checking arpa/inet.h presence... yes checking for arpa/inet.h... yes checking net/if.h usability... yes checking net/if.h presence... yes checking for net/if.h... yes checking netinet/in.h usability... yes checking netinet/in.h presence... yes checking for netinet/in.h... yes checking sys/socket.h usability... yes checking sys/socket.h presence... yes checking for sys/socket.h... yes checking machine/param.h usability... no checking machine/param.h presence... no checking for machine/param.h... no checking sys/shm.h usability... yes checking sys/shm.h presence... yes checking for sys/shm.h... yes checking linux/version.h usability... yes checking linux/version.h presence... yes checking for linux/version.h... yes checking whether time.h and sys/time.h may both be included... yes checking dirent.h usability... yes checking dirent.h presence... yes checking for dirent.h... yes checking for nanosleep in time.h... yes checking for timespec in sys/time.h... yes checking cthreads.h usability... no checking cthreads.h presence... no checking for cthreads.h... no checking pthread.h usability... yes checking pthread.h presence... yes checking for pthread.h... yes checking kernel/scheduler.h usability... no checking kernel/scheduler.h presence... no checking for kernel/scheduler.h... no checking kernel/OS.h usability... no checking kernel/OS.h presence... no checking for kernel/OS.h... no checking for ntohl in sys/param.h... no checking if $CC accepts -Wall... yes checking if $CC accepts -Wconversion... yes checking if $CC accepts -Wunreachable-code... yes checking if $CC accepts -Wsign-compare... yes checking if $CC accepts -pipe... yes checking if $CC accepts -Os... yes checking if $CC accepts -O3... yes checking if $CC accepts -O2... yes checking if $CC accepts -O... yes checking if $CC accepts -ffast-math... yes checking if $CC accepts -funroll-loops... yes checking if $CC accepts -fomit-frame-pointer... yes checking if $CC accepts -mdynamic-no-pic... no checking if $CC accepts -bundle -undefined error -lcc_dynamic... no checking if $CC accepts -shared... yes checking for variadic cpp macros... yes checking __attribute__ ((aligned ())) support... 64 checking __attribute__ ((format ())) support with function pointers... no checking for __attribute__((packed))... yes checking if $CC groks MMX inline assembly... no checking if $CC groks MMX intrinsics... no checking if $CC groks MMX EXT inline assembly... no checking if $CC groks 3D Now! inline assembly... no checking if $CC groks SSE inline assembly... no checking if $CC groks AltiVec inline assembly... no checking if $CC groks AltiVec C extensions... no checking altivec.h usability... no checking altivec.h presence... no checking for altivec.h... no checking if linker needs -framework vecLib... no checking for dvbpsi/dr.h... no configure: WARNING: cannot find libdvbpsi headers checking for dvbpsi_GenSDTSections in -ldvbpsi... no checking for inet_pton... yes checking for sockaddr_in6 in netinet/in.h... yes checking ogg/ogg.h usability... yes checking ogg/ogg.h presence... yes checking for ogg/ogg.h... yes checking for oggpack_read in -logg... yes checking mad.h usability... yes checking mad.h presence... yes checking for mad.h... yes checking for mad_bit_init in -lmad... yes checking id3tag.h usability... yes checking id3tag.h presence... yes checking for id3tag.h... yes checking zlib.h usability... yes checking zlib.h presence... yes checking for zlib.h... yes checking for ffmpeg-config... no checking for pkg-config... /usr/bin/pkg-config checking for libavcodec... Package libavcodec was not found in the pkg-config search path. Perhaps you should add the directory containing `libavcodec.pc' to the PKG_CONFIG_PATH environment variable No package 'libavcodec' found checking for libavcodec.a in /ROKU/src/ffmpeg-20051126/... Binary file /ROKU/src/ffmpeg-20051126/libavcodec/libavcodec.a matches /ROKU/src/ffmpeg-20051126/libavcodec/libavcodec.a CONFIG_ZLIB=yes CONFIG_MP3LAME=yes CONFIG_FAAC=yes CONFIG_FAAD=yes checking for libfaad.a in /ROKU/src/faad2-20040923... /ROKU/src/faad2-20040923/libfaad/.libs/libfaad.a checking for zlib.h... (cached) yes checking sysfs/libsysfs.h usability... no checking sysfs/libsysfs.h presence... no checking for sysfs/libsysfs.h... no checking libtar.h usability... no checking libtar.h presence... no checking for libtar.h... no checking for a52.h in /ROKU/src/a52dec-0.7.4/include... yes checking for a52_free in -la52... yes checking FLAC/stream_decoder.h usability... yes checking FLAC/stream_decoder.h presence... yes checking for FLAC/stream_decoder.h... yes checking for libmpeg2.a in /ROKU/src/mpeg2dec-0.4.0... /ROKU/src/mpeg2dec-0.4.0/libmpeg2/.libs/libmpeg2.a checking vorbis/codec.h usability... yes checking vorbis/codec.h presence... yes checking for vorbis/codec.h... yes checking vorbis/vorbisenc.h usability... yes checking vorbis/vorbisenc.h presence... yes checking for vorbis/vorbisenc.h... yes checking png.h usability... yes checking png.h presence... yes checking for png.h... yes checking for png_set_rows in -lpng... no checking for X11/extensions/dpms.h... yes checking for DPMSInfo in X11/extensions/dpms.h... yes checking for xml2-config... /usr/bin/xml2-config checking for xmlTextReaderConstName in -lxml2... yes checking cascade/graphics/CascadeScreen.h usability... yes checking cascade/graphics/CascadeScreen.h presence... yes checking for cascade/graphics/CascadeScreen.h... yes checking cascade/graphics/CascadeBitmap.h usability... yes checking cascade/graphics/CascadeBitmap.h presence... yes checking for cascade/graphics/CascadeBitmap.h... yes checking deschutes/libraries/hdmachinex225/PCMAudioPlayer.h usability... yes checking deschutes/libraries/hdmachinex225/PCMAudioPlayer.h presence... yes checking for deschutes/libraries/hdmachinex225/PCMAudioPlayer.h... yes checking for main in -lHDMachineX225... no configure: WARNING: --{en|dis}able-wxwindows is deprecated. Use --{en|dis}able-wxwidgets instead. checking whether the byte order is big-endian... no configure: creating ./vlc-config.in configure: creating ./config.status config.status: creating Makefile config.status: creating activex/Makefile config.status: creating activex/axvlc.inf config.status: creating debian/Makefile config.status: creating doc/Makefile config.status: creating intl/Makefile config.status: creating ipkg/Makefile config.status: creating lib/Makefile config.status: creating loader/Makefile config.status: creating modules/Makefile config.status: creating mozilla/Makefile config.status: creating m4/Makefile config.status: creating po/Makefile.in config.status: creating share/Makefile config.status: creating modules/access/Makefile config.status: creating modules/access/dshow/Makefile config.status: creating modules/access/dvb/Makefile config.status: creating modules/access/mms/Makefile config.status: creating modules/access/pvr/Makefile config.status: creating modules/access/v4l/Makefile config.status: creating modules/access/cdda/Makefile config.status: creating modules/access/rtsp/Makefile config.status: creating modules/access/vcd/Makefile config.status: creating modules/access/vcdx/Makefile config.status: creating modules/access/screen/Makefile config.status: creating modules/access_filter/Makefile config.status: creating modules/access_output/Makefile config.status: creating modules/audio_filter/Makefile config.status: creating modules/audio_filter/channel_mixer/Makefile config.status: creating modules/audio_filter/converter/Makefile config.status: creating modules/audio_filter/resampler/Makefile config.status: creating modules/audio_mixer/Makefile config.status: creating modules/audio_output/Makefile config.status: creating modules/codec/Makefile config.status: creating modules/codec/cmml/Makefile config.status: creating modules/codec/dmo/Makefile config.status: creating modules/codec/ffmpeg/Makefile config.status: creating modules/codec/spudec/Makefile config.status: creating modules/control/Makefile config.status: creating modules/control/http/Makefile config.status: creating modules/control/corba/Makefile config.status: creating modules/demux/Makefile config.status: creating modules/demux/asf/Makefile config.status: creating modules/demux/avi/Makefile config.status: creating modules/demux/mp4/Makefile config.status: creating modules/demux/mpeg/Makefile config.status: creating modules/demux/playlist/Makefile config.status: creating modules/demux/util/Makefile config.status: creating modules/gui/Makefile config.status: creating modules/gui/beos/Makefile config.status: creating modules/gui/pda/Makefile config.status: creating modules/gui/macosx/Makefile config.status: creating modules/gui/qnx/Makefile config.status: creating modules/gui/skins2/Makefile config.status: creating modules/gui/wxwidgets/Makefile config.status: creating modules/gui/wince/Makefile config.status: creating modules/misc/Makefile config.status: creating modules/misc/dummy/Makefile config.status: creating modules/misc/memcpy/Makefile config.status: creating modules/misc/network/Makefile config.status: creating modules/misc/testsuite/Makefile config.status: creating modules/misc/playlist/Makefile config.status: creating modules/misc/xml/Makefile config.status: creating modules/mux/Makefile config.status: creating modules/mux/mpeg/Makefile config.status: creating modules/packetizer/Makefile config.status: creating modules/services_discovery/Makefile config.status: creating modules/stream_out/Makefile config.status: creating modules/stream_out/transrate/Makefile config.status: creating modules/video_chroma/Makefile config.status: creating modules/video_filter/Makefile config.status: creating modules/video_filter/swscale/Makefile config.status: creating modules/video_output/Makefile config.status: creating modules/video_output/directx/Makefile config.status: creating modules/video_output/qte/Makefile config.status: creating modules/video_output/x11/Makefile config.status: creating modules/visualization/Makefile config.status: creating modules/visualization/visual/Makefile config.status: creating modules/visualization/galaktos/Makefile config.status: creating config.h config.status: config.h is unchanged config.status: executing depfiles commands config.status: executing default-1 commands config.status: creating po/POTFILES config.status: creating po/Makefile config.status: creating vlc-config vlc configuration -------------------- vlc version : 0.8.4a system : elf architecture : mipsel build flavour : debug optim devel vlc aliases : You can tune the compiler flags in vlc-config. To build vlc and its plugins, type `make'. [root@laptop vlc-0.8.4a]#
Here's how I ran configure (contents of script roku-configure):

Code: Select all

CFLAGS="-I/usr/tools/roku/mipsel-linux/include -I/ROKU/usr/share/rokudev/usr/include -I/mnt/flash1/vlc/include -I/ROKU/usr/include -I/ROKU/usr/local/include -I/ROKU/usr/local/include/roku -I/usr/tools/roku/include" \ CPPFLAGS="-I/usr/tools/roku/mipsel-linux/include -I/ROKU/usr/share/rokudev/usr/include -I/mnt/flash1/vlc/include -I/ROKU/usr/include -I/ROKU/usr/local/include -I/ROKU/usr/local/include/roku -I/usr/tools/roku/include" \ CXXFLAGS="-I/usr/tools/roku/mipsel-linux/include -I/ROKU/usr/share/rokudev/usr/include -I/mnt/flash1/vlc/include -I/ROKU/usr/include -I/ROKU/usr/local/include -I/ROKU/usr/local/include/roku -I/usr/tools/roku/include" \ LDFLAGS="-L/usr/tools/roku/mipsel-linux/lib -L/ROKU/lib -L/ROKU/usr/local/lib -L/ROKU/usr/share/rokudev/usr/lib -L/mnt/flash1/vlc/lib -L/usr/tools/roku/lib" \ CC=mipsel-linux-gcc CXX=mipsel-linux-g++ AR=mipsel-linux-ar LD=mipsel-linux-ld RANLIB=mipsel-linux-ranlib STRIP=mipsel-linux-strip \ ./configure \ --host=mipsel \ --disable-release \ --enable-debug \ --enable-trace \ --enable-mostly-builtin \ --prefix=/mnt/flash1/vlc \ --disable-hal \ --disable-sdl \ --enable-mad \ --enable-libmpeg2 --with-libmpeg2-tree=${SRC}/mpeg2dec-0.4.0 \ --enable-dvbpsi \ --disable-vcd --disable-vcdx --disable-cdda --disable-cddax --disable-libcdio --disable-libcddb \ --disable-dvd --disable-dvdread --disable-dvdnav --disable-dvdplay \ --disable-dshow --disable-directx --disable-wingdi --disable-waveout \ --disable-macosx --disable-coreaudio --disable-quicktime \ --disable-bonjour \ --disable-daap \ --disable-wxwidgets \ --disable-opengl \ --enable-png \ --disable-mpc \ --disable-smb \ --disable-gnutls \ --disable-vlm \ --disable-qnx \ --enable-ncurses \ --disable-corba \ --disable-mozilla \ --disable-mga \ --disable-svgalib --disable-ggi --disable-glide \ --disable-aa --disable-caca \ --disable-qte --disable-qt_video \ --disable-livedotcom \ --disable-corba \ --disable-v4l \ --disable-pvr \ --disable-satellite --disable-dvb \ --disable-slp \ --disable-speex \ --enable-ffmpeg \ --with-ffmpeg-mp3lame \ --with-ffmpeg-faac \ --with-ffmpeg-zlib \ --with-ffmpeg-tree=${SRC}/ffmpeg-20051126/ \ --disable-tremor \ --disable-tarkin \ --disable-theora \ --disable-mod \ --disable-mkv \ --enable-a52 \ --with-a52=/ROKU/src/a52dec-0.7.4 \ --with-a52-tree=/ROKU/src/a52dec-0.7.4 \ --disable-dts \ --enable-faad \ --with-faad-tree=/ROKU/src/faad2-20040923 \ --enable-flac \ --enable-vorbis \ --enable-ogg \ --disable-lirc --disable-joystick \ --disable-x11 --disable-xvideo --disable-xosd --disable-glx \ --disable-gtk --disable-gnome --disable-esd \ --disable-gnomevfs \ --disable-wxwindows \ --disable-kde --disable-arts \ --disable-pda --disable-opie \ --disable-cmml \ --disable-skins --disable-skins2 \ --disable-fribidi \ --disable-freetype \ --enable-sout \ --disable-oss --disable-alsa --disable-fb \ --disable-visual --disable-goom \ --disable-screen \ --enable-libxml2 \ --disable-x264 \ --enable-httpd \ --disable-nls \ --with-included-gettext \ --enable-hd1000a --enable-hd1000v
If I re-link "vlc" manually with "-lvorbis -lvorbisenc -logg", it links fine. Can you tell if this is a configure.ac problem, or is something up with my system?

I've added faac, faad, flac, ogg, and vorbis today, and have just begun testing (at this point ogg files cause a segfault... back to gdb :roll:

-S

SimonGales

Building VLC for the Roku HD1000

Postby SimonGales » 05 May 2006 00:18

Let's just ignore that last post, ok? I obviously haven't had enough sleep :oops:. Shame I can't just delete it...

Still getting a segmentation fault when I try to play an ogg, but I'll work on that tomorrow.... btw, I love the HTTP interface!

-Simon

SimonGales
Blank Cone
Blank Cone
Posts: 16
Joined: 05 May 2006 00:20
Location: Smyrna, TN

Building VLC for the Roku HD1000

Postby SimonGales » 05 May 2006 21:57

Ok, I'm giving up on Ogg/Vorbis for now (grrr). VLC either gives me a "Segmentation fault" or says it doesn't know how to play it (no decoder).
Onwards to better things...

Code: Select all

# ./vlc Bomb.ogg VLC media player 0.8.4a Janus Remote control interface initialized, `h' for help status change: ( New input: Bomb.ogg ) status change: ( audio volume: 256 ) status change: ( play state: 1 ) Segmentation fault # gdb ./vlc GNU gdb 2003-07-16-cvs Copyright 2003 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "mipsel-unknown-linux-gnu"... (gdb) run Bomb.ogg Starting program: /mnt/flash1/vlc/bin/vlc Bomb.ogg VLC media player 0.8.4a Janus Program received signal SIG32, Real-time event 32. 0x2ad5bf84 in sigset () from /lib/libc.so.6 (gdb) bt #0 0x2ad5bf84 in sigset () from /lib/libc.so.6 Cannot access memory at address 0x1c0 (gdb)
Yes, I've tried other ogg's...
Stepping through with gdb shows it getting the segfault when loading the vorbis plugin...

SimonGales
Blank Cone
Blank Cone
Posts: 16
Joined: 05 May 2006 00:20
Location: Smyrna, TN

Building VLC for the Roku HD1000

Postby SimonGales » 06 May 2006 13:49

Another possible bug when building with --disable-plugins:

When linking the vlc binary, the make process doesn't include libvlc, causing many undefined reference errors.

Adding "-L./lib -lvlc" to the link command generates vlc properly.

Is there something I can change in configure.ac to fix this (only needed when --disable-plugins is set)?


-S

SimonGales
Blank Cone
Blank Cone
Posts: 16
Joined: 05 May 2006 00:20
Location: Smyrna, TN

Patches for VLC 0.8.5 for Roku HD1000

Postby SimonGales » 08 May 2006 00:25

I've built a working VLC 0.8.5 audio player for the ROKU HD1000.

There are two changes to configure.ac, one to provide the libraries needed for the hd1000a module to link, the other ensures that vlc is linked with libvlc.a when plugins are disabled (this should be a problem on any platform?).

Code: Select all

--- ../virgin/vlc-0.8.5/configure.ac 2006-05-06 10:52:25.000000000 -0500 +++ configure.ac 2006-05-07 14:32:21.000000000 -0500 @@ -4121,6 +4121,7 @@ AC_CHECK_HEADERS(deschutes/libraries/hdmachinex225/PCMAudioPlayer.h, [ VLC_ADD_PLUGINS([hd1000a]) AC_CHECK_LIB(HDMachineX225,main,VLC_ADD_LDFLAGS([hd1000a],[-lHDMachineX225 -ldvbpsi -lCascade -lacl -lCascadeCore -lcore])) ]) + VLC_ADD_LDFLAGS([hd1000a],[-lHDMachineX225 -ldvbpsi -lCascade -lacl -lCascadeCore -lcore]) AC_LANG_POP([C++]) fi @@ -5194,6 +5195,7 @@ [if test "${enable_plugins}" = "no" then plugin_support=false + VLC_ADD_LDFLAGS([vlc],[-L./src -lvlc]) fi]) dnl Automagically disable plugins if there is no system support for
The following diffs are for the hd1000a.cpp module itself, to make it function with the latest ROKU API (I tested with ROKU 2.0.36):

Code: Select all

--- ../virgin/vlc-0.8.5/modules/audio_output/hd1000a.cpp 2006-05-06 10:52:16.000000000 -0500 +++ modules/audio_output/hd1000a.cpp 2006-05-07 13:15:46.000000000 -0500 @@ -48,8 +48,13 @@ *****************************************************************************/ struct aout_sys_t { - u32 nAlignment; - u32 nSizeMultiple; +/* Added by Simon Gales 4/8/06 - New Cascade API (v2.0.36) */ + u32 nMinNumBuffersToSet; + u32 nMinBufferSizeToSet; + u32 nMaxBufferSizeToSet; + u32 nBufferSizeMultipleToSet; +/* u32 nAlignment; */ +/* u32 nSizeMultiple; */ u32 nBuffers; u32 nBufferSize; void ** ppBuffers; @@ -109,9 +114,11 @@ } /* Get Buffer Requirements */ - if( !pPlayer->GetBufferRequirements( p_sys->nAlignment, - p_sys->nSizeMultiple, - p_sys->nBuffers ) ) + if( !pPlayer->GetBufferRequirements( p_sys->nMinNumBuffersToSet, + p_sys->nBuffers, + p_sys->nMinBufferSizeToSet, + p_sys->nMaxBufferSizeToSet, + p_sys->nBufferSizeMultipleToSet ) ) { msg_Err( p_aout, "GetBufferRequirements failed" ); delete pPlayer;
In src/network/rootwrap.c, I undef'd ENABLE_ROOTWRAP, since everything runs as root on the ROKU. This probably shouldn't be applied to the source tree, since it only applies to the ROKU build.
Would have left it in, but IPV6_V6ONLY isn't defined on my system, and undef'ing AF_INET6 got it to compile but hung at runtime.

Code: Select all

--- ../virgin/vlc-0.8.5/src/network/rootwrap.c 2006-05-06 10:52:13.000000000 -0500 +++ src/network/rootwrap.c 2006-05-07 14:56:26.000000000 -0500 @@ -27,6 +27,7 @@ #if defined (HAVE_GETEUID) && !defined (SYS_BEOS) # define ENABLE_ROOTWRAP 1 +# undef ENABLE_ROOTWRAP #endif
That's it. If I get video output working with hd1000v.cpp, there'll be more, but frankly, I'm not sure the ROKU has the RAM available for it.

-Simon


Return to “VLC media player for Linux and friends Troubleshooting”

Who is online

Users browsing this forum: No registered users and 9 guests