Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® Aviage Multimedia Suite 1.2.0 Release Notes

QNX® Aviage Multimedia Suite 1.2.0 Release Notes

Date of this edition: May 13, 2010

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

Host OS: You must have already installed the QNX® Software Development Platform 6.4.0, 6.4.1, or 6.5.0 as a self-hosted QNX Neutrino system, or on one of the following hosts:

Version of QNX SDP 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
6.4.1 Windows Vista, Vista 64-bit, XP SP2 or SP3, or 2000 SP4 Linux Red Hat Enterprise Workstation 4.0 or 5.0, Red Hat Enterprise Server 5.1 64-bit, Red Hat Fedora 10, Ubuntu 8.04 LTS or 8.10, or SUSE 11
6.5.0 Windows 7 Professional 32- and 64-bit, Vista Business 32- and 64-bit, XP Professional SP3, or 2000 SP4 Linux Red Hat Enterprise Linux 5.4 Desktop 32- and 64-bit, Red Hat Fedora 12, Ubuntu Workstation 9.10 32- and 64-bit, or openSUSE 11.2

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


Caution:
  • A client application compiled against QNX Aviage Multimedia Suite (MME) 1.0.n must be recompiled in order to work with QNX Aviage Multimedia Suite (MME) 1.2.0.
  • You must update all system components to QNX Aviage Multimedia Suite 1.2.0. Your environment must not contain both 1.0.n and 1.2.0 multimedia components.

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.

Notices

Please review the release notices before proceeding:

License Guide and Third Party License Terms List

Please refer to the License Guide and the Third Party License Terms List in PDF format, or posted on the QNX web site (www.qnx.com/download/). The installed HTML versions of the License Guide and the Third Party License Terms List each contain an incorrect image.

Upgrades and changes to your environment

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


API changes

This release introduces changes to the MME API and configuration that require you to recompile and verify your MME configuration. These changes include:

  • Removal of mme_freephoto(), mme_getphoto(), mme_play_get_transition(), mme_play_set_transition() and mme_sync_set_debug().
  • Changes to mme_get_event() to accommodate variable length events.
  • Change of most MDSs to MDPs.
  • Replacement of <DeleteOnError> and <MSID> configuration elements.
  • Changes to how io-media links to filters; see io-media DLLs below.

For a complete list of removed and deprecated API items, see Deprecated and removed features below.


MME requires Neutrino 6.4.0

The Aviage MME 1.2 release requires a Neutrino 6.4.0 (or more recent) system.

Action:

Upgrade your system to Neutrino 6.4.0 (or more recent).


Changed data structures and enumerated types

In the Aviage MME 1.2 release, enumerated types and data structures are changed from the MME 1.1 release, making binaries for this release incompatible with binaries for 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 release implements a new client library, which renders it incompatible with older Aviage MME releases.

Action:

Recompile and relink all client applications to use this release.


Changes to locations of binaries

With this release, some binary files are installed in a different location from where they were installed with Aviage MME 1.1.0. 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:

  • all mme clients
  • all mme variants
  • all io-media variants

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

Most MDSs (metadata synchronizers) have been replaced by MDPs (metadata plugins).

Action:

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

See Metadata plugins replace metadata synchronizers below.


SQLite upgrade

In release MME 1.2 SQLite has been upgraded to SQLite 3.6.12, and the MME and QDB now use SQLite 3.6.12:

  • This SQLite release uses less malloc() and free() calls than did releases prior to 3.6.1. Use of this SQLite release has resulted in performance improvements for MME synchronization operations.
  • The QNX file libz.so is now required on the target system for all applications that use libsqlite3.so.

Action:

Recompile any applications that link against the SQLite library directly.


io-media configuration file update

The introduction of new values for the io-media resource filter attribute requires you to update your io-media configuration file. See New io-media configuration below.


Documentation

This release includes the following documentation:

  • The Installation Note: mme_1.2_inst.html. Please read it before starting your installation.
  • The Release Notes: mme_1.2_rel.html (this file). Please read them before starting your installation.

  • Introduction to the MME, which includes:
    • “MME Architecture”
    • “MME Quickstart Guide”
    • “MME FAQs”

    Follow the instructions in the “Quickstart Guide” to get started with the MME.

  • The MME Developer's Guide
  • The MME API Library Reference
  • The MME Utilities Reference
  • The MME Configuration Guide
  • The MME Technotes
  • The MediaFS Developer's Guide
  • The QNX Aviage Multimedia Interface for TI OMAP Codec Engine Technote

  • The QDB Developer's Guide

What's available?

This release makes available installation packages for the standard QNX Aviage Multimedia Core 1.2.0, and for components that support devices, media formats and functionality that require special licenses. These packages can be run on QNX Neutrino, Linux or Microsoft Windows platforms, and will install the QNX Aviage Multimedia Suite for the ARM, PPC, SHLE or x86 target platforms running QNX Neutrino 6.4.0 or later. See “Host OS” and “Target OS” above for more detailed information about supported host and target platforms.

Installers

This section lists, by host OS, the installers included with this release (with 2009MMDDhhmm representing the build numbers).

QNX Neutrino

  • QNX Aviage Multimedia Core 1.2.0 — qnxaviage-mmedia-core-1.2.0-2009MMDDhhmm-nto.sh
  • QNX Aviage Multimedia Software Codec for AAC 1.2.0 — qnxaviage-mmedia-aac-1.2.0-2009MMDDhhmm-nto.sh
  • QNX Aviage Multimedia Software Codec for MP3 1.2.0 — qnxaviage-mmedia-mp3-1.2.0-2009MMDDhhmm-nto.sh
  • QNX Aviage Multimedia Software Codec for WMA9 1.2.0 — qnxaviage-mmedia-wma9-1.2.0-2009MMDDhhmm-nto.sh
  • QNX Aviage Multimedia Interface for iPod 1.2.0 — qnxaviage-mmedia-ipod-1.2.0-2009MMDDhhmm-nto.sh
  • QNX Aviage Multimedia Interface for PlaysForSure 1.2.0 — qnxaviage-mmedia-pfs-1.2.0-2009MMDDhhmm-nto.sh
  • QNX Aviage Multimedia Interface for WMDRM10-ND 1.2.0 — qnxaviage-mmedia-wmdrm10-nd-1.2.0-2009MMDDhhmm-nto.sh
  • QNX Aviage Multimedia Interface for Zune 1.2.0 — qnxaviage-mmedia-zune-1.2.0-2009MMDDhhmm-nto.sh
  • QNX Aviage Multimedia DVD Playback 1.2.0 — qnxaviage-mmedia-dvdplayback-1.2.0-2009MMDDhhmm-nto.sh

Linux

  • QNX Aviage Multimedia Core 1.2.0 — qnxaviage-mmedia-core-1.2.0-2009MMDDhhmm-linux.bin
  • QNX Aviage Multimedia Software Codec for AAC 1.2.0 — qnxaviage-mmedia-aac-1.2.0-2009MMDDhhmm-linux.bin
  • QNX Aviage Multimedia Software Codec for MP3 1.2.0 — qnxaviage-mmedia-mp3-1.2.0-2009MMDDhhmm-linux.bin
  • QNX Aviage Multimedia Software Codec for WMA9 1.2.0 — qnxaviage-mmedia-wma9-1.2.0-2009MMDDhhmm-linux.bin
  • QNX Aviage Multimedia Interface for iPod 1.2.0 — qnxaviage-mmedia-ipod-1.2.0-2009MMDDhhmm-linux.bin
  • QNX Aviage Multimedia Interface for PlaysForSure 1.2.0 — qnxaviage-mmedia-pfs-1.2.0-2009MMDDhhmm-linux.bin
  • QNX Aviage Multimedia Interface for WMDRM10-ND 1.2.0 — qnxaviage-mmedia-wmdrm10-nd-1.2.0-2009MMDDhhmm-linux.bin
  • QNX Aviage Multimedia Interface for Zune 1.2.0 — qnxaviage-mmedia-zune-1.2.0-2009MMDDhhmm-linux.bin
  • QNX Aviage Multimedia DVD Playback 1.2.0 — qnxaviage-mmedia-dvdplayback-1.2.0-2009MMDDhhmm-linux.bin

