|Mex Reference Manual|
Media Explorer is a single project, but it is composed of several interrelated libraries and applications. The points below explain these parts and where they live in the source tree:
libmex is a library
It lives in the
Media Explorer is the application, built with the libmex library. Note that the libmex classes could be used to build alternative UXs: see this diagram for a (very) high-level overview of the classes available.
It lives in the
The player (in a directory with the same name) exposes the Media Explorer player over DBus. The core functionality is documented in MexMediaDBUSBridge.
plugins directory (in the
source code) contains various Media Explorer plugins, which
extend the functionality of the basic libmex library.
This is where the
Media Explorer Tracker
plugin lives (in the
Search and queue are also implemented as plugins, also in this directory.
Media Explorer also integrates with various other libraries and services, as described in this section.
Media Explorer was designed to integrate smoothly with the MeeGo software stack. Consequently, there are a number of points where Media Explorer integrates with other libraries and services; see this diagram for an overview (as seen by jhbuild dot).
GUPnP. This is part of the standard MeeGo UPnP stack. It is a low-level implementation that provides the raw UPnP protocol: it has no APIs for higher-level specifications such as MediaServer:1.
Rygel (also part of MeeGo) is available as a ContentDirectory implementation for sharing media to other devices. However, this is not used at present.
Tracker. This is Media Explorer's metadata store. It holds metadata for both local and removable media, as well as caching data about any UPnP servers discovered. Local and removable media is indexed using standard Tracker methods.
Grilo. This is a media discovery and metadata aggregation library which abstracts content browsing and searching. By default, Media Explorer uses Grilo to enable browsing and searching of local files and content on UPnP servers.
Configuring other Grilo plugins can enable access to further
content sources: see
GStreamer. The media player is a GStreamer-based daemon with a DBus API. It uses the GStreamer playbin2 element for playback, so hardware acceleration is used if suitable elements are installed.
DBus. The media player exposes a DBus API to other applications.
Clutter. Clutter is a low-level drawing toolkit which abstracts and simplifies the OpenGL API. Clutter doesn't mandate a particular look and feel: this is provided by toolkits built on top of Clutter (like Mx, see below).
Mx. Mx is a high-level toolkit built on top of Clutter. It provides an application model and a variety of widgets such as buttons, dialogs and toolbars.
While Media Explorer was designed with MeeGo in mind, it is perfectly possible to build and run it on other distributions (e.g. Fedora). However, bear in mind that it uses some libraries which may either be unavailable for your distro (e.g. Mx, Grilo) or at versions which are too old (e.g. DBus, Tracker). If your distro is too outdated, one solution is to build Media Explorer with jhbuild: this section explains how.
The input device is expected to have a 5-way d-pad (up/down/left/right/activate), back, information and home keys. These are the primary navigation keys, and are all that is required to use the majority of the UX. The remote is also expected to have a full alphanumeric keyboard, used for searching and in the web browser.
Because the UX doesn't support a mouse pointer, UX elements are activated by navigating to the element and pressing the activate button.
On a netbook, the inputs are mapped onto the keyboard as follows (by default):
up/down/left/right = cursor keys
activate (a.k.a. ok) = return key
back = Esc key
information = right-click key (on my keyboard, it looks like a context menu)
home = the "Windows" key
This configuration can be modified via the rebinder.
720p is the only supported video mode. The display will be configured for the best mode approximating 720p, and if this isn't possible an error message will be displayed.
The majority of the UX is based around two styles of view: panel and grid.
A panel view displays a number of panels (as columns across the screen); each has a header which can be activated to "drill down" from the summary to a more detailed view (another panel view or a grid view) showing a limited number of items (generally 8). Typically these items are the most relevant or recent. The remaining items are accessed by activating the panel heading, which changes the UX to show a grid view. When an item is activated, relevant metadata for the item and actions associated with it are displayed.
A grid view fills the screen with items and can be scrolled vertically. All of the items are included, and there is no implicit filtering.
The home screen is a panel view, with columns for Search, Video, Photo, and Queue.
Search. This is used to search all available media, i.e. local files, UPnP servers, Vimeo and so on.
Search history is stored and presented to the user if available. Search results are presented in panels, organised by source; a user can drill down from any panel to a grid view of relevant results.
Video. This displays available video content.
Drilling down from the home screen will take you to the source view, where each source is another panel showing the 8 most recent videos from that source. Drilling down from the source panel will open the grid view, where all the content items from that source are visually presented as thumbnails. Any folder hierarchy is flattened and the content can be sorted in various ways.
If there is only one source, drilling down from the home screen will go directly to the grid view.
Photos. Very similar to Video, but for still images. There are different controls available when viewing images, for example starting a slideshow or rotating the image.
Queue. A queue of content to be played can be created by activating the items and selecting Add to Queue.
If the item is already in a queue, this action becomes Remove from Queue.
When playing back media, the metaphor is that the controls and information are "below" the screen. These are arranged in rows; a user can navigate between the rows with the up and down keys. Specific controls in each row are traversed by using the left and right keys.
For videos, pressing the down key will slide up the pause and stop controls; pressing down again will slide up the seek bar; and again will bring up the Related Content list.
The Related Content row lists content that is related to the current content. If the media is from a directory, it lists media in the same directory; if from a search, the other results; and so on. This area could also be used to show recommended content or advertising.
For photos, the controls are different (rotate buttons, no seek bar, etc). Pressing up will slide these off the screen, resulting in just the photo being visible.