Incorrect rounding of negative numbers
Bug description
Rounding using (+0.5f) followed by truncation rounds the wrong way for negative numbers. Alternatives which does correct rounding:
- (int16_t) floor(x + 0.5f)
- (int16_t) (x + sign(x) * 0.5f)
- (int16_t) roundf(x)
The lines below need a closer look: (main, commit SHA 67672513)
- https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/blob/main/lib_dec/ivas_ism_renderer.c#L183
- https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/blob/main/lib_rend/ivas_sba_rendering.c#L311
- https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/blob/main/lib_dec/ivas_dirac_dec.c#L1642-1643
- https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/blob/main/lib_dec/ivas_dirac_dec.c#L3320-3321
- https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/blob/main/lib_dec/ivas_ism_renderer.c#L183-184
- https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/blob/main/lib_dec/ivas_spar_md_dec.c#L2598-2599
- https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/blob/main/lib_rend/ivas_sba_rendering.c#L557