shotgunefx has asked for the wisdom of the Perl Monks concerning the following question:
I've been working for some time on a Perl based media player for my car (Linux).
I was initially utilizing SDL and XMMS, and then SDL only as XMMS. The problem is, it seems SDL_Perl isn't under very active development and, perhaps it's just my experience, it's fragile as hell.
I had some other issues, mainly leaking lot's of memory, but in the spirit of OSS, I tracked them down, squashed them and provided patches and added a feature or two.
Not sure if they were integrated into the newest build yet, but it doesn't matter as the newest build doesn't build. Been waiting for near two months on that and the dev list is pretty much dead. This isn't a knock against anyone involved with those projects, I just need to find something more stable and/or more actively maintained.
I can't even add my own patches as I can't get Perl_SDL to build with the apt stuff alone, which means all source, which would be fine, except no matter how many times I try, something essential is whacky. (Horrible sound with static unless I specify 48000 as the mixer rate, most mp3s play twice as fast if do specify 48000, etc)
I basically want similar screen handing to SDL, pretty simple, just blitting sprites and mouse/keyboard events, and the ability to play MP3 and maybe OGG. Video is not a requirement, but it wouldn't hurt.
Anyone have any suggestions or am I stuck just rebuilding the wheel? My free time is pretty sparse right now, but as it stands, I've spent 20x the effort screwing around with the SDL install, then the media player software. I'm at my wit's end, if I have to do a clean install again, I'm going to put my foot through it.
Thanks,
-Lee
"To be civilized is to deny one's nature."
Re: Alternatives to SDL
by zentara (Archbishop) on Feb 06, 2007 at 21:06 UTC
|
| [reply] |
|
| [reply] |
Re: Alternatives to SDL
by Joost (Canon) on Feb 06, 2007 at 21:07 UTC
|
If you just want to play songs one after the other, you might be better off using a stand alone command line player like mplayer it plays very nearly everything if you've got the right codecs.
Another option is gstreamer, which is the gnome media playing framework. It has a perl API and should also play a lot of different formats, but you might have to work your way through a lot of non-perl documentation to get it to work.
update: as for imaging, if you're going with GStreamer, GTK2 will probably integrate nicely and it has the nice TK2::Canvas Gnome::Canvas interface that will let you do nice looking structured drawing.
| [reply] |
|
I would probably go with Tk::Zinc myself, for the simple reason that it has scalable text, i.e. you can make the text objects zoom to size with the other items. The Tk canvas and Gnome2::Canvas can't do that, you need to switch fonts. Zinc also supports alpha layers so you can make cool buttons and effects.
| [reply] |
|
| [reply] |
|
| [reply] |
|
| [reply] |
|
| [reply] |
|
|
Re: Alternatives to SDL
by Corion (Patriarch) on Feb 06, 2007 at 22:09 UTC
|
Depending on whether you want an integrated toolkit or are prepared to fudge your UI together from single parts, maybe going back to OpenGL for the drawing (via the MESA software renderer or some supported hardware renderer) and using the fmod library for the mixing and playback of whatever sound you have could be a solution.
OpenGL has the advantage of having Perl bindings available and it has Glut, a somewhat basic user interface library. It completely lacks widgets and doesn't have much in the way of event handling though.
Fmod is a commercial library which is gratis for open source projects and I had great success in playing back mp3 files with it. I didn't bother to fudge around with other solutions but if fmod is ruled out, maybe the Ffmpeg modules (both, the command line or the XS variant) might provide adequate playback functionality.
| [reply] |
|
| [reply] |
Re: Alternatives to SDL
by Anonymous Monk on Feb 06, 2007 at 23:23 UTC
|
| [reply] |
Re: Alternatives to SDL
by shotgunefx (Parson) on Feb 14, 2007 at 12:51 UTC
|
An update, after looking at some of the alternatives (and how much work I'd have to do to refactor), I decided to give it one last final shot.
I hunted down everything SDL related and manually deleted it. (Ubuntu doesn't want to let SDL-Mixer go without uninstalling ubuntu-desktop).
One problem I've had repeatedly is smpeg. It doesn't seem to be actively developed and half of the mirrors listed aren't up. Not a good sign. I've always had problems getting it to compile (complaints of syntax errors, usually something to do with friend functions).
So I decided to use smpeg and smpeg-dev and hope I could just build everything else from source. Now I just get pure static.
So I decided to try building smpeg again from src (smpeg-0.4.5+cvs20030824). After much head bashing, I determine I need autotools-1.4 installed (I've got 1.9), so I install that, and now I'm getting token errors about AM_PATH_GTK, after much more googling, I find that this should be defined in some GTK m4 file. So I download every gtk dev package I can find, and now the definition is there, but it still doesn't work.
I try running .configure again (after make realclean) and still no dice. I'm about to give up, and find another post on an unrelated autotools problem mentioning something about running autogen.sh
So I run autogen.sh, run ./configure again, and what do you know. It works.
Not only does it work, everything works pretty much flawlessly, even when suspending and restoring.
Unless something happens, pretty sure I'll be looking at these alternatives for future projects, too much frustration with SDL.
Figured I'd just pass along my resolution in case this helps anybody with similar problems.
Here's the packages I used.
The last source of SDL_Perl-2.1.3 I could get to build, with all my patches to fix the memory leaks, and the addition of panning to SDL::Mixer along with some related constants (the pod has been updated as well), it's available here.
mySDL-Perl-2.1.3.tar.gz
The following sources.
freetype-2.1.10.tar.gz
jpegsrc.v6b.tar.gz
SDL-1.2.11.tar.gz
SDL_gfx-2.0.13.tar.gz
SDL_image-1.2.5.tar.gz
SDL_mixer-1.2.7.tar.gz
SDL_net-1.2.6.tar.gz
SDL_ttf- 2.0.8.tar.gz
smpeg-0.4.5+cvs20030824
For the GL stuff, I just used the ubuntu packages.
Again, thanks for all the input.
-Lee
"To be civilized is to deny one's nature."
| [reply] |
|
|