Skip to content

[non-be][rend-non-be][split-non-be][allow regression]Complexity reduction of formulate2x2MixingMatrixfx()

Reason why this change is needed

formulate2x2MixingMatrix() can be simplified if there are no cross-terms (CinRe, CinIm == 0), which is every second call the case. Also the basop/float ratio of > 2 can be brought down, if, after the energy normalization to 1.0 only native BASOPS are used in the calculations instead of using a mantissa/exponent format which requires scaling operations and the usage of the BASOP_Util_Add_Mant32Exp() function.

Description of the change

formulate2x2MixingMatrix(), chol2x2_fx() and eig2x2_fx() have been refactored completely.

The following performance improvements have been made (Bit stream for performance measurements used is stv3OA32c.bit)

CMLD: -fr 20 BINAURAL 32 stv3OA32c.bit dec_basop.wav
 
W/O #NONBE_2169_BINAURAL_MIXING_MATRIX_OP

--- Complexity analysis [WMOPS] ---

                                           |------  SELF  ------|   |---  CUMULATIVE  ---|
                        routine    calls     min     max     avg      min     max     avg
                ---------------   ------   ------  ------  ------   ------  ------  ------
                ivas_jbm_dec_tc     1.00    1.891   1.915   1.915   26.344  39.006  29.323
               ivas_spar_decode     1.00    1.010   1.041   1.019    2.544   2.684   2.628
               ivas_spar_dec_MD     1.00    1.526   1.665   1.609    1.526   1.665   1.609
                   ivas_sce_dec     1.00    0.246   0.246   0.246   21.794  34.503  24.780
                  ivas_core_dec     1.00    3.152  11.376   7.869   21.547  34.257  24.534
                 acelp_core_dec     0.61   12.542  18.737  14.364   12.542  18.737  14.364
      ivas_dec_prepare_renderer     1.00    6.054   7.686   6.140    6.054   7.686   6.140
                ivas_dec_render     1.00   73.005  84.525  84.038   77.158  88.783  88.296
    ivas_sba_prototype_renderer     4.00    3.922   4.258   4.258    3.922   4.258   4.258
            stereo_tcx_core_dec     0.39   17.651  31.024  20.312   17.651  31.024  20.312
                ---------------   ------   ------  ------  ------
                          total  1000.00  114.658 133.989 123.758

formulate2x2MixingMatrix_fx       320.00    6.429   7.074   7.061   28.753  39.314  39.096

With #NONBE_2169_BINAURAL_MIXING_MATRIX_OP

--- Complexity analysis [WMOPS] ---

                                           |------  SELF  ------|   |---  CUMULATIVE  ---|
                        routine    calls     min     max     avg      min     max     avg
                ---------------   ------   ------  ------  ------   ------  ------  ------
                ivas_jbm_dec_tc     1.00    1.891   1.915   1.915   26.344  39.006  29.581
               ivas_spar_decode     1.00    1.010   1.041   1.019    2.544   2.684   2.628
               ivas_spar_dec_MD     1.00    1.526   1.665   1.609    1.526   1.665   1.609
                   ivas_sce_dec     1.00    0.246   0.246   0.246   21.794  34.503  25.038
                  ivas_core_dec     1.00    3.152  11.376   7.869   21.547  34.257  24.792
                 acelp_core_dec     0.61   12.887  19.460  14.784   12.887  19.460  14.784
      ivas_dec_prepare_renderer     1.00    6.054   7.686   6.140    6.054   7.686   6.140
                ivas_dec_render     1.00   51.025  68.987  68.319   55.178  73.245  72.577
    ivas_sba_prototype_renderer     4.00    3.922   4.258   4.258    3.922   4.258   4.258
            stereo_tcx_core_dec     0.39   17.651  31.024  20.312   17.651  31.024  20.312
                ---------------   ------   ------  ------  ------
                          total  1000.00   92.678 118.542 108.297

formulate2x2MixingMatrix_fx       320.00    1.274   4.051   3.996    6.248  23.139  22.846

Roughly 16 WMOPS saving, ratio BASOP/FLOAT for formulate2x2MixingMatrix_fx() is now 1.1 (before 1.9). Beside the WMOPS savings, overall precision has been improved. (e.g. 66 improvements_MIN_SSNR vs. 2 regressions_MIN_SSNR)

Affected operating points

  1. Produced bitstream is BE for EVS-MONO compared to previous state
  2. Produced bitstream is non-BE for IVAS, but it is fully backwards compatible for decoding. Decoded output may differ.
Edited by Markus Werner

Merge request reports

Loading