synceddb Plugin

The mm-player service uses the synceddb plugin to browse media files that have had their metadata synchronized to QDB databases.

Figure 1. synceddb Plugin Architecture

When the user attaches a device, the mm-detect service loads the QDB database that stores the device's media metadata and then publishes the device's information to a special PPS object (/pps/services/mm-detect/status). When the user removes the device, mm-detect unloads its database and updates the same PPS object to indicate that the device is no longer present. The synceddb plugin monitors this object and updates its list of accessible devices when the object's contents change. This design means that the plugin can browse the contents of only those mediastores currently attached to the system.

The synceddb plugin allows mm-player to quickly provide the HMI with media information about frequently used devices. For example, suppose the user attaches a new iPod that contains a lot of media content. Because the iPod Plugin doesn't support browsing, the user can't see information about the iPod's media files until their metadata has been synchronized (at which point it can be retrieved from the populated QDB database). If the same iPod is detached and then reattached, its database will be reloaded and the synceddb plugin can immediately retrieve the metadata and pass it to the HMI.

Because it reads information from QDB databases and not external devices, the synceddb plugin doesn't need any supporting components to retrieve metadata. The QDB API is implemented by a C library that the plugin links into its codebase, so the plugin doesn't talk to another process but instead simply queries the databases and stores the results. To send metadata to the HMI, mm-player uses the car.mediaplayer WebWorks extension (for more information, see the multimedia architecture overview in the QNX CAR Multimedia Architecture Guide).