Microsoft Windows

  • QNX Aviage Multimedia Core 1.2.0 — qnxaviage-mmedia-core-1.2.0-2009MMDDhhmm-win32.exe
  • QNX Aviage Multimedia Software Codec for AAC 1.2.0 — qnxaviage-mmedia-aac-1.2.0-2009MMDDhhmm-win32.exe
  • QNX Aviage Multimedia Software Codec for MP3 1.2.0 — qnxaviage-mmedia-mp3-1.2.0-2009MMDDhhmm-win32.exe
  • QNX Aviage Multimedia Software Codec for WMA9 1.2.0 — qnxaviage-mmedia-wma9-1.2.0-2009MMDDhhmm-win32.exe
  • QNX Aviage Multimedia Interface for iPod 1.2.0 — qnxaviage-mmedia-ipod-1.2.0-2009MMDDhhmm-win32.exe
  • QNX Aviage Multimedia Interface for PlaysForSure 1.2.0 — qnxaviage-mmedia-pfs-1.2.0-2009MMDDhhmm-win32.exe
  • QNX Aviage Multimedia Interface for WMDRM10-ND 1.2.0 — qnxaviage-mmedia-wmdrm10-nd-1.2.0-2009MMDDhhmm-win32.exe
  • QNX Aviage Multimedia Interface for Zune 1.2.0 — qnxaviage-mmedia-zune-1.2.0-2009MMDDhhmm-win32.exe
  • QNX Aviage Multimedia DVD Playback 1.2.0 — qnxaviage-mmedia-dvdplayback-1.2.0-2009MMDDhhmm-win32.exe
  • QNX Aviage Multimedia Interface for TI OMAP Codec Engine 1.2.0 — qnxaviage-mmedia-codecengine-1.2.0-2009MMDDhhmm-win32.exe

For installation instructions, see the Installation Note. For instructions on how to install and start using the MME, see the “Quickstart Guide” in Introduction to the MME.


Note: The QNX Aviage Multimedia Suite supports iPod devices with the latest firmware at time of the Aviage Suite release. For detailed information about support for other types of devices, such as PFS devices, please contact QNX.

Dependencies

The table below lists the dependencies between MME packages:

Package Dependencies
Core None
Software Codec for AAC Core
Software Codec for MP3 Core
Software Codec for WMA9 Core
Interface for iPod Core
Software Codec for AAC, if AAC codec support is required.
Interface for PlaysForSure Core
Software Codec for WMA9, if WMA9 codec support is required.
Interface for WMDRM10-ND, if DRM support is required.
Interface for WMDRM10-ND Core
Interface for PlaysForSure
Interface for Zune Core
Interface for PlaysForSure
DVD Playback  Core
 Aviage Multimedia Suite 1.2.0 Intel Performance Primitive Codecs package: patch-640-1507-ipp-decoder.tar
 Aviage Multimedia Suite 1.2.0 A/V Sync patch: patch-640-1521-av-sync.tar
QNX Aviage Multimedia Interface for TI OMAP Codec Engine Platform Core

Note:
  • For clarity, the package names in the table above omit the “QNX Aviage Multimedia” prefix and the release number.
  • For third-party authorizations, please contact QNX for further details.
  • Contact QNX if you want to use the Interface for iPod or Interface for PlaysForSure packages independently of the Core package.
  • If you want to build your own DSP image for the QNX Aviage Multimedia Interface for TI OMAP Codec Engine, you must obtain directly from Texas Instruments the directory with the TI-provided decoder server, and sample codec binaries and sources: omap3530_dvsdk_combos_3_16.

 

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 new features and updates implemented in this release. Some features are described in full in these notes; all features are described in the MME documentation included with this release. For more information, please refer to this documentation.

Feature See
RTP streamed video support Internet streamed media below, and “Working with internet streamed media” in the MME Developer's Guide chapter External Devices, CD Changers and Streamed Media.
Support for playing MP3 media streamed over the internet “Working with internet streamed media” in the MME Developer's Guide chapter External Devices, CD Changers and Streamed Media.
New support for audio and video codes. New codec support below.
DVD playback Software DVD-video playback below, and “DVD-video player” in the MME Developer's Guide chapter Playing and Managing Video and DVDs, and dvdkeymgr and srv-dvdplayer in the MME Utilities Reference.
Requires the Aviage Multimedia Suite 1.2.0 Intel Performance Primitive Codecs package: patch-640-1507-ipp-decoder.tar, and the Aviage Multimedia Suite 1.2.0 A/V Sync patch: patch-640-1521-av-sync.tar
New DVD drive control utility dvddrivectl in the MME Utilities Reference.
Support for playback of audio input from a system Audio input playback below, and “Audio input playback” in the MME Developer's Guide chapter External Devices, CD Changers and Streamed Media.
Support for Zune devices “Retrieving artwork from Zune devices” in the MME Developer's Guide, and iofs-pfs.so in the MME Utilities Reference.
New playlist exploration API The MME Developer's Guide chapter Playlists, and the entries for the various mme_playlist_*() functions in the MME API Library Reference.
Support for additional media and playlist file types Additional media and playlist file type support below.
New support for MPEG-4 video MPEG-4 video ES support.
New utility for copying file sets fileset in the MME Utilities Reference.
Changes to synchronization behavior and options Changes to synchronization behavior below, the MME Developer's Guide chapter Synchronizing Media, and “Automatic and on-demand synchronizations” in the MME Configuration Guide chapter Configuring Media Synchronizations.
Improved synchronization management New synchronization configuration elements below.
Improved metadata synchronization

See Metadata plugins replace metadata synchronizers below.

Improved synchronization activity reporting New synchronization event MME_SYNC_ERROR_FOLDER_DEPTH_LIMIT below.
Metadata extraction API for artwork The MME Developer's Guide chapter Metadata and Artwork, and the MME API Library Reference.
Image metadata pre-processing The MME Developer's Guide chapter Metadata and Artwork.
Metadata rating support “Metadata ratings” in the MME Developer's Guide chapter Metadata and Artwork.
New image processing capabilities. Image pre-processing patch below; and “Enabling an image processing module” and “The <Transcode> element and its sub-elements” in the MME Configuration Guide chapter Configuring Metadata Support.
Patch to enable JPEG pre-processing quality selection Image pre-processing patch below.
Variable length events The MME API Library Reference chapter MME Events.
New API for getting and setting external device configuration options “Getting and setting external device options” in the MME Developer's Guide chapter External Devices, CD Changers and Streamed Media.
iPod driver cross transport authentication (CTA) support iPod driver cross transport authentication (CTA) support below, and the MME Developer's Guide chapter Working with iPods.
iPod video support Support for iPod video below.
Improved managment of concurrent playback requests to iPod devices iPod concurrency management below.
New option to set iPod USB charging level below.
Option for setting iPod preferences “Preferences” in the MME Utilities Reference chapter iofs-ipod.so.
Album artwork support for iPods “Retrieving artwork from iPods” in the MME Developer's Guide chapter Working with iPods.
iPod capabilities reporting “Checking for optimal connections” in the MME Developer's Guide chapter Working with iPods.
New logging level functions and command-line option The mme_*_logging() functions in the MME API Library Reference, and mme in the MME Utilities Reference.
New mediacopier function for specifying strings for unknown metadata mme_mediacopier_add_with_metadata() in the MME API Library Reference.
Improvements to copying and ripping behavior New method for specifying default ripping destination mediastore, Improved metadata handling for copying and ripping and New mmf_graphbuilder resource below.
Improved copy queue error management <DeleteOnError> configuration element below.
Improved method for counting consecutive play errors “Configuring track session failure settings” in the MME Configuration Guide chapter Configuring Playback.
Improvements to the Explorer API Improved Explorer API performance below.
New function inserts a value into the entries for a mediastore in the library table (or adjunct tables). The entry for mme_lib_column_set() in the MME API Library Reference.
New event informs clients with asynchronous connections of change to preferred default language for media. New event delivered by mme_media_set_def_lang() below.
Improved character conversion control for playlists MME_EXPLORE_UNCONVERTED_CHAR_ENCODING flag below.
Improved playlist synchronization control “Limiting playlist synchronizations” in the MME Configuration Guide.
io-media now uses DLLs io-media DLLs below, and the MME Utilities Reference chapter io-media-generic.
New io-media QuickMetadataScan resource, and other configuration and behavior features The MME Utilities Reference chapter io-media-generic.
io-media default configuration files are now shipped with the release Default io-media configuration files below.
New io-media configuration element New keepdlls configuration element below.
Improved metadata handling by io-media New io-media configuration below.
MM_IPP_VIDEO_DECODER_NUM_THREADS mmf resource MM_IPP_VIDEO_DECODER_NUM_THREADS resource below, and “Configuring io-media for video” in the MME Configuration Guide chapter Configuring Other Components.
Default language now persists across startups Default language persistence below.
Mediastore state change improvements Dedicated thread to handle mediastore state changes below.
New configuration element and function for setting the MME database time base “Database configuration elements” in the MME Configuration Guide chapter Configuring Database Behavior, and mme_timebase_set() in the MME API Library Reference.
New iofs-pfs.so option for handling .alb objects. iofs-pfs.so in the MME Utilities Reference. Note that the default behavior for handling .alb objects has changed; treat these objects as files.
Command-line application for testing multimedia target setup testapp-cmdline in the MME Utilities Reference.
New QDB shared cache feature QDB shared cache below.
New qdb thread management options New qdb -o thread* options below.
Solution for QDB/MME lockup problem. QDB/MME lockup problem and solution and New QDB thread options below.
Improvements to the mmecli utility Improvements to mmecli below.
MME Support for Texas Instruments ADE with dsplink 1.6.1 The MME Technotes chapter MME Support for Texas Instruments ADE.
Interface for TI OMAP Codec Engine The QNX Aviage Multimedia Interface for TI OMAP Codec Engine Technote.
New MediaFS documentation. The MediaFS Developer's Guide in the Aviage Multimedia Suite documentation.
Multimedia project launched on Foundry27 The project pages on Foundry 27, at http://community.qnx.com/sf/projects/multimedia/.

