Possible lead to issue with ivas_swb_tbe_dec_fx ()
With 4010db07 (and previous versions) there are many issues concerning BWE, here I tried to focus more on TBE (BWE used on top of ACELP core).
IVAS_dec MONO 32 bit syn
The figure below shows the actual high band vectors (hb_synth_fx32 / hb_synth) just after the functions ivas_swb_tbe_dec_fx / swb_tbe_dec.
On the second figure, the same vector are compared, but both in float and fixed point memory vectors hBWE_TD->syn_overlap_fx[] and hBWE_TD->syn_overlap[] are set to 0 before entering ScaleShapedSHB_fx() and ScaleShapedSHB()
On both figures,
- 1st row is floating point high band spectrogram
- 2nd row is fix-point high band spectrogram
- 3rd is the difference between float and fix-point
- 4 spectrum of float, fix and difference
On the first image (normal usage), you can observe at least 3 problems:
- First peaks around 2 kHz and around Fs/2-2 kHz
- Circle in red, energy oscillation within the BWE
- High noise floor
- Difference amplitude varies [-600:800]
On the second image (reset of memories), you can observe at least 3 problems:
- First peaks around 2 kHz and around Fs/2-2 kHz is still there
- No more energy oscillation within the BWE
- Quite acceptable noise floor (except at 2kHz and ~14 kHz)
- Difference amplitude varies [-55:60]
This suggests
- Possible issue with the scaling or updating of hBWE_TD->syn_overlap_fx[]
- Filtering precision issue ? (because of the tone at 2kHz)
This might be related to #736 (closed) and #723 (closed)