Bad implementation of residu_ivas_fx
Basic info
- Float reference:
- Encoder (float):
- Decoder (float):
- Fixed point:
Bug description
residu_ivas_fx was pointed out as a possibly duplicated functions. There are many residu_ functions, but the ivas implementation is the only one computing the residu on a 32 bits input/output, so it has to be kept.
But the implementation was buggy and used unnecessary complexity as the first samples of the filtering was not multiplied by a[0] (it is ok only if a[] is in Q15, which is not the case most of the time) and the inner loop was using 4 operations, while it can be done in only 1.
residu_ivas_fx() is used in SynthesisSTFT_dirac_fx(), SynthesisSTFT_fx() and tdm_lp_comparison_fx() , will likely affect some renderer condition, acelp_decoder masking noise and TD_stereo.
Ways to reproduce
Box folder: ...\Box_EXTERNAL_IVAS_BASOP_VERIFICATION\issues\issue-xxxx