> It required re-writing a bunch of code in LinuxMCE to use MPlayer instead of Xine.
> I am most perplexed by the descision to go to MPlayer as the primary media player. Xine is much better designed.
> And furthermore, this whole code base is modular, why did it take a rewrite to make MPlayer work? shouldn't this set off big ass alarm bells? This would be indicative of a design that needs serious revision, if not auditing at the very least.
In LinuxMCE there presently exists a wrapper for Xine that has all the hooks in the xine engine for jumping to certain positions, reporting time code, handling playback speed and trick play, etc., and which communicates over a socket to the media plugin and other core LinuxMCE modules. By re-writing the code I don't mean we had to change the existing modules, I mean we had to re-write the same type of wrapper that exists for Xine for Mplayer. It was a lot of work to get timecode out of MPlayer, do all the positioning and seeking and trick play and stuff. This didn't set off alarm bells because I don't think there is any other way; the time involved was dependent on MPlayer's design, not LinuxMCE's. I think the overall architecture was good because we were able to remove xine and insert mplayer without changing any of linuxmce's media logic modules. But there's a couple dozen commands the media logic modules need to send the media player, like getting time code, setting position, etc., so there's always going to be work to make a wrapper for a new media engine. If MPlayer itself had a socket-based control layer, so we could just translate from LinuxMCE's DCE protocol to MPlayer's it would have been easy. But MPlayer didn't have such a control layer and that's why it required a lot of code.
As far as why we switched to MPlayer.... There has been little development on Xine lately and nobody was working on hd-dvd/blu-ray support for xine. According to the Ubuntu forums, you need to use MPlayer: https://help.ubuntu.com/community/RestrictedFormats/BluRayAndHDDVD
Before we started down that path we tried to port the patches that had already been done for MPlayer to Xine, but it was taking too long. It was faster to write a new LinuxMCE wrapper for MPlayer.