QNX® Aviage Multimedia Suite 1.2.0 Alpha 20.14.0 Release Notes

Date of this edition: March 13, 2009

Target OS: This software is compatible with target systems running QNX® Neutrino® 6.4.0.

Host OS: You must have already installed the QNX® Momentics® development suite  6.4.0 as a self-hosted QNX Neutrino system, or on one of the following hosts:

Version of QNX Momentics Microsoft Windows Linux
6.4.0 Windows Vista, Vista 64-bit, XP SP2 or SP3, or 2000 SP4 Linux Red Hat Enterprise Workstation 4 or 5, Red Hat Enterprise Server 5.1 64-bit, Red Hat Fedora Core 6 or 7, Ubuntu 6.0.6 LTS or 7, or SUSE 10

Note: For information on installing this package, see the Installation Note.

Contents

Throughout this document, you may see reference numbers associated with particular issues, changes, etc. When corresponding with our Technical Support staff about a given issue, please quote the relevant reference number. You might also find the reference numbers useful for tracking issues as they become fixed.


Note: The QNX Aviage Multimedia Suite:
  • is compatible with generic filesystems, such as FAT32, ISO9660, and others provided with the QNX Neutrino operating system or with a QNX board support package. Media-specific filesystems, such as for Apple iPod devices and Microsoft PlaysForSure devices, are provided in the relevant QNX Aviage Multimedia Suite packages.
  • uses QDB, QNX's embeddable SQL database server that is based on the SQLite project (http://www.sqlite.org) and supports most SQL-92 syntax. For more information about what SQL-92 syntax SQLite doesn't support, see SQL Features That SQLite Does Not Implement on the SQLite web site.

What's in this release?

This release contains libraries, binaries, and source code for sample applications for the Multimedia Engine running on QNX Neutrino packeaged in the following archives:

patch-630SP2-0315-mmedia-03-11-1854.tar
MME core product binaries.
patch-630SP2-0999-extra-aac-03-11-1854.tar
MME software codec for AAC files.
patch-630SP2-0315-extra-drm-03-11-1854.tar
MME binaries for DRM support.
patch-630SP2-0315-extra-mp3-03-11-1854.tar
MME binaries for MP3 support.
patch-630SP2-0315-extra-ipod-03-11-1854.tar
MME binaries for iPod support.
patch-630SP2-0999-extra-ipp-03-11-1855.tar
MME software codec for H.264 files.
patch-630SP2-0315-extra-pfs-03-11-1854.tar
MME binaries for PFS device support.
patch-630SP2-0315-extra-wma9-03-11-1854.tar
MME software codec for WMA files.

Note:
  • You should replace existing .sql and configuration files with the files included in this release.
  • Benchmarks for this release are available on request.
  • This alpha release has not been tested on Jacinto platforms.

Notices

This release includes changes and upgrades that require changes to your enviroment:

MME requires Neutrino 6.4

Starting with the Aviage MME 1.2 alpha 20.12 release, the MME requires a Neutrino 6.4 system.

Action:

Upgrade your system to Neutrino 6.4.


Changed data structures and enumerated types

With release 20.13, enumerated types and data structures changed, making binaries for that an all subsequent releases (including this one) incompatible with all previous releases.

Action:

Update all system components to the most recent QNX Aviage Multimedia Suite 1.2.0. Your environment must not contain components from this release and from earlier releases.


New client library

The Aviage MME 1.2 alpha 20.12 release implemented a new client library, which rendered it and subsequent releases incompatible with releases older than the Aviage MME alpha 20.4 releases.

Action:

Recompile and relink all client applications to use this release.


Changes to locations of binaries

Starting with release 20.13, some binary files are installed in a new location. Binaries that in previous releases were installed under target/qnx6/bin/, target/qnx6/sbin/ or target/qnx6/lib/ are now installed under target/qnx6/usr/bin/, target/qnx6/usr/sbin/ or target/qnx6/usr/lib/, as appropriate.

Affected components include:

