MPlayer Player

From LinuxMCE
Revision as of 15:14, 14 January 2010 by Niz23 (Talk | contribs)

Jump to: navigation, search








Basics

LMCE use two different media players. MPlayer and Xine. Even though both players do much the same they work very different.


To control mplayer with a DCE device one have to start mplayer in slave mode. This approach have a disadvantage, mplayer will run in it´s own thread making it more difficult to control. Xine on the other hand is a library that is completely integrated in to Xine_Player. To make it easier we use libplayer, gpl library that abstract the control part in to a simple api. Libplayer is written in C and have a single simple api to control backendend players. Atm libplayer support 4 different backend players. GStreamer, MPlayer, Xine and vlc. To use libplayer you the only thing one have to take care of is to create a X11 Window and fetch it´s window id then pass that into libplayer. When that is done you create a player and specify which of the 4 backend player types it shall be. It´s possible to use different backend players to playback different media types. For example m2ts can use mplayer and avi use xine. Libplayer have internal logic to make all it possible to use the same X11 window for all 4 backend players.


All communication between LMCE and MPlayer_Player is done through DCERouter.


Features

  • Uses mplayer through slave mode.
  • Support VDPAU with fallback to XV (obey HW Accel setting done in lmceadmin)
  • libplayer to abstract mplayer mplayer communication and internals.
  • Support playback of almost any video file you can find.
  • Play
  • Pause
  • Fast Forward (jump +15s for each keypress)
  • Rewind (jump -15s for each keypress)


TODO

  • Status feedback back to lmce. libplayers eventhandler can be used here this way we get correct status back to lmce.
  • Bookmark
  • Screenshot
  • OSD (A simple OSD can be implemented to show what is going on
  • Push mediafile metadata back to lmce. Like codec used, playback length etc.
  • Make use of deInterlace settings in lmceadmin. MPlayer_Player already know which setting is set but do not take advantage of it.
  • Better use of SmartPlaylists(). As in automatically identify if a media consist of several files.


Architecture

MPlayer Player Schematic.jpg