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

Multimedia Source#

The most important thing to do first is to set up a staging directory to allow a) the source to build and b) prevent the build / install from overlaying your "standard" installation. This is always good practise when building QNX source.

This link http://community.qnx.com/sf/wiki/do/viewPage/projects.core_os/wiki/BuildTheOSSource covers some Very Important Details, most notably the description of creating a staging area and a qconf-override.mk file (see steps 2, 3 and 4). Just to re-emphasize the importance of this: If you don't properly set things up, you stand a good chance of overwriting your base installation and that would not be a good thing.

Just a couple of notes on the QCONF_OVERRIDE environment variable. On windows, in a DOS shell, use the SET command (there is no export). 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 and "OK" your way out and, 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.

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.

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.

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 is reflected by the hierarchy under the trunk.

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

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

  • mme This is the MultiMedia Engine and is responsible for managing the media devices and controlling the behaviour of playback of media.
  • io-media This is the multimedia component responsible actually doing the playback of media.
  • 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.

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.

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

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

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

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

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 see the documentation, in particular the Quick Start Guide to get you going.