The items under target/qnx6/lib/dll/ have not been moved.

Action:

Before installing this release, manually remove the old binaries from the old locations . If you do not remove the old binaries, you will not load the updated binaries when you execute.


Metadata plugins replace metadata synchronizers

In release MME 1.2 alpha 20.12, MDSs (metadata synchronizers) were been replaced by MDPs (metadata plugins).

Action:

If you are upgrading from a release prior to alpha 20.12, change the <MDS> element in your configuration file to <MDP>.


SQLite upgrade

In release MME 1.2 alpha 20.12, SQLite was upgraded to SQLite 3.6.3, and the MME and QDB now use SQLite 3.6.3:

Action:

Recompile any applications that link against the SQLite library directly.


Documentation

This release includes the following preliminary MME 1.2 documentation:

mme_patch_build20.14.0_inst.html
The installation note. Please read it before installing.
mme_patch_build20.14.0_rel.html
The release notes (this file).
ReleaseNotesMMF.20.x-7.mht
Release notes for the Margi component.
mme_intro.pdf
The Introduction to the MME, which includes:
mme_dev_guide.pdf
The MME Developer's Guide.
mme_api_ref.pdf
The MME API Library Reference.
mme_utils_ref.pdf
The MME Utilities Reference.
mme_config_guide.pdf
The MME Configuration Guide.
mme_tn_ref.pdf
MME Technotes.
qdb_dev_guide.pdf
The QDB Developer's Guide.

What's new in this release

This release introduces many new features and improvements, and deprecates some features available in older releases:

New features

The table below lists the most significant new features and updates that were implemented in this release. For more complete information about these and other features in this release, please refer to the MME documentation.

Feature See
iPod driver cross transport authentication (CTA) support iPod driver cross transport authentication (CTA) support below.
Support for playback of audio input from a system Audio input playback below.
Improved synchronization management of apparently changed files New configuration element <ChangedFilesHaveConstantId> below.
Improved QDB thread management New qdb -o thread* options below.
Improved character conversion control for playlists MME_EXPLORE_UNCONVERTED_CHAR_ENCODING flag below.
Improved copy queue error management <DeleteOnError> configuration element below.
Improved synchronization activity reporting New synchronization event MME_SYNC_ERROR_FOLDER_DEPTH_LIMIT below.
Imporvements to the Explorer API Improved Explorer API performance below.
Patch to enable JPEG pre-processing quality selection Image pre-processing patch below.
Solution for QDB/MME lockup problem. QDB/MME lockup problem and solution and New QDB thread options below.
Multimedia project launched on Foundry27 The project pages on Foundry 27, at http://community.qnx.com/sf/projects/multimedia/.

iPod driver cross transport authentication (CTA) support

This release introduces cross transport authentication (CTA) support for iPod drivers. The iofs-ipod.so acp option loads iofs-interface-ipod.so and checks if it supports an authentication chip interface. This option accepts one of the following values:

Cross transport authentication

A cross transport authentication chip can be built into the cable connection iPods to your system. This authentication method is available for USB transport connections only; it authenticates iPods over the serial pins and tell the iPods to grant authenticated privileges to the USB transport.

As well as offering the same advantages as an authentication chip built in to your system, a cross transport authentication chip in a cable:

Please contact Apple for more information about licenses and specifications for a cross transport authentication chip.

To instruct the iPod driver to use this authentication method, start <iofs-ipod.so with the the acp option set to cta:

# io-fs-media -dipod,transport=usb,acp=cta

Note: The following iPod devices support cross transport authentication, provided they have the latest firmware:
  • all iPod touches
  • all iPhones
  • all iPod nano 4G

Audio input playback

The MME now supports playback of audio inputs on a system by treating audio inputs as type of mediastore.

This feature uses a new mediastore type and a new slot type:

Configuring the MME to recognize audio input “mediastores”

To have the MME recognize audio input “mediastores”, you must:

Configuring the slots table

To use audio input “mediastores”, you must add an entry to the slots table that sets:

For example:

