LFE PLC precision related
In the file lib_dec\ivas_lfe_plc.c, d_lev_dur has condition to check the error, which checks if the error is negative. If it becomes negative, error is set to 0.01, which is further used for calculation of LP coefficients and prediction error energy. Due to precision loss in Fixed point, error is coming negative (though in that case, negative value is not expected), which in-turn affects LP coefficients and error energy, which is resulting in issues.
We tried for 64-bit implementation, but still we are encountering issues to achieve the precision (double precision). Please let us know if there are any suggestions.
Below are some details to reproduce the issue:
File: lib_dec\ivas_lfe_plc.c Function : d_lev_dur
Float_code declaration: /---------------------------------------------------------------------
- lev_dur()
- Wiener-Levinson-Durbin algorithm to compute LP parameters from the autocorrelations
- of input signal ---------------------------------------------------------------------/
/*! r: energy of prediction error */ static int16_t d_lev_dur( double a, / o : LP coefficients (a[0] = 1.0) */ const double r, / i : vector of autocorrelations / const int16_t m, / i : order of LP filter / double epsP[] / o : prediction error energy */ );
Encoder command: IVAS_cod -mc 5_1 256000 48 testv/ltv48_MC51.wav bit eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g192 bit_error
Decoder command: IVAS_dec STEREO 48 bit_error ltv48_MC51.wav_MC51_256000_48-48_stereo_FER5.tst