basop-2407-bad-implementation-of-residu_ivas_fx [non-BE][split-non-BE][allow-regression]
- Related issues: #2407 (closed)
- Requested reviewers: @jander
Reason why this change is needed
-
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.
Description of the change
- Fix the initialisation and the complexity (complexity goes from 1.77 wmops to 0.59 wmops.
Affected operating points
-
Won't be BE for all operating points that uses TD_stereo or Acelp decoder and probably some rendering conditions.
-
Bitstream compatible
close #2407 (closed)