Commit e318c6f8 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch 'enc_funcs_fxd_13' into 'main'

MASA, PARAM-MC, SBA paths fxns conv and integration, cleanup [allow regression]

See merge request !653
parents 4ddb48dd 398f6a52
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -143,6 +143,7 @@ void fer_energy_fx(
}
#endif // IVAS_FLOAT_FIXED

#ifndef IVAS_FLOAT_FIXED
/*------------------------------------------------------------------------*
 * frame_energy()
 *
@@ -183,6 +184,7 @@ float frame_energy(

    return enern;
}
#endif


#if 0
+9 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@
#define _180_OVER_PI                            ( 180.0f / EVS_PI )
#ifdef IVAS_FLOAT_FIXED
#define _180_OVER_PI_Q25                         1922521886
#define PI_OVER_180_Q25                         ( 585635 )
#define _180_IN_Q22 (754974720)
#define _360_IN_Q22 (1509949440)
#define _180_OVER_PI_FX                          (Word32) (( 180.0f / EVS_PI ) *ONE_IN_Q10)
@@ -1392,6 +1393,11 @@ typedef enum
#define MCMASA_LFE_1BIT_THRES                   0.03f
#define MCMASA_LFE_ALPHA                        0.67f
#define MCMASA_LFE_BETA                         0.09f
#ifdef IVAS_FLOAT_FIXED
#define MCMASA_LFE_1BIT_THRES_Q31               64424509 /* 0.03f in Q31 */
#define MCMASA_LFE_ALPHA_Q31                    1438814044 /* 0.67f in Q31 */
#define MCMASA_LFE_BETA_Q31                     193273528 /* 0.09f in Q31 */
#endif
#define MCMASA_LFE_THETA                        1.3f
#define MCMASA_LFE_SYNTH_ALPHA                  0.95f                       /* Smoothing coefficient for LFE synthesis */
#ifdef IVAS_FLOAT_FIXED
@@ -1547,8 +1553,11 @@ typedef enum
#define PARAM_MC_MAX_PARAM_BAND_ABS_COV_ENC     10
#define PARAM_MC_MAX_BAND_ABS_COV_DEC           10
#define PARAM_MC_ENER_LIMIT_INTRAFRAME          (1.5f)
#define PARAM_MC_ENER_LIMIT_INTRAFRAME_FX_Q21   3145728
#define PARAM_MC_ENER_LIMIT_INTERFRAME          (2.0f)
#define PARAM_MC_ENER_LIMIT_INTERFRAME_FX_Q21   4194304
#define PARAM_MC_ENER_LIMIT_MAX_DELTA_FAC       (15.0f)
#define PARAM_MC_ENER_LIMIT_MAX_DELTA_FAC_FX_Q21 31457280
#define PARAM_MC_NUM_ATTACK_ILD_THRESH          (3)
#define PARAM_MC_LFE_ON_THRESH                  (8000.0f)
#define PARAM_MC_LFE_ON_THRESH_FX                  8000  //Q0
+18 −6
Original line number Diff line number Diff line
@@ -316,6 +316,11 @@ ivas_error ivas_spar_covar_smooth_enc_open_fx(
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR COV encoder Fixed" );
            }
            set16_fx( hCovState->q_cov_real_per_band[i][j], Q31, cov_smooth_cfg->max_bands );
            IF( ( hCovState->q_prior_cov_real_per_band[i][j] = (Word16 *) malloc( sizeof( Word16 ) * cov_smooth_cfg->max_bands ) ) == NULL )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR COV encoder Fixed" );
            }
            set16_fx( hCovState->q_prior_cov_real_per_band[i][j], Q31, cov_smooth_cfg->max_bands );
        }
    }

@@ -404,6 +409,8 @@ void ivas_spar_covar_smooth_enc_close_fx(
                hCovState->pPrior_cov_real_fx[i][j] = NULL;
                free( hCovState->q_cov_real_per_band[i][j] );
                hCovState->q_cov_real_per_band[i][j] = NULL;
                free( hCovState->q_prior_cov_real_per_band[i][j] );
                hCovState->q_prior_cov_real_per_band[i][j] = NULL;
            }
        }

