(→Class Diagram) |
(→How to develop a backend) |
||
| Line 64: | Line 64: | ||
== How to develop a backend == | == How to develop a backend == | ||
| - | *Step 1: Implement MediaPlayerControl interface | + | *'''Step 1: Implement MediaPlayerControl interface''' |
The MediaPlayerControl is the internal interface to abstract all the media playback control. Backend developer should create a class and implement this interface. | The MediaPlayerControl is the internal interface to abstract all the media playback control. Backend developer should create a class and implement this interface. | ||
| - | *Step 2: Modify PlayerControlFactory | + | *'''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 to contain his custom backend: | + | 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) | MediaPlayerControl* (*engine_factory[PLATFORM_INVALID][N_PLAYER_CONTROL_FACTORY_ENGINE_TYPE])(void) | ||
Contents |
This page describes the architecture of Universal Multi Media Service (UMMS).
UMMS general description can found on its main page
-------------------
|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 provide media playback service.
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 the internal interface to abstract all the media playback control. Backend developer should create a class and implement this interface.
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)