Contents |
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
This diagram only presents the implementation of com.UMMS.MediaPlayer interface.
-------------------
|UmmsObjectManager|
-------------------
^
v
|
-------------------- -------------------------
| MediaPlayer | <> ------- | MediaPlayerControl |
-------------------- -------------------------
^ ^ ^
V | |
| | |
---------------------------- Implement Implement
| PlayerControlFactory | | |
---------------------------- | |
| |
--------------------- ------------------------
| PlayerControlBase | | DvbPlayerControlBase | <--------------
--------------------- ------------------------ |
^ ^ ^ |
| | | ------------------------------------
------------------------------ | | | | DvbPlayerControlGeneric (NetBook)|
|PlayerControlGeneric(NetBook)| --------- | | ------------------------------------
------------------------------ ---------------------- -------------------------
|PlayerControlTv(TV) | | DvbPlayerControlTv(TV)|
---------------------- -------------------------
Class to manage MediaPlayer objects, including create/destory, register/unregister MediaPlayer objects.
Class to implement the com.UMMS.MediaPlayer interface which provide media playback service for client.
Factory class to create backend player which implemented MediaPlayerControl interface.
Internal interface. MediaPlayer uses this interface to handle the service request. Backend developer need to implemente this interface.
Base class to handle the non-dvb playback request. It internally uses playbin2 to implement the MediaPlayerControl interface.
A backend used on generic PC platform(e.g. NetBook).
A backend used on TV platform (e.g. CE4100).
Base class to handle the dvb playback request. It creates a custom gstreamer pipeline to play/recode the dvb stream.
Derived class from DvbPlayerControlBase which is used on generic PC platform(e.g. NetBook).
Derived class from DvbPlayerControlBase which is used on TV platform(e.g. CE4100).
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.
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)