Internet streamed media

The MME now supports playback of internet streamed media, including:

  • HTTP streamed audio, such as SHOUTcast and Icecast. Currently supported formats are:
    • AAC
    • MP3
  • RTP streamed video from an IP camera. Currently supported formats are:
    • MPEG4-ES (MPEG4 video elementary stream)

RTP streamed video

The MME can output RTP streamed media from a camera. Support is presently limited to output of the media stream; features such as pan and tilt control are not supported.

A video decoder, such as the one provided in the QNX Aviage Multimedia Intel Performance Primitive Codecs, is required to decode the video from an IP Camera.

To access the RTP stream, pass the RTSP (Real Time Stream Protocol) access URL of the camera to io-media.

For example, an Axis 207 network camera on a network could be accessed with the following URL: rtsp://10.42.108.95:554/mpeg4/1/media.amp, where:

  • 10.42.108.95 is the IP address of the camera on the network
  • 554 is the IP camera access port number

Note: To maintain optimal sycnhronization performance, add a keepdll configuration element to your io-media configuration file as follows:
keepdll {
  name = rtp_reader
  optional = yes
}

New codec support

This release introduces support for the following codecs on x86 platforms:

Audio

  • AC-3 for DVD only

Video

  • H.263
  • H.264
  • MPEG-2 video
  • MPEG-4 video

This new video codec support uses the new video decoder ipp_video_decoder.so. For more information, see the MME Configuration Guide appendix Binary File Dependencies.


Software DVD-video playback

This release introduces a software DVD player. This DVD player runs on Intel x86 platforms; audio and video decoding are enhanced by Intel chips that support the Intel IPP library.

Required drivers and binaries

The software DVD player requires the following QNX drivers:

  • GMA9nn graphics driver
  • Intel HD Audio driver

The following binaries are specific to DVD playback:

  • dvd_demuxer.so — the DVD stream demuxer
  • dvd_eventer.so — the DVD time event manager
  • ipp_ac3_decoder.so — the Dolby Digital audio decoder
  • ipp_video_decoder.so — the video decoder
  • reader_dvd.so — the DVD data reader
  • spu_decoder.so — the sub-picture decoder
  • srv-dvdplayer — the DVD player application
  • streamer_dvd.so — the DVD disk data streamer

Playing DVDs

You can use the standard MME API to play DVDs with the software DVD player. All you need to do is start srv-dvdplayer in addition to your other MME components:

# srv-dvdplayer -c /etc/system/config/files.dat &

The -c option sets the path to the keys required for playing encrypted DVDs. See Encrypted DVDs below.

After you have started srv-dvdplayer, you can follow the usual steps for creating a track session and playing the media:

  1. Insert a DVD.
  2. Create a track session.
  3. Set the track session.
  4. Start playback.
  5. Send DVD navigation and control commands, as required.

Note: When creating the track session, you can identify a DVD in the mediastores table by its storage type, which is set to MME_STORAGETYPE_DVDVIDEO.

DVD commands

Use the following functions to manage DVD playback and trick play, set video properties and get information:

  • mme_button()
  • mme_dvd_get_status()
  • mme_play_set_speed()
  • mme_seektitle_chapter()
  • mme_seektotime()
  • mme_video_get_audio_info()
  • mme_video_get_subtitle_info()
  • mme_video_set_angle()
  • mme_video_set_subtitle()

Use the other standard MME functions to control other behavior and settings, such as volume level.


Note: Most commands for DVD playback and navigation are sent using the MME's mme_button() function, which behaves like the buttons on a DVD remote control. For more information about this and the other functions used for DVDs, see the MME API Library Reference.

Configuring the MME for software DVD playback

DVDs use the configuration settings for CDs. For more information, see the MME Configuration Guide.

For specific information about configuring the MME for video support, see “Configuring the MME for video support” in the MME Developer's Guide chapter Playing and Managing Video and DVDs.

When configuring output for the software DVD player, you must specify the layer and sublayer modifiers in the output URL string. For example, the modifiers in the string gf:8086,2772,0?layer=1&sublayer=2 ... are interpreted as follows:

  • layer=1 — the GF layer (for the video) is 1
  • sublayer=2 — the SPU layer (for subtitles) is 2

Note: The ARGB layer used for subtitles does not support scaling. To keep the video and subtitle layers correclty aligned on screen, both are centered and not scaled.

Encrypted DVDs

To play encrypted DVDs you must obtain commercial CSS decryption keys from the DVD Copy Control Association.

To provide your encrypted keys to the DVD player, use the dvdkeymgr utility.

dvdkeymgr

Generate DVD CSS decryption binary file

Syntax:

dvdkeymgr path

Runs on:

x86

Options:

None

Description:

The utility dvdkeymgr takes the keys in the input file, keys.txt, located at path, and creates a CSS decryption binary file called files.dat. For example, the command line instruction below generates a files.dat file from the keys in the file /usr/keys.txt:

dvdkeymgr /usr/keys.txt

To enable srv-dvdplayer to play encrypted DVDs, after you have generated the files.dat file, you must place it in the same folder as srv-dvdplayer, or use srv-dvdplayer's -c option to point to the file.

Input file

The input file, keys.txt must have each key index and key pair on a single line:

key index, key
...

The key index is an integer, and the key is a string of 10 hexadecimal digits. For example:

1, 0123456789
65000, abcdef0123

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:

  • MME_STORAGETYPE_SND_INPUT
  • MME_SLOTTYPE_SND_INPUT

Note: Audio input playback requires audio_streamer.so, a streamer for reading audio from a sound card.

Configuring the MME to recognize audio input “mediastores”

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

  • add an appropriate entry to the slots table
  • configure the MCD for audio input “mediastores”

Configuring the slots table

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

  • the path to the location of the audio input
  • the slot type to 11

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.

Additional media and playlist file type support

This release introduces support for the following media file types that were not supported in the previous MME release:

Format Extension
QuickTime video file .mov
Ogg Vorbis audio file .ogg

This release introduces support for the following playlist file types that were not supported in the previous MME release:

Format Extension
Advanced Stream Redirector .asx
iTunes XML .xml
RMP Playlist .rmp
Windows Media Audio Metafile .wax
Windows Media Video Metafile .wvx

MPEG-4 video ES support

With this release, the ipp_video_decoder filter has been updated to support the decoding of the MPEG-4 video ES format. Thus, this filter now supports the decoding of the following video formats:

  • H.264 stream
  • MPEG-4 video ES (elementary stream)

