Loading apps/decoder.c +9 −1 Original line number Diff line number Diff line Loading @@ -447,6 +447,14 @@ int main( fprintf( stderr, "Failed to get directivity patterns for one or more of IDs: %d %d %d %d\n\n", arg.directivityPatternId[0], arg.directivityPatternId[1], arg.directivityPatternId[2], arg.directivityPatternId[3] ); goto cleanup; } #ifdef IVAS_FLOAT_FIXED FOR( Word16 i = 0; i < 4; i++ ) { renderConfig.directivity_fx[i * 3] = (Word16) ( renderConfig.directivity[i * 3] * ( 1u << 6 ) ); renderConfig.directivity_fx[i * 3 + 1] = (Word16) ( renderConfig.directivity[i * 3 + 1] * ( 1u << 6 ) ); renderConfig.directivity_fx[i * 3 + 2] = (Word16) ( renderConfig.directivity[i * 3 + 2] * ( 1u << 15 ) ); } #endif // IVAS_FLOAT_FIXED if ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { Loading lib_com/cnst.h +1 −0 Original line number Diff line number Diff line Loading @@ -566,6 +566,7 @@ enum #define FRAMES_PER_SEC 50 #ifdef IVAS_FLOAT_FIXED #define MAX_PARAM__SPATIAL_SUB_FRAMES_PER_SEC 200 //(FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES) #define ONE_BY_FRAMES_PER_SEC ((Word32)(0x028F5C29)) #define FRAMES_PER_SEC_BY_2 (FRAMES_PER_SEC >> 1) #endif Loading lib_com/float_to_fix_ops.c +8 −5 Original line number Diff line number Diff line Loading @@ -194,6 +194,13 @@ Word16 Q_factor_L(float x) Q = norm_l(abs((Word32)x)); return Q; } Word16 Q_factor_L_32( Word32 x ) { Word16 Q = 31; if ( x >= 1 || x <= -1 ) Q = norm_l(L_abs( (Word32) x ) ); return Q; } Word16 Q_factor_arr(float *x, Word16 l) { Word16 Q = 15; Loading Loading @@ -789,11 +796,7 @@ void stereo_tcx_dec_mode_switch_reconf_To_fixed_2( //st->hFdCngDec->msPeriodog_ST_fx[p] = (Word32) ( st->hFdCngDec->msPeriodog_ST[p] * ( 1u << ( 31 - st->hFdCngDec->msPeriodog_ST_exp ) ) ); } st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = 31 - Q4; // Q4 for ( int p = 0; p < FFTCLDFBLEN; p++ ) { st->hFdCngDec->hFdCngCom->cngNoiseLevel[p] = (Word32) ( st->hFdCngDec->hFdCngCom->cngNoiseLevel_flt[p] * ( 1u << ( 31 - st->hFdCngDec->hFdCngCom->cngNoiseLevelExp ) ) ); } //} //st->hFdCngDec->hFdCngCom->sidNoiseEstExp = 31 - Q4; //st->hFdCngDec->partNoiseShape_exp = 31 - Q4; //for ( int p = 0; p < NPART; p++ ) Loading lib_com/ivas_cnst.h +3 −1 Original line number Diff line number Diff line Loading @@ -352,7 +352,9 @@ typedef enum #define ISM_RADIUS_NBITS 6 #define ISM_RADIUS_MIN 0.0f #define ISM_RADIUS_MIN_Q9 0 #define ISM_RADIUS_DELTA 0.25f /* Max radius = (2^ISM_RADIUS_NBITS-1)*0.25 = 15.75 */ #define ISM_RADIUS_DELTA_Q8 64 #define ISM_EXTENDED_METADATA_BRATE IVAS_64k #define ISM_METADATA_IS_NDP_BITS 1 #define ISM_EXTENDED_METADATA_BITS 1 Loading Loading @@ -1857,7 +1859,7 @@ typedef enum #define ER_RADIUS_FX (1* ONE_IN_Q30) //Q2.30 #define ER_LIST_ORIGIN_X_FX (0) #define ER_LIST_ORIGIN_Y_FX (0) #define ER_LIST_HEIGHT_FX (1.6 *ONE_IN_Q22) //Q.22 #define ER_LIST_HEIGHT_FX (6710886) /* 1.6 in Q.22 */ #endif // IVAS_FLOAT_FIXED Loading lib_com/ivas_dirac_com.c +11 −1 Original line number Diff line number Diff line Loading @@ -654,8 +654,18 @@ void ivas_get_dirac_sba_max_md_bits_fx( Word16 exp_res = 0; IF (var1 % 5 != 0) { var4 = BASOP_Util_Add_Mant32Exp(var2_32, exp, ONE_IN_Q30, 1, &exp_res); exp = exp_res; } *metadata_max_bits = extract_l(L_min(MAX16B, L_shr(var4, 14))); Word16 flag = BASOP_Util_Cmp_Mant32Exp(MAX16B, 31, var4, exp); Word32 tmp; if (flag == 1) { tmp = var4; } else { tmp = MAX16B; exp = 31; } *metadata_max_bits = (Word16)L_shr(tmp, 31 - exp);; *qmetadata_max_bit_req = QMETADATA_MAXBIT_REQ_SBA >> 1; return; Loading Loading
apps/decoder.c +9 −1 Original line number Diff line number Diff line Loading @@ -447,6 +447,14 @@ int main( fprintf( stderr, "Failed to get directivity patterns for one or more of IDs: %d %d %d %d\n\n", arg.directivityPatternId[0], arg.directivityPatternId[1], arg.directivityPatternId[2], arg.directivityPatternId[3] ); goto cleanup; } #ifdef IVAS_FLOAT_FIXED FOR( Word16 i = 0; i < 4; i++ ) { renderConfig.directivity_fx[i * 3] = (Word16) ( renderConfig.directivity[i * 3] * ( 1u << 6 ) ); renderConfig.directivity_fx[i * 3 + 1] = (Word16) ( renderConfig.directivity[i * 3 + 1] * ( 1u << 6 ) ); renderConfig.directivity_fx[i * 3 + 2] = (Word16) ( renderConfig.directivity[i * 3 + 2] * ( 1u << 15 ) ); } #endif // IVAS_FLOAT_FIXED if ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { Loading
lib_com/cnst.h +1 −0 Original line number Diff line number Diff line Loading @@ -566,6 +566,7 @@ enum #define FRAMES_PER_SEC 50 #ifdef IVAS_FLOAT_FIXED #define MAX_PARAM__SPATIAL_SUB_FRAMES_PER_SEC 200 //(FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES) #define ONE_BY_FRAMES_PER_SEC ((Word32)(0x028F5C29)) #define FRAMES_PER_SEC_BY_2 (FRAMES_PER_SEC >> 1) #endif Loading
lib_com/float_to_fix_ops.c +8 −5 Original line number Diff line number Diff line Loading @@ -194,6 +194,13 @@ Word16 Q_factor_L(float x) Q = norm_l(abs((Word32)x)); return Q; } Word16 Q_factor_L_32( Word32 x ) { Word16 Q = 31; if ( x >= 1 || x <= -1 ) Q = norm_l(L_abs( (Word32) x ) ); return Q; } Word16 Q_factor_arr(float *x, Word16 l) { Word16 Q = 15; Loading Loading @@ -789,11 +796,7 @@ void stereo_tcx_dec_mode_switch_reconf_To_fixed_2( //st->hFdCngDec->msPeriodog_ST_fx[p] = (Word32) ( st->hFdCngDec->msPeriodog_ST[p] * ( 1u << ( 31 - st->hFdCngDec->msPeriodog_ST_exp ) ) ); } st->hFdCngDec->hFdCngCom->cngNoiseLevelExp = 31 - Q4; // Q4 for ( int p = 0; p < FFTCLDFBLEN; p++ ) { st->hFdCngDec->hFdCngCom->cngNoiseLevel[p] = (Word32) ( st->hFdCngDec->hFdCngCom->cngNoiseLevel_flt[p] * ( 1u << ( 31 - st->hFdCngDec->hFdCngCom->cngNoiseLevelExp ) ) ); } //} //st->hFdCngDec->hFdCngCom->sidNoiseEstExp = 31 - Q4; //st->hFdCngDec->partNoiseShape_exp = 31 - Q4; //for ( int p = 0; p < NPART; p++ ) Loading
lib_com/ivas_cnst.h +3 −1 Original line number Diff line number Diff line Loading @@ -352,7 +352,9 @@ typedef enum #define ISM_RADIUS_NBITS 6 #define ISM_RADIUS_MIN 0.0f #define ISM_RADIUS_MIN_Q9 0 #define ISM_RADIUS_DELTA 0.25f /* Max radius = (2^ISM_RADIUS_NBITS-1)*0.25 = 15.75 */ #define ISM_RADIUS_DELTA_Q8 64 #define ISM_EXTENDED_METADATA_BRATE IVAS_64k #define ISM_METADATA_IS_NDP_BITS 1 #define ISM_EXTENDED_METADATA_BITS 1 Loading Loading @@ -1857,7 +1859,7 @@ typedef enum #define ER_RADIUS_FX (1* ONE_IN_Q30) //Q2.30 #define ER_LIST_ORIGIN_X_FX (0) #define ER_LIST_ORIGIN_Y_FX (0) #define ER_LIST_HEIGHT_FX (1.6 *ONE_IN_Q22) //Q.22 #define ER_LIST_HEIGHT_FX (6710886) /* 1.6 in Q.22 */ #endif // IVAS_FLOAT_FIXED Loading
lib_com/ivas_dirac_com.c +11 −1 Original line number Diff line number Diff line Loading @@ -654,8 +654,18 @@ void ivas_get_dirac_sba_max_md_bits_fx( Word16 exp_res = 0; IF (var1 % 5 != 0) { var4 = BASOP_Util_Add_Mant32Exp(var2_32, exp, ONE_IN_Q30, 1, &exp_res); exp = exp_res; } *metadata_max_bits = extract_l(L_min(MAX16B, L_shr(var4, 14))); Word16 flag = BASOP_Util_Cmp_Mant32Exp(MAX16B, 31, var4, exp); Word32 tmp; if (flag == 1) { tmp = var4; } else { tmp = MAX16B; exp = 31; } *metadata_max_bits = (Word16)L_shr(tmp, 31 - exp);; *qmetadata_max_bit_req = QMETADATA_MAXBIT_REQ_SBA >> 1; return; Loading