Commit fbc0dad3 authored by emerit's avatar emerit
Browse files

merge with MR 161 NONBE_1328_FIX_NON_LINEARITY

parent de21e483
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -161,6 +161,9 @@
#define FIX_1113_CLDFB_REND_IN_ISAR                     /* issue 1113: fix the use of CLDFB renderer in split-rendering at the external renderer */
#define NONBE_1328_FIX_NON_LINEARITY                    /* VA: Fix possible issue when computing bwe_exc_extended and previous frame were almost 0 */
#define FIX_CREND_SIMPLIFY_CODE   
#ifdef FIX_CREND_SIMPLIFY_CODE
#define FIX_989_TD_REND_ROM                             /* Eri: Clean-up for TD renderer and completion of ROM generation tool */
#endif
/* #################### End BASOP porting switches ############################ */

/* clang-format on */
+21 −22
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@
#include "ivas_error.h"
#include "wmc_auto.h"
#include "ivas_rom_rend.h"
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
#include <math.h>
#else
#include "ivas_rom_binaural_crend_head.h"
@@ -47,7 +47,7 @@
#include "debug.h"
#endif

#ifndef FIX_CREND_SIMPLIFY_CODE
#ifndef FIX_989_TD_REND_ROM

/*-------------------------------------------------------------------*
 * Local constants
@@ -310,7 +310,7 @@ ivas_error TDREND_MIX_AddSrc(
    TDREND_SRC_t *Src_p;
    ivas_error error;

#ifndef FIX_CREND_SIMPLIFY_CODE
#ifndef FIX_989_TD_REND_ROM
    error = IVAS_ERR_OK;
#endif

@@ -349,7 +349,7 @@ ivas_error TDREND_MIX_AddSrc(
            hBinRendererTd->Sources[*SrcInd] = Src_p;
        }
    }
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
    return IVAS_ERR_OK;
#else
    return error;
@@ -397,7 +397,7 @@ static ivas_error DefaultBSplineModel(
    ModelParamsITD_t *modelITD;
    int16_t i, j;
    ivas_error error;
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
    float azimSegSamples;
#endif

@@ -410,7 +410,7 @@ static ivas_error DefaultBSplineModel(
    model->modelROM = TRUE;

    /* int16_t parameters */
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
    model->UseItdModel = defaultHRIR_rom_model_configuration[0];
    model->elevDim3 = defaultHRIR_rom_model_configuration[1];
    model->AlphaN = defaultHRIR_rom_model_configuration[2];
@@ -453,12 +453,15 @@ static ivas_error DefaultBSplineModel(
    }

    model->azimBsShape[0] = (const float *) defaultHRIR_rom_azimBsShape;
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
    if ( ( model->azimKSeq = (float **) malloc( model->elevDim3 * sizeof( float * ) ) ) == NULL )
#else
    if ( ( model->azimKSeq = (float **) malloc( 18 * sizeof( float * ) ) ) == NULL )
#endif
    {
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) );
    }

#ifdef FIX_989_TD_REND_ROM
    for ( i = 0; i < model->elevDim3; i++ )
    {
        if ( ( model->azimKSeq[i] = (float *) malloc( ( model->azimDim3[i] + 1 ) * sizeof( float * ) ) ) == NULL )
@@ -482,10 +485,6 @@ static ivas_error DefaultBSplineModel(
        }
    }