Changes to synchronization behavior

This release implements some changes to synchronizations:

  • CDDA synchronizations no longer combine passes
  • Directed synchronizations remove missing folders from MME database

CDDA synchronizations no longer combine passes

In previous releases, CDDA mediastore synchronization passes 1 and 2 were combined in a single pass.

Starting with this release, CDDA synchronizations no longer combine these two passes. The MME now performs the files synchronization pass and the metadata synchronization pass separately for CDDA mediastores, just as it does for other mediastore types.

This change allows configurable fallback through multiple CDDA metadata synchronizers, such as Gracenotes, Musicbrainz, CDTEXT, and none.

Directed synchronizations remove missing folders from MME database

In earlier releases, if a directed synchronization was pointed to a folder that no longer existed, but was in the MME's database, the synchronization would fail.

With this release, a directed synchronization does not fail when it is unable to find a folder that is in its database. Instead, it deletes the folder and its contents from the MME database.

This change means that the client application can remove a folder from a mediastore, then use directed synchronization to remove this folder from the MME database.


New synchronization configuration elements

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.
<StopOnDbLimit> enabled false Stop synchronization when a database limit has been reached. Default is to not stop a synchronization when a database limit has been reached.

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:

  • maintains (does not change) their file IDs
  • sets their accurate fields to 0 (zero) to indicate that the file or folder metadata may have changed; this field is in the the library table for media files and in the playlist table for playlist files

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:

  • The playlist synchronization pass synchronizes all playlists, including playlists marked accurate.
  • A playlist is marked accurate only if all entries in the playlist can be found in the library table, up to the maximum entries allowed.
  • If a playlist is marked “accurate”, the playlist synchronization operation validates the playlist entries against files in the library table, checking if any files have been added or removed.
  • If a file corresponding to a playlist entry is marked as not accurate, the MME assumes that the playlist has changed.

Metadata plugins replace metadata synchronizers

As part of the MME's improved metadata handling, in this release (with one exception) metadata plugins replace the metadata synchronizers of previous releases. This change means that you must change the <MDS> element in mme.conf into an <MDP> element. For example:

<MDP>
    ...
    <dvdifo skipdurationzero="true">
        <dvdaudio>
            <devicefid create="true"/>
            <chapterfids create="true"/>
        </dvdaudio>
    ...
    <cdtext rating="80"/>
    ...
</MDP>

Note: The Gracenote client mdp-gracenote_client.so replaces mds-gracenote_client.so.

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

  • msid — the mediastore that the limit was reached on
  • operation_id — the ID of the synchronization operation
  • param — the ID of the first folder in which the limit was reached

Event data

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

Database tables updated

No database tables are updated.


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:

  • i2c:[options] — authenticate in the iPod driver
  • cta — authenticate over the serial pins and tell the iPod to grant authenticated privileges to the USB transport

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:

  • places the authentication chip in a swappable cable rather than on a board
  • eliminates the need for the iPod driver to perform authentications

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

Support for iPod video

This MME release introduces support for video on iPod devices, using analog video and audio output.

To play video on iPods, you need:

  • a video card that supports video capture (video in)
  • software, such as a gf-writer variant, to take the captured video and pass it into the system

iPod concurrency managment

Starting with this release, the MME has improved its handling of concurrent playback requests to iPod devices.

The MME supports concurrent playback and synchronization or exploration on an iPod device. That is, you can explore or synchronize the device's folders and files during playback. You can not, however, start more than one playback session at a time; attempting to initiate a second playback session will fail and return the event MME_PLAY_ERROR_MEDIABUSY.


New option to set iPod USB charging level

This release implements two new options for iofs-usb-ipod.so, the USB transport mechanism for connecting to iPods. These new options specify how much extra current an iPod may draw to recharge. They are:

normal_mA=amps
Specify, in milliamperes, the amount of current over the default that an iPod device may draw when in normal state. Typical values are 0, 100 and 500. See Specifying current below.
suspend_mA=amps
Specify, in milliamperes, the amount of current over the default that an iPod device may draw when in suspended state. Typical values are -500 and 500. See Specifying current below.

Specifying current

The values for the normal_mA and suspend_mA options specify in milliamperes the maximum current an iPod device may draw to recharge in, respectively, normal mode and suspended mode.

The extra current an iPod may draw in any state is set at a default of 500 milliamperes (normal_mA or suspend_mA set to 0). To allow an iPod to draw 1A of extra current when in, for example, suspended state, set suspend_mA=500 (500 default + 500 configured = 1000). To prevent an iPod from drawing any current, set the option to -500 (500 default -500 configure= 0).

Please refer to the iPod specifications for more details about charging iPod devices.


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.


New method for specifying default ripping destination mediastore

This release implements a new method for specifying the default destination mediastore for copying and ripping operations.

In previous releases, the default destination mediastore was determined by the <Copying>/<Destination>/<MSID> configuration element, which identified the default mediastore by its mediastore ID. Because it is not possible to guarantee that a mediastore ID (msid) will always be associated with a specific mediastore, the default destination mediastore is now identified by its mountpath. This mountpath:

  • is specified by the <Copying>/<Destination>/<MediastoreMountpath> configuration element; its default value is /media/drive
  • must match exactly the entry in the mediastores table's mountpath column

The MME evaluates the values for the destination mediastore when it adds items to the copy queue. It checks the value of mme_mediacopier_info_t.dstmsid, and if this value is set to 0 (use the configured default), it writes the copied or ripped files to whatever mediastore is at the configured destination path. Thus, for example, if you set the value of <MediastoreMountpath> to /fs/usb0, the MME will write copied and ripped files to whatever mediastore is at this path.


Note: Note that, as part of this change:
  • The <MediastoreMountpath> configuration element replaces <MSID> configuration element.
  • If the <MSID> element is present in the MME configuration file, the MME logs an error and exits.
  • The default value for CONFIG_DEF_COPYING_DEST_MEDIA_STORE changes from 1 to "/media/drive".

Improved metadata handling for copying and ripping

This release implements improvements to how MME copying and ripping operations determine what metadata to include in destination files. Now, calls to mme_mediacopier_add_with_metadata() determine what metadata to write to a destination file as follows:

  • If the MME_MEDIACOPIER_USE_METADATA flag value is set:
    • The filename and folder name must be explicitly defined. Configured defaults are not to be used.
    • The MME_MEDIACOPIER_USE_DEFAULT_* flags are not relevant.
  • If the MME_MEDIACOPIER_USE_DEFAULT_FOLDERNAME flag is set and the folder name cannot be determined, use the default folder name.
  • If the MME_MEDIACOPIER_USE_DEFAULT_FILENAME flag is set and the filename cannot be determined, use the default filename.

Note: This change:
  • introduces the new constant MME_MEDIACOPIER_USE_DEFAULT_FOLDERNAME
  • extends the use of MME_MEDIACOPIER_USE_DEFAULT_FILENAME to ripping as well as copying operations

Mediacopier flags

Media copying and ripping uses the flags argument to determine media copying and ripping behavior. Possible values are combinations of:

Flag Value Description
MME_MEDIACOPIER_USE_DEFAULT_FILENAME 0x0002 Use the default destination filename set in the MME configuration file.
MME_MEDIACOPIER_USE_METADATA 0x0004 Use the specified metadata; do not use defaults.
MME_MEDIACOPIER_USE_DEFAULT_FOLDERNAME 0x0008 Use the default destination folder name set in the MME configuration file.

<DeleteOnError> configuration element

A new <DeleteOnError> configuration element for controlling copying and ripping operations when they encounter errors. It 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:

  • DRM or copy protected
  • corrupt
  • uses and unsupported codec

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


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.


New event delivered by mme_media_set_def_lang()

Starting with this release, the function mme_media_set_default() delivers the event MME_EVENT_DEFAULT_LANGUAGE so that asynchronous clients are notified that the default preferred language has been successfully set, or that the attempt to change the default language has failed.

MME_EVENT_DEFAULT_LANGUAGE

The MME function mme_media_set_def_lang() delivers the event MME_EVENT_DEFAULT_LANGUAGE to indicate that the default preferred language for a media item has been set.

Event data

