Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® Aviage® Acoustic Processing 1.2 Release Notes

QNX® Aviage® Acoustic Processing 1.2 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 package?

New Acoustic Processing options

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

  • Acoustic Echo Cancellation (AEC)
  • Noise Reduction (NR)
  • Send-side Automatic Gain Control (AGC)
  • Send-side Parametric Equalization (PEQ)
  • 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)

The new features include:

  • Receive-side Bandwidth Extension (RBWE)
  • Receive-side Parametric Equalization (RPEQ)
  • Receive-side Automatic Gain Control (RAGC)
  • Receive-side Dynamic Limiter (RDL)
  • Receive-side Dynamic Level Control (RDLC)
  • Additional Diagnostics (DIAG)
  • Improved source code examples
  • Changes to QWALive interface
    • Added wavefile markers for audio streaming
    • Added file meta information pertaining to the QWA library state
    • Added the ability to directly enter value for custom sliders
    • Added hot key support with tool tips to show hot key
    • Added warning if PEQ produces more than 1200 cdB gain (line turns red)
    • Added reading of Voice to Noise Ratio (VNR)
    • Changed sliders to snap to 50 cdB increments
    • Changed limiter sliders to show increments in logarithmic scale
    • All controls are collapsible with an auto-expand option
    • Added Receive tab with all Receive controls
    • Added button to apply latency estimate from diagnostics module
    • Improved connection loss detection
    • Improved GUI updating efficiency and speed

To support the new features the following parameters were added:

  • qwaRecvEQSwitch
  • qwaRecvAGCSwitch
  • qwaRecvBWESwitch
  • qwaRecvDLCSwitch
  • qwaRecvClipStats
  • qwaRecvInRMS
  • qwaRecvOutRMS
  • qwaRecvLimitThresh
  • qwaRecvParamEQNodes
  • qwaRecvEQCoeff
  • qwaRecvGain
  • qwaRecvResetClipStats
  • qwaRecvClipStatsMode
  • qwaNCGainFactor
  • qwaNCNoiseLevel
  • qwaNCParams
  • qwaDiagLatencyTestRef

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:

  • Changed the default values for qwaSendAGCMaxRates and qwaRecvAGCMaxRates to target the audio output to use the full PCM value range. This change requires that the send-side limiter be switched on to avoid distortions in certain cases.
  • Modified the output sample rate handling to operate as follows:
    • The microphone output sample rate is the same as the microphone input sample rate except for the following cases:
      • If the receive path is enabled the microphone output sample rate is the same as the receive input sample rate
      • Else if the AEC is enabled the microphone output sample rate is the same as the reference input sample rate
    • The receive output sample rate is always the same as the microphone input sample rate

    To support the output sample rate changes the following read-only parameters were added:

    • qwaRecvSampleRateOut
    • qwaRecvFrameShiftOut
  • Changed parameter qwaSendParamEQNodes to be both readable and writable
  • The mute switches no longer switch abruptly on/off but fade in/out gradually over the length of a frame, to minimize artifacts at the point of switching.
  • Added an additional latency test that measures the latency from receive output to reference input.
  • The minimum duration for signal playback in the diagnostics module was reduced from 1,000ms to 100ms.

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.2 are installed under $QNX_TARGET/:

  • etc/readme/aviage-ap/qwa_hf_example.c
  • etc/readme/aviage-ap/qwa_rcs_example.c
  • etc/readme/aviage-ap/qwa_vr_example.c

