Skip to content

[Non-BE] Resolve "ISM mono downmix accumulating energies"

eichenseer requested to merge 967-ism-mono-downmix-accumulating-energies into main

Reason why this change is needed

  • The function ivas_mono_downmix_render_passive() uses an equalization factor that is calculated from two energy values. These energy values accumulate over time and create very big numbers which are likely to cause issues in a fixed-point implementation. A re-investigation is thus needed.

Description of the change

  • ivas_mono_downmix_render_passive() is adjusted to do the equalization factor calculation in a frame-by-frame manner by introducing local variables and doing auto-regressive smoothing. With the added (1-DOWNMIX_ALPHA) term, the energie values don't increase unreasonably.
  • The function is further renamed to ivas_ism_mono_dmx() as it is not really a passive downmix.

Affected operating points

  • Mono output for modes ISM (Discrete and Parametric), OMASA, OSBA
  • Encoder unchanged, bitstream BE
  • Decoder affected for rendering to mono, output non-BE

Related to #967 (closed)

Edited by eichenseer

Merge request reports

Loading