Dynamic Range Control (DRC)


CouthIT’s Dynamic Range Compression (DRC) module adjusts the dynamic range of a audio signal based on the audio level of the input signal. The DRC algorithm attenuates the high audio level part of the input signal to the user desired level so as to not sound uncomfortably loud. This module can be used in home theatre systems, portable audio players, media players, in-car entertainment, broadcast applications, smart phones, VoIP applications and digital hearing aids.

  • Optimized ASM/C implementation.
  • Re-entrant implementation.
  • C-callable APIs.
  • Operates on 16-bit PCM audio data sampled at 8, 11.025, 12, 16, 22.05, 24, 32, 44.10, 48KHz.
  • Provides optional make up gain to be used on the output signal to restore the loss in audio level.
  • Provides support for user selectable frame length(number of samples per channel per frame to operate on).
  • User selectable compression threshold level.
  • User selectable attack and release times.
  • Provides soft knee for smooth gains transitions avoiding perceptual distortion.
  • Support for wide range of configurable compression ratio from 1dB to 15dB with respect to input audio level.
  • No amplification in case of silence intervals by user selectable noise floor.
  • Optimized for low memory foot print and low complexity.
  • Supports Little-Endian implementation on ARM.
  • Optional support for xDM APIs.
  • Tested using a large database of audio test vectors for sampling rate from 8KHz to 48 KHz.
  • Tested for different audio levels from -3dBov to -40dBov.
  • Listening tests performed to ensure that no artifacts are present in output stream.
  • Tested for graceful exit in case of errors or exception.
  • Module is fully interruptible.
  • Tested for Input buffer corruption
  • Tested for I/O buffer alignment requirements
  • Tested for multi-instance implementation.
  • Tested for illegal memory access by the module on ARM platform.
  • Tested for 100% code coverage
  • Range validation of all API parameters.
  • ARM implementation validated on ARM926EJ-S and Cortex-A8 platforms.

ARM9E, ARM11, Cortex-A8, and Cortex-A9

For datasheet with resource usage details