Meego Wiki
Views

UMMS Architecture

From MeeGo wiki
(Difference between revisions)
Jump to: navigation, search
(Class Diagram)
(How to develop a backend)
Line 47: Line 47:
== How to develop a backend ==
== How to develop a backend ==
-
*'''Step 1: Implement MediaPlayerControl interface'''  
+
Suppose you are going to develop a player backend.
 +
*'''Step 1: Subclass UmmsPlayerBackend'''
 +
The UmmsPlayerBackend is internal interface to abstract all the media playback control. Backend developer should subclass this class and implement its vmethods. Of cause, you can just implement a subset of the virtual methods defined in UmmsPlayerBackendClass struct, e.g. For dvb player backend, it is optional to implement the "pause" method. If you want to add time-shifting feature for DVB playback, implementing "pause" method is a choice.
-
The MediaPlayerControl is internal interface to abstract all the media playback control. Backend developer should create a class and implement this interface. Of cause, you can just implement a subset of the virtual methods defined by the interface, e.g. The DvbPlayerControlBase doesn't implement the "pause" method. If you want to add time-shifting feature for DVB playback, implementing "pause" method is a choice.
+
*'''Step 2: Define UmmsPlugin struct in your .c file'''
-
 
+
-
*'''Step 2: Modify PlayerControlFactory'''
+
-
 
+
-
All the backend selection logic is contained in PlayerControlFactory class. For now, PlayerControlFactory creates the appropriate backend(named "engine" in the source code) according to platform information and the URI. The Developer should modify the function pointer array(in player-control-factory.c) to contain his custom backend:
+
-
MediaPlayerControl* (*engine_factory[PLATFORM_INVALID][N_PLAYER_CONTROL_FACTORY_ENGINE_TYPE])(void)
+

Revision as of 14:03, 17 April 2012

Contents

UMMS Architecture

Introduction

This page describes the architecture of umms-0.1, you can get the code from: git://gitorious.org:meego-middleware/umms.git
UMMS general description can found on its main page

Class Diagram

ClassDiagramUmms-0.1.png

  • UmmsAudioManager

Class to implement com.UMMS.AudioManager interface which provide client with audio output control service.

  • UmmsVideoOutput

Class to implement com.UMMS.VideoOutput interface which provide client with video output control service.

  • UmmsPlayingContentMetadataViewer

Class to implement com.UMMS.PlayingContentMetadataViewer interface which allow the client to query the current playing content on server side.

  • UmmsObjectManager

Class to manage MediaPlayer objects, including create/destory, register/unregister MediaPlayer objects.

  • UmmsMediaPlayer

Class to implement the com.UMMS.MediaPlayer interface which provide media playback service for client.

  • UmmsPlayerBackend

A base class which defined internal interface for media playback. UmmsMediaPlayer uses this class to handle the service request. Backend developer need to subclass it.

  • UmmsAudioManagerBackend

A base class which defined internal interface for controlling audio output. UmmsAudioManager uses this class to handle the service request. Backend developer need to subclass it.

  • UmmsVideoOutputBackend

A base class which defined internal interface for controlling video output. UmmsVideoOutput uses this class to handle the service request. Backend developer need to subclass it.

  • UmmsPlugin

A class which defined the plugin mechanism. All backend should be implemented as a UmmsPlugin.

  • Player

An implementation of UmmsPlayerBackend.

  • AudioManger

An implementation of UmmsAudioBackend.

  • VideoOutput

An implementation of UmmsVideoOutput.

Note that, Player,AudioManger,VideoOutput are plugins and will not provide by umms-1.0.

How to develop a backend

Suppose you are going to develop a player backend.

  • Step 1: Subclass UmmsPlayerBackend

The UmmsPlayerBackend is internal interface to abstract all the media playback control. Backend developer should subclass this class and implement its vmethods. Of cause, you can just implement a subset of the virtual methods defined in UmmsPlayerBackendClass struct, e.g. For dvb player backend, it is optional to implement the "pause" method. If you want to add time-shifting feature for DVB playback, implementing "pause" method is a choice.

  • Step 2: Define UmmsPlugin struct in your .c file
Personal tools