Skip to content

[Non BE] Fix issues with EVS compatible stereo to mono downmix (quality on specific items + use of double)

Reason why this change is needed

Several issues have been identified on the EVS compatible stereo to mono downmix:

  • use of double arithmetic
  1. double-precision mathematic functions should be replaced by single-precision ones, e.g. (float) sqrt() -> sqrtf()
  2. Unnecessary data type conversion statements should be removed: (float) inv_sqrt() -> inv_sqrtf()
  • other formal issue: Constant STEREO_DMX_EVS_SHIFT_LIMIT should be replaced by STEREO_DFT_ZP_NS_ENC and constructions like (int16_t) ( STEREO_DMX_EVS_SHIFT_LIMIT * input_Fs / 1000 ) by NS2SA()

  • problem of level consistency when switching between downmix modes (POC/PHA) for specific critical items

  • quality artifacts in POR or PHA modes for specific critical items

Description of the change

See code changes under separate flags:

#define BE_FIX_567_DOUBLE_STEREO_DMX                          /* NTT: Fix formal issues */   
#define NONBE_FIX_567_DOUBLE_STEREO_DMX                       /* Orange: Double-precision replaced by single-precision */   
#define NONBE_FIX_947_STEREO_DMX_EVS_POC                      /* Orange: Fix clicks on POC */  
#define NONBE_FIX_947_STEREO_DMX_EVS_PHA                      /* Orange: Fix issues on PHA */    

Affected operating points

EVS compatible stereo to mono downmix

Merge request reports

Loading