QNX® Aviage Multimedia Suite 1.1 Alpha 20.5.0

Release Notes

Date of this edition: June 27, 2008 Target OS: This software is compatible with target systems running QNX® Neutrino® 6.3.0 SP3 or 6.3.2.

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

Version of QNX Momentics Microsoft Windows Linux
6.3.0 SP3 Windows Vista, XP SP2, 2000 SP4, or NT SP6a Linux Red Hat 8 or 9, Red Hat Enterprise WS 3 or 4, Red Hat Fedora Core 3 or 4, Debian 3.1, or SUSE 10
6.3.2 Windows Vista, XP SP2, or 2000 SP4 Linux Red Hat Enterprise Workstation 4 or 5, Red Hat Fedora Core 6 or 7, Ubuntu 6.0.6 LTS or 7.0.4, or SUSE 10

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

Contents


Note: 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 may also find the reference numbers useful for tracking issues as they become fixed.

What's in this release?

The packages in this release contain libraries, binaries, and sample application source code for the Multimedia Engine running on QNX Neutrino.

This release contains the following:

patch-630SP2-0315-mmedia-06-26-1321.tar
MME core product binaries.
patch-630SP2-0315-extra-drm-06-26-1321.tar
MME binaries for DRM support.
patch-630SP2-0315-extra-ipod-06-26-1321.tar
MME binaries for iPod support.
patch-630SP2-0315-extra-pfs-06-26-1321.tar
MME binaries for PFS device support.
patch-630SP2-0315-extra-wma9-06-26-1321.tar
MME software codec for WMA files.
patch-630SP2-0999-extra-aac-06-26-1321.tar
MME software codec for AAC files.
patch-630SP2-0999-extra-mp3-06-26-1321.tar
MME software codec for MP3 files.

Note:
  • You should replace existing .sql and configuration files with the files included in this release.
  • The documentation describes support for accessing iPods as USB devices, a feature that will be implemented in a future release. The Connecting to iPod Devices technical note has been replaced by information in the MME Developer's Guide .

Documentation

This release includes the following documentation:

mme_alpha20.5.0_inst.html
The installation note. Please read it before installing.
mme_alpha20.5.0_rel.html
The release notes (this file).
mme_intro.pdf
The Introduction to the MME (includes “MME Architecture” and “MME Quickstart Guide”.
mme_dev_guide1.1.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.
qdb_dev_guide.pdf
The QDB Developer's Guide.
mme_pfs_1.0.0.pdf
The User-specified MTP commands to PFS devices technical note.
mme_jacinto_1.0.0.pdf
The MME support for Texas Instruments ADE (Jacinto) technical note.

Notice: release incompatibility


Caution: This release implements a new client library, which renders this release incompatible with releases prior to MME Alpha 20.4.0. If you are upgrading from a release before MME Alpha 20.4.0, you must recompile and relink all client applications to use this release.

Notice: Change to QDB startup

The the QDB startup has been changed to enable the file locking required for database vacuums. See Change to QDB temporary storage below.


New features

The following new features have been implemented in this release:

For information about features implemented since the MME 1.0.0 general availability release but before this release, see Previously implemented features below.


Change to QDB temporary storage

The QDB no longer uses /dev/shmem for temporary storage. This location cannot be used for temporary storage because it does not provide file locking. File locking is required for database vacuuming.

QDB behavior at startup is now as follows:


Note: The filesystem selected for temporary storage must support POSIX file locking.

Bluetooth integration kit

This release introduces the MME Bluetooth Integration Kit, which includes the header file:

and other files located in the following directory:

For more information about the Bluetooth Intergration Kit and how to use it, see the chapter Working with External Devices in the MME Developer's Guide included with this release.


New default indexes for improved synchronization performance

This release includes new default indexes that have provided improvements in synchronization performance during testing. Significant reductions in time were measured for the second and third passes of initial mediastore synchronizations, and for the second pass of resynchronizations.

Synchronization performance and the effects of indexing on performance depends on a number of factors, including the system platform and the specific contents of the mediastores being synchronized, in particular the number and size of folders and files. However, the following should be noted:

We have changed the default set of indexes to a minimal set, based on observed synchronization performance. The new indexes are in the mme.sql and mme_library.sql schema files delivered with this release. These files otherwise remain unchanged: (there are no schema changes), and the index changes affect only the following tables: library, folders, playlist and playlistdata.

To ensure optimal synchronization performance in your environment, we suggest that you consider the recommendations below.

Recommendations for this release

General recommendations


New damping_audio_writer filter

The damping_audio_writer filter can fade the PCM stream IN or OUT.

To have this filter drop the volume level during trickplay mode by ramping down the PCM stream use:

io-media-generic -Mmmf,audio_writer=damping_audio_writer

The following new resources have been added:

TrickPlayVolumeFade
Trickplay volume subsidence is expressed as percent of total volume. Default is 0. Range is from 0 to 100 percent.
TrickFadeTime
Fade IN/OUT time, in microseconds, applied during trickplay mode. Default is 20000 (20 milliseconds. Range is 2000-250000 microseconds (2 milliseconds to 250 milliseconds).
FadeTime
Fade IN/OUT time, in microseconds, applied during play mode. Default 2000 (20 milliseconds). Range is 2000-250000 microseconds (2 milliseconds to 250 milliseconds).

Below is a portion of an io-media.cfg showing how to set these new resources:

resource {
    name = "TrickPlayVolumeFade"
    type = long
    value = 10
    optional = yes
}
resource {
    name = "TrickFadeTime"
    type = long
    value = 20000
    optional = yes
}
resource {
    name = "FadeTime"
    type = long
    value = 20000
    optional = yes
}

Note: You only need the settings in the io-media configuration file: io-media.cfg, if you want to override the default settings for the resources.


Configurable option to automatically skip files marked as unplayable

This release implements a new configuration element that allows you to determine the MME's behavior when it encounters a file marked as unplayable. The MME configuration file mme.conf includes a new <Playback> element: <SkipUnplayable enabled="false"/>.

The default setting for <SkipUnplayable> is false: attempt to play all files and handle errors according to the error handling configurations. In other words, behavior is unchanged from previous releases.

To configure the MME to skip files that have been previously marked as unplayable, set the <SkipUnplayable> element to true. With this configuration, the MME treats unplyable files as though they did not exist. It:


Note:
  • Unplayable files are visible in the track session view if they match the select statement used to populate the the track session.
  • You can have your client application filter out files marked as unplayable by including the clause WHERE playable=1, in the SQL SELECT statement you use to build your library-based track sessions.

See also “Marking unplayable files” in the chapter Playing Media of the MME Developer's Guide.


Support for iPod HD radio tagging

Client applications that support HD radio tagging for iPods can now do so when running the MME. To implement radio tagging, simply pass instructions directly to io-fs-media, which passes the instructions on to the iPod. The next time the iPod is plugged into a system with iTunes, iTunes will pick up the radio tags.

HD radio tagging requires authentication.

Below is an example of code that can be used to write HD radio tags to an iPod. Your client application should be designed to manage writing to more than one iPod (/ipod0, /ipod1, etc.).

#include <sys/dcmd_media.h>

...

if((fd = open("/fs/ipod0/.FS_info./control, O_RDWR)) == -1) {
    printf("Failed to access ipod");
} else {
    rc = devctl(fd, DCMD_MEDIA_IPOD_TAG, plist_single, plist_single_len, &ret);
    if (rc == 0)
        printf("Items were written, only iTunes can confirm contents");
    else
        printf("Write of tag file to iPod failed err:%d (%s): ret:%d", rc, strerror(rc), ret);
}

Note:
  • plist_single is the pointer to the XML tag; see the Apple documentation.
  • The devctl() ret argument returns the number of bytes written to the iPod.

iPods that support HD radio tagging

At time of this MME release, the following iPod models supported HD radio tagging:

Model Firmware*
iPod nano 3G 1.0
iPod 5G 1.2.3
iPod classic 1.0

*Firmware listed is the minimum required.


Support for iPod album art

The MME now supports retrieval of artwork form iPods. To retrieve the artwork for the currently playing iPod track, call mme_getphoto() with the fid argument set to 0.

iPod images are BMP files. The MME supports iPod artwork in color only; it does not support grayscale iPod artwork.


New iPod synchronization configurations

The MME release implements two new configuration elements that allow you to change the MME's default behavior when it synchronizes iPods. Both these elements are contained in the <MSS>/<ipod> element:


Note:
  • The MME's explorer API is the preferred method for discovering and accessing files on iPods. If you synchronize an iPod device, it is best to use directed synchronization so that you synchronize only the directories requested by the user.
  • Setting <auto_sync permitted="true"/> and <full_sync everything="true"/> to have the MME automatically synchronize the complete contents of iPod devices can be useful to demonstrate iPod integration in the MME, but this configuration is not recommended for production environments.
  • For more information about synchronizing iPods, see “Synchronizing iPods” in the MME Developer's Guide and “iPod folder limit” in the MME Configuration Guide.

New log messages implemented for mpega_parser

The MP3 parser filter mpega_parser now logs additional error messages to record conditions such as the ID3Tag in MP3 files exceeding the maximum size handled by the filter, and thus requiring pre-parsing of the tag. For example:

Jun 20 14:36:18    5    20     1 io-media-generic/aoi: mpega_parser: ID3TagV2.3 too big (320940bytes) pre-parsing ..
Jun 20 14:36:18    3    20     1 io-media-generic/aoi: PreParseID3Tag() offset 10 truncating at offset on invalid frame id from size = 863
Jun 20 14:36:18    3    20     1 io-media-generic/aoi: mpega_parser couldn't preparse the ID3TagV2.3 Looking for ID3TagV1..
Jun 20 14:36:18    3    20     1 io-media-generic/aoi: ID3Tag V2.3 size 10bytes max = 65536 checking ID3V1 failed for /media/drive/pr/milk__massive_attack_very_rare_trance_mix_.mp3

To have mpega_parser log these types of messages, start io-media with at least one level of debug verbosity (at least one -D).


Note: In a production environment, always run the MME, io-media, and other components and modules at zero verbosity.

Previously implemented features

The table below lists the most significant new features and updates that were after the MME 1.0.0 general availability release but before this release.

For more complete information about these and other features in this release, please refer to the MME documentation.

Feature See
Explorer API “Exploring unsynchronized mediastores” in the MME Developer's Guide.
File-based track sessions See “About track sessions” in the MME Developer's Guide.
Pre-copy synchronization “Pre-copy synchronization” in the MME Developer's Guide.
Support for external DLLs for character encoding “Creating an external DLL to provide character encoding routines” in the MME Configuration Guide.
Improved handling of damaged media “Managing playback errors” in the MME Developer's Guide and “Configuring how io-media handles playback read errors” in the MME Configuration Guide.
Notification of corrupt database “Handling of corrupt database” in the MME Developer's Guide.
Configurable limit to the number of entries in the library table “Configurable maximum entries for library table” in the MME Configuration Guide.
Configurable limit to the number of items per folder “Limiting the number of items synchronized in a folder” in the MME Configuration Guide.
New io-media features, including optimizations for selecting parsers and decoders “Configuring other MME components” in the MME Configuration Guide and io-media-generic in the MME Utilities reference.
New functions for reading and setting the default playback language mme_media_get_def_lang() and mme_media_set_def_lang() in the MME API Library Reference.
New synchronization event indicating that the files per folder limit has been exceded. “Synchronization error events” in the MME API Library Reference.
Pruning options for unavailable mediastores “Database pruning” in the MME Configuration Guide.
User-created playlists “User-created playlists” in the MME Developer's Guide.
Improved synchronization features and metadata handling “Configuring synchronization behavior” in the MME Configuration Guide.
Customizable language sort order “Adding languages” in the MME Configuration Guide.
Configuration options for track session view behavior. “Configuring playback behavior” in the MME Configuration Guide.
Directed PFS device startup “Directed PFS device startup” in the MME Developer's Guide.
Bluetooth support “Enabling Bluetooth support” in the MME Developer's Guide.
New and changed database tables “MME Database Schema Reference” in the MME API Library Reference.
Solution for database deadlock issues “Solutions for database deadlock issues” in the MME Developer's Guide.

Note:

Video support is documented, but is not yet implemented.


API changes

See New features above.

Deprecated and removed features

None in this release.


Binary components

MME binaries are delivered in the patch-630SP2-0315-mmedia-*.tar archive. This archive includes binaries, DLLs, and SQL configuration files required to run the MME and support binaries.

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

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

These io-fs configuration tables are installed under target/qnx6/etc/:

Source

Example source code and required headers and libraries are delivered in the patch-630SP2-0315-mmedia-*.tar archive.

Samples

The sample source is installed under target/qnx6/examples/*. These applications illustrate various features and functionality provided by the Multimedia Engine. To view command-line options for these examples, use the use utility; for example: use mmecli.

For information about the command-line applications and the sample applications delivered with the MME, see the MME Utilities Reference and the MME Developer's Guide.


Note: With this release only, to build the source for mmecli you must remove the following line: #include <mme/mme_ext.h>.

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.

Headers and libraries

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

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

Binaries for packages requiring special licenses

Binaries for features requiring special licenses are delivered separately from the MME core package.

QNX Aviage Multimedia Software Codec for AAC 1.1.0

The archive patch-630SP2-0999-extra-aac-*.tar contains the binary for AAC codec support:

QNX Aviage Multimedia Software Codec for MP3 1.1.0

The archive patch-630SP2-0999-extra-mp3-*.tar contains the binaries for MP3 codec support:

QNX Aviage Multimedia Software Codec for WMA9 1.1.0

The archive patch-630SP2-0315-extra-wma9-04-1*.tar contains the binaries for WMA codec support:

QNX Aviage Multimedia Interface for iPod 1.1.0

The archive patch-630SP2-0315-extra-ipod-*.tar contains binaries for iPod support:


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.

Note also that if you want to support a two-wire USB connection to an iPod, additional support is required from QNX Software Systems. Please contact your QNX sales support team.


QNX Aviage Multimedia Interface for PlaysForSure 1.1.0

The archive patch-630SP2-0315-extra-pfs-*.tar contains binaries for PFS device support:


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.1.0

The archive patch-630SP2-0315-extra-drm-*.tar contains binaries for DRM support:

Known issues

This section describes resolved and outstanding issues.

Resolved issues

This section lists issues identified in a previous release, and fixed in this release


Outstanding issues

This section lists issues that have been identified in this release or a previous release and are still outstanding:


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.