Date of this edition: February 17, 2009
Target OS: This software is compatible with target systems running
QNX® Neutrino® 6.4.0.
Host OS: You must have already installed the
QNX® Momentics® development suite 6.4.0 as a self-hosted QNX Neutrino system, or on one of the following hosts:
Version of QNX Momentics
|
Microsoft Windows
|
Linux
|
6.4.0
|
Windows Vista, Vista 64-bit, XP SP2 or SP3, or 2000 SP4
|
Linux Red Hat Enterprise Workstation 4 or 5, Red Hat Enterprise Server 5.1 64-bit, Red Hat Fedora Core 6 or 7, Ubuntu 6.0.6 LTS or 7, or SUSE 10
|
|
For information on installing this package, see the Installation 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 might also find the reference numbers useful for tracking issues as they become fixed.
|
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.
|
This package contains libraries, binaries, and source code for sample applications for the Multimedia Engine running on QNX Neutrino.
The main archive, mme_build20.13.0_feb18_09.zip, contains the following:
- patch-630SP2-0315-mmedia-02-17-1436.tar
- MME core product binaries.
- patch-630SP2-0999-extra-aac-02-17-1436.tar
- MME software codec for AAC files.
- patch-630SP2-0315-extra-drm-02-17-1436.tar
- MME binaries for DRM support.
- patch-630SP2-0315-extra-mp3-02-17-1436.tar
- MME binaries for MP3 support.
- patch-630SP2-0315-extra-ipod-02-17-1436.tar
- MME binaries for iPod support.
- patch-630SP2-0999-extra-ipp-02-17-1436.tar
- MME software codec for H.264 files.
- patch-630SP2-0315-extra-pfs-02-17-1436.tar
- MME binaries for PFS device support.
- patch-630SP2-0315-extra-wma9-02-17-1436.tar
- MME software codec for WMA files.
|
- You should replace existing .sql and configuration files with the files included in this release.
- Benchmarks for this release are available on request.
- This alpha release has not been tested on Jacinto platforms.
|
This release includes changes and upgrades that require changes to your enviroment:
Starting with the Aviage MME 1.2 alpha 20.12 release, the MME requires a Neutrino 6.4 system.
Upgrade your system to Neutrino 6.4.
With the release, enumerated types and data structures have changed, making binaries for this release incompatible with all previous releases.
Update all system components to QNX Aviage Multimedia Suite 1.2.0. Alpha 20.13.0. Your environment must not contain components from this release and from earlier releases.
The Aviage MME 1.2 alpha 20.12 release implemented a new client library, which rendered it and subsequent releases incompatible with releases older than the Aviage MME alpha 20.4 releases.
Recompile and relink all client applications to use this release.
Starting with this release, some binary files are installed in a new location. Binaries that in previous releases were installed under target/qnx6/bin/, target/qnx6/sbin/ or target/qnx6/lib/ are now installed under target/qnx6/usr/bin/, target/qnx6/usr/sbin/ or target/qnx6/usr/lib/, as appropriate.
Affected components include:
- all mme clients
- all mme variants
- all io-media variants
The items under target/qnx6/lib/dll/ have not been moved.
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.
In release MME 1.2 alpha 20.12, MDSs (metadata synchronizers) were been replaced by MDPs (metadata plugins).
If you are upgrading from a release prior to alpha 20.12, change the <MDS> element in your configuration file to <MDP>.
In release MME 1.2 alpha 20.12, SQLite was upgraded to SQLite 3.6.3, and the MME and QDB now use SQLite 3.6.3:
- 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. This file is required by the SQLite addon “CEROD”, which handles encrypted or compressed databases.
Recompile any applications that link against the SQLite library directly.
This release includes the following preliminary MME 1.2 documentation:
- mme_patch_build20.13.0_inst.html
- The installation note. Please read it before installing.
- mme_patch_build20.13.0_rel.html
- The release notes (this file).
- ReleaseNotesMMF.20.x-7.mht
- Release notes for the Margi component.
- mme_intro.pdf
- The Introduction to the MME, which includes:
- MME Architecture
- MME Quickstart Guide
- MME Frequently Asked Questions
- mme_dev_guide.pdf
- The MME Developer's Guide.
- mme_api_ref.pdf
- The MME API Library Reference.
- mme_utils_ref.pdf
- The MME Utilities Reference.
- mme_config_guide.pdf
- The MME Configuration Guide.
- mme_tn_ref.pdf
- MME Technotes.
- qdb_dev_guide.pdf
- The QDB Developer's Guide.
This release introduces many new features and improvements, and deprecates some features available in older releases:
The table below lists the most significant new features and updates that were implemented in this release. For more complete information about these and other features in this release, please refer to the MME documentation.
Feature |
See |
New playlist exploration API |
“Examining playlists” in the MME Developer's Guide chapter Playlists, and the entries for the various mme_playlist_*() functions 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. |
New qdb thread management options |
“New qdb -o thread* options” below. |
New image processing capabilities. |
PR 65438 below; and “Enabling an image processing module” and “The <Transcode> element and its sub-elements” in the MME Configuration Guide chapter Configuring Metadata Support. |
MM_IPP_VIDEO_DECODER_NUM_THREADS mmf resource |
“MM_IPP_VIDEO_DECODER_NUM_THREADS resource” below. |
Improved method for counting consecutive play errors |
“Configuring track session failure settings” in the MME Configuration Guide chapter Configuring Playback. |
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.
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.
The success or failure of the default preferred language update, and the preferred language, in mme_event_default_language_t.
|
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). |
No database tables are updated.
Default language event information
#include <mme/types.h>
typedef struct s_mme_default_language_event {
int error;
const char language[1];
} mme_event_default_language_t;
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. |
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” in the MME Configuration Guide chapter MME Configuration Tips and Troubleshooting.
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
}
The table below lists the features and capabilities that have be deprecated or removed from this release.
Feature |
Status |
Reference |
qdb_transaction() |
Previously deprecated; removed from the QDB client library. |
48615 |
qdb -o thread option |
Deprecated; see “New qdb -o thread* options” above. |
65069 |
The standard QNX Aviage Multimedia Suite binaries are delivered in the patch-630SP2-0315-mmedia-mm-dd-hhmm.tar pathc. They include the binaries, DLLs, and SQL configuration files required to run the QNX Aviage Multimedia Core 1.2.0 and support binaries. Binaries for features requiring special licenses are listed under “Binaries requiring special licenses” below.
These files are installed under target/qnx6/, under the subdirectories for the supported target platform:
- 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 — (PPCBE, SHLE and 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/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/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/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.so — required for dynamic linking to libraries
- usr/lib/libqdb.so.1 — required for dynamic linking to libraries
- 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.so — libxml2 support.
- usr/lib/libxml2.so.1 — libxml2 support.
- 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.fsd — io-fs configuration file.
- iofs.fsf — io-fs configuration file.
- iofs.fsm — io-fs configuration file.
- io-media-generic.cfg — io-media configuration file.
- mme.conf — MME configuration file.
The following files are included under target/qnx6/[target]/:
- usr/bin/mmecli
- usr/bin/mme-shuffle
- usr/bin/mmexplore
- usr/bin/testapp-cmdline
- usr/lib/libiomedia.a
- usr/lib/libmme.a
- usr/lib/libmmeS.a
- usr/lib/libqdb.a
- usr/lib/libqdbS.a
- usr/lib/libxml2.a
- usr/lib/libxml2S.a
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 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.
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/).
- 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.
- mme-shuffle — just play some tracks.
- priorityfolder — an example of how to set a specific folder as a priority folder.
If you have QNX Momentics PE, you can compile the sample applications using the
IDE or the command-line tools; if you have SE, you have to use the command-line tools.
Binaries for features requiring special licenses are delivered in individual patches.
The patch patch-630SP2-0999-extra-aac-mm-dd-hhmm.tar contains the binaries for AAC codec support:
- lib/dll/mmedia/qnx_raac_decoder.so — an AAC audio format decoder.
- lib/libqaacd.so — library for AAC codec support.
- lib/libqaacd.so.1 — library for AAC codec support.
The patch patch-630SP2-0315-extra-mp3-mm-dd-hhmm.tar contains 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(PPCBE, SHLE and x86 targets only) — MP3 floating-point decoder.
The patch patch-630SP2-0315-extra-wma9-mm-dd-hhmm.tar contains 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.
The patch patch-630SP2-0315-extra-ipod-mm-dd-hhmm.tar contains the binaries for iPod support, and a sample application. They include the following files:
- examples/io-fs/drvr/media/ipod/acp/i2c — a generic i2c implementation example.
- 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.
|
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.
|
The patch patch-630SP2-0999-extra-pfs-mm-dd-hhmm.tar contains the 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.
|
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. |
The patch patch-630SP2-0315-extra-wma9-mm-dd-hhmm.tar 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.
- lib/libpfscrypto.so — a library used by the PFS module to io-fs for supporting DRM on PFS devices.
- lib/libpfscrypto.so.1 — a library used by the PFS module to io-fs for supporting DRM on PFS devices.
Binaries for packages requiring distribution licenses acquired directly from a third party are delivered separately.
The patch with the binary for H.264 video codec support is patch-630SP2-0590-extra-ipp-632-mm-dd-hhmm.tar. This package contains:
- lib/dll/mmedia/ipp_h264_decoder.so (x86 targets only) — the H.264 codec decoder for io-media.
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.
- The functionality provided by the image conversion <Output> element quality attribute requires a patch which will be delivered with the next release. (Ref. 65438)
- Linux and Windows hosts with co-existing Neutrino 6.3.2 and 6.4 baselines: the MME 1.1.0 Core installer does not fail and request an uninstallation if you install the MME 1.1.0 on 6.3.2 and 6.4, then attempt a second installation on 6.3.2. (Ref. 62512)
Workaround: When installing on co-existing baselines, before installing the MME, check for and remove any instances of the MME previously installed on the Neutrino baseline where you are performing the current installation.
- Linux hosts: the uninstaller incorrectly removes the execution permissions of libaoi.so.1. (Ref. 60088)
Workaround: After uninstallation, manually reset the permissions for libaoi.so.1 to rwxrwxr-x.
- The iPod nano 2G refuses to connect if the upstream port reports full speed. 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 the iPod connection.
- 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.
- If a mediastore changes, then the user requests playback of a fid from the removed mediastore, the MME attempts to play the track on the new mediastore.(Ref. 42329)
Workaround: After a mediastore state change event, check the mediastore IDs (msid) for the tracks in a track session, and recreate the track session if needed.
- 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)
- At startup, the MME restores the language to the setting in the MME configuration, rather than keeping the last language value set before shutdown. (Ref. 46642)
- 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: 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)
- The QDB client (qdbc) may incorrectly parse code in a database column as a comment. For example, in the statement SELECT folder FROM folders WHERE basepath glob '/Coldplay/*';, qdbc interprets /* as a C comment, and not as part of the column data. (Ref. 46691)
- 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)
- If the destination file runs out of space while writing to the end storage position, QDB fails to perform a restore; QDB logs no errors or warnings before falling back to an older version. (Ref. 52012)
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.