[Non-BE] Resolve "ISM mono downmix accumulating energies"
- Related issues: #967 (closed)
- Requested reviewers:
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