Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® Aviage® Acoustic Processing 1.1 Release Notes

QNX® Aviage® Acoustic Processing 1.1 Release Notes

Date of this edition: May 12, 2009

Target OS: This software is compatible with target systems running QNX® Neutrino® 6.3.0 SP3, 6.3.2, or 6.4.0.

Host OS: You must have already installed the QNX® Momentics® development suite 6.3.0 SP3 or 6.3.2 or the QNX Software Development Platform 6.4.0 as a self-hosted QNX® Neutrino® system, or on one of the following development hosts:

Version Microsoft Windows Linux
QNX Momentics 6.3.0 SP3 Windows Vista, XP SP2, 2000 SP4, or NT SP6a Linux Red Hat 8 or 9, Red Hat Enterprise WS 3 or 4, Red Hat Fedora Core 3 or 4, Debian 3.1, or SUSE 10
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, XP SP2 or SP3, 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, or SUSE 10

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 kit?

New Acoustic Processing options

The core features of QNX Aviage Acoustic Processing version 1.0 include:

  • Acoustic Echo Cancellation (AEC)
  • Noise Reduction (NR)
  • Send-side Automatic Gain Control (AGC)
  • Send-side Parametric Equalization (PEQ)

The new features include:

  • Dual-channel Capability (MIX)
  • High Frequency Encoding (HFE)
  • Wind Buffet Suppression (WNDB)
  • Send-side Dynamic Limiter (SDL)
  • Diagnostics API (DIAG)
  • Remote Control Server (RCS)
  • Windows Remote Control Client (QWALive)

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_rcs.a
  • armle/lib/libqwaS_rcs.a

PPCBE

  • ppcbe/lib/libqwa.a
  • ppcbe/lib/libqwaS.a
  • ppcbe/lib/libqwa_rcs.a
  • ppcbe/lib/libqwaS_rcs.a

SHLE

  • shle/lib/libqwa.a
  • shle/lib/libqwaS.a
  • shle/lib/libqwa_rcs.a
  • shle/lib/libqwaS_rcs.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 $QNX_CONFIGURATION\ on Windows systems:

  • bin\QWALive.exe

Sample source code

The following source code files with examples of how to use QNX Aviage Acoustic Processing 1.1 are installed under $QNX_TARGET/:

  • etc/readme/qap/qwa_hf_example.c
  • etc/readme/qap/qwa_rcs_example.c
  • etc/readme/qap/qwa_vr_example.c