#else
    if ( ( model->azimKSeq = (float **) malloc( 18 * sizeof( float * ) ) ) == NULL )
    {
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) );
    }
    if ( ( model->azimKSeq[0] = (float *) malloc( 2 * sizeof( float * ) ) ) == NULL )
    {
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) );
@@ -519,7 +518,7 @@ static ivas_error DefaultBSplineModel(
            model->AlphaR = (const float *) defaultHRIR_rom_AlphaR48;
            model->EL = (const float *) defaultHRIR_rom_EL48;
            model->ER = (const float *) defaultHRIR_rom_ER48;
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
            model->K = defaultHRIR_rom_model_configuration[5];
#else
            model->K = 128;
@@ -534,7 +533,7 @@ static ivas_error DefaultBSplineModel(
            model->AlphaR = (const float *) defaultHRIR_rom_AlphaR32;
            model->EL = (const float *) defaultHRIR_rom_EL32;
            model->ER = (const float *) defaultHRIR_rom_ER32;
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
            model->K = (int16_t) ceilf( RESAMPLE_FACTOR_32_48 * defaultHRIR_rom_model_configuration[5] );
#else
            model->K = 86;
@@ -549,7 +548,7 @@ static ivas_error DefaultBSplineModel(
            model->AlphaR = (const float *) defaultHRIR_rom_AlphaR16;
            model->EL = (const float *) defaultHRIR_rom_EL16;
            model->ER = (const float *) defaultHRIR_rom_ER16;
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
            model->K = (int16_t) ceilf( RESAMPLE_FACTOR_16_48 * defaultHRIR_rom_model_configuration[5] );
#else
            model->K = 43;
@@ -563,18 +562,13 @@ static ivas_error DefaultBSplineModel(
            break;
    }

#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
    modelITD->elevDim3 = defaultHRIR_rom_ITD_model_configuration[0];
    modelITD->azimDim3 = defaultHRIR_rom_ITD_model_configuration[1];
    modelITD->elevSegSamples = defaultHRIR_rom_ITD_model_configuration[2];
    modelITD->azimSegSamples = defaultHRIR_rom_ITD_model_configuration[3];
    modelITD->elevBsLen = defaultHRIR_rom_ITD_elevBsLen;
    modelITD->elevBsStart = defaultHRIR_rom_ITD_elevBsStart;

    modelITD->elevKSeq = defaultHRIR_rom_ITD_elevKSeq;

    modelITD->azimBsLen = defaultHRIR_rom_ITD_azimBsLen;
    modelITD->azimBsStart = defaultHRIR_rom_ITD_azimBsStart;
#else
    modelITD->N = 4;
    modelITD->elevDim2 = 20;
@@ -590,9 +584,14 @@ static ivas_error DefaultBSplineModel(
    modelITD->elevBsStart[1] = 4;
    modelITD->elevBsStart[2] = 11;
    modelITD->elevBsStart[3] = 21;
#endif

    modelITD->elevKSeq = defaultHRIR_rom_ITD_elevKSeq;

#ifdef FIX_989_TD_REND_ROM
    modelITD->azimBsLen = defaultHRIR_rom_ITD_azimBsLen;
    modelITD->azimBsStart = defaultHRIR_rom_ITD_azimBsStart;
#else
    modelITD->azimBsLen[0] = 11;
    modelITD->azimBsLen[1] = 21;
    modelITD->azimBsLen[2] = 31;
@@ -603,8 +602,8 @@ static ivas_error DefaultBSplineModel(
    modelITD->azimBsStart[3] = 63;

    modelITD->azimSegSamples = 10;

#endif

    modelITD->azimKSeq = defaultHRIR_rom_ITD_azimKSeq;
    modelITD->W = (const float *) defaultHRIR_rom_ITD_W;
    modelITD->azimBsShape = (const float *) defaultHRIR_rom_ITD_azimBsShape;
+19 −19
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@
#endif
const float defaultHRIR_rom_latency_s = 0.000020834f;
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
const int16_t defaultHRIR_rom_model_configuration[6] = {
1, /* UseItdModel */
15, /* elevDim3 */
@@ -10166,7 +10166,7 @@ const uint32_t defaultHRIR_rom_ITD_W[658] = {
0x3c678a1c,0xbdeb0ba5,0xbe2218a5,0x3e58dcde,0x3d71aaa0,0xbef80fb9,0xbf3d07e1,0x3f3485be,0x3db783c0,0x3c142933,0xbed36b04,0xbb9f1f49,0x3ebfdc23,0xbcc7652e,0xbdb4e6cd,0xbf3be092,0x3f399c4e,0x3ef2eb6a,0xbd93a618,0xbe480d88,0x3e1bd187,0x3df79a5d,0xbc53f8d6,0xbf002186,0xbd41bc42,
0x3e5c0f28,0x3f2ad402,0xbf3cc2c3,0xbedc59d1,0xbe021816,0x3ea43429,0x3d349309,0xbab986b3,
 };
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
const int16_t defaultHRIR_rom_ITD_model_configuration[4] = {
18, /* elevDim3 */
41, /* azimDim3 */
@@ -10187,17 +10187,17 @@ const int16_t defaultHRIR_rom_ITD_azimBsStart[4] = {
};
#endif
const uint32_t defaultHRIR_rom_ITD_azimBsShape[84] = {
0x3f7ffe00,0x3f3aa000,0x3f031200,0x3eaf9c00,0x3e5d3000,0x3e000000,0x3d831000,0x3cdd4000,0x3c030000,0x3a840000,0x00000000,0x00000000,0x3e837400,0x3ede3400,0x3f0ad000,0x3f178e00,0x3f180000,0x3f0eda00,0x3efd9000,0x3ed4fc00,0x3ea95800,0x3e800000,0x3e3aa000,0x3e031000,0x3dafa000,
0x3d5d2000,0x3d000000,0x3c830000,0x3bdd0000,0x3b040000,0x39800000,0x00000000,0x00000000,0x3c668000,0x3d57c000,0x3de1d000,0x3e39b000,0x3e855400,0x3eaf1c00,0x3ed75800,0x3efb3800,0x3f0bf800,0x3f155600,0x3f18ae00,0x3f168800,0x3f0fc400,0x3f054a00,0x3ef00000,0x3ed19400,0x3eb11c00,
0x3e906400,0x3e626000,0x3e2aa800,0x3df8d000,0x3daec000,0x3d6a2000,0x3d138000,0x3caac000,0x3c2f0000,0x3b930000,0x3ab00000,0x39200000,0x00000000,0x00000000,0x39200000,0x3ab00000,0x3b930000,0x3c2f0000,0x3caac000,0x3d138000,0x3d6a2000,0x3daec000,0x3df8d000,0x3e2aa800,0x3e627800,
0x3e90b800,0x3eb24400,0x3ed45000,0x3ef55400,0x3f09e600,0x3f171600,0x3f217400,0x3f283c00,0x3f2aaa00,
0x3f800000,0x3f3a9fbe,0x3f03126f,0x3eaf9db2,0x3e5d2f1b,0x3e000000,0x3d83126f,0x3cdd2f1b,0x3c03126f,0x3a83126f,0xa5800000,0x00000000,0x3e8374bc,0x3ede353f,0x3f0ad0e5,0x3f178d50,0x3f180000,0x3f0ed917,0x3efd9168,0x3ed4fdf4,0x3ea95810,0x3e800000,0x3e3a9fbe,0x3e03126f,0x3daf9db2,
0x3d5d2f1b,0x3d000000,0x3c83126f,0x3bdd2f1b,0x3b03126f,0x3983126f,0xa6000000,0x00000000,0x3c66bdc8,0x3d57b901,0x3de1cac1,0x3e39af72,0x3e855555,0x3eaf1aa0,0x3ed756b3,0x3efb38a9,0x3f0bf7cf,0x3f155555,0x3f18aec3,0x3f16872b,0x3f0fc3ed,0x3f054a69,0x3ef00000,0x3ed19423,0x3eb11bfd,
0x3e90624e,0x3e6263ab,0x3e2aaaab,0x3df8d4fe,0x3daec33e,0x3d6a2798,0x3d1374bc,0x3caaaaab,0x3c2ec33e,0x3b9374bc,0x3aaec33e,0x392ec33e,0xa6800000,0x00000000,0x392ec33e,0x3aaec33e,0x3b9374bc,0x3c2ec33e,0x3caaaaab,0x3d1374bc,0x3d6a2798,0x3daec33e,0x3df8d4fe,0x3e2aaaab,0x3e627984,
0x3e90b9af,0x3eb242e7,0x3ed44f30,0x3ef55555,0x3f09e60f,0x3f17152a,0x3f21735f,0x3f283c13,0x3f2aaaab,
};
const float defaultHRIR_rom_ITD_azimKSeq[19] = {
  0.000000f,  10.000000f,  20.000000f,  30.000000f,  40.000000f,  50.000000f,  60.000000f,  70.000000f,  80.000000f,  90.000000f, 100.000000f, 110.000000f, 120.000000f, 130.000000f, 140.000000f, 150.000000f, 160.000000f, 170.000000f, 180.000000f, 
};
const uint32_t defaultHRIR_rom_ITD_elevBsShape[28] = {
0x3f7ffe00,0x3e97b400,0x3d17c000,0x00000000,0x00000000,0x3f109800,0x3f04be00,0x3e800000,0x3d97b000,0x3c178000,0x00000000,0x00000000,0x3e07e800,0x3eca4400,0x3f155600,0x3f0ca400,0x3ebc0c00,0x3e2aa800,0x3d4a4000,0x3bca0000,0x00000000,0x00000000,0x3bca0000,0x3d4a4000,0x3e2aa800,
0x3ebda000,0x3f12f600,0x3f2aaa00,
0x3f800000,0x3e97b426,0x3d17b426,0x00000000,0x00000000,0x3f1097b4,0x3f04bda1,0x3e800000,0x3d97b426,0x3c17b426,0x00000000,0x00000000,0x3e07e6b7,0x3eca4588,0x3f155555,0x3f0ca458,0x3ebc0ca4,0x3e2aaaab,0x3d4a4588,0x3bca4588,0x00000000,0x00000000,0x3bca4588,0x3d4a4588,0x3e2aaaab,
0x3ebda12f,0x3f12f685,0x3f2aaaab,
};
const float defaultHRIR_rom_ITD_elevKSeq[16] = {
-90.000000f, -78.000000f, -66.000000f, -54.000000f, -42.000000f, -30.000000f, -18.000000f,  -6.000000f,   6.000000f,  18.000000f,  30.000000f,  42.000000f,  54.000000f,  66.000000f,  78.000000f,  90.000000f, 
+3 −3
Original line number Diff line number Diff line
@@ -47,7 +47,7 @@
 *------------------------------------------------------------------------*/
/* TD renderer default HRIR model */
extern const float defaultHRIR_rom_latency_s;
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
extern const int16_t defaultHRIR_rom_model_configuration[6];
#else
extern const int16_t defaultHRIR_rom_azimDim2[15];
@@ -70,7 +70,7 @@ extern const uint32_t defaultHRIR_rom_EL32[HRTF_MODEL_N_SECTIONS * 470];
extern const uint32_t defaultHRIR_rom_ER32[HRTF_MODEL_N_SECTIONS * 470];
extern const uint32_t defaultHRIR_rom_EL16[HRTF_MODEL_N_SECTIONS * 470];
extern const uint32_t defaultHRIR_rom_ER16[HRTF_MODEL_N_SECTIONS * 470];
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
extern const int16_t defaultHRIR_rom_elevBsLen[4];
extern const int16_t defaultHRIR_rom_elevBsStart[4];
#endif
@@ -81,7 +81,7 @@ extern const uint32_t defaultHRIR_rom_ITD_azimBsShape[84];
extern const float defaultHRIR_rom_ITD_azimKSeq[19];
extern const uint32_t defaultHRIR_rom_ITD_elevBsShape[28];
extern const float defaultHRIR_rom_ITD_elevKSeq[16];
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
extern const int16_t defaultHRIR_rom_ITD_model_configuration[4];
extern const int16_t defaultHRIR_rom_ITD_elevBsLen[4];
extern const int16_t defaultHRIR_rom_ITD_elevBsStart[4];
+19 −20
Original line number Diff line number Diff line
@@ -920,28 +920,24 @@ typedef struct er_struct_t

typedef struct
{
#ifdef FIX_CREND_SIMPLIFY_CODE
    int16_t modelROM;    /* Flag that indicates that the model resides in ROM (controls init/dealloc). */
    int16_t UseItdModel; /* Controls whether ITD model is used. */
#ifdef FIX_989_TD_REND_ROM
    int16_t K; /* Length of filter */
    int16_t elevDim3;
    int16_t AlphaN; /* Number of rows in Alpha matrices */
    int16_t num_unique_azim_splines;
    int16_t elevSegSamples;

    const int16_t *elevBsLen;
    const int16_t *elevBsStart;
#else
    int16_t modelROM;     /* Flag that indicates that the model resides in ROM (controls init/dealloc). */
    int16_t UseItdModel;  /* Controls whether ITD model is used. */
    int16_t SplineDegree; /* Degree of the spline functions */
    int16_t K;            /* Length of filter */
    int16_t elevDim2;
#endif
    int16_t elevDim3;
    int16_t AlphaN; /* Number of rows in Alpha matrices */
    int16_t num_unique_azim_splines;
    int16_t elevSegSamples;

#ifdef FIX_989_TD_REND_ROM
    const int16_t *elevBsLen;
    const int16_t *elevBsStart;
#else
    int16_t elevBsLen[HRTF_MODEL_BSPLINE_NUM_COEFFS];
    int16_t elevBsStart[HRTF_MODEL_BSPLINE_NUM_COEFFS];
    const int16_t *azimDim2;
@@ -972,7 +968,7 @@ typedef struct
    float *ER_dyn;
    float *elevBsShape_dyn;
    float *elevKSeq_dyn;
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
    int16_t *elevBsLen_dyn;
    int16_t *elevBsStart_dyn;
#else
@@ -990,22 +986,25 @@ typedef struct

typedef struct
{
#ifndef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
    int16_t elevDim3;
    const float *elevKSeq; /* Array, length elevDim3-2       */
    int16_t azimDim3;
    const float *azimKSeq; /* Array, length azimDim3-2            */
    const float *W;        /* Array, size (elevDim3*azimDim3) x K */
#else
    int16_t N; /* Polynomial degree */

    int16_t elevDim2;
#endif
    int16_t elevDim3;
    const float *elevKSeq; /* Array, length elevDim3-2       */
#ifndef FIX_CREND_SIMPLIFY_CODE
    int16_t azimDim2;
#endif

    int16_t azimDim3;
    const float *azimKSeq; /* Array, length azimDim3-2            */
    const float *W;        /* Array, size (elevDim3*azimDim3) x K */
#endif

#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
    const int16_t *azimBsLen;
    const int16_t *azimBsStart;
#else
@@ -1016,7 +1015,7 @@ typedef struct
    const float *azimBsShape;
    int16_t azimSegSamples;

#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
    const int16_t *elevBsLen;
    const int16_t *elevBsStart;
#else
@@ -1034,7 +1033,7 @@ typedef struct
    float *W_dyn;
    float *azimBsShape_dyn;
    float *elevBsShape_dyn;
#ifdef FIX_CREND_SIMPLIFY_CODE
#ifdef FIX_989_TD_REND_ROM
    int16_t *azimBsLen_dyn;
    int16_t *azimBsStart_dyn;
    int16_t *elevBsLen_dyn;