INSERT INTO slots(path, zoneid, name, slottype) VALUES('/dev/snd', 1, 'snd', 11);

Configuring the MCD

You must also configure the MCD to tell the MME about the appearance of audio input “mediastores” by adding a section like the following to the MCD configuration:

[/dev/snd]
Callout	= PATH_MEDIA_SCAN
Argument	= 5000
Priority	= 11,10
Start Rule	= INSERTED
Stop Rule	= EJECTED

Since /dev/snd is normally permanent, the argument and priority values may be changed. The section name must be the path to the audio input devices.


Note: An audio input “mediastore” is not synchronizable; an explicit attempt to synchronize it will result in a MME_EVENT_SYNCABORTED error.

Playing media from an audio input “mediastore”

Media from an audio input “mediastore” is played in a file-based track session. Once playback has begun, however, it will continue until explicitly stopped because it will never reach an end of file.

To play media from an audio input “mediastore” you must know the exact path to the mixer output you want to play. Generally tis path is something like pcmC0D0c#Mic In.


Note: You may learn what is available by:
  • doing an ls of the path to the location of the audio input
  • looking at the output of mix_ctl

Once you know the path of your audio input, simply create a file-based track session and play the media

  1. create a file-based track session, using the snd “mediastore”'s device file ID.
  2. Set the track session for playback.
  3. Call mme_trksession_set_files() to set the input to the track session.
  4. Play the track session.

New configuration element <ChangedFilesHaveConstantId>

This release introduces a new MME synchronization control element:

Element Attributes Default Description
<ChangedFilesHaveConstantId> enabled off Determine how MME synchronization handles files whose size or date has changed.

The <ChangedFilesHaveConstantId> element determines how, during a file and folder discovery synchronization pass, the MME handles a media or playlist file whose size or date has changed since the previous file and folder discovery pass.

Default behavior

The default MME behavior is to consider a file or folder whose size or date has changed as new, and to synchronize it accordingly, assigning it a new file ID (fid).

Behavior with <ChangedFilesHaveConstantId> enabled

If the <ChangedFilesHaveConstantId> enabled attribute is set to true, the MME's file and folder discovery synchronization pass does not consider files and folders whose dates or sizes have changed to be new files or folders, and:

Thus, if you configure the MME to maintain the file ID of a file or folder whose sizes or date has changed, to determine if file metadata is accurate, you must check its accurate field. If the field is 0, then the file requires a metadata synchronization pass.


Note: If media files have not been successfully synchronized during the metadata pass, or playlist files have not been synchronized during the playlist synchronization pass, the accurate field for these files will be 0, regardless of the <ChangedFilesHaveConstantId> configuration.

Playlist synchronization behavior

Playlist synchronization differs from media file synchronization:


<DeleteOnError> configuration element

A new <DeleteOnError> configuration element for controlling copying and ripping operations when they encounter errors replaces the <DeleteOnNonRecoverableError> configuration element.

Element Attributes Default Description
<DeleteOnError> type "none" Delete the current entry from the copyqueue table, based on the value of the type attribute. See Copy queue entry deletion control settings below for more detailed information.

To maintain the same behavior as having the removed <DeleteOnNonRecoverableError> element enabled, set type to "nonrecoverable".


Caution: Attempting to use the removed <DeleteOnNonRecoverableError> configuration element will cause a fatal error.

Copy queue entry deletion control settings

The following flags determine when the MME automatically deletes entries from the copyqueue table, and their equivalent setting for the <DeleteOnError> type attribute:

Constant Value type Description
CONFIG_DELETE_ON_TYPE_NONE 0 "none" Do not automatically delete copyqueue table entries
CONFIG_DELETE_ON_TYPE_ANY 1 "any" Delete the copyqueue table entry on any error.
CONFIG_DELETE_ON_TYPE_NR 2 "nonrecoverable" Delete the copyqueue table entry on a nonrecoverable error.
CONFIG_DEF_COPYING_DELETE_ON_TYPE "none" Do not automatically delete copyqueue table entries