The success or failure of the default preferred language update, and the preferred language, in mme_event_default_language_t.


Note: The string in mme_event_default_language_t.language always indicates the current default preferred language. That is, if mme_media_set_def_lang() is unable to change the default language to the requested language, this string will indicate the preferred language before the function call was made (because it is still the set preferred language).

Database tables updated

No database tables are updated.

mme_event_default_language_t

Default language event information

Synopsis

#include <mme/types.h>

typedef struct s_mme_default_language_event {
    int        error;
    const char language[1];
} mme_event_default_language_t;

Description

The structure mme_event_default_language_t carries information delivered with a MME_EVENT_DEFAULT_LANGUAGE event, including the result of the last attempt to set the default language, and a NULL termianted string indicating the current default language. It includes at least the members described in the table below.

Member Type Description
error int The result of the last request; this member is set to EOK on success.
language const char A NULL terminated string that indicates the current default language.

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.

io-media DLLs

Starting with this release io-media-generic no longer links statically to filters. It therefore now requires more DLLs to be present that it did when it linked statically to filters. The following filters and streamers are now required by the io-media default configuration:

  • audio_writer.so
  • cdda_parser.so
  • cdda_streamer.so
  • fildes_streamer.so
  • mpega_parser.so
  • queue_filter.so
  • stream_reader.so

The default io-media configuration loads some filters and streamers permanently into memory; other filters are loaded and unloaded dynamically when necessary. Some filters are loaded permanently because they are needed by the majority of graphs; if any of these required filters are missing, there is a high probability that io-media will not be able to play any media. These filters are, therefore, specified as required by the default configuration; if any of these filters is missing, io-media will exit at startup.

Some other filters are loaded permanently because they might be used for potentially high-bandwidth operations that could be significantly slowed down by having to load and unload filters. These filters typically support a particular operation or media type; if they're missing, io-media will not be able to play some media but will have no problems playing other media. Some of these filters are shipped in a separate, optional package, and may not be present on some targets. These filters are flagged as optional in the default configuration; if they are missing, io-media logs a warning to the system log, but does not treat the situation as a fatal error.

Configuring the set of required filters and streamers

You can change the minimum DLL set that io-media maintains in memory in order to make optimal use for your environment of the system resources you have available. Generally, the more DLLs in memory, the better the performance but the greater the memory required.

The io-media configuration file includes multiple keepdll elements under the mmf module's module-options element. Each keepdll element determines if the named filter or streamer is in the set or is optional.

The default setting is required: if it the DLL is missing, log an error and exit. Thus, in the example below:

  • tmpfile_streamer is optional (because it is only used for playback during ripping) — it is not kept in memory, and io-media starts even if this streamer is missing
  • stream_reader is required — it is kept in memory, and io-media will not start if this streamer is missing
module-options {
    ...
    keepdll {
        name = "tmpfile_streamer"
        optional = yes
    }
    keepdll {
        name = "stream_reader"
    }
    ...
}

Default io-media configuration shipped with the release

Starting with this release, to facilitate updating io-media default configuration files are included as a reference in the release package under etc/.

These files have the format io-media-variant.cfg. For example, io-media-generic.cfg is the configuration file for io-media-generic.


New keepdlls configuration element

This release introduces a new io-media configuration element: keepdlls (note the final “s”).

You can use this element to specify DLLs to keep by an interface name, rather than by the DLL name. This approach allows you to use, for example, one element to load all streamers, while another element loads all parsers. For example:

keepdlls {
    # Keep all the DLLs that have the specified interface
    interface = "AOStreamer"
}
keepdlls {
    interface = "MediaMetadataParser"
}

With the new keepdlls element implemented, the default io-media configuration no longer needs to have a keepdll entry for the optional streamers and parsers. Note, however, that the configuration maintains keepdll entries for non-optional (mandatory) DLLs, to ensure that io-media fails if any of these DLLs are missing.


New mmf_graphbuilder resource

This release of io-media introduces a new mmf_graphbuilder resource that can be used to prevent seeking and trick play activities during ripping with playback operations.

The new resource, MM_TMPFILE_STREAMER_SEEKABLE, can be:

  • omitted or set to its default value 1 (one) to allow seeking and trick play during ripping with playback operations

    or

  • set to 0 (zero) to prevent seeking and trick play activities during ripping with playback operations

For example:

resource {
    name = "MM_TMPFILE_STREAMER_SEEKABLE"
    type = long
    value = 0
    optional = yes
}

For more information about applying mmf_graphbuilder resources, see “Applying a resource to a filter” in the MME Utilities Reference chapter io-media-generic.


New io-media configuration

This release introduces new values for the io-media resource filter attribute. The implementation of these new values allows the resource element configured for a trackplayer to be used, not only when creating a streamer for playback (as in previous releases), but also now when creating a streamer to use solely for a metadata scan.

The new values are:

  • filter = "streamer" — apply when creating a streamer for playback or metadata scan (default)
  • filter = "streamer/playback" — apply only when creating a streamer for playback
  • filter = "streamer/metadata" — apply only when creating a streamer for metadata scan

The default io-media configuration uses these new values to set the StreamerStickyError resource for both playback and metadata extraction. To change this configuration, simply change the io-media configuration file. For example, to set the StreamerStickyError resource for playback only, update the file as follows:

module = "mmf_graphbuilder"
resource {
    filter = "streamer/playback"
    name = "StreamerStickyError"
    type = long
    value = 1
    optional = yes
}

MM_IPP_VIDEO_DECODER_NUM_THREADS resource

The mmf MM_IPP_VIDEO_DECODER_NUM_THREADS resource is used to configure the number of threads available for video decoding. It was formerly called MM_IPP_H264_DECODER_NUM_THREADS .

Note also that this resource does not use a filter attribute. For example:

resource {
    name = "MM_IPP_VIDEO_DECODER_NUM_THREADS"
    type = long
    value = 2
    optional = yes
}

Default language persistence

The MME now maintains the language set by the user across system shutdowns and restarts. It uses the language set in the active row of the languages table as the default language.

With earlier MME releases, even if the user called mme_setlocale() to set the language in the languages table, the MME would start up with the default language set by the <Locale> element in the MME configuration file.

With this release, the MME only refers to the <Locale> element if it does not find an active language set in its database.


Dedicated thread to handle mediastore state changes

The MME now uses a separate thread to handle mediastore state changes reported by the MCD. This use of a separate thread ensures that the MME handles all device state changes correctly, even for unresponsive devices.

This new feature implies some minor changes to the MME behavior, as follows:

  • If multiple devices change state at the same time, entries in the logs may alternate more frequently between devices.
  • There is now a greater inconsistency to the assignment of mediastore IDs (msid) on first startup of new systems.

QDB shared cache

This releases introduces QDB shared caching. This feature both improves performance times and reduces the total amount of memory cache required for multiple connections. The introduction of shared caching implements the following changes to the QDB default behavior:

  • Shared caching is now the default QDB startup mode. If you want to disable shared caching, you must use the new -D command-line option.
  • Exclusive mode is now the default QDB startup mode; that is, the QDB reserves exclusive write privileges to the database (for shared caching). To allow other applications to use the database files, use the new -A option.

Note: QDB will exit immediately if it is started with shared cache disabled and exclusive mode enabled. For example:
# qdb -c /db/qdb.cfg -v -A -Otempstore=/fs/tmpfs -Rset

Shared cache options

The shared cache feature introduces the following new QDB startup options:

-A
Turn off exclusive mode: allow other applications to use the database files.
-D
Disable shared cache. You should only use this option if you need to debug shared cache.

Advantages of shared caching

Using the shared cache feature also reduces the total amount of memory required for multiple database connections, because multiple connections can share the same memory cache.

For example, without shared caching, if 1 MB of memory is required for each database connection, 40 connections require 40 MB of memory. However, with shared cache enabled, these 40 connections can share the same memory cache, allowing you to reduce the memory cache to 25 MB (or another size determined by your environment and performance requirements). Further, with shared cache, there is no duplication in memory, so in the 25 MB of memory you may have almost the entire database, virtually eliminating the need for disk I/O.


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:

  • The default number of threads for the QDB has been increased from 10 to 64.
  • The QDB -o thread option has been deprecated and replaced by the following options:
    • threadmax — the maximum number of threads to allocate to qdb
    • threadhi — the maximum number of threads that can be kept in a blocked state ready to work
    • threadlo — the minimum number of threads to kept be in a blocked state ready for work

