Launchpad Entry: https://launchpad.net/distros/ubuntu/+spec/ubuntu-media-center
Created: 2006-04-23 by Sébastien GRIPON
Contributors: Sébastien GRIPON, UbuntuMediaCenterTeam
This is the specification of the kernel of the Ubuntu Media Center (MC). See UbuntuMediaCenter.
Ubuntu MC kernel has to manage essential features of the software. These features are listed below :
- Initialization of the kernel: all resources and settings are initialized by the kernel. This initialization includes the loading of the default UI set up by the user.
- Initialization of additional modules: the kernel detects installed modules and launch initialization of active ones. Active modules are defined in the MC Control Panel.
- Management of the display engine: the kernel is able to create and display graphical objects. A set of graphical objects is available to additional modules in order to let them display their proper information. Theme management is encapsulated in the graphical objects: additional modules don't have worry about the theme.
OuattaraAziz : Wouldn't it be more efficient to have a UI module ? We might define an Interface for UI module so that other modules won't have to worry about the UI management.
- Management of user interaction: following the different commands received by the MC kernel, many actions can be done. A set of authorized commands is defined . These commands are mapped on active device actions: keyboard, mouse or remote control. Commands are treated by the kernel are redirected to additional modules following the current state of the MC.
OuattaraAziz : Controller Interface definition ? introducing a notion of controller modules.
- Management of modules: the kernel is able to run or stop the execution of modules. It can also ask a module to run in background, without any display or with a display in a thumbnail.
- Management of the main menu: once the MC is initialized, the main menu is displayed. The main menu contains buttons to run modules. It can also contain other information like date and time. Moreover, some parts of the main menu screen are reserved for the module running in background. For exemple, if the TV module is running in background, a screen area is reserved to display the TV playback.
- The display engine.
Screens of the user interface are described in XML files. The DTD for XML screen files will be available soon. A screen designer software will be developped in order to build extension modules very easibly and quickly. The display engine is made of a kernel and extensions plugins. A set of basic extensions plugins will be available with the first release and usable in the screen designer. There is several categories of extensions plugins : viewers, listers, ... A complete list will be defined later. The originality of the display engine is that it is very easy to extend its capacity building few files. For example, the TV module will define in the screen designer a "widget" on the screen where the TV image must be drawn. This widget is associated with a "Viewer" plugin: this plugin will display the TV in the widget area.
- Going to the video context (UI may show the video menu )
Use Dia ( apt-get install dia ) to modificate that file if wanted
What is a MediaContext ?
- It's a set of functionalities related to one Media type. Just like when you open your video or TV player, you have a set of functionalities. A context is an equivalent of that. We can work on that concept in 2 steps :
- First let's just implements things so that the "goVideoContext()" will just launch a chosen Video player (like Totem) .
- Secondly, we could make a sumary of the common functionalities of all contexts and then develop an utilities library that will be used to abstract the player we use for the concerned context.
- The end of this would be a dynamic configuration of the player of a context (to be able to use the best player for each type of file).
- As you can see in the Activity diagram, the UI's only impact is on the user. That means UI is neither a controller, nor the Media Center Kernel, nor a player. It's a view. That also means that the UI will need the maximum of information from the kernel to be as user friendly as possible. UI team will just have to ask the kernel team to add new API each time they need one. The kernel team will also request an API from the UI team (goVideoContext, Fullscreen ... ) . Corresponding visual effects are the choice of UI module developpers.
Data preservation and migration