Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® Aviage® Acoustic Processing 1.3 Release Notes

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.