See also QDB/MME lockup problem and solution below.


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.


Improvements to mmecli

This release implements the following improvements to mmecli:

  • The mmecli trksessionview_read command can now be used to read file-based track sessions as well as library-based track sessions. This command now supports an option that sets the track session type to read. If this option is omitted or set to 0 (zero), the trksessionview_read command calls mme_trksessionview_readx() to read library-based track sessions. If this parameter is set to 1 (one), the trksessionview_read command calls mme_trksessionview_readx() to read file-based track sessions. See also the chapter on mmecli in the MME Utilities Reference. (Ref. 64683)
  • mmecli now cleans up after a failed call to mme_trksession_set_files(). (Ref. 66967)

Deprecated and removed features

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

Feature Status Reference
ipp_h264_decoder.so Removed: use ipp_video_decoder.so. See New codec support above. 67517
mme_play_get_transition() and mme_play_get_transition() Removed: these functions were never implemented, and have been removed from the header file mme.h. 45637
mme_freephoto() and mme_getphoto() Removed: see New metadata extraction API under New featuresabove. 58371
mme_sync_set_debug() Removed: use mme_set_logging() with the module set to sync. 45637
mme_get_event() Changed to accommodate variable length events. 65237
library_extra table Removed. See library_extra table below. 60667
iPod “compat” mode Removed. 63373
qdb_getdbsize() Soon to be deprecated and replaced by another function. Note that the qdb_getdbsize() function's free_pages parameter is now always returned as 0.   –  
qdb_transaction() This previously deprecated function has been removed from the QDB client library. 48615
qdb -o thread option Deprecated. 65069
<MSID> configuration element Replaced by <MediastoreMountpath>. See New method for specifying default ripping destination mediastore above. 66585
<DeleteOnNonRecoverableError> configuration element Removed; see <DeleteOnNonRecoverableError> below, and <DeleteOnError> configuration element above. 65510
MDSs (metadata synchronizers) Replaced: most MDSs (metadata synchronizers) have been replaced by MDPs (metadata plugins); see Metadata plugins replace metadata synchronizers above. 60874
mme-shuffle Removed; no longer required. 67687

library_extra table

MME performance has been improved by the integration of the library_extra table columns into the library table. These columns are:

  • copied_fid
  • duration
  • fid
  • fullplay_count
  • last_played
  • permanent
  • playable

If the removal of the library_extra will cause problems with your projects, as a temporary measure until you have removed all references to the library_extra from your applications, you can uncomment the following “CREATE VIEW” line in mme_library.sql to create an SQL view that mimics the library_extra table:

-- CREATE VIEW library_extra AS select fid, last_played, fullplay_count, duration, copied_fid, playable, permanent FROM library;

Note: In order to benefit from the performance improvements gained by the integration of the library_extra table's columns into the library table, you should remove references to the removed table from your applications as soon as possible.

<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 mmedia-core-1.2.0-2009MMDDhhmm-* installers. 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:

  • lib/dll/mmedia/aac_parser.so — AAC parser filter DLL for io-media.
  • lib/dll/mmedia/ade3_writer.so (ARMLE targets only) — Audio Decode Engine support.
  • lib/dll/mmedia/audio_streamer.so — a streamer for reading audio from a sound card.
  • lib/dll/mmedia/audio_writer.so — a filter for standard audio output to a PCM device.
  • lib/dll/mmedia/cdda_parser.so — the CD-ROM parser filter for io-media.
  • lib/dll/mmedia/cdda_streamer.so — the CD-ROM streamer filter for io-media.
  • lib/dll/mmedia/damping_audio_writer.so — a filter for fading a PCM stream in or out.
  • lib/dll/mmedia/fildes_streamer.so — the file streamer for io-media.
  • lib/dll/mmedia/gf_writer.so (x86 targets only) — video writer for io-media.
  • lib/dll/mmedia/http_streamer.so — internet stream writer for io-media.
  • lib/dll/mmedia/media_streamer.so — media streamer filter for io-media.
  • lib/dll/mmedia/mp4_parser.so — MPEG-4 video parser for io-media.
  • lib/dll/mmedia/mpega_parser.so — MPEG audio parser for io-media.
  • lib/dll/mmedia/ogg_decoder.so(PPCBE, SHLE and x86 targets only) — Ogg Vorbis decoder for io-media.
  • lib/dll/mmedia/ogg_encoder.so (PPCBE, SHLE and x86 targets only) — Ogg Vorbis encoder for io-media.
  • lib/dll/mmedia/queue_filter.so — buffer queue filter for io-media.
  • lib/dll/mmedia/rawfile_writer.so — raw file writer filter for io-media.
  • lib/dll/mmedia/rtp_reader.so (x86 targets only) — RTP streamed medeia reader
  • lib/dll/mmedia/stream_reader.so — stream reader filter for io-media.
  • lib/dll/mmedia/tmpfile_streamer.so — temp file streamer filter, used to support concurrent reading and writing of a file for io-media.
  • lib/dll/mmedia/wav_parser.so — WAV file parser filter for io-media
  • lib/dll/mmedia/wavfile_writer.so — WAV file encoder/writer filter for io-media.
  • lib/dll/mme-imgprc-gf.so — image processing module.
  • usr/bin/qdbc — a utility for executing statements on a qdb database.
  • usr/lib/libaoi.so — the addon interface library, required by io-media
  • usr/lib/libaoi.so.1
  • usr/lib/libiomedia.a
  • usr/lib/libmme.a
  • usr/lib/libmme.so
  • usr/lib/libmme.so.1
  • usr/lib/libmmedia.so — multimedia library, required by the MME and io-media.
  • usr/lib/libmmedia.so.1
  • usr/lib/libmmeS.a
  • usr/lib/libmmfilter.so — filter support library, required by the MME and io-media
  • usr/lib/libmmfilter.so.1
  • usr/lib/libogg.so (PPCBE, SHLE and x86 targets only) — Ogg Vorbis support
  • usr/lib/libogg.so.1 (PPCBE, SHLE and x86 targets only)
  • usr/lib/libqdb.a
  • usr/lib/libqdb.so — required for dynamic linking to libraries
  • usr/lib/libqdb.so.1 — required for dynamic linking to libraries
  • usr/lib/libqdbS.a
  • usr/lib/libsqlite3.so — SQLite 3 library, used by qdb.
  • usr/lib/libsqlite3.so.1
  • usr/lib/libvorbis.so (PPCBE, SHLE and x86 targets only) — library for Ogg Vorbis.
  • usr/lib/libvorbis.so.1 (PPCBE, SHLE and x86 targets only)
  • usr/lib/libxml2.a
  • usr/lib/libxml2.so — libxml2 support.
  • usr/lib/libxml2.so.1 — libxml2 support.
  • usr/lib/libxml2S.a
  • usr/sbin/fileset — file set copy utility
  • usr/sbin/io-fs-media — a version of io-fs with built-in modules for PFS, iPod, and tmpfs (requires appropriate licenses).
  • usr/sbin/io-media-generic — generic version of io-media.
  • usr/sbin/mme-generic — generic version of mme.
  • usr/sbin/qdb — the QDB database binary.

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

  • mme.sql — the MME configuration schema.
  • mme_connect.sql — connection schema.
  • mme_custom.sql — the configuration schema for a custom table.
  • mme_data.sql — the customer configurable default data.
  • mme_library.sql — the MME library schema.
  • mme_temp.sql — the in-memory MME schema.
  • mmgui.sql — the mmegui schema.
  • qdb.cfg — the qdb configuration file.

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

  • iofs.fsdio-fs configuration file.
  • iofs.fsfio-fs configuration file.
  • iofs.fsmio-fs configuration file.
  • io-media-generic.cfgio-media configuration file.
  • mme.conf — MME configuration file.

