Loading apps/decoder.c +67 −46 Original line number Diff line number Diff line Loading @@ -568,6 +568,10 @@ int main( } } #else /*-----------------------------------------------------------------* * Print config information *-----------------------------------------------------------------*/ if ( ( error = IVAS_DEC_PrintConfig( hIvasDec, 1, arg.voipMode ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_PrintConfig failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); Loading Loading @@ -833,6 +837,7 @@ cleanup: free( arg.aeSequence.pID ); free( arg.aeSequence.pValidity ); } #ifdef DEBUG_SBA_AUDIO_DUMP IVAS_DEC_GetSbaDebugParams( hIvasDec, &numOutChannels, &numTransportChannels, &pca_ingest_channels ); Loading Loading @@ -1223,7 +1228,6 @@ static bool parseCmdlIVAS_dec( } #endif #endif /* #ifdef DEBUGGING */ else if ( strcmp( argv_to_upper, "-MIME" ) == 0 ) { arg->inputFormat = IVAS_DEC_INPUT_FORMAT_MIME; Loading @@ -1248,6 +1252,7 @@ static bool parseCmdlIVAS_dec( { int32_t tmp; i++; if ( i < argc - 3 ) { if ( !is_digits_only( argv[i] ) ) Loading Loading @@ -1281,7 +1286,6 @@ static bool parseCmdlIVAS_dec( } else if ( strcmp( argv_to_upper, "-OTR" ) == 0 ) { strncpy( argv_to_upper, argv[i + 1], sizeof( argv_to_upper ) - 1 ); argv_to_upper[sizeof( argv_to_upper ) - 1] = '\0'; to_upper( argv_to_upper ); Loading Loading @@ -1390,6 +1394,7 @@ static bool parseCmdlIVAS_dec( strncpy( argv_to_upper, argv[i], sizeof( argv_to_upper ) - 1 ); argv_to_upper[sizeof( argv_to_upper ) - 1] = '\0'; to_upper( argv_to_upper ); if ( ( strcmp( argv_to_upper, "CENTER" ) == 0 ) || ( strchr( argv_to_upper, 'C' ) != NULL ) ) { arg->non_diegetic_pan_gain = 0.f; Loading Loading @@ -1587,6 +1592,7 @@ static bool parseCmdlIVAS_dec( /*-----------------------------------------------------------------* * Option not recognized *-----------------------------------------------------------------*/ else { fprintf( stderr, "Error: Unknown option %s or wrong number of parameters!\n\n", argv[i] ); Loading Loading @@ -1841,6 +1847,35 @@ static int16_t app_own_random( int16_t *seed ) } #endif /*---------------------------------------------------------------------* * resetHeadRotation() * * *---------------------------------------------------------------------*/ static void resetHeadRotation( const int16_t num_subframes, /* i : number of subframes */ IVAS_QUATERNION *pQuaternion, /* o : head-tracking data */ IVAS_VECTOR3 *pPos /* o : listener position */ ) { int16_t i; for ( i = 0; i < num_subframes; i++ ) { pQuaternion[i].w = -3.0f; pQuaternion[i].x = 0.0f; pQuaternion[i].y = 0.0f; pQuaternion[i].z = 0.0f; pPos[i].x = 0.0f; pPos[i].y = 0.0f; pPos[i].z = 0.0f; } return; } /*---------------------------------------------------------------------* * initOnFirstGoodFrame() Loading Loading @@ -2162,6 +2197,7 @@ static ivas_error initOnFirstGoodFrame( fprintf( stderr, "\nError getting render frame size in samples\n" ); return error; } if ( ( error = IVAS_DEC_GetReferencesUpdateFrequency( hIvasDec, vec_pos_len ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError getting render frame size in samples\n" ); Loading Loading @@ -2289,7 +2325,6 @@ static ivas_error decodeG192( /* we always start with needing a new frame */ needNewFrame = true; if ( !arg.quietModeEnabled ) { fprintf( stdout, "\n------ Running the decoder ------\n\n" ); Loading Loading @@ -2366,8 +2401,6 @@ static ivas_error decodeG192( while ( 1 ) { /* Read next frame if not enough samples availble */ /* reference vector */ if ( arg.enableReferenceVectorTracking && vec_pos_update == 0 ) { Loading Loading @@ -2414,16 +2447,7 @@ static ivas_error decodeG192( { if ( headRotReader == NULL ) { for ( i = 0; i < (int16_t) num_subframes; i++ ) { Quaternions[i].w = -3.0f; Quaternions[i].x = 0.0f; Quaternions[i].y = 0.0f; Quaternions[i].z = 0.0f; Pos[i].x = 0.0f; Pos[i].y = 0.0f; Pos[i].z = 0.0f; } resetHeadRotation( num_subframes, Quaternions, Pos ); } else { Loading Loading @@ -2637,9 +2661,6 @@ static ivas_error decodeG192( fprintf( stderr, "\nError in IVAS_DEC_GetSplitBinauralBitstream: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } nSamplesRendered += nSamplesRendered_loop; nSamplesToRender -= nSamplesRendered_loop; } else { Loading @@ -2648,10 +2669,10 @@ static ivas_error decodeG192( fprintf( stderr, "\nError in IVAS_DEC_GetSamplesRenderer(): %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } } nSamplesRendered += nSamplesRendered_loop; nSamplesToRender -= nSamplesRendered_loop; } if ( needNewFrame ) { Loading Loading @@ -2727,7 +2748,7 @@ static ivas_error decodeG192( } } /* Write ISm metadata to external file(s) */ /* Write ISM metadata to external file(s) */ if ( decodedGoodFrame && arg.outputConfig == IVAS_AUDIO_CONFIG_EXTERNAL ) { if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM || bsFormat == IVAS_DEC_BS_SBA_ISM ) Loading Loading @@ -2767,6 +2788,7 @@ static ivas_error decodeG192( { fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) ); } if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading @@ -2781,6 +2803,7 @@ static ivas_error decodeG192( } } } vec_pos_update = ( vec_pos_update + 1 ) % vec_pos_len; #ifdef WMOPS if ( vec_pos_update == 0 ) Loading @@ -2799,8 +2822,6 @@ static ivas_error decodeG192( { int16_t nSamplesFlushed; /* Feed into decoder */ /* reference vector */ if ( arg.enableReferenceVectorTracking ) { Loading Loading @@ -2864,7 +2885,7 @@ static ivas_error decodeG192( } } /* decode and get samples */ /* flush remaining audio */ if ( ( error = IVAS_DEC_Flush( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &nSamplesFlushed ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_VoIP_Flush: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading @@ -2878,7 +2899,7 @@ static ivas_error decodeG192( goto cleanup; } /* Write ISm metadata to external file(s) */ /* Write ISM metadata to external file(s) */ if ( decodedGoodFrame && arg.outputConfig == IVAS_AUDIO_CONFIG_EXTERNAL ) { if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM || bsFormat == IVAS_DEC_BS_SBA_ISM ) Loading Loading @@ -2917,6 +2938,7 @@ static ivas_error decodeG192( { fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) ); } if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading Loading @@ -3112,7 +3134,15 @@ cleanup: #endif #ifdef SUPPORT_JBM_TRACEFILE static ivas_error writeJbmTraceFileFrameWrapper( const void *data, void *writer ) /*---------------------------------------------------------------------* * writeJbmTraceFileFrameWrapper() * * *---------------------------------------------------------------------*/ static ivas_error writeJbmTraceFileFrameWrapper( const void *data, void *writer ) { return JbmTraceFileWriter_writeFrame( data, writer ); } Loading Loading @@ -3217,11 +3247,13 @@ static ivas_error decodeVoIP( fprintf( stderr, "\nError getting render frame size in samples\n" ); return error; } if ( ( error = IVAS_DEC_GetRenderFramesizeSamples( hIvasDec, &nOutSamples ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError getting render frame size in samples\n" ); return error; } if ( ( error = IVAS_DEC_GetReferencesUpdateFrequency( hIvasDec, &vec_pos_len ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError getting render frame size in samples\n" ); Loading Loading @@ -3263,8 +3295,8 @@ static ivas_error decodeVoIP( } fprintf( stdout, "JBM trace file: %s\n", arg.jbmTraceFilename ); } #endif #endif if ( arg.jbmOffsetFilename != NULL ) { if ( ( error = JbmOffsetFileWriter_open( arg.jbmOffsetFilename, &jbmOffsetWriter ) ) != IVAS_ERR_OK ) Loading Loading @@ -3387,16 +3419,7 @@ static ivas_error decodeVoIP( { if ( headRotReader == NULL ) { for ( i = 0; i < (int16_t) num_subframes; i++ ) { Quaternions[i].w = -3.0f; Quaternions[i].x = 0.0f; Quaternions[i].y = 0.0f; Quaternions[i].z = 0.0f; Pos[i].x = 0.0f; Pos[i].y = 0.0f; Pos[i].z = 0.0f; } resetHeadRotation( num_subframes, Quaternions, Pos ); } else { Loading @@ -3404,8 +3427,7 @@ static ivas_error decodeVoIP( { if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( headRotReader ) ); fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( headRotReader ) ); goto cleanup; } } Loading @@ -3430,11 +3452,9 @@ static ivas_error decodeVoIP( for ( i = 0; i < (int16_t) num_subframes; i++ ) { if ( ( error = ExternalOrientationFileReading( externalOrientationFileReader, &Quaternions[i], &enableHeadRotation[i], &enableExternalOrientation[i], &enableRotationInterpolation[i], &numFramesToTargetOrientation[i] ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError %s while reading external orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( externalOrientationFileReader ) ); fprintf( stderr, "\nError %s while reading external orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( externalOrientationFileReader ) ); goto cleanup; } } Loading Loading @@ -3751,6 +3771,7 @@ static ivas_error decodeVoIP( { fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) ); } if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 1 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading Loading @@ -3804,10 +3825,9 @@ static ivas_error decodeVoIP( #endif } int16_t nSamplesFlushed = 0; /* decode and get samples */ /* flush remaining audio */ if ( ( error = IVAS_DEC_Flush( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &nSamplesFlushed ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_VoIP_Flush: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading @@ -3823,7 +3843,7 @@ static ivas_error decodeVoIP( goto cleanup; } /* Write ISm metadata to external file(s) */ /* Write ISM metadata to external file(s) */ if ( decodedGoodFrame && arg.outputConfig == IVAS_AUDIO_CONFIG_EXTERNAL ) { if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM || bsFormat == IVAS_DEC_BS_SBA_ISM ) Loading Loading @@ -3863,6 +3883,7 @@ static ivas_error decodeVoIP( { fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) ); } if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading apps/encoder.c +1 −1 Original line number Diff line number Diff line Loading @@ -1336,7 +1336,6 @@ static bool parseCmdlIVAS_enc( ++i; } /*-----------------------------------------------------------------* * Complexity Level *-----------------------------------------------------------------*/ Loading Loading @@ -2236,6 +2235,7 @@ static bool readBitrate( fprintf( stderr, "Error: cannot read the bitrate profile file\n\n" ); usage_enc(); return false; } Loading lib_com/ivas_cnst.h +11 −28 Original line number Diff line number Diff line Loading @@ -675,7 +675,7 @@ enum #define ECLVQ_GLOBAL_GAIN_FACTOR ( 20.0f * 127.0f / 90.0f ) #define ECLVQ_INV_GLOBAL_GAIN_FACTOR ( 1.0f / ( 20.0f * 127.0f / 90.0f ) ) /* the currently defined configuration indexes are: /* the defined configuration indexes are: 0: un-optimized using uniform 4 bit parameters (reserved) 1: optimized for 32 kbps target SNR 2: optimized for 32 kbps target bits Loading Loading @@ -995,8 +995,6 @@ typedef enum #define IVAS_SPAR_P_LOWERTRI ((IVAS_SPAR_MAX_CH - 1) * (IVAS_SPAR_MAX_CH - 2)) >> 1 #define IVAS_SPAR_MAX_C_COEFF (IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS) * ( IVAS_SPAR_MAX_DMX_CHS - 1) #define IVAS_SPAR_HOA3_NP_CHS 8 /* number of higher order non-planar channels */ #define SPAR_NUM_CODING_STRAT_BITS 3 /* AGC constants */ Loading Loading @@ -1071,21 +1069,13 @@ enum #define IVAS_DECORR_PARM_APD_TAU 20e-3f /* IVAS SBA PCA */ #define IVAS_PCA_NB_SUBR 20 /* 80 -> 0.25 ms, 40 -> 0.5 ms... */ #define IVAS_PCA_COV_THRES 3e-5f #define IVAS_PCA_QUAT_EPS 1e-7f #define IVAS_PCA_QBITS 19 #define IVAS_PCA_N1 91 #define IVAS_PCA_N1_EQ ( (IVAS_PCA_N1-1)/2 ) #define IVAS_PCA_BIT_LEN ( 1 + ( IVAS_PCA_QBITS - 1 + IVAS_PCA_QBITS ) ) #define IVAS_PCA_INTERP 4 #define IVAS_PCA_N_SLOTS 40 #define IVAS_PCA_LEN_INTERP_Q ( IVAS_PCA_INTERP * IVAS_PCA_N_SLOTS ) #define IVAS_PCA_DELAY_CMP 24 #define IVAS_PCA_LEN_INTERP_EIG_DEC ( (IVAS_PCA_N_SLOTS+IVAS_PCA_DELAY_CMP)*16) #define IVAS_PCA_THRES_MIN_DOT 0.8f #define IVAS_PCA_THRES_MIN_DOT2 0.0f #define IVAS_PCA_THRES_DIST_ALT 6.0f typedef enum { Loading Loading @@ -1127,6 +1117,7 @@ enum TOTAL_DECD_QUANT_STRATS }; /*----------------------------------------------------------------------------------* * MASA constants *----------------------------------------------------------------------------------*/ Loading @@ -1140,7 +1131,6 @@ enum #define MASA_MAXIMUM_DIRECTIONS 2 #define MASA_MAX_TRANSPORT_CHANNELS 2 #define MASA_NUM_DEFINED_SUR_SPR_COH_ENE_BINS 5 #define MASA_DELTA_AZI_DCT0 30 Loading Loading @@ -1188,8 +1178,6 @@ enum #define HR_MASA_ER_LEVELS 16 #define MAX_REDUCED_NBANDS 18 /* max number of subbands that is less than the default value 24 */ #define LIMIT_ER_ELEVATION_ENC 4 #define LIMIT_ER_SIMPLE_ENC 6 #define LIMIT_USE_COMMON 3 #define MASA_COHERENCE_TOLERANCE 0.1f Loading @@ -1211,18 +1199,11 @@ enum #define MASA_LIMIT_IDX_AVG_AZI 4 #define MASA_NO_POINTS_EQUATOR 430 #define MASA_NO_CIRCLES 121 #define MASA_ASIN_OFFSET 0.0064471690266724975f #define MASA_NTOT2_FAC 32768.00566947353f #define MASA_ANGLE_AT_EQUATOR 0.012894427382667f #define MASA_ANGLE_AT_EQUATOR_DEG 0.738796268264740f #define MASA_INV_ANGLE_AT_EQUATOR_DEG 1.353553128183453f #define MASA_STEREO_MIN_BITRATE IVAS_24k4 #define MAXIMUM_OMASA_FREQ_BANDS 8 /* Corresponds to maximum number of coding bands at 32 kbps */ #define OMASA_STEREO_SW_CNT_MAX 100 #define MASA_BIT_REDUCT_PARAM 10 #define MASA_MAXIMUM_TWO_DIR_BANDS 24 #define NBITS_HR_COH 4 #define OMASA_TDREND_MATCHING_GAIN 0.7943f #define OMASA_GAIN_EDIT_THR 0.06f /* OMASA gain change threshold */ #define OMASA_AZI_EDIT_THR 1.0f /* OMASA-DISC azimuth change threshold */ Loading Loading @@ -1295,6 +1276,7 @@ typedef enum #define MCMASA_MIN_SPEAKERS_SEPARATE_CENTER 4 /*----------------------------------------------------------------------------------* * MCT constants *----------------------------------------------------------------------------------*/ Loading Loading @@ -1366,6 +1348,7 @@ typedef struct const int16_t (*beta)[2]; } HUFF_NODE_TABLE; /*----------------------------------------------------------------------------------* * Parametric MC Constants *----------------------------------------------------------------------------------*/ Loading Loading @@ -1417,6 +1400,7 @@ typedef enum #define PARAM_MC_MDFT_NO_SLOTS 8 #define PARAM_MC_CLDFB_TO_MDFT_FAC 2 /*----------------------------------------------------------------------------------* * LFE Coding Constants *----------------------------------------------------------------------------------*/ Loading Loading @@ -1577,7 +1561,6 @@ typedef enum } SFX_OpMode_t; /*----------------------------------------------------------------------------------* * Reverberator constants *----------------------------------------------------------------------------------*/ Loading lib_com/ivas_dirac_com.c +10 −7 Original line number Diff line number Diff line Loading @@ -158,6 +158,7 @@ ivas_error ivas_dirac_config( hConfig->nbands = 5; spar_dirac_split_band = 0; } hConfig->enc_param_start_band = 0; hConfig->dec_param_estim = FALSE; if ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) /* skip for MASA decoder */ Loading Loading @@ -326,7 +327,7 @@ void ivas_get_dirac_sba_max_md_bits( int16_t *metadata_max_bits, int16_t *qmetadata_max_bit_req, const int16_t nbands, IVAS_FORMAT ivas_format ) const IVAS_FORMAT ivas_format ) { if ( sba_total_brate <= IVAS_13k2 ) { Loading Loading @@ -383,6 +384,7 @@ void ivas_get_dirac_sba_max_md_bits( *bits_frame_nominal = (int16_t) ( sba_total_brate / FRAMES_PER_SEC ); *metadata_max_bits = MAX16B; /* no limit */ } *metadata_max_bits = (int16_t) min( (float) MAX16B, ceilf( (float) *metadata_max_bits * nbands / 5 ) ); *qmetadata_max_bit_req = QMETADATA_MAXBIT_REQ_SBA >> 1; Loading @@ -402,7 +404,8 @@ ivas_error ivas_dirac_sba_config( int32_t sba_total_brate, /* i : SBA total bitrate */ const int16_t sba_order, /* i : Ambisonic (SBA) order */ const int16_t nbands, /* i : number of frequency bands */ IVAS_FORMAT ivas_format ) const IVAS_FORMAT ivas_format /* i : IVAS format */ ) { int16_t nbands_coded; int16_t hodirac_flag; Loading lib_com/ivas_entropy_coder_common.c +5 −4 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ void ivas_wrap_arround( * get cumulative frequency model *-----------------------------------------------------------------------------------------*/ void ivas_get_cum_freq_model( static void ivas_get_cum_freq_model( const int16_t *pFreq_model, const int16_t length, int16_t *pCum_freq_model ) Loading @@ -102,7 +102,7 @@ void ivas_get_cum_freq_model( * Map the ivas_arith_pred_r_consts and ivas_huff_pred_r_consts tables *-----------------------------------------------------------------------------------------*/ int16_t ivas_map_num_pred_r_to_idx( static int16_t ivas_map_num_pred_r_to_idx( const int16_t num_quant_points_pred_r, const int16_t active_w_flag ) { Loading Loading @@ -160,7 +160,7 @@ int16_t ivas_map_num_pred_r_to_idx( * Map the ivas_arith_drct_r_consts and ivas_huff_drct_r_consts tables *-----------------------------------------------------------------------------------------*/ int16_t ivas_map_num_drct_r_to_idx( static int16_t ivas_map_num_drct_r_to_idx( const int16_t num_quant_points_drct_r ) { int16_t drct_r_to_idx = -1; Loading @@ -182,6 +182,7 @@ int16_t ivas_map_num_drct_r_to_idx( assert( !"Forbidden value for DRCT quantization strategy index" ); break; } return drct_r_to_idx; } Loading @@ -192,7 +193,7 @@ int16_t ivas_map_num_drct_r_to_idx( * Map the ivas_arith_decd_r_consts and ivas_huff_decd_r_consts tables *-----------------------------------------------------------------------------------------*/ int16_t ivas_map_num_decd_r_to_idx( static int16_t ivas_map_num_decd_r_to_idx( const int16_t num_quant_points_decd_r ) { int16_t decd_r_to_idx = -1; Loading Loading
apps/decoder.c +67 −46 Original line number Diff line number Diff line Loading @@ -568,6 +568,10 @@ int main( } } #else /*-----------------------------------------------------------------* * Print config information *-----------------------------------------------------------------*/ if ( ( error = IVAS_DEC_PrintConfig( hIvasDec, 1, arg.voipMode ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_PrintConfig failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); Loading Loading @@ -833,6 +837,7 @@ cleanup: free( arg.aeSequence.pID ); free( arg.aeSequence.pValidity ); } #ifdef DEBUG_SBA_AUDIO_DUMP IVAS_DEC_GetSbaDebugParams( hIvasDec, &numOutChannels, &numTransportChannels, &pca_ingest_channels ); Loading Loading @@ -1223,7 +1228,6 @@ static bool parseCmdlIVAS_dec( } #endif #endif /* #ifdef DEBUGGING */ else if ( strcmp( argv_to_upper, "-MIME" ) == 0 ) { arg->inputFormat = IVAS_DEC_INPUT_FORMAT_MIME; Loading @@ -1248,6 +1252,7 @@ static bool parseCmdlIVAS_dec( { int32_t tmp; i++; if ( i < argc - 3 ) { if ( !is_digits_only( argv[i] ) ) Loading Loading @@ -1281,7 +1286,6 @@ static bool parseCmdlIVAS_dec( } else if ( strcmp( argv_to_upper, "-OTR" ) == 0 ) { strncpy( argv_to_upper, argv[i + 1], sizeof( argv_to_upper ) - 1 ); argv_to_upper[sizeof( argv_to_upper ) - 1] = '\0'; to_upper( argv_to_upper ); Loading Loading @@ -1390,6 +1394,7 @@ static bool parseCmdlIVAS_dec( strncpy( argv_to_upper, argv[i], sizeof( argv_to_upper ) - 1 ); argv_to_upper[sizeof( argv_to_upper ) - 1] = '\0'; to_upper( argv_to_upper ); if ( ( strcmp( argv_to_upper, "CENTER" ) == 0 ) || ( strchr( argv_to_upper, 'C' ) != NULL ) ) { arg->non_diegetic_pan_gain = 0.f; Loading Loading @@ -1587,6 +1592,7 @@ static bool parseCmdlIVAS_dec( /*-----------------------------------------------------------------* * Option not recognized *-----------------------------------------------------------------*/ else { fprintf( stderr, "Error: Unknown option %s or wrong number of parameters!\n\n", argv[i] ); Loading Loading @@ -1841,6 +1847,35 @@ static int16_t app_own_random( int16_t *seed ) } #endif /*---------------------------------------------------------------------* * resetHeadRotation() * * *---------------------------------------------------------------------*/ static void resetHeadRotation( const int16_t num_subframes, /* i : number of subframes */ IVAS_QUATERNION *pQuaternion, /* o : head-tracking data */ IVAS_VECTOR3 *pPos /* o : listener position */ ) { int16_t i; for ( i = 0; i < num_subframes; i++ ) { pQuaternion[i].w = -3.0f; pQuaternion[i].x = 0.0f; pQuaternion[i].y = 0.0f; pQuaternion[i].z = 0.0f; pPos[i].x = 0.0f; pPos[i].y = 0.0f; pPos[i].z = 0.0f; } return; } /*---------------------------------------------------------------------* * initOnFirstGoodFrame() Loading Loading @@ -2162,6 +2197,7 @@ static ivas_error initOnFirstGoodFrame( fprintf( stderr, "\nError getting render frame size in samples\n" ); return error; } if ( ( error = IVAS_DEC_GetReferencesUpdateFrequency( hIvasDec, vec_pos_len ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError getting render frame size in samples\n" ); Loading Loading @@ -2289,7 +2325,6 @@ static ivas_error decodeG192( /* we always start with needing a new frame */ needNewFrame = true; if ( !arg.quietModeEnabled ) { fprintf( stdout, "\n------ Running the decoder ------\n\n" ); Loading Loading @@ -2366,8 +2401,6 @@ static ivas_error decodeG192( while ( 1 ) { /* Read next frame if not enough samples availble */ /* reference vector */ if ( arg.enableReferenceVectorTracking && vec_pos_update == 0 ) { Loading Loading @@ -2414,16 +2447,7 @@ static ivas_error decodeG192( { if ( headRotReader == NULL ) { for ( i = 0; i < (int16_t) num_subframes; i++ ) { Quaternions[i].w = -3.0f; Quaternions[i].x = 0.0f; Quaternions[i].y = 0.0f; Quaternions[i].z = 0.0f; Pos[i].x = 0.0f; Pos[i].y = 0.0f; Pos[i].z = 0.0f; } resetHeadRotation( num_subframes, Quaternions, Pos ); } else { Loading Loading @@ -2637,9 +2661,6 @@ static ivas_error decodeG192( fprintf( stderr, "\nError in IVAS_DEC_GetSplitBinauralBitstream: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } nSamplesRendered += nSamplesRendered_loop; nSamplesToRender -= nSamplesRendered_loop; } else { Loading @@ -2648,10 +2669,10 @@ static ivas_error decodeG192( fprintf( stderr, "\nError in IVAS_DEC_GetSamplesRenderer(): %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } } nSamplesRendered += nSamplesRendered_loop; nSamplesToRender -= nSamplesRendered_loop; } if ( needNewFrame ) { Loading Loading @@ -2727,7 +2748,7 @@ static ivas_error decodeG192( } } /* Write ISm metadata to external file(s) */ /* Write ISM metadata to external file(s) */ if ( decodedGoodFrame && arg.outputConfig == IVAS_AUDIO_CONFIG_EXTERNAL ) { if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM || bsFormat == IVAS_DEC_BS_SBA_ISM ) Loading Loading @@ -2767,6 +2788,7 @@ static ivas_error decodeG192( { fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) ); } if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading @@ -2781,6 +2803,7 @@ static ivas_error decodeG192( } } } vec_pos_update = ( vec_pos_update + 1 ) % vec_pos_len; #ifdef WMOPS if ( vec_pos_update == 0 ) Loading @@ -2799,8 +2822,6 @@ static ivas_error decodeG192( { int16_t nSamplesFlushed; /* Feed into decoder */ /* reference vector */ if ( arg.enableReferenceVectorTracking ) { Loading Loading @@ -2864,7 +2885,7 @@ static ivas_error decodeG192( } } /* decode and get samples */ /* flush remaining audio */ if ( ( error = IVAS_DEC_Flush( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &nSamplesFlushed ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_VoIP_Flush: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading @@ -2878,7 +2899,7 @@ static ivas_error decodeG192( goto cleanup; } /* Write ISm metadata to external file(s) */ /* Write ISM metadata to external file(s) */ if ( decodedGoodFrame && arg.outputConfig == IVAS_AUDIO_CONFIG_EXTERNAL ) { if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM || bsFormat == IVAS_DEC_BS_SBA_ISM ) Loading Loading @@ -2917,6 +2938,7 @@ static ivas_error decodeG192( { fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) ); } if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading Loading @@ -3112,7 +3134,15 @@ cleanup: #endif #ifdef SUPPORT_JBM_TRACEFILE static ivas_error writeJbmTraceFileFrameWrapper( const void *data, void *writer ) /*---------------------------------------------------------------------* * writeJbmTraceFileFrameWrapper() * * *---------------------------------------------------------------------*/ static ivas_error writeJbmTraceFileFrameWrapper( const void *data, void *writer ) { return JbmTraceFileWriter_writeFrame( data, writer ); } Loading Loading @@ -3217,11 +3247,13 @@ static ivas_error decodeVoIP( fprintf( stderr, "\nError getting render frame size in samples\n" ); return error; } if ( ( error = IVAS_DEC_GetRenderFramesizeSamples( hIvasDec, &nOutSamples ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError getting render frame size in samples\n" ); return error; } if ( ( error = IVAS_DEC_GetReferencesUpdateFrequency( hIvasDec, &vec_pos_len ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError getting render frame size in samples\n" ); Loading Loading @@ -3263,8 +3295,8 @@ static ivas_error decodeVoIP( } fprintf( stdout, "JBM trace file: %s\n", arg.jbmTraceFilename ); } #endif #endif if ( arg.jbmOffsetFilename != NULL ) { if ( ( error = JbmOffsetFileWriter_open( arg.jbmOffsetFilename, &jbmOffsetWriter ) ) != IVAS_ERR_OK ) Loading Loading @@ -3387,16 +3419,7 @@ static ivas_error decodeVoIP( { if ( headRotReader == NULL ) { for ( i = 0; i < (int16_t) num_subframes; i++ ) { Quaternions[i].w = -3.0f; Quaternions[i].x = 0.0f; Quaternions[i].y = 0.0f; Quaternions[i].z = 0.0f; Pos[i].x = 0.0f; Pos[i].y = 0.0f; Pos[i].z = 0.0f; } resetHeadRotation( num_subframes, Quaternions, Pos ); } else { Loading @@ -3404,8 +3427,7 @@ static ivas_error decodeVoIP( { if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( headRotReader ) ); fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( headRotReader ) ); goto cleanup; } } Loading @@ -3430,11 +3452,9 @@ static ivas_error decodeVoIP( for ( i = 0; i < (int16_t) num_subframes; i++ ) { if ( ( error = ExternalOrientationFileReading( externalOrientationFileReader, &Quaternions[i], &enableHeadRotation[i], &enableExternalOrientation[i], &enableRotationInterpolation[i], &numFramesToTargetOrientation[i] ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError %s while reading external orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( externalOrientationFileReader ) ); fprintf( stderr, "\nError %s while reading external orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( externalOrientationFileReader ) ); goto cleanup; } } Loading Loading @@ -3751,6 +3771,7 @@ static ivas_error decodeVoIP( { fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) ); } if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 1 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading Loading @@ -3804,10 +3825,9 @@ static ivas_error decodeVoIP( #endif } int16_t nSamplesFlushed = 0; /* decode and get samples */ /* flush remaining audio */ if ( ( error = IVAS_DEC_Flush( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &nSamplesFlushed ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_VoIP_Flush: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading @@ -3823,7 +3843,7 @@ static ivas_error decodeVoIP( goto cleanup; } /* Write ISm metadata to external file(s) */ /* Write ISM metadata to external file(s) */ if ( decodedGoodFrame && arg.outputConfig == IVAS_AUDIO_CONFIG_EXTERNAL ) { if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM || bsFormat == IVAS_DEC_BS_SBA_ISM ) Loading Loading @@ -3863,6 +3883,7 @@ static ivas_error decodeVoIP( { fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) ); } if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading
apps/encoder.c +1 −1 Original line number Diff line number Diff line Loading @@ -1336,7 +1336,6 @@ static bool parseCmdlIVAS_enc( ++i; } /*-----------------------------------------------------------------* * Complexity Level *-----------------------------------------------------------------*/ Loading Loading @@ -2236,6 +2235,7 @@ static bool readBitrate( fprintf( stderr, "Error: cannot read the bitrate profile file\n\n" ); usage_enc(); return false; } Loading
lib_com/ivas_cnst.h +11 −28 Original line number Diff line number Diff line Loading @@ -675,7 +675,7 @@ enum #define ECLVQ_GLOBAL_GAIN_FACTOR ( 20.0f * 127.0f / 90.0f ) #define ECLVQ_INV_GLOBAL_GAIN_FACTOR ( 1.0f / ( 20.0f * 127.0f / 90.0f ) ) /* the currently defined configuration indexes are: /* the defined configuration indexes are: 0: un-optimized using uniform 4 bit parameters (reserved) 1: optimized for 32 kbps target SNR 2: optimized for 32 kbps target bits Loading Loading @@ -995,8 +995,6 @@ typedef enum #define IVAS_SPAR_P_LOWERTRI ((IVAS_SPAR_MAX_CH - 1) * (IVAS_SPAR_MAX_CH - 2)) >> 1 #define IVAS_SPAR_MAX_C_COEFF (IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS) * ( IVAS_SPAR_MAX_DMX_CHS - 1) #define IVAS_SPAR_HOA3_NP_CHS 8 /* number of higher order non-planar channels */ #define SPAR_NUM_CODING_STRAT_BITS 3 /* AGC constants */ Loading Loading @@ -1071,21 +1069,13 @@ enum #define IVAS_DECORR_PARM_APD_TAU 20e-3f /* IVAS SBA PCA */ #define IVAS_PCA_NB_SUBR 20 /* 80 -> 0.25 ms, 40 -> 0.5 ms... */ #define IVAS_PCA_COV_THRES 3e-5f #define IVAS_PCA_QUAT_EPS 1e-7f #define IVAS_PCA_QBITS 19 #define IVAS_PCA_N1 91 #define IVAS_PCA_N1_EQ ( (IVAS_PCA_N1-1)/2 ) #define IVAS_PCA_BIT_LEN ( 1 + ( IVAS_PCA_QBITS - 1 + IVAS_PCA_QBITS ) ) #define IVAS_PCA_INTERP 4 #define IVAS_PCA_N_SLOTS 40 #define IVAS_PCA_LEN_INTERP_Q ( IVAS_PCA_INTERP * IVAS_PCA_N_SLOTS ) #define IVAS_PCA_DELAY_CMP 24 #define IVAS_PCA_LEN_INTERP_EIG_DEC ( (IVAS_PCA_N_SLOTS+IVAS_PCA_DELAY_CMP)*16) #define IVAS_PCA_THRES_MIN_DOT 0.8f #define IVAS_PCA_THRES_MIN_DOT2 0.0f #define IVAS_PCA_THRES_DIST_ALT 6.0f typedef enum { Loading Loading @@ -1127,6 +1117,7 @@ enum TOTAL_DECD_QUANT_STRATS }; /*----------------------------------------------------------------------------------* * MASA constants *----------------------------------------------------------------------------------*/ Loading @@ -1140,7 +1131,6 @@ enum #define MASA_MAXIMUM_DIRECTIONS 2 #define MASA_MAX_TRANSPORT_CHANNELS 2 #define MASA_NUM_DEFINED_SUR_SPR_COH_ENE_BINS 5 #define MASA_DELTA_AZI_DCT0 30 Loading Loading @@ -1188,8 +1178,6 @@ enum #define HR_MASA_ER_LEVELS 16 #define MAX_REDUCED_NBANDS 18 /* max number of subbands that is less than the default value 24 */ #define LIMIT_ER_ELEVATION_ENC 4 #define LIMIT_ER_SIMPLE_ENC 6 #define LIMIT_USE_COMMON 3 #define MASA_COHERENCE_TOLERANCE 0.1f Loading @@ -1211,18 +1199,11 @@ enum #define MASA_LIMIT_IDX_AVG_AZI 4 #define MASA_NO_POINTS_EQUATOR 430 #define MASA_NO_CIRCLES 121 #define MASA_ASIN_OFFSET 0.0064471690266724975f #define MASA_NTOT2_FAC 32768.00566947353f #define MASA_ANGLE_AT_EQUATOR 0.012894427382667f #define MASA_ANGLE_AT_EQUATOR_DEG 0.738796268264740f #define MASA_INV_ANGLE_AT_EQUATOR_DEG 1.353553128183453f #define MASA_STEREO_MIN_BITRATE IVAS_24k4 #define MAXIMUM_OMASA_FREQ_BANDS 8 /* Corresponds to maximum number of coding bands at 32 kbps */ #define OMASA_STEREO_SW_CNT_MAX 100 #define MASA_BIT_REDUCT_PARAM 10 #define MASA_MAXIMUM_TWO_DIR_BANDS 24 #define NBITS_HR_COH 4 #define OMASA_TDREND_MATCHING_GAIN 0.7943f #define OMASA_GAIN_EDIT_THR 0.06f /* OMASA gain change threshold */ #define OMASA_AZI_EDIT_THR 1.0f /* OMASA-DISC azimuth change threshold */ Loading Loading @@ -1295,6 +1276,7 @@ typedef enum #define MCMASA_MIN_SPEAKERS_SEPARATE_CENTER 4 /*----------------------------------------------------------------------------------* * MCT constants *----------------------------------------------------------------------------------*/ Loading Loading @@ -1366,6 +1348,7 @@ typedef struct const int16_t (*beta)[2]; } HUFF_NODE_TABLE; /*----------------------------------------------------------------------------------* * Parametric MC Constants *----------------------------------------------------------------------------------*/ Loading Loading @@ -1417,6 +1400,7 @@ typedef enum #define PARAM_MC_MDFT_NO_SLOTS 8 #define PARAM_MC_CLDFB_TO_MDFT_FAC 2 /*----------------------------------------------------------------------------------* * LFE Coding Constants *----------------------------------------------------------------------------------*/ Loading Loading @@ -1577,7 +1561,6 @@ typedef enum } SFX_OpMode_t; /*----------------------------------------------------------------------------------* * Reverberator constants *----------------------------------------------------------------------------------*/ Loading
lib_com/ivas_dirac_com.c +10 −7 Original line number Diff line number Diff line Loading @@ -158,6 +158,7 @@ ivas_error ivas_dirac_config( hConfig->nbands = 5; spar_dirac_split_band = 0; } hConfig->enc_param_start_band = 0; hConfig->dec_param_estim = FALSE; if ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) /* skip for MASA decoder */ Loading Loading @@ -326,7 +327,7 @@ void ivas_get_dirac_sba_max_md_bits( int16_t *metadata_max_bits, int16_t *qmetadata_max_bit_req, const int16_t nbands, IVAS_FORMAT ivas_format ) const IVAS_FORMAT ivas_format ) { if ( sba_total_brate <= IVAS_13k2 ) { Loading Loading @@ -383,6 +384,7 @@ void ivas_get_dirac_sba_max_md_bits( *bits_frame_nominal = (int16_t) ( sba_total_brate / FRAMES_PER_SEC ); *metadata_max_bits = MAX16B; /* no limit */ } *metadata_max_bits = (int16_t) min( (float) MAX16B, ceilf( (float) *metadata_max_bits * nbands / 5 ) ); *qmetadata_max_bit_req = QMETADATA_MAXBIT_REQ_SBA >> 1; Loading @@ -402,7 +404,8 @@ ivas_error ivas_dirac_sba_config( int32_t sba_total_brate, /* i : SBA total bitrate */ const int16_t sba_order, /* i : Ambisonic (SBA) order */ const int16_t nbands, /* i : number of frequency bands */ IVAS_FORMAT ivas_format ) const IVAS_FORMAT ivas_format /* i : IVAS format */ ) { int16_t nbands_coded; int16_t hodirac_flag; Loading
lib_com/ivas_entropy_coder_common.c +5 −4 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ void ivas_wrap_arround( * get cumulative frequency model *-----------------------------------------------------------------------------------------*/ void ivas_get_cum_freq_model( static void ivas_get_cum_freq_model( const int16_t *pFreq_model, const int16_t length, int16_t *pCum_freq_model ) Loading @@ -102,7 +102,7 @@ void ivas_get_cum_freq_model( * Map the ivas_arith_pred_r_consts and ivas_huff_pred_r_consts tables *-----------------------------------------------------------------------------------------*/ int16_t ivas_map_num_pred_r_to_idx( static int16_t ivas_map_num_pred_r_to_idx( const int16_t num_quant_points_pred_r, const int16_t active_w_flag ) { Loading Loading @@ -160,7 +160,7 @@ int16_t ivas_map_num_pred_r_to_idx( * Map the ivas_arith_drct_r_consts and ivas_huff_drct_r_consts tables *-----------------------------------------------------------------------------------------*/ int16_t ivas_map_num_drct_r_to_idx( static int16_t ivas_map_num_drct_r_to_idx( const int16_t num_quant_points_drct_r ) { int16_t drct_r_to_idx = -1; Loading @@ -182,6 +182,7 @@ int16_t ivas_map_num_drct_r_to_idx( assert( !"Forbidden value for DRCT quantization strategy index" ); break; } return drct_r_to_idx; } Loading @@ -192,7 +193,7 @@ int16_t ivas_map_num_drct_r_to_idx( * Map the ivas_arith_decd_r_consts and ivas_huff_decd_r_consts tables *-----------------------------------------------------------------------------------------*/ int16_t ivas_map_num_decd_r_to_idx( static int16_t ivas_map_num_decd_r_to_idx( const int16_t num_quant_points_decd_r ) { int16_t decd_r_to_idx = -1; Loading