I have been thinking about a port of xine to maemo since a long time ago. Maybe you are thinking: “why have xine when you already have gstreamer and mplayer ?”
Well, the problem is that it’s very hard to use mplayer as a backend for media players but it’s actually the best video player for the platform, thanks to Siarhei and some other developers that contribute with the project. It’s very hard because mplayer was not develop having in mind that it would be used by other applications, it’s “just” an application that accepts commands from the standard input. So, it’s very annoying to handle errors and send/receive commands to/from mplayer.
If we had xine for the platform, we could still have mplayer as a video player and also have xine as a library so it would be easier for multimedia applications to make use of all the features provided by xine. I’m specially interested in gapless playback of mp3 files (it’s a feature that Canola’s users just want) and to use every optimization that mplayer has, as it’ll be good for both engines.
I’ve already started playing around with xine. I compiled it on scratchbox and tried on my brand new n810. The audio was just choppy =/ . So I took a look on mplayer’s alsa code and discovered that it would need a trick: instead of sending number_of_frames to alsa, I needed to calc the correct amount of data to send to alsa:
int write_size = number_of_frames / this->bytes_per_frame;
After that, just good sound out of speakers =) . Of course, video playback was nothing compared to mplayer but it has potential, as both share the same ffmpeg library.
So, if you are interested in helping me with this task, you’re welcome 😉