Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® Aviage® Acoustic Processing 1.2 for TI 64xx DSPs: Release Notes

QNX® Aviage® Acoustic Processing 1.2 for TI 64xx DSPs: Release Notes

Date of this edition: June 20, 2008

Target hardware: TMS320C64x+ DSP on TI Jacinto (TI DRA466)

Contents

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)

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)

To support the new features the following parameters were added:

  • IQWA_RecvEQSwitch
  • IQWA_RecvAGCSwitch
  • IQWA_RecvBWESwitch
  • IQWA_RecvDLCSwitch
  • IQWA_RecvClipStats
  • IQWA_RecvInRMS
  • IQWA_RecvOutRMS
  • IQWA_RecvLimitThresh
  • IQWA_RecvParamEQNodes
  • IQWA_RecvEQCoeff
  • IQWA_RecvGain
  • IQWA_RecvResetClipStats
  • IQWA_RecvClipStatsMode
  • IQWA_NCGainFactor
  • IQWA_NCNoiseLevel
  • IQWA_NCParams
  • IQWA_DiagLatencyTestRef

For the description of these parameters, please see the “Parameters” section in the User's Guide.

API Changes

The following lists all the API changes in this version:

  • The configuration structure IQWA_Params was modified to support the new features available with QWA 1.2. Support for the older 1.1 version of the structure was maintained internally.
  • 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:

    • IQWA_RecvSampleRateOut
    • IQWA_RecvFrameShiftOut
  • Changed parameter IQWA_SendParamEQNodes 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.

This package contains the following:

qwa_qnx.l64P
Acoustic Processing XDAIS Algorithm object library for C4x+ DSP.
iqwa.h
Header file including types, defines, and error codes supporting the Acoustic Processing API.
iqwa.c
Source code file for default parameters to the Acoustic Processing XDAIS Algorithm.
qwa_qnx.h
Header file including additional types and function tables supporting the Acoustic Processing API.
xqwa.h
Header file including the general API to the Acoustic Processing XDAIS Algorithm.
xqwa.c
Source code file for access to the general API to the Acoustic Processing XDAIS Algorithm.
xqwa_vr_example.c
Example application using the implementation of QWA Acoustic Processing XDAIS Algorithm (in voice recognition mode).
xqwa_hf_example.c
Source code file for the Acoustic Processing sample application using the general API (hands-free mode).
Documentation
The QNX Acoustic Processing (for XDAIS) User's Guide; see “Documentation,” below.

The following files are installed in the directory where you unzip the archive:

  • help/html/1QWA_Overview.png
  • help/html/2QWA_Details.png
  • help/html/3AEC.png
  • help/html/4HFE.png
  • help/html/BWE.png
  • help/html/diag.html
  • help/html/doxygen.css
  • help/html/doxygen.png
  • help/html/examples.html
  • help/html/form_0.png
  • help/html/form_1.png
  • help/html/form_2.png
  • help/html/form_3.png
  • help/html/form_4.png
  • help/html/form_5.png
  • help/html/form_6.png
  • help/html/form_7.png
  • help/html/formula.repository
  • help/html/ftv2blank.png
  • help/html/ftv2doc.png
  • help/html/ftv2folderclosed.png
  • help/html/ftv2folderopen.png
  • help/html/ftv2lastnode.png
  • help/html/ftv2link.png
  • help/html/ftv2mlastnode.png
  • help/html/ftv2mnode.png
  • help/html/ftv2node.png
  • help/html/ftv2plastnode.png
  • help/html/ftv2pnode.png
  • help/html/ftv2vertline.png
  • help/html/glossary.html
  • help/html/group___a_d_j.html
  • help/html/group___a_p_i_generic.html
  • help/html/group___c_f_g.html
  • help/html/group___d_e_f.html
  • help/html/group___d_i_a_g.html
  • help/html/group___e_r_r_o_r.html
  • help/html/group___parameters.html
  • help/html/group___q_w_a.html
  • help/html/index.html
  • help/html/LatencyDiagram.jpg
  • help/html/main.html
  • help/html/MIX.png
  • help/html/modules.html
  • help/html/NR.png
  • help/html/one.html
  • help/html/pages.html
  • help/html/ParamEQ2.png
  • help/html/qwa_ref_extrecvout.png
  • help/html/qwa_ref=rcvout.png
  • help/html/recv.html
  • help/html/recvp.html
  • help/html/send.html
  • help/html/sendp.html
  • help/html/struct_i_q_w_a___clip_stats.html
  • help/html/struct_i_q_w_a___frame_info_struct.html
  • help/html/struct_i_q_w_a___params.html
  • help/html/struct_i_q_w_a___status.html
  • help/html/syscnf.html
  • help/html/tab_b.gif
  • help/html/tab_l.gif
  • help/html/tab_r.gif
  • help/html/tabs.css
  • help/html/tree.html
  • help/html/tune.html
  • help/html/xqwa__hf_example_8c-example.html
  • help/html/xqwa__vr_example_8c-example.html
  • help/pdf/aap_xdais_user_guide.pdf
  • help/aap_xdais_inst.html
  • help/aap_xdais_rel.html
  • lib/qwa_qnx.l64P
  • sample/xqwa_vr_example.c
  • sample/xqwa_hf_example.c
  • src/iqwa.c
  • src/iqwa.h
  • src/qwa_qnx.h
  • src/xqwa.c
  • src/xqwa.h

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)

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
VR Voice Recognition
WNDB Wind Buffet

