Layers of mm-player

The mm-player service uses a layered design to separate the application logic for the tasks of managing client connections, validating commands, maintaining media source information, managing tracksessions, and interfacing with devices.

The mm-player service consists of three layers:

Client layer
This layer implements the client-side mm-player library (libmmplayer), which:
  • creates and returns connection handles to the client application
  • detects basic parameter errors such as empty strings used for player names or media source IDs
  • forwards API commands and their parameters to the mm-player server
Server layer
This layer implements the mm-player server, which:
  • opens and closes connections to players
  • validates parameters before forwarding commands to the plugin layer
  • publishes updates to player states through PPS
  • manages tracksessions
  • maintains a list of media sources
Plugin layer
This layer consists of many plugins, each of which:
  • notifies the mm-player server of important events, including but not limited to:
    • a media source connection or disconnection
    • a user-requested change in the playback position
    • an error occurred when browsing or playing media
  • creates and returns handles to "play sessions" and "browse sessions" to the server layer, allowing that layer to direct commands to specific media sources
  • uses platform services to carry out playback commands (e.g., play, stop, seek)