QNX Technical Articles
QNX® Software Development Platform 7.0—Audio Update (Build 5024): Release Notes
Date of this edition: March 7, 2019
Target OS: This update is compatible with targets that are running the QNX® Neutrino® RTOS 7.0.
Host OS: To apply this update, you must have installed the QNX Software Development Platform 7.0 on one of the following development hosts:
- Microsoft Windows 10 Pro 64-bit, Windows 8.1 Pro 64-bit, or Windows 7 Professional 64-bit
- Linux Red Hat Enterprise Linux 7 64-bit or Ubuntu Workstation LTS 12.04 32- and 64-bit, on x86_64 processors. QNX SDP 7 isn't supported on Linux on ARM processors.
- macOS version 10.10, 10.11, 10.12
![]() |
|
Contents
- What's in this update?
- Fixed issues
- Known issues
- Additional documentation:
- Audio Developer's Guide
- Utilities Reference
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.
See the following documents for information on previous releases:
- QNX® Software Development Platform 7.0—Audio (Build 7.0.237.S201706290957): Release Notes
- QNX® Software Development Platform 7.0—Audio (Build 7.0.387.S201710021920): Release Notes
- QNX® Software Development Platform 7.0—Audio (Build 7.0.594.S201801171044): Release Notes
- QNX® Software Development Platform 7.0—Audio (Build 7.0.807.S201805221655): Release Notes
What's in this update?
This update includes the following packages, which you'll find under Available/Updates -> QNX Software Development Platform -> Audio in the Software Center:
- Audio - Core:
- com.qnx.sdp.target.audio_7.0.5024.S201901162048
- com.qnx.sdp.target.audio.dbg_7.0.5024.S201901162048
- Audio - Drivers PC Generic:
- com.qnx.sdp.target.audio.pc_generic_7.0.5024.S201901162048
- com.qnx.sdp.target.audio.pc_generic.dbg_7.0.5024.S201901162048
- Audio - Drivers USB:
- com.qnx.sdp.target.audio.usb_7.0.5024.S201901162048
- com.qnx.sdp.target.audio.usb.dbg_7.0.5024.S201901162048
- Audio - Drivers Bluetooth:
- com.qnx.sdp.target.audio.bluetooth_7.0.5024.S201901162048
- com.qnx.sdp.target.audio.bluetooth.dbg_7.0.5024.S201901162048
To see a list of the contents of a package, right-click it in the QNX Software Center, choose Properties, and then click Package Contents.
Fixed issues
- An issue where audio failed after making a call via Apple CarPlay has been fixed. (Ref# J2669372)
- The USB driver's mixer names don't include the unit number at higher debug levels. (Ref# J2656235)
- The PCM input splitter now correctly limits the sample rate when the value is locked using input_splitter_rate in the audio configuration file. (Ref# J2656126)
- QNX audio functionality is now supported on Intel Skull Canyon NUC. (Ref# J2644701)
- Fixed an issue with memory allocation that occured when the maximum number of fragments to be written to by an application was too large. (Ref# J2640538)
- Fixed an issue that prevented a 44.1K .wav file with a small (64-2048 bytes) fragment size from playing via a USB audio interface. (Ref# J2639464)
- On i.MX8 boards, fixed an issue where processing that reconstitutes the capture data was not being applied. (Ref# J2636061)
- Fixed an issue that prevented a USB audio driver from enumerating devices that do not have continguous interface numbers. (Ref# J2629814)
- Volume controls and voice conversion have been updated to make use of the PCM channel map. (Ref# J2628477)*
- The priority of the PCM input splitter is now adjusted to be one more than that of the active capture client with the highest priority. (Ref# J2622781)*
- Updated the locking mechanism for the PCM input splitter to avoid deadlocks. (Ref# J2613034)
- The number of voices that the waverec voice matrix configuration can support has increased from four to eight. (Ref# J2607941)*
- Fixed an issue where an audio device was unmounted but not released, which in some cases causes a lock failure during mounting or unmounting. (Ref# J2599595)
- Fixed an issue where ramping to a pause state led to a deadlock. (Ref# J2580259)
- In the audio configuation file, you can now specify the PCM input splitter fragment size in samples per voice as well as a duration in milliseconds. (Ref# J2551867)*
- Fixed an issue that generated a race condition when a device was removed, which could cause io-audio to crash. (Ref# J2372160)
- Added new PCM events to notify of underrun and overrun conditions. (Ref# J1667865)*
Known issues
- USB positional status information can become unsynchronized with the actual data stream. (Ref# J2671779)
Additional and updated documentation
The sections below provide some information that will be added to future versions of the QNX SDP product documentation.
Audio Developer's Guide
PCM thread priorities
The PCM software mixer and PCM input splitter threads run at a priority of either +1 from the highest audio client application priority or data_thread_prio, whichever is higher. To make sure that the threads closest to the hardware have the highest priority, the client application priorities should never be more than -2 from intr_thread_priority.
For example, if the priority of the client thread is 48, the PCM software mixer thread is 49 (48+1), which is one less than the default intr_thread_priority value of 50.
Controlling voice conversion
The snd_pcm_plugin_params() function instantiates a voice converter in the following scenarios:
- The source and destination voices do not use the same channel mappings.
- The number of source and destination voices is different.
If the number of source voices and their mapping matches the destination, the converter isn't invoked.
Default channel mappings
The following channel mappings are used for application playback streams. If the destination uses different mappings, the voice converter is invoked to map the source channels to appropriate destination channels.
Number of channels Default mapping 1 Front left OR mono
2 - 1 — Front left
- 2 — Front right
4 - 1 — Front left
- 2 — Front right
- 3 — Rear left
- 4 — Rear right
6 - 1 — Front left
- 2 — Front right
- 3 — Front center
- 4 — Low-frequency effects
- 5 — Rear left
- 6 — Rear right
8 - 1 — Front left
- 2 — Front right
- 3 — Front center
- 4 — Low-frequency effects
- 5 — Rear left
- 6 — Rear right
- 7 — Surround left
- 8 — Surround right
If the stream has a number of voices other than the ones above, the voice converter does not perform any remapping by default. The application must query the driver channel map (chmap) and configure the voice matrix to do any required mapping of the channels. For more information on how to use the voice conversion API to configure the conversion behavior and place any source channel in any destination channel slot, see "Controlling voice conversion" in the QNX Neutrino Audio Developer's Guide.
Destination has more voices (upmixing)
When there are a larger number of voices on the destination, the default voice conversion behavior is as follows:
From To Conversion Mono Stereo Replicate channel 1 (left) to channel 2 (right).
Mono 4-channel Replicate channel 1 to the front left, front right, rear left, and rear right.
If the hardware's channel map has only some of these mappings, channel 1 is replicated on those channels and the remaining ones are silent.
If the hardware's channel map has none of these mappings, map channel 1 on the first available channel and the remaining channels are silent.
Stereo 4-channel Replicate channel 1 to front left and rear left and channel 2 to front right and rear right.
If the hardware's channel map has only some of these mappings, replication happens for the available mappings only. Any remaining channels are silent.
If the hardware's channel map has none of these mappings, map channel 1 to the first available channel and channel 2 to the next available one. The remaining channels are silent.
Mono More than 4 channels Replicate channel 1 to the front left, front right, rear left, and rear right. All remaining channels are silent.
If the hardware's channel map has only some of these mappings, channel 1 is replicated on those channels and the remaining ones are silent.
If the hardware's channel map has none of these mappings, map channel 1 on the first available channel. The remaining channels are silent.
Stereo More than 4 channels Replicate channel 1 to front left and rear left and channel 2 to front right and rear right. All remaining channels are silent.
If the hardware's channel map has only some of these mappings, replication happens for the available mappings only. Any remaining channels are silent.
If the hardware's channel map has none of these mappings, map channel 1 to the first available channel and channel 2 to the next available one. All remaining channels are silent.
Destination has fewer voices (downmixing)
When there are fewer voices on the destination, the default voice conversion behavior is as follows:
From To Conversion Stereo Mono Average channels 1 and 2.
4-channel Mono Average front-left, front-right, rear-left, and rear-right channels (or whichever of these are present). Any other mappings are ignored.
4-channel Stereo Average front left and rear left to front left, and front right and rear right to front right. Any other mappings are ignored.
If no mappings are available, the first two channels of the source are mapped to the first two channels of the destination. The remaining two source channels are ignored.
More than 4 channels Mono Average front-left, front-right, rear-left, and rear-right channels (or whichever of these are present). All other mappings are ignored.
If no mappings are available, the first channel of the source is mapped to the destination channel and all other source channels are ignored.
More than 4 channels Stereo Average front left and rear left to front left, and front right and rear right to front right. All other mappings are ignored.
If no mappings are available, first two channels of the source are mapped to the two destination channels and the additional source channels are ignored.
Any number greater than the destination Other than stereo or mono (e.g., 5.1 surround sound (6 channels)) The first channel of the source is mapped to the first destination channel, the second source channel to the second destination channel, and so on, until all the destination channels are mapped to. The remaining source channels are ignored.
snd_pcm_event_t
- type member
The following additional types of event are available:
- SND_PCM_EVENT_OVERRUN — the capture channel is in an overrun state. For information on repreparing the channel, see snd_pcm_channel_status_t.
- SND_PCM_EVENT_UNDERRUN — the capture channel is in an underrun state. For information on repreparing the channel, see snd_pcm_channel_status_t.
Utilities Reference
The io-audio audio configuration file
[CTRL] section(s)The [CTRL] section now includes the following additional keys:
Key Default Description input_splitter_samples None The input splitter fragment size, in samples per voice. The minimum is 64 bytes, and the maximum 512 KB.
Do not use if any AFMs are configured to capture through the PCM input splitter on this card.
If you set input_splitter_ms, it has priority over this key.
If you are streaming data from the input splitter to the software mixer, the fragment sizes need to be the same.
This key is set in the in the [CTRL] section only.
To specify the fragment size for a specific PCM input splitter, append an underscore and the device name to the key.
input_splitter_hw_sample_size None If the underlying capture hardware supports multiple data sizes (formats), this configuration key allows you to lock the input splitter format to a specific sample size (e.g., 8 (8-bit), 16 (16-bit), and so on). If you do not use this key, the input splitter selects the best format based on the format the client requested and the underlying hardware formats.
To specify the sample size for a specific PCM software mixer, append an underscore and the device name to the key.The waverec utility -c option
You can now specify the hardware channel bitmask for up to eight application voices.
Technical support
To obtain technical support for any QNX product, visit the Support area on our website (www.qnx.com). You'll find a wide range of support options, including community forums.