Fixed issues

  • The links in the table of contents (i.e. the Contents pane in the IDE's help window, or the Topics pane in the Photon helpviewer) for the User's Guide now work correctly. (Ref# 49438)
  • Memory access error if qwaRECSwitch is qwaIdle and qwaAECSwitch is qwaOff at initialization. QWA_ERR_PARAM will now be returned instead since this is an invalid configuration. (Ref# 53896)
  • qwaSendParamEQNodes set call can return error for a valid set of node inputs. In certain node combinations where both valley and peak nodes were used, the internal error check would falsely detect that the node combination would fall outside the range requirement of -1200 to +1200 cdB. (Ref# 53809)
  • The operation of qwaSendAGCGainVals was modified so that if this parameter is set prior to the first call to qwaAudioIn(), the 'start' gain value would be used. Previously, the 'start' gain value would only take affect if qwaReset() was called. (Ref# 53499)
  • Error checking was corrected for qwaRefDelay and qwaRefMaxDelay so that invalid negative values will cause an error return of QWA_ERR_PARAM. Previously the negative value would be truncated incorrectly to a tQwaU16. (Ref# 52618)
  • When switching from pass through mode (qwaPassThruSwitch is qwaOn) to normal mode (qwaPassThruSwitch is qwaOff), the output audio will be invalid for the first ~500 ms after the switch. (Ref# 51927)
  • Divide by zero occurs in the armle and TI C64 QAAP 1.1 libraries. This issue was extremely hard to create but reproducible with an appropriate input file. (Ref# 51891)
  • Corrected the documentation for the qwaSendAGCGainVals to indicate the correct possible range of values -2000 to +4000 cdB. (Ref# 50358)
  • For any valid values for the parameter qwaSendParamEQNodes the calculated frequency curve had a 3% frequency error. An example would be a node of f_center = 3000 Hz, f_FWHM = 150 Hz and cdB_boost = 300 cdB, the actual computed curve would correspond to 2900 Hz. (Ref# 49783)

Known issues

  • In very rare cases when operating in Voice Recognition mode after resetting the library, internal parameters are not restored to their values at initialization. (Ref# 54202)
  • When using dual-channel and High Frequency Encoder (HFE) the background noise estimation is based only on the left microphone channel. (Ref# 54199)

Benchmarks

We used the following hardware for our benchmarks:

  Freescale Media5200 platform (PPCBE) Hitachi/Renesas Biscayne board (SHLE) TI board (DaVinci CPU DM6446) (ARMLE)
CPU MPC5200B SH-4 SH7760 (float support) ARM926EJ-S + TI C64x DSP
Float unit Yes Yes No (both ARM9 and C64x)
Frequency 400 MHz 200 MHz ARM9: 283 MHz
C64x: 566 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)
Int. RAM   None ARM9: 16 KB
C64x: 64 KB (L2)
Ext. RAM 256 MB DDR SDRAM 64 MB SDRAM 128 MB DDR2 (shared for both ARM9 and C64x)
Flash 32 MB 64 MB 32 MB
Vax-MIPS
(see below)
523 165 162 (ARM9)

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 194 KB
SHLE 179 KB
ARMLE 203 KB

MIPS/RAM Benchmarks

Handsfree mode, 8K Sample Rate AEC on, NR on

  • Base = AEC + NR
  • Full Featured = Base + PEQ + SDL + AGC + WNDB
HF 8K SR   MIPS   RAM    
Base = AEC + NR   Base Full Featured Base +PEQ+SDL+AGC +WNDB
128 FS PPCBE 41 43 50.5 KB 50.6 KB 51.4 KB
  SHLE 26 27 50.5 KB 50.6 KB 51.4 KB
  ARMLE 41 42 33.8 KB 33.9 KB 34.4 KB
64 FS PPCBE 77 78 50.3 KB 50.5 KB 51.2 KB
  SHLE 46 48 50.3 KB 50.5 KB 51.2 KB
  ARMLE 73 74 33.6 KB 33.8 KB 34.2 KB

Handsfree mode, 8K sample rate AEC on, NR on, MIX on

  • Base = AEC + NR + MIX
  • Full Featured = Base + PEQ + SDL + AGC + WNDB
HF 8K SR   MIPS   RAM    
Base = AEC + NR + MIX   Base Full Featured Base +PEQ+SDL+AGC +WNDB
128 FS PPCBE 67 68 76.1 KB 76.3 KB 77.0 KB
  SHLE 40 40 76.1 KB 76.3 KB 77.0 KB
  ARMLE 67 68 46.8 KB 46.9 KB 47.4 KB
64 FS PPCBE 127 129 76.0 KB 76.2 KB 76.9 KB
  SHLE 74 75 76.0 KB 76.2 KB 76.9 KB
  ARMLE 123 124 46.6 KB 46.8 KB 47.2 KB

Handsfree mode, 16K sample rate AEC on, NR on

  • Base = AEC + NR
  • Full Featured = Base + PEQ + SDL + AGC + WNDB + HFE
HF 16K SR   MIPS   RAM      
Base = AEC + NR   Base Full Featured Base +PEQ+SDL+AGC +WNDB +HFE
256 FS PPCBE 52 54 59.7 KB 59.9 KB 60.6 KB 78.7 KB
  SHLE 33 34 59.7 KB 59.9 KB 60.6 KB 78.7 KB
  ARMLE 51 52 37.3 KB 37.5 KB 37.9 KB 47.7 KB
128 FS PPCBE 88 92 59.6 KB 59.7 KB 60.4 KB 78.6 KB
  SHLE 56 58 59.6 KB 59.7 KB 60.4 KB 78.6 KB
  ARMLE 87 89 37.2 KB 37.3 KB 37.8 KB 47.6 KB

Handsfree mode, 16K sample rate AEC on, NR on, MIX on

  • Base = AEC + NR + MIX
  • Full Featured = Base + PEQ + SDL + AGC + WNDB + HFE
HF 16K SR   MIPS   RAM      
Base = AEC + NR + MIX   Base Full Featured Base +PEQ+SDL+AGC +WNDB +HFE
256 FS PPCBE 82 84 90.5 KB 90.7 KB 91.4 KB 109.6 KB
  SHLE 49 50 90.5 KB 90.7 KB 91.4 KB 109.6 KB
  ARMLE 81 82 52.4 KB 52.6 KB 53.0 KB 62.8 KB
128 FS PPCBE 148 152 90.4 KB 90.5 KB 91.2 KB 109.4 KB
  SHLE 88 90 90.4 KB 90.5 KB 91.2 KB 109.4 KB
  ARMLE 147 148 52.3 KB 52.4 KB 52.9 KB 62.6 KB

Voice-recognition mode, 11K sample rate, NR on base

VR 11K SR   MIPS   RAM  
Base = NR   Base +WNDB Base +WNDB
128 FS PPCBE 27 28 31.1 KB 32.0 KB
  SHLE 17 18 31.1 KB 32.0 KB
  ARMLE 20 20 26.7 KB 27.2 KB

Voice-recognition mode, 11K sample rate, NR on, MIX on base

VR 11K SR   MIPS   RAM  
Base = NR + MIX   Base +WNDB Base +WNDB
128 FS PPCBE 45 47 43.2 KB 44.1 KB
  SHLE 27 27 43.2 KB 44.1 KB
  ARMLE 35 36 32.6 KB 33.2 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, as well as in $QNX_TARGET/usr/help/product/qap_en/bookset.html. On self-hosted Neutrino systems, you can also find the documentation in the Photon helpviewer. You'll find the QWALive User's Guide installed as $QNX_CONFIGURATION\bin\QWALive\QWALive.pdf on Windows systems.

You'll find the sample programs and a PDF version of the User's Guide in the $QNX_TARGET/etc/readme/qap directory.

Technical support

To obtain technical support for any QNX product, visit the Support + Services area on our website (www.qnx.com). You'll find a wide range of support options, including community forums.