Fixed issues

  • Fixed issue that in very rare cases when operating in Voice Recognition mode after resetting the library, internal parameters were not restored to the same values as at initialization. (Ref# 54202)
  • Corrected for possible overflows in RMS calculations on input and output. (Ref# 55772)
  • Improved error messages for initializations using invalid combinations for parameter values. (Ref# 53908)
  • Fixed issue that setting mixer post filter attenuation did not have any real effect on mixer output. (Ref# 57279)
  • Improved robustness after cellular network dropouts. This improvement only takes effect when receive processing is active. (Ref# 57486)
  • Fixed issue where the diagnostics module could play up to 1 additional frame when synthesizing a signal. e.g At some frameshifts, specifying the signal: sine-wave, duration=1,000 ms, duty-cycle=40% would instead of producing a 400ms sine-wave followed by 600ms of zeros, add an additional 64 points of the next duty cycle of the sine-wave at the end. (Ref# 58088)
  • Fixed issue where settings are not saved correctly in QWALive when the application is installed in the root directory. (Ref# 54605)

Known issues

  • When using dual-channel mode and High Frequency Encoding (HFE), the background noise estimation is based only on the left microphone channel. (Ref# 54199)
  • For the integer version, in certain non-realistic receive input scenarios including low-level negative DC values, the acoustic echo cancellation module may adapt incorrectly to the non-realistic input. When the signal first returns to normal on the reference input some artifacts may be heard on the echo cancelled output as it recovers to normal operation. (Ref# 59027)

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
DLC Dynamic Level Control
FS Frame Shift
HF Hands Free
HFE High Frequency Encoding
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
Recv-In Receive Input Audio Signal
Recv-Out Receive Output Audio Signal
RPEQ Receive-side Parametric Equalization
SDL Send-side Dynamic Limiter
SR Sample Rate
VNR Voice to Noise Ratio
VR Voice Recognition
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)
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 232 KB
SHLE 213 KB
ARMLE 243 KB

MIPS/RAM Benchmarks

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

  • Base = AEC + NR
  • Send-side Full Featured = Base + PEQ + SDL + AGC + WNDB
  • Receive-side Full Featured = Base + BWE + RPEQ + RAGC + RDLC
HF 8K SR   MIPS       RAM        
Base = AEC + NR   Base Send-side Full Featured +RPEQ + RAGC + RDLC Receive-side Full Featured Base +PEQ+SDL+AGC +WNDB +RPEQ + RAGC + RDLC +BWE
128 FS PPCBE 46 49 52 55 52.5 KB 52.7 KB 53.6 KB 54.1 KB 56.0 KB
  SHLE 26 27 30 31 52.5 KB 52.7 KB 53.6 KB 54.1 KB 56.0 KB
  ARMLE 45 47 49 53 33.2 KB 33.3 KB 34.0 KB 35.0 KB 36.1 KB
64 FS PPCBE 82 89 92 96 52.4 KB 53.5 KB 53.7 KB 53.3 KB 54.9 KB
  SHLE 47 49 51 55 52.4 KB 53.5 KB 53.7 KB 53.3 KB 54.9 KB
  ARMLE 79 83 87 91 33.1 KB 33.3 KB 33.9 KB 34.4 KB 35.2 KB

Handsfree mode, 8K or 11K Sample Rate AEC on, NR on, MIX on

  • Base = AEC + NR + MIX
  • Send-side Full Featured = Base + PEQ + SDL + AGC + WNDB
  • Receive-side Full Featured = Base + BWE + RPEQ + RAGC + RDLC
HF 8K SR   MIPS       RAM        
Base = AEC + NR + MIX   Base Send-side Full Featured +RPEQ + RAGC + RDLC Receive-side Full Featured Base +PEQ+SDL+AGC +WNDB +RPEQ + RAGC + RDLC +BWE
128 FS PPCBE 72 76 78 82 75.0 KB 75.2 KB 76.1 KB 76.7 KB 78.6 KB
  SHLE 41 43 44 46 75.0 KB 75.2 KB 76.1 KB 76.7 KB 78.6 KB
  ARMLE 74 76 78 82 45.9 KB 46.0 KB 46.6 KB 47.7 KB 48.8 KB
64 FS PPCBE 135 140 145 148 75.0 KB 75.2 KB 76.0 KB 76.3 KB 77.5 KB
  SHLE 76 79 80 83 75.0 KB 75.2 KB 76.0 KB 76.3 KB 77.5 KB
  ARMLE 134 137 144 147 45.9 KB 46.0 KB 46.6 KB 47.1 KB 47.9 KB

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

  • Base = AEC + NR
  • Send-side Full Featured = Base + PEQ + SDL + AGC + WNDB + HFE
  • Receive-side Full Featured = Base + BWE + RPEQ + RAGC + RDLC
HF 16K SR   MIPS       RAM        
Base = AEC + NR   Base Send-side Full Featured +RPEQ + RAGC + RDLC Receive-side Full Featured Base +PEQ+SDL+AGC +WNDB +RPEQ + RAGC + RDLC +BWE
256 FS PPCBE 51 53 67 76 57.4 KB 57.7 KB 58.5 KB 61.9 KB 65.3 KB
  SHLE 29 30 41 47 57.4 KB 57.7 KB 58.5 KB 61.9 KB 65.3 KB
  ARMLE 48 49 59 67 35.7 KB 35.8 KB 36.4 KB 40.4 KB 42.3 KB
128 FS PPCBE 95 98 110 120 57.4 KB 57.6 KB 58.5 KB 60.2 KB 62.2 KB
  SHLE 53 55 66 71 57.4 KB 57.6 KB 58.5 KB 60.2 KB 62.2 KB
  ARMLE 85 88 100 112 35.6 KB 35.8 KB 36.4 KB 38.5 KB 39.7 KB

Handsfree mode, 16K Sample Rate AEC on, NR on, MIX on

  • Base = AEC + NR + MIX
  • Full Featured = Base + PEQ + SDL + AGC + WNDB + HFE
  • Receive-side Full Featured = Base + BWE + RPEQ + RAGC + RDLC
HF 16K SR   MIPS       RAM        
Base = AEC + NR + MIX   Base Send-side Full Featured +RPEQ + RAGC + RDLC Receive-side Full Featured Base +PEQ+SDL+AGC +WNDB +RPEQ + RAGC + RDLC +BWE
256 FS PPCBE 84 87 100 110 84.0 KB 84.2 KB 85.1 KB 88.4 KB 94.2/91.9 KB
  SHLE 48 49 59 64 84.0 KB 84.2 KB 85.1 KB 88.4 KB 91.9 KB
  ARMLE 80 82 92 103 50.4 KB 50.5 KB 51.1 KB 55.1 KB 57.1 KB
128 FS PPCBE 159 164 176 187 84.0 KB 84.2 KB 85.0 KB 86.8 KB 88.7 KB
  SHLE 89 92 101 108 84.0 KB 84.2 KB 85.0 KB 86.8 KB 91.3/88.7 KB
  ARMLE 150 153 165 178 50.4 KB 50.5 KB 51.1 KB 53.2 KB 54.4 KB

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

VR 11K SR   MIPS   RAM  
Base = NR   Base +WNDB Base +WNDB
128 FS PPCBE 31 34 36.0 KB 36.9 KB
  SHLE 17 18 36.0 KB 36.9 KB
  ARMLE 22 25 26.2 KB 26.8 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 50 52 45.4 KB 46.3 KB
  SHLE 27 28 45.4 KB 46.3 KB
  ARMLE 39 41 32.0 KB 32.6 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/acoustic_processing_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/aviage-ap 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.