@@ -493,7 +500,7 @@ static void ivas_compute_smooth_cov_fx(
        {
            FOR( j = 0; j < num_ch; j++ )
            {
                set16_fx( hCovState->q_cov_real_per_band[i][j], q_cov[i][j], pFb->filterbank_num_bands );
                set16_fx( hCovState->q_cov_real_per_band[i][j], q_cov[i][j], sub( end_band, start_band ) );
            }
        }
        FOR( i = 0; i < num_ch; i++ )
@@ -529,7 +536,7 @@ static void ivas_compute_smooth_cov_fx(
                {
                    L_tmp = Mpy_32_32( hCovState->pSmoothing_factor_fx[k], pCov_buf[i][j][k] );                             // (Q31, q_cov[i][j]) -> q_cov[i][j]
                    L_tmp1 = Mpy_32_32( L_sub( ONE_IN_Q31, hCovState->pSmoothing_factor_fx[k] ), pPrior_cov_buf[i][j][k] ); // (Q31, hCovState->q_cov_real_per_band[i][j][k]) -> hCovState->q_cov_real_per_band[i][j][k]
                    pCov_buf[i][j][k] = BASOP_Util_Add_Mant32Exp( L_tmp, sub( Q31, q_cov[i][j] ), L_tmp1, sub( Q31, hCovState->q_cov_real_per_band[i][j][k] ), &q_tmp[k] );
                    pCov_buf[i][j][k] = BASOP_Util_Add_Mant32Exp( L_tmp, sub( Q31, q_cov[i][j] ), L_tmp1, sub( Q31, hCovState->q_prior_cov_real_per_band[i][j][k] ), &q_tmp[k] );
                    move32();
                    q_tmp[k] = sub( Q31, q_tmp[k] );
                    move16();
@@ -537,7 +544,7 @@ static void ivas_compute_smooth_cov_fx(
                    pCov_buf[i][j][k] = L_add( pCov_buf[i][j][k], L_tmp );
                    move32();
                }
                Copy( q_tmp, hCovState->q_cov_real_per_band[i][j], pFb->filterbank_num_bands );
                Copy( q_tmp, hCovState->q_cov_real_per_band[i][j], sub( end_band, start_band ) );
            }
        }
        FOR( i = 0; i < num_ch; i++ )
@@ -571,7 +578,7 @@ static void ivas_compute_smooth_cov_fx(
                {
                    L_tmp = Mpy_32_32( hCovState->pSmoothing_factor_fx[k], pCov_buf[i][j][k] );                             // (Q31, q_cov[i][j]) -> q_cov[i][j]
                    L_tmp1 = Mpy_32_32( L_sub( ONE_IN_Q31, hCovState->pSmoothing_factor_fx[k] ), pPrior_cov_buf[i][j][k] ); // (Q31, hCovState->q_cov_real_per_band[i][j][k]) -> hCovState->q_cov_real_per_band[i][j][k]
                    pCov_buf[i][j][k] = BASOP_Util_Add_Mant32Exp( L_tmp, sub( Q31, q_cov[i][j] ), L_tmp1, sub( Q31, hCovState->q_cov_real_per_band[i][j][k] ), &q_tmp[k] );
                    pCov_buf[i][j][k] = BASOP_Util_Add_Mant32Exp( L_tmp, sub( Q31, q_cov[i][j] ), L_tmp1, sub( Q31, hCovState->q_prior_cov_real_per_band[i][j][k] ), &q_tmp[k] );
                    move32();
                    q_tmp[k] = sub( Q31, q_tmp[k] );
                    move16();
@@ -579,7 +586,7 @@ static void ivas_compute_smooth_cov_fx(
                    pCov_buf[i][j][k] = L_add( pCov_buf[i][j][k], L_tmp );
                    move32();
                }
                Copy( q_tmp, hCovState->q_cov_real_per_band[i][j], pFb->filterbank_num_bands );
                Copy( q_tmp, hCovState->q_cov_real_per_band[i][j], sub( end_band, start_band ) );
            }
        }
    }
@@ -698,7 +705,7 @@ void ivas_cov_smooth_process_fx(
    const Word16 transient_det[2],
    Word16 *q_cov[IVAS_SPAR_MAX_CH] )
{
    Word16 i, j;
    Word16 i, j, k;
    Word16 num_bands = sub( end_band, start_band );

    ivas_compute_smooth_cov_fx( hCovState, pFb, cov_real, hCovState->pPrior_cov_real_fx, 0, start_band, end_band, num_ch, transient_det, q_cov );
@@ -708,6 +715,11 @@ void ivas_cov_smooth_process_fx(
        FOR( j = 0; j < num_ch; j++ )
        {
            Copy32( &cov_real[i][j][start_band], &hCovState->pPrior_cov_real_fx[i][j][start_band], num_bands );
            FOR( k = 0; k < num_bands; k++ )
            {
                hCovState->q_prior_cov_real_per_band[i][j][start_band + k] = hCovState->q_cov_real_per_band[i][j][start_band + k];
                move16();
            }
        }
    }

+24 −0
Original line number Diff line number Diff line
@@ -942,6 +942,9 @@ static void ivas_param_mc_set_coding_scheme(
            hMetadataPMC->icc_coding.sym_freq_delta = &ivas_param_mc_sym_freq_icc_delta_cicp6_48_16bits[0];
            hMetadataPMC->icc_coding.quantizer = &ivas_param_mc_quant_icc[0];
            hMetadataPMC->icc_coding.quantizer_size = PARAM_MC_SZ_ICC_QUANTIZER;
#ifdef IVAS_FLOAT_FIXED
            hMetadataPMC->icc_coding.quantizer_fx = &ivas_param_mc_quant_icc_fx[0];
#endif
            hMetadataPMC->icc_coding.uni_bits = PARAM_MC_NUM_BITS_ICC_SCALAR_QUANT;
            /* ILD */
            hMetadataPMC->ild_coding.cum_freq = &ivas_param_mc_cum_freq_ild_cicp6_48_16bits[0];
@@ -949,6 +952,9 @@ static void ivas_param_mc_set_coding_scheme(
            hMetadataPMC->ild_coding.cum_freq_delta = &ivas_param_mc_cum_freq_ild_delta_cicp6_48_16bits[0];
            hMetadataPMC->ild_coding.sym_freq_delta = &ivas_param_mc_sym_freq_ild_delta_cicp6_48_16bits[0];
            hMetadataPMC->ild_coding.quantizer = &ivas_param_mc_quant_ild_5d1_48[0];
#ifdef IVAS_FLOAT_FIXED
            hMetadataPMC->ild_coding.quantizer_fx = &ivas_param_mc_quant_ild_5d1_48_fx[0];
#endif
            hMetadataPMC->ild_coding.quantizer_size = PARAM_MC_SZ_ILD_QUANTIZER_4BITS;
            hMetadataPMC->ild_coding.uni_bits = PARAM_MC_NUM_BITS_ILD_SCALAR_QUANT;
            break;
@@ -959,6 +965,9 @@ static void ivas_param_mc_set_coding_scheme(
            hMetadataPMC->icc_coding.cum_freq_delta = &ivas_param_mc_cum_freq_icc_delta_cicp12_48_16bits[0];
            hMetadataPMC->icc_coding.sym_freq_delta = &ivas_param_mc_sym_freq_icc_delta_cicp12_48_16bits[0];
            hMetadataPMC->icc_coding.quantizer = &ivas_param_mc_quant_icc[0];
#ifdef IVAS_FLOAT_FIXED
            hMetadataPMC->icc_coding.quantizer_fx = &ivas_param_mc_quant_icc_fx[0];
#endif
            hMetadataPMC->icc_coding.quantizer_size = PARAM_MC_SZ_ICC_QUANTIZER;
            hMetadataPMC->icc_coding.uni_bits = PARAM_MC_NUM_BITS_ICC_SCALAR_QUANT;
            /* ILD */
@@ -967,6 +976,9 @@ static void ivas_param_mc_set_coding_scheme(
            hMetadataPMC->ild_coding.cum_freq_delta = &ivas_param_mc_cum_freq_ild_delta_cicp12_48_16bits[0];
            hMetadataPMC->ild_coding.sym_freq_delta = &ivas_param_mc_sym_freq_ild_delta_cicp12_48_16bits[0];
            hMetadataPMC->ild_coding.quantizer = &ivas_param_mc_quant_ild_5d1_48[0];
#ifdef IVAS_FLOAT_FIXED
            hMetadataPMC->ild_coding.quantizer_fx = &ivas_param_mc_quant_ild_5d1_48_fx[0];
#endif
            hMetadataPMC->ild_coding.quantizer_size = PARAM_MC_SZ_ILD_QUANTIZER_4BITS;
            hMetadataPMC->ild_coding.uni_bits = PARAM_MC_NUM_BITS_ILD_SCALAR_QUANT;
            break;
@@ -977,6 +989,9 @@ static void ivas_param_mc_set_coding_scheme(
            hMetadataPMC->icc_coding.cum_freq_delta = &ivas_param_mc_cum_freq_icc_delta_cicp14_48_16bits[0];
            hMetadataPMC->icc_coding.sym_freq_delta = &ivas_param_mc_sym_freq_icc_delta_cicp14_48_16bits[0];
            hMetadataPMC->icc_coding.quantizer = &ivas_param_mc_quant_icc[0];
#ifdef IVAS_FLOAT_FIXED
            hMetadataPMC->icc_coding.quantizer_fx = &ivas_param_mc_quant_icc_fx[0];
#endif
            hMetadataPMC->icc_coding.quantizer_size = PARAM_MC_SZ_ICC_QUANTIZER;
            hMetadataPMC->icc_coding.uni_bits = PARAM_MC_NUM_BITS_ICC_SCALAR_QUANT;
            /* ILD */
@@ -985,6 +1000,9 @@ static void ivas_param_mc_set_coding_scheme(
            hMetadataPMC->ild_coding.cum_freq_delta = &ivas_param_mc_cum_freq_ild_delta_cicp14_48_16bits[0];
            hMetadataPMC->ild_coding.sym_freq_delta = &ivas_param_mc_sym_freq_ild_delta_cicp14_48_16bits[0];
            hMetadataPMC->ild_coding.quantizer = &ivas_param_mc_quant_ild_5d1_48[0];
#ifdef IVAS_FLOAT_FIXED
            hMetadataPMC->ild_coding.quantizer_fx = &ivas_param_mc_quant_ild_5d1_48_fx[0];
#endif
            hMetadataPMC->ild_coding.quantizer_size = PARAM_MC_SZ_ILD_QUANTIZER_4BITS;
            hMetadataPMC->ild_coding.uni_bits = PARAM_MC_NUM_BITS_ILD_SCALAR_QUANT;
            break;
@@ -996,6 +1014,9 @@ static void ivas_param_mc_set_coding_scheme(
            hMetadataPMC->icc_coding.cum_freq_delta = &ivas_param_mc_cum_freq_icc_delta_combined_48_16bits[0];
            hMetadataPMC->icc_coding.sym_freq_delta = &ivas_param_mc_sym_freq_icc_delta_combined_48_16bits[0];
            hMetadataPMC->icc_coding.quantizer = &ivas_param_mc_quant_icc[0];
#ifdef IVAS_FLOAT_FIXED
            hMetadataPMC->icc_coding.quantizer_fx = &ivas_param_mc_quant_icc_fx[0];
#endif
            hMetadataPMC->icc_coding.quantizer_size = PARAM_MC_SZ_ICC_QUANTIZER;
            hMetadataPMC->icc_coding.uni_bits = PARAM_MC_NUM_BITS_ICC_SCALAR_QUANT;
            /* ILD */
@@ -1004,6 +1025,9 @@ static void ivas_param_mc_set_coding_scheme(
            hMetadataPMC->ild_coding.cum_freq_delta = &ivas_param_mc_cum_freq_ild_delta_combined_48_16bits[0];
            hMetadataPMC->ild_coding.sym_freq_delta = &ivas_param_mc_sym_freq_ild_delta_combined_48_16bits[0];
            hMetadataPMC->ild_coding.quantizer = &ivas_param_mc_quant_ild_5d1_48[0];
#ifdef IVAS_FLOAT_FIXED
            hMetadataPMC->ild_coding.quantizer_fx = &ivas_param_mc_quant_ild_5d1_48_fx[0];
#endif
            hMetadataPMC->ild_coding.quantizer_size = PARAM_MC_SZ_ILD_QUANTIZER_4BITS;
            hMetadataPMC->ild_coding.uni_bits = PARAM_MC_NUM_BITS_ILD_SCALAR_QUANT;
            break;
+16 −0
Original line number Diff line number Diff line
@@ -6928,6 +6928,16 @@ void ivas_quantise_real_values_fx(
  Word32 *quant_fx,
  const Word16 dim);

void ivas_quantise_real_values_enc_fx(
  const Word32 *values_fx,//Q28
  const Word16 q_levels,
  const Word32 min_value_fx,//Q28
  const Word32 max_value_fx,//Q28
  Word16 *index,
  Word32 *quant_fx,//Q28
  const Word16 dim);


void ivas_spar_get_uniform_quant_strat(
    ivas_spar_md_com_cfg *pSpar_md_com_cfg,
    const int16_t table_idx
@@ -7134,9 +7144,15 @@ void ivas_merge_masa_metadata(
    OMASA_SPATIAL_META_HANDLE hOMasaMeta                        /* i  : ISM-object metadata to be merged with the MASA metadata                      */
);

#ifdef IVAS_FLOAT_FIXED
void ivas_masa_combine_directions_fx(
    MASA_ENCODER_HANDLE hMasa                                   /* i/o: MASA encoder handle                             */
);
#else
void ivas_masa_combine_directions(
    MASA_ENCODER_HANDLE hMasa                                   /* i/o: MASA encoder handle                             */
);
#endif

/*!r : number of bits for ISM ratio index */
int16_t bits_index_ism_ratio(
Loading