Your donation to improve these apps is always appreciated!
Before you buy please read the refund policy
Overview
PlayerX is a media front end for playback in Linux & Windows systems. It is written using the latest version of the Gimp toolkit GT http://www.gtk.org/ for Windows and UNIX.
Player X is based on ideas of media players such as: WinAmp (win32), XINE, and others. What makes PlayerX unique is its complete multiplatform support. The Core player compiles and runs in Windows or Linux systems without modificatiions whatsoever.
PlayerX has the following features:
- Multi-platform support: Linux & Windows running the Gimp Toolkit.
- Skin based interface ported from GQMpeg http://gqmpeg.sourceforge.net/
- Available skins:
- built-in: Chrome (ported from XINE)
- Galaxy: Ported from XINE
- Toothy by Microsoft (taken from win32 media player)
- Built-in Pluging support: All media playback is done thru plugins.
- Available plugings are:
- Linux: MPG (for mp3 layer 1,2,3 playback), GnomeCD (for CD playback)
- Windows:
- MPG (for mp3 layer 1,2,3 playback)
- MCI - Media Control Interface: for wav, avi, midi, and CD audio playback
Architecture
Core
The Core PlayerX program loads the skin based user interface and the plugins installed in the user's home.
Plugins are located in:
User's home directory
- $HOME/.player_x/plugings (linux)
- C:\Documents and Settings\Administrator\.player_x\plugings (win32)
Env var: PX_PLUGINS_HOME
Skins are loaded from: User's home directory
- $HOME/.player_x/skins (linux)
- C:\Documents and Settings\Administrator\.player_x\skins (win32)
Plugin Architecture
Plugins are loaded by reading a simple plugin.xml spec file located in the folder described above. The XML file describes symbols or functions the plugin must implement as well as mime types supported & menu extensions to the Core Popup menu. For example:
<!-- Win32 MCI plugin spec file -->
<plugin name="MCI Plugin" shortdesc="Media Control Interface Plugin"
lib="mci" >
<!-- The symbols/methods are required and must be implemented -->
<symbol signal="S_PLAY" name="mciWndPlay" />
<symbol signal="S_STOP" name="mciWndStop" />
<symbol signal="S_PAUSE" name="mciWndPauseResume" />
<symbol signal="S_ACTIVE" name="mciWndActive" />
<symbol signal="S_GET_LENGTH" name="mciWndLength" />
<symbol signal="S_SEEK_FRAME" name="mciWndSeek" />
<symbol signal="S_STREAM_INFO" name="mciWndOpen" />
<!-- volume methods -->
<symbol signal="S_GET_VOLUME" name="mciWndGetVolume" />
<symbol signal="S_SET_VOLUME" name="mciWndSetVolume" />
<!-- These symbols control the Audio CD Playback -->
<!-- They are optional -->
<symbol signal="S_AUCD_START" name="mciWndPlayCD" />
<symbol signal="S_AUCD_NEXT" name="mciWndNextCDTrack" />
<symbol signal="S_AUCD_PREV" name="mciWndPrevCDTrack" />
<!-- Supported mime types: -->
<!-- Tells the core what files can be loaded into the playlist -->
<mime ext=".wav" type="audio/wav" />
<mime ext=".avi" type="audio/avi" />
<mime ext=".mid" type="audio/midi" />
<!-- Core Popup menu extensions -->
<!-- They will beadded to the main plugins popup menu -->
<menu name="Start CD player" icon="gtk-cdrom" action="mciWndPlayCD" />
<menu name="Next CD track" icon="" action="mciWndNextCDTrack" />
<menu name="Prev CD track" icon="" action="mciWndPrevCDTrack" />
</plugin>
Skin Interface
The skin library (libskin.{dll,so}) is a port from the GQMPeg SLIK skin interface (http://gqmpeg.sourceforge.net/) modified to compile and run in win32.
Modifications from the original SLIK branch include:
- Skin specs are based on XML instead of plain text files
- Miscellaneous imporvements: Tootip additions, etc.
Player X XML Skin specification uses the following widgets for media playback. All names of the widgets are required and cannnot change.
<!-- Galaxy Skin XML -->
<!-- XML Skin SPEC - See SKINSPEC.DTD -->
<!-- Main Background -->
<ui name="main"
image="MainBg.png"
focus_alpha="0">
<!-- media navigation btns: play.pause, stop, next, prev -->
<button name="next"
prelight="TRUE"
image="MainNext.png"
y="88"
x="156" />
<button name="play"
prelight="TRUE"
indicator="TRUE"
image="MainPlay.png"
y="88"
x="76" />
<button name="stop"
prelight="TRUE"
indicator="TRUE"
image="MainStop.png"
y="88"
x="50" />
<button name="prev"
prelight="TRUE"
image="MainPrev.png"
y="88"
x="129" />
<!-- these btns control the device type: Media files (Audio) and CD -->
<button name="btnAudio"
prelight="TRUE"
image="MainAU.png"
y="2"
x="305" />
<button name="btnCD"
prelight="TRUE"
image="MainCD.png"
y="5"
x="340" />
<button name="playlist"
prelight="TRUE"
image="MainEject.png"
y="88"
x="182" />
<button name="exit"
prelight="TRUE"
image="MainPower.png"
y="86"
x="8" />
<!-- Song & timer labels -->
<text name="titlelabel"
data="Title goes here "
image="LettersTitle.png"
length="25"
y="35"
x="20" />
<text name="timelabel"
data="00:00:00"
image="LettersTitle.png"
length="12"
y="35"
x="200" />
<text name="applabel"
data="MP3 Player"
image="LettersTitle.png"
length="10"
y="100"
x="293" />
<!-- 2 sliders: volume and song playback -->
<slider name="volume"
sizeable="FALSE"
stretch="FALSE"
border_2="0"
border_1="0"
trough_length="70"
vertical="FALSE"
reversed="FALSE"
prelight="FALSE"
pressable="FALSE"
length="70"
y="56"
x="345"
image="MainVolumeBg.png" />
<slider name="play"
sizeable="FALSE"
stretch="FALSE"
border_2="0"
border_1="0"
trough_length="250"
vertical="FALSE"
reversed="FALSE"
prelight="FALSE"
pressable="FALSE"
length="236"
y="57"
x="36"
image="SliderHBg.png" />
</ui>
Plugin List
- MPG (Linux/Win32): For mp3 playback
- GnomeCD (Linux): For audio CD playback
- MCI CDAudio (Win32): For Audio CD devices under Windows
- MCI WAV/MIDI (Win32): For WAVE/MIDI playback under windows
Author: Vladimir Silva
|