Building VLC for the Roku HD1000
Posted: 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
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