QNX Technical Articles
QNX® Aviage® Acoustic Processing 1.3 Release Notes
Date of this edition: May 13, 2010
Target OS: This software is compatible with target systems running QNX® Neutrino® 6.3.2, 6.4.0, 6.4.1, or 6.5.0.
Host OS: You must have already installed the QNX® Momentics® development suite 6.3.2 or 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 development hosts:
Version | Microsoft Windows | Linux |
---|---|---|
QNX Momentics 6.3.2 | Windows Vista, XP SP2, or 2000 SP4 | Linux Red Hat Enterprise Workstation 4 or 5, Red Hat Fedora Core 6 or 7, Ubuntu 6.0.6 LTS or 7.0.4, or SUSE 10 |
QNX SDP 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 |
QNX SDP 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 |
QNX SDP 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 |
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.
For the most up-to-date version of these release notes, go to our website, www.qnx.com, log into your myQNX account, and then go to the Download Center.
What's in this package?
New acoustic processing options
The core features of QNX Aviage Acoustic Processing version 1.2 include:
- Send-side(Mic-In audio signal)
- Acoustic echo cancellation (AEC)
- Noise reduction (NR)
- Automatic gain control (AGC)
- Parametric equalization (PEQ)
- Dual-channel capability (MIX)
- High frequency encoding (HFE)
- Wind buffet suppression (WNDB)
- Dynamic limiter (SDL)
- Receive-side(Recv-In audio signal)
- Bandwidth extension (RBWE)
- Parametric equalization (RPEQ)
- Automatic gain control (RAGC)
- Dynamic limiter (RDL)
- Dynamic level control (RDLC)
- Diagnostics API (DIAG)
- Remote control server (RCS)
- Windows remote control client (QWALive)
The new features in the QNX AAP 1.3 include:
- Binary configuration file load support
- Wideband support (WBND)
- Send-side(Mic-In audio signal)
- Dynamic parametric equalization (DPEQ)
- Receive-side(Recv-In audio signal)
- Electrical noise suppression (RENS)
- Double talk filter (RDTF)
- Diagnostics (DIAG)
- Output clipping statistics
- QWALive remote control client
- Binary configuration file save support
- Audio signal injection support
- Coherence measurements
- Total harmonic distortion measurements
To support the new features the following parameters were added:
- qwaAECFiltLen
- qwaSendDynEQSwitch
- qwaSendParamEQ2Nodes
- qwaSendEQ2Curve
- qwaSendDynEQCurve
- qwaSendDynEQMinMaxSNR
- qwaRecvDTFSwitch
- qwaRecvDTFMaxEchoRatio
- qwaRecvDTFResponse
- qwaRecvDTFMaxAtten
- qwaRecvENSSwitch
- qwaRecvENSSuppress
- qwaRecvENSActivityRatio
- qwaMicOutClipStats
- qwaMicOutResetClipStats
- qwaMicOutClipStatsMode
- qwaRecvOutClipStats
- qwaRecvOutResetClipStats
- qwaRecvOutClipStatsMode
- qwaAECResEchoRT60ms
For the description of these parameters, please see the “QWA Parameters” section in the User's Guide.
API changes
The following lists all the API changes in this version:
- The parameter qwaSendLimitMode has been deprecated and will default to qwaSoftLimit. For backwards compatibility, any qwaSetData() call setting this parameter to qwaHardLimit will succeed, but the mode will remain as qwaSoftLimit.
- Modified the maximum possible value for parameter qwaMaxFreqProc to Nyquist of the microphone output sample rate.
- Added support for binary configuration load at initialization (qwaInitialize()).
Binaries
The following binary files are installed under $QNX_TARGET/, in subdirectories for each supported target platform:
ARMLE
- armle/lib/libqwa.a
- armle/lib/libqwaS.a
- armle/lib/libqwa-vfp.a
- armle/lib/libqwa-vfpS.a
- armle/lib/libqwa_rcs.a
- armle/lib/libqwa_rcsS.a
- armle/lib/libqwa_rcs-vfp.a
- armle/lib/libqwa_rcs-vfpS.a
PPCBE
- ppcbe/lib/libqwa.a
- ppcbe/lib/libqwaS.a
- ppcbe/lib/libqwa_rcs.a
- ppcbe/lib/libqwa_rcsS.a
SHLE
- shle/lib/libqwa.a
- shle/lib/libqwaS.a
- shle/lib/libqwa_rcs.a
- shle/lib/libqwa_rcsS.a
Header files
- usr/include/qwa_rcs_err.h
- usr/include/qwa_rcs.h
- usr/include/qwa_err.h
- usr/include/qwa_defs.h
- usr/include/qwa.h
The following binary files are installed under base_dir\install\qnxaviage-ap\1.3\ on Windows systems:
- QWALive\QWALive.exe
Sample source code
The following source code files with examples of how to use QNX Aviage Acoustic Processing 1.3 are installed under $QNX_TARGET/:
- etc/readme/qnxaviage-ap/qwa_hf_example.c
- etc/readme/qnxaviage-ap/qwa_rcs_example.c
- etc/readme/qnxaviage-ap/qwa_vr_example.c
Fixed issues
- Fixed issue when using dual-channel mode and High Frequency Encoding (HFE) where, the background noise estimation was based only on the left microphone signal. (Ref# 54199)
- Fixed issue, where the qwa_rcs_example did not retrieve the receive output frame shift separate from the microphone output frame shift as per the change in how output sample rates were handled between versions 1.1 and 1.2. (Ref# 62659)
- Fixed issue for the integer version, where in certain receive input scenarios including low-level negative DC values, the acoustic echo cancellation module may adapt incorrectly to the non-realistic input. (Ref# 63069, 59027)
- Fixed issue, where when processing at higher framerate (64 pt frameshift at 8 or 11kHz, or 128 pt frameshift at 16 or 22kHz) there were some rare circumstances (certain defrost noises) when coherence noise caused musical tones. (Ref# 63212)
Known issues
- The qwaRcsCreate() call will fail unless the user's calling thread is set at priority 10. (Ref# 60009)
Benchmarks
Here's a summary of the abbreviations used in this section. For more details, see the Acoustic Processing User's Guide.
Abbreviation | Meaning |
---|---|
AEC | Acoustic Echo Cancellation |
AGC | Automatic Gain Control |
BWE | BandWidth Extension |
DL-In | Downlink Input Audio Signal |
DLC | Dynamic Level Control |
DPEQ | Dynamic Parametric Equalization |
FS | Frame Shift |
HF | Hands Free |
HFE | High Frequency Encoding |
MFP | Maximum Frequency Processed |
Mic-In | Microphone Input Audio Signal |
Mic-Out | Microphone Output Audio Signal |
MIPS | Millions of Instructions Per Second |
MIX | Dual-channel Capability |
NR | Noise Reduction |
PEQ | Parametric Equalization |
RAGC | Receive-side Automatic Gain Control |
RDTF | Receive-side Double Talk Filter |
Recv-In = DL-In | Receive Input Audio Signal |
Recv-Out | Receive Output Audio Signal |
RENS | Receive-side Electrical Noise Suppression |
RPEQ | Receive-side Parametric Equalization |
SDL | Send-side Dynamic Limiter |
SR | Sample Rate |
UL-Out = Mic-Out | Uplink Output Audio Signal |
VNR | Voice to Noise Ratio |
VR | Voice Recognition |
WB | WideBand ( 4000 Hz < MFP <= 8000 Hz) |
WNDB | Wind Buffet |
We used the following hardware for our benchmarks:
Freescale Media5200 platform (PPCBE) | Hitachi/Renesas Biscayne board (SHLE) | TI board (DaVinci CPU DM6446) (ARMLE) | Freescale MCIMX31 ADSE (ARMLE-FP) | |
---|---|---|---|---|
CPU | MPC5200B | SH-4 SH7760 (float support) | ARM926EJ-S + TI C64x DSP | ARM1136JF-S core Rev 4 |
Float unit | Yes | Yes | No (both ARM9 and C64x) | Yes |
Frequency | 400 MHz | 200 MHz | ARM9: 283 MHz C64x: 566 MHz |
532 MHz |
Cache | 16 KB instruction; 16 KB data | 16 KB instruction; 32 KB data | ARM9: 16 KB instruction; 8 KB data
C64x: 32 KB instruction (L1P); 80 KB data (L1D) |
L1-cache (16 KB instruction, 16 KB data); 128 KB L2 unified cache (64 bit instruction, 64 bit data) |
Int. RAM | None | ARM9: 16 KB C64x: 64 KB (L2) |
None | |
Ext. RAM | 256 MB DDR SDRAM | 64 MB SDRAM | 128 MB DDR2 (shared for both ARM9 and C64x) | 128 MB DDR SDRAM 16/32-bit, 133 MHz; 16 MB PSRAM |
Flash | 32 MB | 64 MB | 32 MB | 1 MB NAND Flash 8/16-bit; 1GB NOR Flash |
Vax-MIPS (see below) |
511 | 163 | 194 (ARM9) | 539 |
The Vax-MIPS rating of the embedded hardware was determined by compiling a release-mode Dhrystone executable from source code with the -o6 optimization level and running the resulting executable on the target hardware under QNX Neutrino 6.3. As vendor-supplied CPU MIPS ratings typically reflect the performance of hand-crafted assembler code, our Vax-MIPS rating is typically around 50% of the vendor reported one.
ROM Benchmarks
Target HW | ROM |
---|---|
PPCBE | 248 KB |
SHLE | 227 KB |
ARMLE | 260 KB |
ARMLE-FP | 252 KB |
MIPS/RAM Benchmarks
Handsfree mode
NB single channel mode, AEC on, NR on
- DL-In/Mic-In = 8 kHz SR
- Recv-Out/Mic-Out = 8 kHz SR
- Base = AEC + NR
- Send-side Full Featured = Base + DPEQ + SDL + AGC + WNDB
- Receive-side Full Featured = Base + BWE + RPEQ + RAGC + RDLC + RENS + RDTF
HF 8 kHz SR | MIPS | RAM | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Base = AEC + NR | Base | Send Full | +RPEQ + RAGC + RDLC | Receive Full | Base | +DPEQ+SDL+AGC | +WNDB | +RPEQ + RAGC + RDLC + RDTF + RENS | +BWE | |
128 FS | PPCBE | 48 | 50 | 49 | 49 | 47.9 KB | 48.6 KB | 48.8 KB | 49.8 KB | 51.4 KB |
SHLE | 30 | 32 | 31 | 33 | 47.9 KB | 48.6 KB | 48.8 KB | 49.8 KB | 51.4 KB | |
ARMLE | 50 | 52 | 52 | 54 | 30.8 KB | 31.2 KB | 31.4 KB | 32.8 KB | 33.6 KB | |
ARMLE-FP | 86 | 87 | 88 | 88 | 47.9 KB | 48.6 KB | 48.8 KB | 49.8 KB | 51.4 KB | |
64 FS | PPCBE | 83 | 86 | 83 | 83 | 47.9 KB | 48.5 KB | 48.8 KB | 49.4 KB | 50.2 KB |
SHLE | 52 | 54 | 53 | 53 | 47.9 KB | 48.5 KB | 48.8 KB | 49.4 KB | 50.2 KB | |
ARMLE | 86 | 90 | 90 | 92 | 30.8 KB | 31.2 KB | 31.4 KB | 32.2 KB | 32.7 KB | |
ARMLE-FP | 148 | 152 | 149 | 147 | 47.9 KB | 48.5 KB | 48.8 KB | 49.4 KB | 50.2 KB |
NB dual channel mode, AEC on, NR on, MIX on
- DL-In/(Mic-In)x2 = 8 kHz SR
- Recv-Out/Mic-Out = 8 kHz SR
- Base = AEC + NR + MIX
- Send-side Full Featured = Base + DPEQ + SDL + AGC + WNDB
- Receive-side Full Featured = Base + BWE + RPEQ + RAGC + RDLC + RENS + RDTF
HF 8 kHz SR | MIPS | RAM | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Base = AEC + NR + MIX | Base | Send Full | +RPEQ + RAGC + RDLC | Receive Full | Base | +DPEQ+SDL+AGC | +WNDB | +RPEQ + RAGC + RDLC + RDTF + RENS | +BWE | |
128 FS | PPCBE | 72 | 74 | 74 | 71 | 70.5 KB | 71.1 KB | 71.4 KB | 72.4 KB | 74.0 KB |
SHLE | 45 | 46 | 46 | 45 | 70.5 KB | 71.1 KB | 71.4 KB | 72.4 KB | 74.0 KB | |
ARMLE | 79 | 81 | 81 | 80 | 43.6 KB | 43.9 KB | 44.2 KB | 45.5 KB | 46.4 KB | |
ARMLE-FP | 128 | 130 | 130 | 127 | 70.5 KB | 71.1 KB | 71.4 KB | 72.4 KB | 74.0 KB | |
64 FS | PPCBE | 133 | 138 | 135 | 128 | 70.5 KB | 71.1 KB | 71.3 KB | 72.0 KB | 72.8 KB |
SHLE | 80 | 83 | 82 | 79 | 70.5 KB | 71.1 KB | 71.3 KB | 72.0 KB | 72.8 KB | |
ARMLE | 143 | 146 | 146 | 143 | 43.5 KB | 43.9 KB | 44.1 KB | 45.0 KB | 45.5 KB | |
ARMLE-FP | 233 | 236 | 237 | 223 | 70.5 KB | 71.1 KB | 71.3 KB | 72.0 KB | 72.8 KB |
NB single channel mode, AEC on, NR on, HFE on
- DL-In = 8 kHz SR
- Mic-In = 16 kHz SR
- Recv-Out = 16 kHz SR
- Mic-Out = 8 kHz SR
- Base = AEC + NR + HFE
- Send-side Full Featured = Base + DPEQ + SDL + AGC + WNDB
- Receive-side Full Featured = Base + BWE + RPEQ + RAGC + RDLC + RENS + RDTF
HF NB 16 kHz SR | MIPS | RAM | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Base = AEC + NR + HFE | Base | Send Full | +RPEQ + RAGC + RDLC | Receive Full | Base | +DPEQ+SDL+AGC | +WNDB | +RPEQ + RAGC + RDLC | +BWE | |
256 FS | PPCBE | 62 | 64 | 64 | 75 | 73.6 KB | 74.2 KB | 74.5 KB | 74.4 KB | 81.2 KB |
SHLE | 42 | 43 | 44 | 50 | 73.6 KB | 74.2 KB | 74.5 KB | 74.4 KB | 81.2 KB | |
ARMLE | 62 | 63 | 63 | 76 | 48.4 KB | 48.8 KB | 49.0 KB | 53.4 KB | 55.0 KB | |
ARMLE-FP | 111 | 112 | 115 | 134 | 73.6 KB | 74.2 KB | 74.5 KB | 74.4 KB | 81.2 KB | |
128 FS | PPCBE | 104 | 107 | 107 | 117 | 73.5 KB | 74.2 KB | 74.4 KB | 76.5 KB | 78.1 KB |
SHLE | 68 | 70 | 70 | 76 | 73.5 KB | 74.2 KB | 74.4 KB | 76.5 KB | 78.1 KB | |
ARMLE | 103 | 107 | 106 | 122 | 48.4 KB | 48.8 KB | 49.0 KB | 51.5 KB | 52.3 KB | |
ARMLE-FP | 185 | 190 | 190 | 208 | 73.5 KB | 74.2 KB | 74.4 KB | 76.5 KB | 78.1 KB |
NB dual channel mode, AEC on, NR on, HFE on, MIX on
- DL-In = 8 kHz SR
- Mic-In = 16 kHz SR
- Recv-Out = 16 kHz SR
- Mic-Out = 8 kHz SR
- Base = AEC + NR + HFE + MIX
- Send-side Full Featured = Base + PEQ + SDL + AGC + WNDB + HFE
- Receive-side Full Featured = Base + BWE + RPEQ + RAGC + RDLC + RENS + RDTF
HF NB 16 kHz SR | MIPS | RAM | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Base = AEC + NR + HFE + MIX | Base | Send Full | +RPEQ + RAGC + RDLC | Receive Full | Base | +DPEQ+SDL+AGC | +WNDB | +RPEQ + RAGC + RDLC | +BWE | |
256 FS | PPCBE | 93 | 94 | 95 | 103 | 100.1 KB | 100.8 KB | 101.0 KB | 104.7 KB | 107.8 KB |
SHLE | 60 | 61 | 61 | 67 | 100.1 KB | 100.8 KB | 101.0 KB | 104.7 KB | 107.8 KB | |
ARMLE | 95 | 97 | 97 | 108 | 63.2 KB | 63.5 KB | 63.8 KB | 68.1 KB | 69.7 KB | |
ARMLE-FP | 164 | 166 | 168 | 184 | 100.1 KB | 100.8 KB | 101.0 KB | 104.7 KB | 107.8 KB | |
128 FS | PPCBE | 164 | 166 | 166 | 176 | 100.1 KB | 100.7 KB | 101.0 KB | 103.1 KB | 104.7 KB |
SHLE | 102 | 105 | 105 | 110 | 100.1 KB | 100.7 KB | 101.0 KB | 103.1 KB | 104.7 KB | |
ARMLE | 169 | 172 | 173 | 187 | 63.2 KB | 63.5 KB | 63.7 KB | 66.2 KB | 67.0 KB | |
ARMLE-FP | 289 | 292 | 292 | 308 | 100.1 KB | 100.7 KB | 101.0 KB | 103.1 KB | 104.7 KB |
WB single channel mode, AEC on, NR on
- DL-In = 16 kHz SR
- Mic-In = 16 kHz SR
- Recv-Out = 16 kHz SR
- Mic-Out = 16 kHz SR
- Base = AEC + NR
- Send-side Full Featured = Base + DPEQ + SDL + AGC + WNDB
- Receive-side Full Featured = Base + RPEQ + RAGC + RDLC + RENS + RDTF
HF WB 16 kHz SR | MIPS | RAM | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Base = AEC + NR | Base | Send Full | +RPEQ + RAGC + RDLC | Receive Full | Base | +DPEQ+SDL+AGC | +WNDB | Receive Full | ||
256 FS | PPCBE | 67 | 68 | 68 | 80 | 83.8 KB | 84.9 KB | 85.0 KB | 86.4 KB | |
SHLE | 44 | 45 | 46 | 53 | 83.8 KB | 84.9 KB | 85.0 KB | 86.4 KB | ||
ARMLE | 68 | 69 | 70 | 82 | 53.5 KB | 54.1 KB | 54.3 KB | 56.5 KB | ||
ARMLE-FP | 122 | 125 | 127 | 147 | 83.8 KB | 84.9 KB | 85.0 KB | 86.4 KB | ||
128 FS | PPCBE | 108 | 112 | 112 | 133 | 83.6 KB | 84.7 KB | 84.8 KB | 85.5 KB | |
SHLE | 71 | 73 | 72 | 86 | 83.6 KB | 84.7 KB | 84.8 KB | 85.5 KB | ||
ARMLE | 113 | 117 | 117 | 134 | 53.4 KB | 54.0 KB | 54.2 KB | 55.4 KB | ||
ARMLE-FP | 199 | 205 | 205 | 242 | 83.6 KB | 84.7 KB | 84.8 KB | 85.5 KB |
WB dual channel mode, AEC on, NR on, MIX on
- DL-In = 16 kHz SR
- Mic-In = 16 kHz SR
- Recv-Out = 16 kHz SR
- Mic-Out = 16 kHz SR
- Base = AEC + NR + MIX
- Send-side Full Featured = Base + DPEQ + SDL + AGC + WNDB
- Receive-side Full Featured = Base + RPEQ + RAGC + RDLC + RENS + RDTF
HF WB 16 kHz SR | MIPS | RAM | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Base = AEC + NR + MIX | Base | Send Full | +RPEQ + RAGC + RDLC | Receive Full | Base | +DPEQ+SDL+AGC | +WNDB | Receive Full | ||
256 FS | PPCBE | 97 | 99 | 100 | 121 | 123.4 KB | 124.6 KB | 124.7 KB | 126.1 KB | |
SHLE | 62 | 64 | 64 | 76 | 123.4 KB | 124.6 KB | 124.7 KB | 126.1 KB | ||
ARMLE | 98 | 100 | 103 | 126 | 75.6 KB | 76.2 KB | 76.3 KB | 78.6 KB | ||
ARMLE-FP | 175 | 178 | 180 | 214 | 123.4 KB | 124.6 KB | 124.7 KB | 126.1 KB | ||
128 FS | PPCBE | 166 | 172 | 171 | 210 | 123.3 KB | 124.4 KB | 124.5 KB | 125.2 KB | |
SHLE | 105 | 107 | 107 | 130 | 123.3 KB | 124.4 KB | 124.5 KB | 125.2 KB | ||
ARMLE | 173 | 178 | 181 | 213 | 75.4 KB | 76.0 KB | 76.2 KB | 77.4 KB | ||
ARMLE-FP | 301 | 307 | 306 | 375 | 123.3 KB | 124.4 KB | 124.5 KB | 125.2 KB |
Voice-recognition mode
NB single channel mode, NR on
- Mic-In = 11 kHz SR
- Mic-Out = 11 kHz SR
- Base = NR
- Send-side Full Featured = Base + WNDB
VR 11 kHz SR | MIPS | RAM | |||
---|---|---|---|---|---|
Base = NR | Base | +WNDB | Base | +WNDB | |
128 FS | PPCBE | 26 | 27 | 27.3 KB | 28.2 KB |
SHLE | 16 | 17 | 27.3 KB | 28.2 KB | |
ARMLE | 23 | 25 | 20.7 KB | 21.3 KB | |
ARMLE-FP | 45 | 47 | 27.3 | 28.2 |
NB dual channel mode, NR on, MIX on
- (Mic-In)x2 = 11 kHz SR
- Mic-Out = 11 kHz SR
- Base = NR + MIX
- Send-side Full Featured = Base + WNDB
VR 11 kHz SR | MIPS | RAM | |||
---|---|---|---|---|---|
Base = NR + MIX | Base | +WNDB | Base | +WNDB | |
128 FS | PPCBE | 42 | 43 | 34.6 KB | 35.5 KB |
SHLE | 26 | 26 | 34.6 KB | 35.5 KB | |
ARMLE | 39 | 40 | 25.6 KB | 26.1 KB | |
ARMLE-FP | 71 | 74 | 34.6 KB | 35.5 KB |
MIPS benchmarks were calculated when running the library alone on the platforms listed above. MIPS benchmarks may vary with the audio input to the library.
Documentation
The functionality provided by this package is described in the QNX Aviage Acoustic Processing User's Guide, which you'll find in the IDE's help system on Linux and Windows systems. On self-hosted Neutrino systems, you can find the documentation in the Photon helpviewer.
You'll find the QWALive User's Guide installed as base_dir\install\qnxaviage-ap\1.3\QWALive.pdf on Windows systems, where base_dir is where you installed QNX Momentics or QNX SDP.
You'll find the sample programs and a PDF version of the Acoustic Processing User's Guide in the $QNX_TARGET/etc/readme/qnxaviage-ap directory.
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.