Besides providing access to media devices, the multimedia subsystem reads and interprets metadata, converts audio/video streams, and manages playlists. The subsystem also provides the business logic for retrieving album art, directing track playback, detecting media sources, and presenting media to the user for selection.
The media browsing and playback engine is decoupled from the media rendering engine, allowing various HMI components to interact with iPods, USB sticks, and other media devices. The multimedia design is shown in this diagram:
Both the HTML5 and Qt5 versions of the HMI include the Media Player app but they provide separate mechanisms to this application for sending requests to mm-player, which is the back-end media browsing and playback service. In the HTML5 HMI, Media Player communicates with mm-player by sending requests and receiving media information through the car.mediaplayer plugin, which runs within the browser engine. In the Qt5 HMI, Media Player makes calls to functions in the QPlayer library, which talks to mm-player. The mm-player service uses QDB to retrieve media information from databases and uses mm-renderer to control the media flow during playback.
The platform includes utilities that can detect when the user attaches a device and then respond to this action by synchronizing the metadata describing the device's media content to an embedded database. The synchronization ensures that the database has up-to-date media information before any tracks can be played.
Multimedia detection and synchronization relies on the following binaries:
Through the multimedia browsing and playback service, applications can discover media content on attached devices, control the playback of audio and video tracks or playlists, and retrieve the current playback status and notifications of status changes.
The following binaries manage media browsing and playback: