Commit ba1f5355 authored by multrus's avatar multrus
Browse files

patch for introducing static scaling for ParamMC

parent 4e0c3f63
Loading
Loading
Loading
Loading
Loading
+99 −0
Original line number Diff line number Diff line
@@ -1831,18 +1831,30 @@ const int16_t Param_MC_index[MAX_CICP_CHANNELS] =
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
};
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
const float ivas_param_mc_dmx_scal_fac_CICP6_2tc_static     = (2.0f + 2.f * INV_SQRT2);
const float ivas_param_mc_dmx_scal_fac_CICP6_2tc_static_inv = 1.f / (2.0f + 2.f * INV_SQRT2);
#endif
const float ivas_param_mc_dmx_fac_CICP6_2tc[12] =
{
    1.0f, 0.0f, INV_SQRT2, INV_SQRT2, 1.0f, 0.0f, /*Lt*/
    0.0f, 1.0f, INV_SQRT2, INV_SQRT2, 0.0f, 1.0f  /*Rt*/
};
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
const float ivas_param_mc_dmx_scal_fac_CICP12_2tc_static     = (3.0f + 2.f * INV_SQRT2);
const float ivas_param_mc_dmx_scal_fac_CICP12_2tc_static_inv = 1.f / (3.0f + 2.f * INV_SQRT2);
#endif
const float ivas_param_mc_dmx_fac_CICP12_2tc[16] =
{
    1.0f, 0.0f, INV_SQRT2, INV_SQRT2, 1.0f, 0.0f, 1.0f, 0.0f, /*Lt*/
    0.0f, 1.0f, INV_SQRT2, INV_SQRT2, 0.0f, 1.0f, 0.0f, 1.0f  /*Rt*/
};
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
const float ivas_param_mc_dmx_scal_fac_CICP12_3tc_static     = (3.0f);
const float ivas_param_mc_dmx_scal_fac_CICP12_3tc_static_inv = 1.f / (3.0f);
#endif
const float ivas_param_mc_dmx_fac_CICP12_3tc[24] =
{
    1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, /*Lt*/
@@ -1850,11 +1862,20 @@ const float ivas_param_mc_dmx_fac_CICP12_3tc[24] =
    0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f  /*Ct*/
};
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
const float ivas_param_mc_dmx_scal_fac_CICP14_2tc_static     = (3.0f + 2.f * INV_SQRT2);
const float ivas_param_mc_dmx_scal_fac_CICP14_2tc_static_inv = 1.f / (3.0f + 2.f * INV_SQRT2);
#endif
const float ivas_param_mc_dmx_fac_CICP14_2tc[16] =
{
    1.0f, 0.0f, INV_SQRT2, INV_SQRT2, 1.0f, 0.0f, 1.0f, 0.0f, /*Lt*/
    0.0f, 1.0f, INV_SQRT2, INV_SQRT2, 0.0f, 1.0f, 0.0f, 1.0f  /*Rt*/
};
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
const float ivas_param_mc_dmx_scal_fac_CICP14_3tc_static     = (3.0f);
const float ivas_param_mc_dmx_scal_fac_CICP14_3tc_static_inv = 1.f / (3.0f);
#endif
const float ivas_param_mc_dmx_fac_CICP14_3tc[24] =
{
    1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, /*Lt*/
@@ -1862,6 +1883,10 @@ const float ivas_param_mc_dmx_fac_CICP14_3tc[24] =
    0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, /*Ct*/
};
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
const float ivas_param_mc_dmx_scal_fac_CICP16_3tc_static     = (4.0f);
const float ivas_param_mc_dmx_scal_fac_CICP16_3tc_static_inv = 1.f / (4.0f);
#endif
const float ivas_param_mc_dmx_fac_CICP16_3tc[30] =
{
    1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, /*Lt*/
@@ -1869,6 +1894,10 @@ const float ivas_param_mc_dmx_fac_CICP16_3tc[30] =
    0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f  /*Ct*/
};
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
const float ivas_param_mc_dmx_scal_fac_CICP19_3tc_static     = (5.0);
const float ivas_param_mc_dmx_scal_fac_CICP19_3tc_static_inv = 1.f / (5.0);
#endif
const float ivas_param_mc_dmx_fac_CICP19_3tc[36] =
{
    1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, /*Lt*/
@@ -2140,6 +2169,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP6_2tc,
        &ivas_param_mc_dmx_fac_CICP6_2tc[0],
        &ivas_param_mc_ild_fac_CICP6_2tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP6_2tc_static,
        ivas_param_mc_dmx_scal_fac_CICP6_2tc_static_inv
#endif
    },
    /* CICP6 64000 */
    {
@@ -2151,6 +2185,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP6_2tc,
        &ivas_param_mc_dmx_fac_CICP6_2tc[0],
        &ivas_param_mc_ild_fac_CICP6_2tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP6_2tc_static,
        ivas_param_mc_dmx_scal_fac_CICP6_2tc_static_inv
#endif
    },
    /* CICP6 80000 */
    {
@@ -2162,6 +2201,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP6_2tc,
        &ivas_param_mc_dmx_fac_CICP6_2tc[0],
        &ivas_param_mc_ild_fac_CICP6_2tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP6_2tc_static,
        ivas_param_mc_dmx_scal_fac_CICP6_2tc_static_inv
#endif
    },
    /* CICP12 48000 */
    {
@@ -2173,6 +2217,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP12_2tc,
        &ivas_param_mc_dmx_fac_CICP12_2tc[0],
        &ivas_param_mc_ild_fac_CICP12_2tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP12_2tc_static,
        ivas_param_mc_dmx_scal_fac_CICP12_2tc_static_inv
#endif
    },
    /* CICP12 64000 */
    {
@@ -2184,6 +2233,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP12_2tc,
        &ivas_param_mc_dmx_fac_CICP12_2tc[0],
        &ivas_param_mc_ild_fac_CICP12_2tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP12_2tc_static,
        ivas_param_mc_dmx_scal_fac_CICP12_2tc_static_inv
#endif
    },
    /* CICP12 80000 */
    {
@@ -2195,6 +2249,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP12_2tc,
        &ivas_param_mc_dmx_fac_CICP12_2tc[0],
        &ivas_param_mc_ild_fac_CICP12_2tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP12_2tc_static,
        ivas_param_mc_dmx_scal_fac_CICP12_2tc_static_inv
#endif
    },
    /* CICP12 96000 */
    {
@@ -2206,6 +2265,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP12_3tc,
        &ivas_param_mc_dmx_fac_CICP12_3tc[0],
        &ivas_param_mc_ild_fac_CICP12_3tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP12_3tc_static,
        ivas_param_mc_dmx_scal_fac_CICP12_3tc_static_inv
#endif
    },
    /* CICP14 48000 */
    {
@@ -2217,6 +2281,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP14_2tc,
        &ivas_param_mc_dmx_fac_CICP14_2tc[0],
        &ivas_param_mc_ild_fac_CICP14_2tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP14_2tc_static,
        ivas_param_mc_dmx_scal_fac_CICP14_2tc_static_inv
#endif
    },
    /* CICP14 64000 */
    {
@@ -2228,6 +2297,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP14_2tc,
        &ivas_param_mc_dmx_fac_CICP14_2tc[0],
        &ivas_param_mc_ild_fac_CICP14_2tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP14_2tc_static,
        ivas_param_mc_dmx_scal_fac_CICP14_2tc_static_inv
#endif
    },
    /* CICP14 80000 */
    {
@@ -2239,6 +2313,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP14_2tc,
        &ivas_param_mc_dmx_fac_CICP14_2tc[0],
        &ivas_param_mc_ild_fac_CICP14_2tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP14_2tc_static,
        ivas_param_mc_dmx_scal_fac_CICP14_2tc_static_inv
#endif
    },
    /* CICP14 96000 */
    {
@@ -2250,6 +2329,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP14_3tc,
        &ivas_param_mc_dmx_fac_CICP14_3tc[0],
        &ivas_param_mc_ild_fac_CICP14_3tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP14_3tc_static,
        ivas_param_mc_dmx_scal_fac_CICP14_3tc_static_inv
#endif
    },
    /* CICP16 96000 */
    {
@@ -2261,6 +2345,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP16_3tc,
        &ivas_param_mc_dmx_fac_CICP16_3tc[0],
        &ivas_param_mc_ild_fac_CICP16_3tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP16_3tc_static,
        ivas_param_mc_dmx_scal_fac_CICP16_3tc_static_inv
#endif
    },
    /* CICP16 128000 */
    {
@@ -2272,6 +2361,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP16_3tc,
        &ivas_param_mc_dmx_fac_CICP16_3tc[0],
        &ivas_param_mc_ild_fac_CICP16_3tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP16_3tc_static,
        ivas_param_mc_dmx_scal_fac_CICP16_3tc_static_inv
#endif
    },
    /* CICP19 128000 */
    {
@@ -2283,6 +2377,11 @@ const PARAM_MC_CONF ivas_param_mc_conf[PARAM_MC_NUM_CONFIGS] =
        &ivas_param_mc_icc_mapping_CICP19_3tc,
        &ivas_param_mc_dmx_fac_CICP19_3tc[0],
        &ivas_param_mc_ild_fac_CICP19_3tc[0]
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        ,
        ivas_param_mc_dmx_scal_fac_CICP19_3tc_static,
        ivas_param_mc_dmx_scal_fac_CICP19_3tc_static_inv
#endif
    }
};
+4 −0
Original line number Diff line number Diff line
@@ -575,6 +575,10 @@ typedef struct ivas_param_mc_conf_struct /* structure for ROM Table */
    const PARAM_MC_ICC_MAPPING *icc_mapping_conf;
    const float *dmx_fac;
    const float *ild_factors;
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
    float static_dmx_fac;
    float static_dmx_fac_inv;