We determined all these benchmarks on the TMS320C64x+ DSP on TI Jacinto.

ROM Benchmarks

ROM 251 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
  • Scratch RAM = 4.5 KB for all configurations
  • Persistent RAM = Total RAM - Scratch RAM
Frame Shift Base Send Full +RPEQ +RAGC +RDLC Receive Full
  MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM
128 38 43 31.4 KB 38 45 32.1 KB 40 48 32.3 KB 41 50 33.5 KB
64 66 79 30.8 KB 70 84 31.6 KB 72 87 31.8 KB 74 89 32.6 KB

Handsfree mode, 8K or 11 K 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
  • Scratch RAM = 4.5 KB for all configurations
  • Persistent RAM = Total RAM - Scratch RAM
Frame Shift Base Send Full +RPEQ +RAGC + RDLC Receive Full
  MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM
128 57 68 44.1 KB 58 70 44.9 KB 61 73 45.0 KB 62 74 46.2
64 107 128 43.6 KB 110 132 44.3KB 114 137 44.5 KB 115 138 45.3

Handsfree mode, 16K 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
  • Scratch RAM = 4.5 KB for all configurations
  • Persistent RAM = Total RAM - Scratch RAM
Frame Shift Base Send Full +RPEQ +RAGC +RDLC Receive Full
  MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM
256 44 53 37.4 KB 49 58 48.4 KB 51 61 48.5 KB 57 68 50.4 KB
128 79 94 36.3 KB 87 104 47.2 KB 90 107 47.4 KB 96 116 48.6 KB

Handsfree mode, 16K 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
  • Scratch RAM = 4.5 KB for all configurations
  • Persistent RAM = Total RAM - Scratch RAM
Frame Shift Base Send Full +RPEQ +RAGC +RDLC Receive Full
  MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM
256 68 81 52.2 KB 72 87 63.1 KB 75 90 63.3 KB 81 98 65.2 KB
128 125 150 51.0 KB 132 159 62.0 KB 136 163 62.1 KB 145 173 63.3 KB

Voice-recognition mode, 11K Sample Rate, NR on base

  • Scratch RAM = 1.5 KB for all configurations
  • Persistent RAM = Total RAM - Scratch RAM
Frame Shift Base (NR) Full (+WNDB)
  MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM
128 13 16 19.8 KB 15 18 20.4 KB

Voice-recognition mode, 11K Sample Rate, NR on, MIX on base

  • Scratch RAM = 1.5 KB for all configurations
  • Persistent RAM = Total RAM - Scratch RAM
Frame Shift Base (NR) Full (+WNDB)
  MCycles/s MIPS Total RAM MCycles/s MIPS Total RAM
128 24 29 25.9 KB 25 30 26.5 KB

TI uses MCycles/s in their specifications rather than MIPS. TI also quotes Persistent and Scratch memory rather than total RAM.

Documentation

The functionality provided by this package is described in the QNX Aviage Acoustic Processing (for XDAIS) User's Guide. This package includes this document as:

  • HTML: help/html/index.html
  • PDF: help/pdf/aap_xdais_user_guide.pdf

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.