Headers and libraries

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

  • cipher.h
  • iomedia/api.h
  • iomedia/events.h
  • iomedia/types.h
  • mm/charconvert.h
  • mm/types.h
  • mme/config.h
  • mme/event.h
  • mme/explore.h
  • mme/interface.h
  • mme/metadata.h
  • mme/mme.h
  • mme/playlist.h
  • mme/types.h
  • mmedia/media_error.h
  • mmedia/media_event.h
  • mmedia/media_interfaces.h
  • mmedia/mediafilter_defs.h
  • mmedia/medialib_defs.h
  • mmedia/mmedia.h
  • qdb/qdb.h
  • sqlite3.h
  • sys/dcmd_dio.h
  • sys/dcmd_fsys.h
  • sys/dcmd_io-media.h
  • sys/dcmd_media.h
  • sys/scsi_cmds.h
  • sys/uuid.h

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:

  • avrcpexample — an io-fs-media module example for Bluetooth support (located under io-fs/drvr/media/).
  • mmebrowse — the MME browse client.
  • mmecli — a command-line interface to the MME.
  • mmexplore — an example of how to use the explorer API.
  • mmplexplore — an example of how to use the playlist explorer API.
  • priorityfolder — an example of how to set a specific folder as a priority folder.
  • testapp-cmdline — a command-line application for testing multimedia target setup.

If you have QNX SDP 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 installers.

QNX Aviage Multimedia Software Codec for AAC 1.2.0

The installers qnxaviage-mmedia-aac-1.2.0-2009MMDDhhmm-* contain the binaries for AAC codec support:

  • lib/dll/mmedia/qnx_raac_decoder.so (PPCBE, SHLE and x86 targets only) —— an AAC audio format decoder.
  • usr/lib/libqaacd.so (PPCBE, SHLE and x86 targets only)
  • usr/lib/libqaacd.so.1 (PPCBE, SHLE and x86 targets only)
  • lib/dll/mmedia/qnx_raac_decoder-v6.so (ARMLE targets only) —— an AAC audio format decoder.
  • usr/lib/libqaacd-v6.so (ARMLE targets only)
  • usr/lib/libqaacd-v6.so.1 (ARMLE targets only)

QNX Aviage Multimedia Software Codec for MP3 1.2.0

The installers qnxaviage-mmedia-mp3-1.2.0-2009MMDDhhmm-* contain the binaries for MP3 codec support. They include the following files:

  • lib/dll/mmedia/fraunhofer_mp3_decoder.so (ARMLE targets only) — fixed-point decoder.
  • lib/dll/mmedia/xing_mpega_decoder.so — MP3 floating-point decoder.

QNX Aviage Multimedia Software Codec for WMA9 1.2.0

The installers qnxaviage-mmedia-wma9-1.2.0-2009MMDDhhmm-* contain the binaries for WMA codec support. They include the following files:

  • lib/dll/mmedia/wma9_decoder.so — Windows Media 9 decoder for io-media.
  • lib/dll/mmedia/wma9_parser.so — Windows Media 9 parser filter for io-media.

QNX Aviage Multimedia Interface for iPod 1.2.0