#endif

} PARAM_MC_CONF;

+2 −0
Original line number Diff line number Diff line
@@ -189,6 +189,8 @@

#define NONE_BE_FIX_816_LFE_PLC_FLOAT                   /* DLB: issue 816: reduce required precision to float for LFE-PLC*/

#define NONBE_FIX_1165_STATIC_SCAL_PARAMMC              /* FhG: add static scaling to ParamMC DMX */

/* ##################### End NON-BE switches ########################### */

/* ################## End DEVELOPMENT switches ######################### */
+6 −0
Original line number Diff line number Diff line
@@ -634,6 +634,12 @@ ivas_error ivas_jbm_dec_tc(
                hp20( p_output[n], output_frame, st_ivas->mem_hp20_out[n], output_Fs );
            }

#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
            for ( n = 0; n < st_ivas->nchan_transport; n++ )
            {
                v_multc( p_output[n], st_ivas->hParamMC->static_dmx_fac, p_output[n], output_frame );
            }
#endif
            /* Rendering */
            if ( output_config == IVAS_AUDIO_CONFIG_MONO || output_config == IVAS_AUDIO_CONFIG_STEREO )
            {
+6 −0
Original line number Diff line number Diff line
@@ -312,6 +312,9 @@ ivas_error ivas_param_mc_dec_open(
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Parametric MC\n" ) );
    }
    mvr2r( ivas_param_mc_conf[config_index].dmx_fac, hParamMC->proto_matrix_int, nchan_transport * nchan_out_transport );
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
    hParamMC->static_dmx_fac = ivas_param_mc_conf[config_index].static_dmx_fac;
#endif

    if ( hParamMC->synthesis_conf == PARAM_MC_SYNTH_LS_CONV_COV || hParamMC->synthesis_conf == PARAM_MC_SYNTH_MONO_STEREO )
    {
@@ -763,6 +766,9 @@ ivas_error ivas_param_mc_dec_reconfig(
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Parametric MC\n" ) );
        }
        mvr2r( ivas_param_mc_conf[config_index].dmx_fac, hParamMC->proto_matrix_int, nchan_transport * nchan_out_transport );
#ifdef NONBE_FIX_1165_STATIC_SCAL_PARAMMC
        hParamMC->static_dmx_fac = ivas_param_mc_conf[config_index].static_dmx_fac;
#endif
    }

    if ( hParamMC->synthesis_conf == PARAM_MC_SYNTH_LS_CONV_COV || hParamMC->synthesis_conf == PARAM_MC_SYNTH_MONO_STEREO )
Loading