A Media Manager for Automotive Infotainment (Part 1)
At ICS we’ve designed and built numerous In-Vehicle-Infotainment (IVI) systems for passenger automobiles, inflight entertainment (IFE) systems for major International airlines, and related control systems for commercial and agricultural vehicles, forklifts, etc. (See the “From Zero to Amazing” video showcasing our IVI prototype work for Intel here.) We were recently asked to propose a media manager for passenger automobiles, and came up with an interesting architecture that addresses many of the vexing issues with existing IVI solutions.
The challenge for automotive IVI implementations is that most people’s media -- their music, videos, audiobooks, podcasts and television -- exist in a multitude of forms and originate from many disparate sources. For example, some music files may reside at home in an iTunes library, others may have been purchased from Amazon Music or Google Play. Media may have then been downloaded to a computer, a USB drive or a phone, or stored on a cloud server. Management of digital rights adds yet another layer of complexity to the situation -- one that can’t be ignored.
A further requirement is that when there are multiple occupants in the car each individual should be able to enjoy their own audio and video selections. Hence a media manager should be able to direct media to specific passengers.
With the architecture of this media manager we are specifically addressing the following challenges:
-
Allow media to randomly enter and leave the car, e.g., from multiple passengers phones, tablets, cloud instances and USB thumb drives. Intelligent handling of adding and removing of media is a major task of the media manager.
-
Permit all of these different sources of media to be accessible through a single unified interface, regardless of origin.
-
Allow passengers to be able to search, sort and filter their media into playlists while in the car as well as on their phones and tablets or from smart devices at home.
-
Enable auto manufacturers (or third parties) the option to implement intelligent solutions for the automatic creation of playlists.
-
Direct media output to specific passengers in the car
-
Ensure a way to seamlessly provide new capabilities and services based on the passenger’s media content.
Media Manager Architecture Overview
The figure below shows the media manager architecture and the interactions of the major components: MediaSource, MediaSourcePlaylists, MediaSession, MediaPlayer and MediaManager.
MediaSource
MediaSource objects provide interfaces to devices. Devices are physical media such as Phones, iPads, USB thumb drives, Microsoft Media Players, DLNA, Bluetooth, cloud or any source that can be indexed.
MediaSourcePlaylists
Each source presents to the media manager one or more source playlists. The media manager takes these lists and add them to corresponding MediaSessions (see below). For example, video playlists are offered to the session that interfaces to a video player, whereas Bluetooth playlists are offered to a Bluetooth Player which in turn controls a Bluetooth device through the AVRCP protocol.
MediaSession
Each MediaSession holds a playlist of tracks specific to a media type e.g. mp3 files, video files or Bluetooth streams. The session interfaces a single instance of a media player for the specific media type.
MediaPlayer
The players control the output of media, they implement the very basic functionality of media reproduction e.g., play, pause, stop, play index, play next, play previous etc. They can also be controlled to direct output to specific channels through an audio manager component.
MediaManager
The media manager maintains a set of session objects and a set of source objects. The manager itself interfaces with an audio manager for audio channels and a device manager for device notifications. Moreover, our media manager provides a controller interface which allows for direct user interface (UI) implementation using the toolkit of choice as well as remote control through RVI or web interfaces.
At this point we have implemented a working prototype as a proof of the correctness and feasibility of our architecture. Our software, a stand-alone program implemented in C++ with Qt, will become an open source project released under GPLv2. It is already able to index media on multiple USB drives, handle creation and removal of the corresponding media sessions and where possible, without interruption of playing media. We have been able to provide both a simple graphical UI for the control of our media manager as well as an RVI implementation that allows for control through a car IVI or phone application.
In the next few weeks, we’ll explore the details, demonstrate and publish the code that makes these elements work together.
Conclusion
We hope to have piqued your interest in the adventure of building automotive components. As with all software, much of the effort spent is in the detailed implementation. However, much of the success of the project will be determined by how well the original architecture of a system was designed. In our many years of experience we have learned that it is rarely sufficient to only design complex systems “on the whiteboard”. Additionally, many prototypes have to be created in a rapid manner. Our toolkit of choice is Qt and C++ and our experience with these tools allows for effective and very efficient development. We are able to select our best prototypes and turn them directly into production code without rewrites.
We will be showing our MediaManager prototype in action at the GENIVI All Member Meeting (AMM) in Paris at the end of April and we would love for you to come and join us to celebrate and discuss the future of open automotive infotainment solutions.
For more information on the GENIVI All Member Meeting