hi all,
I'm interested in playing mp3/asf streams over the network (for streaming live bbc and various mp3 podcasts for example). After toying with mplayer, vlc, deadbeef and being slightly overwhelmed by their dependencies (ok, deadbeef is not so bad) I came acrosss gstreamer and its crazy modular pipeline, which is already on the kindle. great!
Predictably the kindle's playbin module only supports playing from files.
Code:
gst-launch playbin uri=file:///path/to/file.mp3
works fine on the kindle. using
uri=http://foo.com/bla.mp3 results in the following error:
No URI handler for http
I used NiLuJe's invaluable x-compile logs to get a working cross compile toolchain (managed to compile and run netcat with the -e option so it seems to work--more on that in another post).
Thanks NiLuJe!!. I have my build environment installed in a vbox guest running ubuntu maverick.
I downloaded amazon's sources to make sure I had the right versions and set about compiling gstreamer-0.10.17.
After some battling I managed to get alsa-lib-1.0.13, glib-2.22, libxml2-2.7.8 (NOT an amazon source but gstreamer complained it needed it before configure would complete to I obliged). Whether any of these will actually work on the kindle remains to be seen
At some point in the gstreamer build process it dies with this error:
Code:
arm-kindle-linux-gnueabi-gcc -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -fno-stack-protector -U_FORTIFY_SOURCE -o .libs/gst-xmllaunch-0.10 -pthread gst_xmllaunch_0.10-gst-launch.o -L/home/kindle/lib ../gst/.libs/libgstreamer-0.10.so /home/kindle/lib/libgobject-2.0.so /home/kindle/lib/libgthread-2.0.so /home/kindle/lib/libgmodule-2.0.so /home/kindle/lib/libglib-2.0.so -lrt -Wl,--rpath -Wl,/home/kindle/lib
gst_xmllaunch_0.10-gst-launch.o: In function `main':
/home/dent/build/gstreamer/gstreamer-0.10.17/tools/gst-launch.c:662: undefined reference to `g_malloc0_n'
../gst/.libs/libgstreamer-0.10.so: undefined reference to `g_realloc_n'
../gst/.libs/libgstreamer-0.10.so: undefined reference to `g_malloc_n'
collect2: ld returned 1 exit status
make[2]: *** [gst-xmllaunch-0.10] Error 1
make[2]: Leaving directory `/home/dent/build/gstreamer/gstreamer-0.10.17/tools'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dent/build/gstreamer/gstreamer-0.10.17'
make: *** [all] Error 2
Now, I'm comfortable enough tinkering with software but have very little experience cross-compiling (so far).
It looks like
gstreamer-0.10.17/tools/gst-launch.c is using g_malloc0_n in a few places. Looking at glib's docs though I see that that function (and g_realloc_n and g_malloc_n) were introduced in glib-2.24. So it seems reasonable my cross compiled glib-2.22 doesn't define them as confirmed by:
Code:
nm /home/kindle/lib/libglib-2.0.so.0 | grep g_malloc
0003e750 t IA__g_malloc
0003e6b0 t IA__g_malloc0
0003e750 T g_malloc
0003e6b0 T g_malloc0
Finally, my question

Does this mean:
- it's not possible to cross compile gstreamer-0.10.17 against glib-2.22. This seems unlikely as it begs the question, why has amazon distributed those particular versions?
- Having glib-2.26 on my host maverick system is what's triggering this and building on an older ubuntu/debian with glib-2.22 would be better? I don't see why that *should* be the case? The compilation process should only be paying attention to includes and libs in /home/kindle, right?
- Something completely unrelated
For reference, i configured gstreamer with:
Code:
CFLAGS="-fno-stack-protector -U_FORTIFY_SOURCE" CXXFLAGS="-fno-stack-protector -U_FORTIFY_SOURCE" CPPFLAGS=-I/home/kindle/include LDFLAGS=-L/home/kindle/lib ./configure --prefix=/home/kindle --build=i686-linux-gnu --host=arm-kindle-linux-gnueabi --disable-nls --disable-examples --disable-valgrind --disable-failing-tests --without-libiconv-prefix --without-libintl-prefix
Any help/tips for moving forwards greatly appreciated. Cheers!
dent