Nonrecoverable errors

The mediacopier considers a nonrecovereable error to be an attempt to copy or rip a file that meets one or more of the following criteria:

If the nonrecoverable option is set (<DeleteOnError type="nonrecoverable"/> files that meet any of the above criteria are automatically removed from the copy queue.

The nonrecoverable setting does not cause the mediacopier to remove from the copy queue files that generate read errors . To remove files (scratched or bad media) that cause read errors, and files that are DRM or copy protected, corrupt, use unsupported codecs, set the type attribute to "any".


New synchronization event MME_SYNC_ERROR_FOLDER_DEPTH_LIMIT

The MME delivers the event MME_SYNC_ERROR_FOLDER_DEPTH_LIMIT when it has skipped sychronizing a folder to avoid synchronizing beyond the permitted depth, set by the <MaxRecursionDepth> configuration element. The MME delivers this event the first time it skips a folder because it has reached the maximum configured recursion depth.

Event data

Synchronization information in mme_sync_error_t, including

Database tables updated

No database tables are updated.

Media status information, and the reason for delivery of the event, in mm_media_status_event_t.


Image pre-processing patch

A new patch is available that enables you to select the quality of JPEG images when performing image pre-processing. The patch is available in the archive patch-640-1383-img-quality.tar, under the Foundry27 Multimedia project's Downloads tab.

For more information, see “Image pre-processing” in the MME Configuration Guide chapter Configuring Metadata Support.


Improved Explorer API performance

This release implements improvements to the Explorer API performance. Specifically, the API now attempts to use a device control command to determine the number of items in a folder, rather than counting the items in the folder.

This improvement is implemented for iPods as well as for other types of devices.


QDB/MME lockup problem and solution

Testing of the MME has revealed that increasing the MME's maximum number of synchronization threads (<MaxThreads> in the MME configuration file) without also increasing the maximum number of threads available to the QDB can result in the QDB and MME locking up.

If multiple MME synchronization threads that need to lock the database exhaust the number of available threads, the QDB can find itself without the thread it requires to unlock the database, thus causing a deadlock with the MME waiting for the QDB to unlock the database while the QDB is waiting for the MME to release the thread it needs in order to unlock the database.

Deadlocks like the one described above have been observed in scenarios where the MME has attempted to synchronize multiple and large mediastores at the same time; for example, a USB stick with eight partitions.

Solution

Always ensure that the QDB has a threadpool with more threads than will be required by the MME synchronization threads plus any other processes that may lock the MME database. In other words, be sure that henceforth your projects start the QDB with the -o thread option set to 20 or greater, as required by your project.


New qdb -o thread* options

In order to ensure that the MME and QDB do not enter into a deadlock due to an inadequate number of available threads for the QDB:

See also QDB/MME lockup problem and solution above.


MME_EXPLORE_UNCONVERTED_CHAR_ENCODING flag

Normally, the MME attempts to convert playlist file entries to UTF-8.

The new constant MME_EXPLORE_UNCONVERTED_CHAR_ENCODING (0x0004000) is an inbound flag instructing the MME to not perform any character conversion on entries before returning them. Setting this flag is useful for seeing what comes out of playlists when their entries don't appear to convert to real files.


Note: If the MME_EXPLORE_RESOLVE_PLAYLIST_ITEM (0x00010000) flag is set, this setting overrides the MME_EXPLORE_UNCONVERTED_CHAR_ENCODING flag.


Deprecated and removed features

The table below lists the features and capabilities that have be deprecated or removed from this release.

Feature Status Reference
<DeleteOnNonRecoverableError> Removed; see <DeleteOnNonRecoverableError> below, and <DeleteOnError> configuration element above. 65510
qdb -o thread option Deprecated in release alpha 20.13. 65069
qdb_transaction() Previously deprecated; removed from the QDB client library in release alpha 20.13. 48615

<DeleteOnNonRecoverableError>

The table below lists the removed element and its settings, and the new element and its equivalent settings.

Removed element New element
<<DeleteOnNonRecoverableError enabled="false"/> <DeleteOnError type="none"/>
<DeleteOnNonRecoverableError enabled="true"/> <DeleteOnError type="nonrecoverable"/>

QNX Aviage Multimedia Core 1.2.0 binaries

The standard QNX Aviage Multimedia Suite binaries are delivered in the patch-630SP2-0315-mmedia-mm-dd-hhmm.tar pathc. They include the binaries, DLLs, and SQL configuration files required to run the QNX Aviage Multimedia Core 1.2.0 and support binaries. Binaries for features requiring special licenses are listed under Binaries requiring special licenses below.

These files are installed under target/qnx6/, under the subdirectories for the supported target platform:

These SQL support files are installed under target/qnx6/sql/:

These configuration files are installed under target/qnx6/etc/:

Headers and libraries

The following files are included under target/qnx6/[target]/:

The following files are included under target/qnx6/usr/include/:

In addition to the files listed above, target/qnx6/usr/include/ includes the libxml directory with third-party header files for libxml2.

Sample applications

Sample applications with their source code and required headers and libraries are delivered in the QNX Aviage Multimedia Core 1.2.0 patch patch-630SP2-0315-mmedia-mm-dd-hhmm.tar.

Sample source code

The sample source code is installed under target/qnx6/examples/*. These applications illustrate various features and functionality provided by the MME. You can view command-line options for these applications by typing “use” then the application name. For example: use mmecli will list the command-line options for mmecli.

The sample applications are:

If you have QNX Momentics PE, you can compile the sample applications using the IDE or the command-line tools; if you have SE, you have to use the command-line tools.

Binaries for packages requiring special licenses

Binaries for features requiring special licenses are delivered in individual patches.

QNX Aviage Multimedia Software Codec for AAC 1.2.0

The patch patch-630SP2-0999-extra-aac-mm-dd-hhmm.tar contains the binaries for AAC codec support:

QNX Aviage Multimedia Software Codec for MP3 1.2.0

The patch patch-630SP2-0315-extra-mp3-mm-dd-hhmm.tar contains the binaries for MP3 codec support. They include the following files:

QNX Aviage Multimedia Software Codec for WMA9 1.2.0

The patch patch-630SP2-0315-extra-wma9-mm-dd-hhmm.tar contains the binaries for WMA codec support. They include the following files:

QNX Aviage Multimedia Interface for iPod 1.2.0

The patch patch-630SP2-0315-extra-ipod-mm-dd-hhmm.tar contains the binaries for iPod support, and a sample application. They include the following files:


Note: This package is designed for use with the QNX Aviage Multimedia Core package. If you intend to use this package independently of the Multimedia Core, please contact your QNX sales support team.

QNX Aviage Multimedia Interface for PlaysForSure 1.2.0

The patch patch-630SP2-0999-extra-pfs-mm-dd-hhmm.tar contains the binaries for PFS device support. They include the following file:


Note: This package is designed for use with the QNX Aviage Multimedia Core package. If you intend to use this package independently of the Multimedia Core, please contact your QNX sales support team.

QNX Aviage Multimedia Interface for WMDRM10-ND 1.2.0

The patch patch-630SP2-0315-extra-wma9-mm-dd-hhmm.tar contain binaries for DRM support. They include the following files:

Binaries for other packages

Binaries for packages requiring distribution licenses acquired directly from a third party are delivered separately.

QNX Aviage Multimedia Software Codec for H.264 1.2.0

The patch with the binary for H.264 video codec support is patch-630SP2-0590-extra-ipp-632-mm-dd-hhmm.tar. This package contains:


Note:

Known issues

At time of release, the issues listed below were identified and under investigation. Check the QNX web site (www.qnx.com) for the latest information.


Technical support

If you have any questions, comments, or problems with a QNX product, please contact Technical Support. For more information, see the How to Get Help chapter of the Welcome to QNX Momentics guide or visit our website, www.qnx.com.