Project Home
Project Home
Documents
Documents
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
wiki3293: SourceGuide (Version 13)

Multimedia Source Guide#

This page explains how to get and build the Multimedia Suite source code.

Before You Start#

Before you get the source code, the most important thing to do first is to set up a staging directory to:

  • allow the source to build, and
  • prevent the build / install from overlaying your "standard" installation.

Setting up a staging directory is always good practice when building QNX source.

Important Details About Creating a Staging Area #

The information on this page: Build the OS covers some very important details you should review. Most notably, it includes a description of how to create a staging area and a qconf-override.mk file. See steps 2, 3 and 4 of the "Build It" section. We cannot over emphasize the importance of doing this part properly, because If you don't set things up properly, you stand a good chance of overwriting your base installation, and that would not be a good thing.

Yes, we know you're not building the core OS here, but it's still a very good idea to use a staging area.

About the QCONF_OVERRIDE environment variable#

Just a couple of notes on the QCONF_OVERRIDE environment variable:
  1. On windows, in a DOS shell, use the SET command (there is no export).
  2. You can make the environmental variable "stick" by right clicking on "My Computer" (select Properties).
    • Select the "Advanced" tab and click on the "Environment Variables" button (bottom left in XP).
    • Click on the "New" button and add in QCONF_OVERRIDE and the value, then "OK" your way out.
The next time you start a DOS shell, QCONF_OVERRIDE will already be set up for you.

If you're running self-hosted (or under Linux), you can add the export command to your .profile script and it will also automatically get set when you start a new terminal session.

Use Neutrino 6.4#

Finally, note that you should be building and running multimedia sources with the Neutrino 6.4.0 development environment. It has a number of updates over earlier releases that make using multimedia much simpler.

If you happen to be using 6.4.1, you'll need to exclude building of the 'spe' variant of the PowerPC platform because not all of the Aviage components build for it. To do this, add this:

# export EXCLUDE_VARIANTLIST=spe

before building.

Dependencies#

One feature of the entity called MME has dependencies that we haven't provided. This means that you'll have to make sure that this part of the MME isn't built (see below) and you won't get the MME's ability to change retrieved images. But that's all you'll be missing.

As of April 8th 2009, a new macro was added to many of the modules of the multimedia project source. This new macro requires the installation of the srcversion update package. Install this package as root to your QNX installation. Once you do this, the updated source should build.

# cd $QNX_TARGET/../..
# tar -xvf <srcversion-patch>

Source Tree Organization#

In general, the layout of the source is much like most QNX projects. Software components within in the project are (at a high level) broken into libraries, services or applications, and this organization is reflected by the hierarchy under the trunk.

For the multimedia project, there are a number of libraries provided. Many of these libraries are simply to provide capabilities to the main multimedia components and their purposes are rather obvious.

The real functional components of some of the multimedia suite of components are:

mme
This is the MultiMedia Engine; it is responsible for managing the media devices and controlling the behaviour of media playback.
io-media
This is the multimedia component responsible for actually doing the media playback.
io-fs
This component is used by a number of multimedia devices to present a logical file system view that is used by the MME and io-media.

Demonstration Applications#

There are a number of demonstration applications in the apps/mmeclients tree. These are useful for testing, diagnostic and illustrative purposes. But please note that they are examples only, and don't show the only way to do things.

How Do I Get the Source?#

The source code is available on the multimedia repository located at http://community.qnx.com/sf/scm/do/listRepositories/projects.multimedia/scm.

To download the source code into your source directory:

svn checkout --username <userid> http://community.qnx.com/svn/repos/multimedia/trunk where <userid> is the email address used to create your account on the QNX site.

How Do I Build the Source?#

If you don't properly create a staging area and suitable qconf-override.mk file, you risk the chance of corrupting your standard installation. Did we say that already? :-)

After you've checked out the source as described in the previous section, change directory to the directory that contains the services, apps and libs directories. We'll assume you're there for the rest of this section.

Step 1#

The first thing to do is restrict the target operating system to be for Neutrino. To do this, you can set the OSLIST environmental variable.
  • Linux: export OSLIST=nto
  • Neutrino: export OSLIST=nto
  • Windows: set OSLIST=nto

Step 2#

The second thing to do is limit the build to the set of target hardware platforms that you're interested in. If you want to build for all supported platforms, you can skip this step. Otherwise, you can set the CPULIST environmental variable (as an example).

Here, we'll assume you want to build for X86 and ARM platforms:

  • Linux: export CPULIST="x86 arm"
  • Neutrino: export CPULIST="x86 arm"
  • Windows: set CPULIST=x86 arm

Step 3#

The third thing to do (for now) is to stop the attempt to build the part of the MME that can't yet be built.

# touch services/mme/imgprc/gf/Makefile.dnm

Step 4#

The fourth thing to do is get the interface from the multimedia components out to the staging area so that other components can get to them. This stage is referring to as installing the headers; hence the make directive of hinstall.

# make hinstall

Step Last#

The final thing to do is the build the binaries themselves.

# make install

I've built them, but how do I run them?#

The best thing to do now is have a look at the documentation, in particular the Quick Start Guide in the Introduction to the MME. This Quick Start Guide gives you step by step instructions for starting the Multimedia Suite and playing media.