The installers qnxaviage-mmedia-ipod-1.2.0-2009MMDDhhmm-* contain binaries for iPod support, and as sample application. They include the following files:

  • lib/dll/iofs-i2c-ipod.so — a module for interfacing with the iPod authentication chip.
  • lib/dll/iofs-ipod.so — a module for io-fs, for iPod device support.
  • lib/dll/iofs-ser-ipod.so — a module for using iPod devices through a serial connection.
  • lib/dll/iofs-usb-ipod.so — a module for using iPod devices through a USB connection.

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 installers qnxaviage-mmedia-pfs-1.2.0-2009MMDDhhmm-* contain binaries for PFS device support. They include the following file:

  • lib/dll/iofs-pfs.so — a module for io-fs, for Microsoft PlaysForSure (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.2.0

The installers qnxaviage-mmedia-wmdrm10-nd-1.2.0-2009MMDDhhmm-* contain binaries for DRM support. They include the following files:

  • lib/dll/cipher-aes.so — a library used by the PFS module to io-fs for supporting DRM on PFS devices.
  • lib/dll/iofs-msdrm10.so — a library used by the PFS module to io-fs for supporting DRM on PFS devices.
  • usr/lib/libpfscrypto.so
  • usr/lib/libpfscrypto.so.1

QNX Aviage Multimedia Interface for Zune 1.2.0

The installers qnxaviage-mmedia-zune-1.2.0-2009MMDDhhmm-* contain binaries for Zune support. They include the following files:

  • lib/dll/iofs-zune.so — a library used for Zune support.

QNX Aviage Multimedia DVD Playback 1.2.0

The installers qnxaviage-mmedia-dvdplayback-1.2.0-2009MMDDhhmm-* contain binaries for the DVD player. They are for x86 targets, and include the following files:

  • lib/dll/mmedia/dvd_demuxer.so
  • lib/dll/mmedia/dvd_eventer.so
  • lib/dll/mmedia/reader_dvd.so
  • lib/dll/mmedia/spu_decoder.so
  • lib/dll/mmedia/streamer_dvd.so
  • usr/bin/dvddrivectl — DVD drive control utility.
  • usr/bin/dvdkeymgr — DVD CSS decryption binary file generator.
  • usr/bin/srv-dvdplayer — software DVD-video player.

QNX Aviage Multimedia Interface for TI OMAP Codec Engine 1.2.0

The installers qnxaviage-mmedia-codecengine-1.2.0-2009MMDDhhmm-* contain binaries for the QNX Codec Engine. They include the following files:

  • arm/so.le/libcodecengine.so.1 — library to contain the ARM side of the Codec Engine
  • arm/so.le/libcodecengineS.a — library to contain the ARM side of the Codec Engine
  • ce_loader — a QNX utility used to load the DSP image and stay resident for the duration of the multimedia session.
  • dsp-bins/dsplink160 — the QNX port of DSPLink161
  • dsp-bins/omap3530image.exe — an installer executable containing the sample DSP image; this installer has a click-through license agreement, which you must complete before you can install the DSP image on your host

They also include the following MME component, located under lib/mmedia/filters/decoders/:

  • ce_audio_decoder — the audio filter

Note: The TI-provided DSP image for the Codec Engine can be extracted to Windows platforms only.

Binaries for other packages

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

QNX Aviage Multimedia Intel Performance Primitive Codecs

The package with the binaries for video codec support and video codec support for the software DVD player is patch-640-1453-ipp-decoder.tar. It is available from the QNX web site (www.qnx.com). This package is for x86 targets, and contains:

  • lib/dll/mmedia/ipp_ac3_decoder.so — the Dolby Digital audio decoder
  • lib/dll/mmedia/ipp_video_decoder.so — the video decoder
  • usr/lib/libumc_common.so.1

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.

  • Installation of multiple packages (on Linux and Windows hosts): testing has revealed that installations of multiple MME packages on hosts with both QNX SDP 6.4.0 and QNX SDP 6.4.1 may erroneously overwrite already installed packages unless the active location is expressly specified. (Ref. 68434)

    For example, if you have QNX SDP 6.4.0 on your system, then perform the following operations:

    1. Install the MME Core 1.2.0.
    2. Install the MME Interface for iPod 1.2.0.
    3. Install QNX SDP 6.4.1 on your system.
    4. Log in again, and make QNX SDP 6.4.1 the active configuration.

    The following behavior will result if you attempt to install multiple MME packages:

    • The MME Core 1.2.0 component installs correctly under QNX SDP 6.4.1.
    • The MME Interface for iPod 1.2.0 installs not under QNX SDP 6.4.1 as required, but under QNX SDP 6.4.0, overwriting the QNX SDP 6.4.0 MME Interface for iPod installation there. This step can be repeated, and each time the component incorrectly overwrites the QNX SDP 6.4.0 MME Interface for iPod installation.

    Workaround: install from the command-line, specifying the installation location for all packages installed after the MME Core 1.2.0. For example, on a Linux system:

    # qnxaviage-mmedia-ipod-1.2.0-build#-linux.bin -P beanProduct.installLocation="/opt/qnx641"

    Or, on a Windows system, for example:

    C:\path> qnxaviage-mmedia-ipod-1.2.0-build#-win32.bin -P beanProduct.installLocation="C:\QNX641"

    Where /opt/qnx641 and C:\QNX641 are the location of the baseline installation under which you are installing the QNX Aviage Multimedia components.


    Caution:
    • Installing an optional package under QNX SDP 6.4.0 when optional packages are already installed under QNX SDP 6.4.1 requires the same workaround.
    • The installer will not display an error message if there is an error (a typo) in the command-line argument. It will simply ignore the argument. Thus, a typo in the command-line argument specifying the installation location will have the same result as not specifying the installation location, and you may erroneously overwrite an already installed package.

  • Testing has identified some conditions under which io-media can become deadlocked on io-audio. (Ref. 67806)

    This deadlock manifests itself as the appearance that audio and video have “frozen”. Stopping the playback will get deadlocked as well. If you kill io-audio, io-media will recover; you can then restart io-audio, and execution will resume.

  • Testing has revealed a memory leak via io-media-generic during looping playback of video. (Ref. 67771)

  • Testing has identified some instances where corrupt MPEG-4 files with the .m4a extension have caused io-media to fault. (Ref. 68459)

  • Testing has shown that if a USB key is removed from the system during video playback, the MME may stop video playback without a stop command being issued. (Ref. 66698)

  • Testing has revealed a possible system lock up when using the QDB on a QNX 6 filesystem while lazy page faulting is enabled. (Ref. 62483)

    Workaround: when using the QDB on a QNX 6 filesystem, run your system with lazy page faulting disabled by setting the procnto memory manager options to -mL.

  • Testing has identified that with this release, the MME will not mount audio CDs if the physical device was mounted by fs-udf.so. (Ref. 68793)

    Workaround: use fs-cd.so to mount /dev/cd0.

  • The QDB control interface fails if there are locks held on the datababase. (Ref. 67747)

    Workaround: avoid using the QDB .control file. Instead, use the client library API functions, such as qdb_backup() to do a database backup.

  • iPhone and iPod touch G1 connected via high speed USB: content skips during the start of playback.

    Workaround: use mme_device_get_config() to determine the iPod or iPhone model, and refrain from artwork retrieval on models that exhibit the problem. The model ID and number are in the XML content retrieved by mme_device_get_config(); for example:

    <iPod>
     <version>
      <model_id value="00150000" valuetype="hex"/>
      <model_number value="MA627C" valuetype="text"/>
      <firmware value="020201" valuetype="hex"/>
      ...

    For more information, see “Getting and setting device configuration values” in the MME Developer's Guide chapter External Devices, CD Changers and Streamed Media. For more information about mapping Apple model IDs and numbers to specific devices, see the Apple iPod documentation, and the Apple iPod and iPhone specifications.

  • The functionality provided by the image conversion <Output> element quality attribute requires a patch; see Image pre-processing patch above. (Ref. 65438)

  • The iPod nano 2G refuses to connect if the upstream port reports full speed; this device can not complete a control transfer if the interrupt endpoint is polled before the status phase of the control transfer is complete. This problem has been reported for this iPod only; other iPods do not indicate this problem. (Ref. 60634)

    Workaround: use a high speed port for connections to iPod nano 2G devices; do not use a full speed port.

  • iPods: quick track changes between different sampling rates on iPod Touch with older firmware (1.x) using digital audio results in silence. (Ref. 60652)

    Workaround: the client application should enforce a brief pause when requesting track changes on these devices.

  • Incorrect configuration of the MME can cause it to fall into a loop while pruning a mediastore during synchronization. (Ref. 47264)

    Workaround: always configure the MME so that the maximum memory permitted for synchronization operations is less than the maximum RAM size configured for tmpfs.

  • Sample MediaFS source elements for AVRCP and ACP incorrectly include SPE variants:
    examples/io-fs/drvr/media/ipod/acp/sim/dll/ppc-be-spe
    examples/io-fs/drvr/media/ipod/acp/sim/a/ppc-be-spe
    examples/io-fs/drvr/media/ipod/acp/i2c/dll/ppc-be-spe
    examples/io-fs/drvr/media/ipod/acp/i2c/a/ppc-be-spe
    examples/io-fs/drvr/media/avrcpexample/dll/ppc-be-spe
    examples/io-fs/drvr/media/avrcpexample/a/ppc-be-spe

    Workaround: place in any of the relevant directories a Makefile.dnm file for ppc-be-spe, or use an EXCLUDE_VARIANTLIST=spe to ignore the ppc-be-spe items when compiling.

  • Slow playback of video files does not work as required. (Ref. 65819)

  • Software DVD-video player: reverse playback at 1x normal speed is not supported. (Ref. 68280)

  • Software DVD-video player: DTS stream playback is not supported. (Ref. 68196)

  • Software DVD-video player: errors in the documentation. The MME Developer's Guide chapter Playing and Managing Video and DVDs contains some minor errors:
    • The list of binaries specific to DVD playback should not include ipp_mpeg2_decoder.so or gf_mixer.so.
    • The documentation incorrectly states that the MME synchronization supports file IDs (fids) for the various parts of a DVD, and that these file IDs can be used to play specific parts of a DVD. This feature is not supported in the MME 1.2 G/A product.

    Workaround: download the latest Multimedia documentation.

  • Software DVD-video player: changes to screen angle settings may be delayed several seconds before taking affect. (Ref. 67568)

  • Software DVD-video player: attempting to perform a fast reverse with repeat chapter enabled stops playback. (Ref. 69577)

  • Software DVD-video player: video quality on sub-menus for some DVDs may be grainy. (Ref. 68200)

  • Accessing a second USB device during digital playback from an iPod device may compromise the quality and consistency of the playback. (Ref. 60593)

    During testing of playback from iPod devices, connection of a second device that takes a long time to access or scan files has occasionally produced audible gaps in the playback, or reports of buffer underuns. The cause of this behavior may be the test environment configuration, but this hypothesis has not been confirmed.

  • If the io-fs iPod module (iofs-ipod.so) fails to launch because of authentication issues, the subsequently launched io-audio instance may also fault. (Ref. 61563)

  • Samsung S3 MTP devices do not work with the QNX PFS driver (io-usb); the problem is under investigation. (Ref. 60631)

  • The MME fails to correctly parse album art for some MP3 files. The current parser behavior is to “preparse” ID3 tags and remove from it any frames that are larger than four kilobytes. This behavior means that any images larger than four kilobytes found inside these tags are discarded. The problem will be resolved by the MME's new album art “Load on Demand” feature. (Ref. 60496)

  • When playing tracks from a PFS device, the MME gets metadata from the PFS device instead of parsing the media file itself to extract the metadata (which would be a much slower process). If a PFS device doesn't provide metadata values, the MME fills in the values with its defaults. Note, however, that a PFS device's failure to provide metadata may indicate that there is a problem with the track, the device, or the way that the track was put on the device. (Ref. 44770)

  • The MME has been observed to incorrectly report an error (errno=5) when setting repeat or random modes repeatedly and in rapid succession on an iPod. (Ref. 49402)

  • Choppiness has been observed in parsing of MPEG4 files. (Ref. 54514)

  • An unexpected stopped playstate has been observed on some mediastores during a fast rewind. (Ref. 53104)

  • Trick play (fast forward, fast reverse) doesn't work for very large files (over 1.5 gigabytes) on PFS devices. (Ref. 42847)

  • Possible heap corruption during playback of .mp3 files with xing_mpega_decoder. (Ref. 54261)

  • Testing has been able to make the MME fail under the following specific conditions (Ref. 47399):
    • Playback MPEG4 tracks from a USB stick.
    • Initiate some other process to consume a large portion of the system memory.
    • Change tracks, then immediately remove the USB stick.

  • TI Jacinto: errors from ade3_writer are not passed up as required. Therefore, when playback fails via the DSP, the MME and HMI are unaware of the error: playback remains suspended and does not skip to the next track as required. (Ref. 68156)

  • TI Jacinto: upon completion of a fast-forward or fast-reverse command for WMA files via the TI Jacinto DSP (ADE), playback will resume from the beginning of the file rather than the position where the trick play command was cancelled. (Ref. 46438)

  • TI Jacinto: playback of WMA files after a pause is executed may result in a short burst of noise. (Ref. 46437)

  • x86 platforms: qdb faults when attempting to handle statements with a large number of SELECTs. The SQLite #define that caps the number of SELECTs allowed at 500 does not appear to be respected. (Ref. 57293)

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 the QNX Software Development Platform guide or visit our website, www.qnx.com.