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 managing album art, directing track playback, detecting media sources, and presenting media to the user for selection.
The multimedia engine is decoupled from the rendering engine, allowing for interaction with iPods, USB sticks, and other media content from various HMI-rendering components. The multimedia design is shown in the figure below:
The mm-detect component keeps track of the devices that are attached to the system. When a new device is attached, mm-detect triggers the mm-sync component to synchronize media metadata from the new device to the corresponding QDB database.
The dev-publishers components detect device insertions and, in response, write PPS objects to the /pps/qnx/mount directory. For example, when the user inserts a CD whose device name is cd1, the cdpub publisher creates the PPS object /pps/qnx/mount/cd1. The publisher deletes that PPS object when the user ejects the CD.
The Media Content Detector (MCD) component mounts attached devices to the local filesystem so their contents can be read by multimedia services and other programs.
The HMI receives synchronization status updates that mm-detect publishes through PPS so that clients can display up-to-date media information to the user.
The mm-detect component invokes the artwork-client to extract the images associated with any new audio tracks found on the mediastore into a designated artwork cache directory. The artwork extraction gets done after the rest of the media information has been synchronized and is independent of the mm-sync operation.
The responsibilities of mm-control include providing playback/import control and track-level error handling, managing multizone capabilities, and handling transitions from one device to another.
The multimedia synchronization service populates databases with up-to-date metadata that describes the media tracks on devices. The synchronization service ensures that a device's database is synchronized with the device's media contents before any tracks can be played.
Multimedia synchronization relies on the following binaries:
The multimedia playback service allows applications to request and control the playback of audio and video tracks from devices attached to the in-car system. Through the playback service, applications can specify individual tracks and track sequences (playlists) to play, issue playback control commands, and retrieve the current playback status and notifications of playback status changes.
Multimedia playback is managed by the following binaries: