Loading apps/decoder.c +62 −52 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ typedef struct char *outputWavFilename; IVAS_DEC_MODE decMode; int32_t output_Fs; IVAS_DEC_AUDIO_CONFIG outputFormat; IVAS_DEC_AUDIO_CONFIG outputConfig; bool quietModeEnabled; bool delayCompensationEnabled; bool voipMode; Loading @@ -119,12 +119,10 @@ typedef struct char *jbmTraceFilename; #endif char *jbmOffsetFilename; char *FEPatterFileName; char *FEPatternFileName; float FER; bool hrtfReaderEnabled; char *hrtfFileName; bool hrtfCRendReaderEnabled; char *hrtfCRendFileName; IVAS_DEC_INPUT_FORMAT inputFormat; bool customLsOutputEnabled; char *customLsSetupFilename; Loading Loading @@ -281,7 +279,7 @@ int main( if ( arg.hrtfReaderEnabled ) { /* sanity check */ if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) if ( arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) { arg.hrtfReaderEnabled = false; fprintf( stderr, "\nError: HRTF binary file cannot be used in this output configuration.\n\n" ); Loading @@ -303,9 +301,9 @@ int main( if ( arg.enableHeadRotation ) { /* sanity check */ if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB if ( arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB #ifdef SPLIT_REND_WITH_HEAD_ROT && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM && arg.outputConfig != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputConfig != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM #endif ) { Loading @@ -327,7 +325,7 @@ int main( if ( arg.enableReferenceRotation ) { /* sanity check */ if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) if ( arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) { fprintf( stderr, "\nError: Reference rotation file cannot be used in this output configuration.\n\n" ); goto cleanup; Loading @@ -354,7 +352,7 @@ int main( if ( arg.enableReferenceVectorTracking ) { /* sanity check */ if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) if ( arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) { fprintf( stderr, "\nError: Reference vector trajectory file cannot be used in this output configuration.\n\n" ); goto cleanup; Loading Loading @@ -407,9 +405,9 @@ int main( if ( arg.renderConfigEnabled ) { /* sanity check */ if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB if ( arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB #ifdef SPLIT_REND_WITH_HEAD_ROT && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM && arg.outputConfig != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputConfig != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM #endif ) { Loading @@ -427,13 +425,15 @@ int main( /*------------------------------------------------------------------------------------------* * Configure the decoder *------------------------------------------------------------------------------------------*/ #ifdef SPLIT_REND_WITH_HEAD_ROT if ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED || arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) if ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED || arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) { arg.enableHeadRotation = true; } #endif if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputFormat, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -538,9 +538,9 @@ int main( * Open Error pattern file for simulation *-----------------------------------------------------------------*/ if ( arg.FEPatterFileName != NULL ) if ( arg.FEPatternFileName != NULL ) { if ( ( FEC_pattern = fopen( arg.FEPatterFileName, "rb" ) ) == NULL ) if ( ( FEC_pattern = fopen( arg.FEPatternFileName, "rb" ) ) == NULL ) { fprintf( stderr, "Error: Missing or incorrect FEC filename specification\n\n" ); usage_dec(); Loading @@ -556,11 +556,11 @@ int main( * Print information about FEC *-----------------------------------------------------------------*/ if ( !arg.voipMode && ( arg.FEPatterFileName != NULL || arg.FER > 0 ) ) if ( !arg.voipMode && ( arg.FEPatternFileName != NULL || arg.FER > 0 ) ) { if ( arg.FEPatterFileName != NULL ) if ( arg.FEPatternFileName != NULL ) { fprintf( stdout, "FEC: %s\n", arg.FEPatterFileName ); fprintf( stdout, "FEC: %s\n", arg.FEPatternFileName ); } else { Loading @@ -581,9 +581,9 @@ int main( /* sanity check */ #ifdef SPLIT_REND_WITH_HEAD_ROT if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) if ( arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputConfig != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) { fprintf( stderr, "\nExternal Renderer Config is supported only when binaural output configurations is used as output OR when Split rendering mode is enabled. Exiting. \n" ); exit( -1 ); Loading Loading @@ -653,28 +653,41 @@ int main( goto cleanup; } IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL; IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ); if ( ( error = IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfCRendHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } if ( ( error = create_SetOfHRTF_from_binary( hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in loading HRTF binary file %s for CRend \n\n", arg.hrtfCRendFileName ); fprintf( stderr, "\nError in loading HRTF binary file %s for CRend \n\n", arg.hrtfFileName ); goto cleanup; } IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv = NULL; IVAS_DEC_GetHrtfFastConvHandle( hIvasDec, &hHrtfFastConv ); if ( ( error = IVAS_DEC_GetHrtfFastConvHandle( hIvasDec, &hHrtfFastConv ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfFastConvHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } if ( ( error = load_fastconv_HRTF_from_binary( hHrtfFastConv, hrtfReader ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in loading HRTF binary file %s for FastConv \n\n", arg.hrtfCRendFileName ); fprintf( stderr, "\nError in loading HRTF binary file %s for FastConv \n\n", arg.hrtfFileName ); } IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin = NULL; IVAS_DEC_GetHrtfParamBinHandle( hIvasDec, &hHrtfParambin ); if ( ( error = IVAS_DEC_GetHrtfParamBinHandle( hIvasDec, &hHrtfParambin ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfParamBinHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } if ( ( error = load_parambin_HRTF_from_binary( hHrtfParambin, hrtfReader ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in loading HRTF binary file %s for parametric binauralizer \n\n", arg.hrtfCRendFileName ); fprintf( stderr, "\nError in loading HRTF binary file %s for parametric binauralizer \n\n", arg.hrtfFileName ); } } Loading Loading @@ -903,7 +916,7 @@ static bool parseCmdlIVAS_dec( #endif #endif arg->output_Fs = 48000; arg->outputFormat = IVAS_DEC_OUTPUT_MONO; arg->outputConfig = IVAS_DEC_OUTPUT_MONO; arg->decMode = IVAS_DEC_MODE_IVAS; arg->quietModeEnabled = false; arg->delayCompensationEnabled = true; Loading @@ -926,14 +939,11 @@ static bool parseCmdlIVAS_dec( arg->jbmOffsetFilename = NULL; arg->FER = 0.f; arg->FEPatterFileName = NULL; arg->FEPatternFileName = NULL; arg->hrtfReaderEnabled = false; arg->hrtfFileName = NULL; arg->hrtfCRendReaderEnabled = false; arg->hrtfCRendFileName = NULL; arg->customLsOutputEnabled = false; arg->customLsSetupFilename = NULL; Loading Loading @@ -1057,7 +1067,7 @@ static bool parseCmdlIVAS_dec( ftmp = 0.0f; if ( sscanf( argv[i + 1], "%f", &ftmp ) != 1 ) { arg->FEPatterFileName = argv[i + 1]; arg->FEPatternFileName = argv[i + 1]; } else { Loading Loading @@ -1344,14 +1354,14 @@ static bool parseCmdlIVAS_dec( if ( i < argc - 3 ) { arg->outputFormat = cmdline2config( argv[i] ); if ( arg->outputFormat == IVAS_DEC_OUTPUT_LS_CUSTOM ) arg->outputConfig = cmdline2config( argv[i] ); if ( arg->outputConfig == IVAS_DEC_OUTPUT_LS_CUSTOM ) { arg->customLsOutputEnabled = true; arg->customLsSetupFilename = argv[i]; } i++; if ( ( arg->Opt_non_diegetic_pan ) && ( arg->outputFormat != IVAS_DEC_OUTPUT_STEREO ) ) if ( ( arg->Opt_non_diegetic_pan ) && ( arg->outputConfig != IVAS_DEC_OUTPUT_STEREO ) ) { fprintf( stderr, "Error: non-diegetic panning is supported in stereo only\n\n" ); usage_dec(); Loading @@ -1360,11 +1370,11 @@ static bool parseCmdlIVAS_dec( } else { arg->outputFormat = IVAS_DEC_OUTPUT_MONO; arg->outputConfig = IVAS_DEC_OUTPUT_MONO; arg->decMode = IVAS_DEC_MODE_EVS; if ( ( arg->Opt_non_diegetic_pan ) ) { arg->outputFormat = IVAS_DEC_OUTPUT_STEREO; arg->outputConfig = IVAS_DEC_OUTPUT_STEREO; } } Loading Loading @@ -1562,8 +1572,8 @@ static ivas_error initOnFirstGoodFrame( return error; } #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) || ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) ) if ( ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) || ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) ) { pFullDelayNumSamples[0] = 0; } Loading @@ -1590,7 +1600,7 @@ static ivas_error initOnFirstGoodFrame( } #ifdef SPLIT_REND_WITH_HEAD_ROT if ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) if ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) { int16_t delayNumSamples_temp[3]; int32_t delayTimeScale_temp; Loading @@ -1605,7 +1615,7 @@ static ivas_error initOnFirstGoodFrame( } else { if ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) if ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) { int16_t delayNumSamples_temp[3]; int32_t delayTimeScale_temp; Loading Loading @@ -1673,7 +1683,7 @@ static ivas_error initOnFirstGoodFrame( free( zeroBuf ); /* Open other output files if EXT output config - now details about ISM or MASA are known */ if ( arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { if ( ( error = IVAS_DEC_GetFormat( hIvasDec, pBsFormat ) ) != IVAS_ERR_OK ) { Loading Loading @@ -2036,7 +2046,7 @@ static ivas_error decodeG192( if ( decodedGoodFrame ) { #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) ) if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) ) { if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, splitRendBits.bits_buf, &splitRendBits.bits_read, &splitRendBits.bits_written, splitRendBits.codec, splitRendBits.pose_correction ) != IVAS_ERR_OK ) Loading @@ -2047,7 +2057,7 @@ static ivas_error decodeG192( } else { if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) ) if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) ) { if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, splitRendBits.bits_buf, &splitRendBits.bits_read, &splitRendBits.bits_written, splitRendBits.codec, splitRendBits.pose_correction ) != IVAS_ERR_OK ) Loading Loading @@ -2076,7 +2086,7 @@ static ivas_error decodeG192( } /* Write ISM metadata to external file(s) */ if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( decodedGoodFrame && arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { if ( bsFormat == IVAS_DEC_BS_OBJ ) { Loading Loading @@ -2176,7 +2186,7 @@ static ivas_error decodeG192( } /* Print output metadata file name(s) */ if ( arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { if ( bsFormat == IVAS_DEC_BS_OBJ ) { Loading Loading @@ -2651,7 +2661,7 @@ static ivas_error decodeVoIP( } /* Write ISM metadata to external file(s) */ if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( decodedGoodFrame && arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { int16_t i; Loading Loading @@ -3082,7 +3092,7 @@ static ivas_error decodeVariableSpeed( } /* Write ISm metadata to external file(s) */ if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( decodedGoodFrame && arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { if ( bsFormat == IVAS_DEC_BS_OBJ ) { Loading Loading @@ -3261,7 +3271,7 @@ static ivas_error decodeVariableSpeed( } /* Write ISm metadata to external file(s) */ if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( decodedGoodFrame && arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { if ( bsFormat == IVAS_DEC_BS_OBJ ) { Loading Loading @@ -3338,7 +3348,7 @@ static ivas_error decodeVariableSpeed( } /* Print output metadata file name(s) */ if ( arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { if ( bsFormat == IVAS_DEC_BS_OBJ ) { Loading lib_com/ivas_cov_smooth.c +25 −2 Original line number Diff line number Diff line Loading @@ -40,7 +40,12 @@ #include "wmc_auto.h" #include "prot.h" /*-----------------------------------------------------------------------------------------* * Local constants *-----------------------------------------------------------------------------------------*/ #define BAND_SMOOTH_REST_START_IDX ( 2 ) #ifndef CODE_CLEAN_UP_DIRAC /*-----------------------------------------------------------------------------------------* * Function ivas_set_up_cov_smoothing() Loading Loading @@ -147,24 +152,36 @@ static void ivas_set_up_cov_smoothing( * To calculate the update factor *-----------------------------------------------------------------------------------------*/ static float ivas_calculate_update_factor( float *p_bin_to_band, int16_t active_bins ) static float ivas_calculate_update_factor( float *p_bin_to_band, int16_t active_bins ) { float update_factor_temp = 0.0f; int16_t k; for ( k = 0; k < active_bins; k++ ) { update_factor_temp += p_bin_to_band[k]; } return update_factor_temp; } /*-----------------------------------------------------------------------------------------* * Function ivas_calculate_smoothning_factor() * * To calculate the Smoothning factor *-----------------------------------------------------------------------------------------*/ static void ivas_calculate_smoothning_factor( float *Smoothing_factor, float update_factor, const int16_t min_pool_size, const float max_update_rate, const COV_SMOOTHING_TYPE smooth_mode, const int32_t ivas_total_brate, int16_t j ) static void ivas_calculate_smoothning_factor( float *Smoothing_factor, float update_factor, const int16_t min_pool_size, const float max_update_rate, const COV_SMOOTHING_TYPE smooth_mode, const int32_t ivas_total_brate, int16_t j ) { float smooth_fact; *Smoothing_factor = update_factor / min_pool_size; Loading @@ -180,12 +197,16 @@ static void ivas_calculate_smoothning_factor( float *Smoothing_factor, float upd } *Smoothing_factor *= ( j + 1 ) * smooth_fact; } if ( *Smoothing_factor > max_update_rate ) { *Smoothing_factor = max_update_rate; } return; } /*-----------------------------------------------------------------------------------------* * Function ivas_set_up_cov_smoothing() * Loading Loading @@ -223,6 +244,8 @@ static void ivas_set_up_cov_smoothing( } hCovState->prior_bank_idx = -1; return; } #endif Loading lib_com/ivas_fb_mixer.c +2 −2 Original line number Diff line number Diff line Loading @@ -603,8 +603,8 @@ static void ivas_fb_mixer_cross_fading( if ( hFbMixer->first_frame[ch] == 0 ) { fade_start_offset = (int16_t) hFbMixer->cross_fade_start_offset; fade_end_offset = (int16_t) hFbMixer->cross_fade_end_offset; fade_start_offset = hFbMixer->cross_fade_start_offset; fade_end_offset = hFbMixer->cross_fade_end_offset; for ( k = 0; k < fade_start_offset; k++ ) { Loading lib_com/ivas_prot.h +2 −1 Original line number Diff line number Diff line Loading @@ -2604,7 +2604,7 @@ void sns_avq_dec( void sns_avq_dec_stereo( int16_t *indexl, /* i : Quantization indices (left channel) */ int16_t *indexr, /* i : Quantization indices (right channe) */ const int16_t L_frame, const int16_t L_frame, /* i : frame length */ float *SNS_Ql, /* o : Quantized SNS vectors (left channel) */ float *SNS_Qr /* o : Quantized SNS vectors (right channe) */ ); Loading Loading @@ -3469,6 +3469,7 @@ void ivas_sba_getTCs( const int16_t input_frame /* i : frame length */ ); /*! r: SBA DirAC stereo flag */ int16_t ivas_sba_remapTCs( float sba_data[][L_FRAME48k], /* i/o: SBA signals */ Decoder_Struct *st_ivas, /* i/o: decoder struct */ Loading lib_com/ivas_rom_com.c +145 −110 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
apps/decoder.c +62 −52 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ typedef struct char *outputWavFilename; IVAS_DEC_MODE decMode; int32_t output_Fs; IVAS_DEC_AUDIO_CONFIG outputFormat; IVAS_DEC_AUDIO_CONFIG outputConfig; bool quietModeEnabled; bool delayCompensationEnabled; bool voipMode; Loading @@ -119,12 +119,10 @@ typedef struct char *jbmTraceFilename; #endif char *jbmOffsetFilename; char *FEPatterFileName; char *FEPatternFileName; float FER; bool hrtfReaderEnabled; char *hrtfFileName; bool hrtfCRendReaderEnabled; char *hrtfCRendFileName; IVAS_DEC_INPUT_FORMAT inputFormat; bool customLsOutputEnabled; char *customLsSetupFilename; Loading Loading @@ -281,7 +279,7 @@ int main( if ( arg.hrtfReaderEnabled ) { /* sanity check */ if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) if ( arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) { arg.hrtfReaderEnabled = false; fprintf( stderr, "\nError: HRTF binary file cannot be used in this output configuration.\n\n" ); Loading @@ -303,9 +301,9 @@ int main( if ( arg.enableHeadRotation ) { /* sanity check */ if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB if ( arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB #ifdef SPLIT_REND_WITH_HEAD_ROT && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM && arg.outputConfig != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputConfig != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM #endif ) { Loading @@ -327,7 +325,7 @@ int main( if ( arg.enableReferenceRotation ) { /* sanity check */ if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) if ( arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) { fprintf( stderr, "\nError: Reference rotation file cannot be used in this output configuration.\n\n" ); goto cleanup; Loading @@ -354,7 +352,7 @@ int main( if ( arg.enableReferenceVectorTracking ) { /* sanity check */ if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) if ( arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) { fprintf( stderr, "\nError: Reference vector trajectory file cannot be used in this output configuration.\n\n" ); goto cleanup; Loading Loading @@ -407,9 +405,9 @@ int main( if ( arg.renderConfigEnabled ) { /* sanity check */ if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB if ( arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB #ifdef SPLIT_REND_WITH_HEAD_ROT && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM && arg.outputConfig != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputConfig != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM #endif ) { Loading @@ -427,13 +425,15 @@ int main( /*------------------------------------------------------------------------------------------* * Configure the decoder *------------------------------------------------------------------------------------------*/ #ifdef SPLIT_REND_WITH_HEAD_ROT if ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED || arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) if ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED || arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) { arg.enableHeadRotation = true; } #endif if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputFormat, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -538,9 +538,9 @@ int main( * Open Error pattern file for simulation *-----------------------------------------------------------------*/ if ( arg.FEPatterFileName != NULL ) if ( arg.FEPatternFileName != NULL ) { if ( ( FEC_pattern = fopen( arg.FEPatterFileName, "rb" ) ) == NULL ) if ( ( FEC_pattern = fopen( arg.FEPatternFileName, "rb" ) ) == NULL ) { fprintf( stderr, "Error: Missing or incorrect FEC filename specification\n\n" ); usage_dec(); Loading @@ -556,11 +556,11 @@ int main( * Print information about FEC *-----------------------------------------------------------------*/ if ( !arg.voipMode && ( arg.FEPatterFileName != NULL || arg.FER > 0 ) ) if ( !arg.voipMode && ( arg.FEPatternFileName != NULL || arg.FER > 0 ) ) { if ( arg.FEPatterFileName != NULL ) if ( arg.FEPatternFileName != NULL ) { fprintf( stdout, "FEC: %s\n", arg.FEPatterFileName ); fprintf( stdout, "FEC: %s\n", arg.FEPatternFileName ); } else { Loading @@ -581,9 +581,9 @@ int main( /* sanity check */ #ifdef SPLIT_REND_WITH_HEAD_ROT if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) if ( arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputConfig != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) { fprintf( stderr, "\nExternal Renderer Config is supported only when binaural output configurations is used as output OR when Split rendering mode is enabled. Exiting. \n" ); exit( -1 ); Loading Loading @@ -653,28 +653,41 @@ int main( goto cleanup; } IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL; IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ); if ( ( error = IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfCRendHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } if ( ( error = create_SetOfHRTF_from_binary( hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in loading HRTF binary file %s for CRend \n\n", arg.hrtfCRendFileName ); fprintf( stderr, "\nError in loading HRTF binary file %s for CRend \n\n", arg.hrtfFileName ); goto cleanup; } IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv = NULL; IVAS_DEC_GetHrtfFastConvHandle( hIvasDec, &hHrtfFastConv ); if ( ( error = IVAS_DEC_GetHrtfFastConvHandle( hIvasDec, &hHrtfFastConv ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfFastConvHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } if ( ( error = load_fastconv_HRTF_from_binary( hHrtfFastConv, hrtfReader ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in loading HRTF binary file %s for FastConv \n\n", arg.hrtfCRendFileName ); fprintf( stderr, "\nError in loading HRTF binary file %s for FastConv \n\n", arg.hrtfFileName ); } IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin = NULL; IVAS_DEC_GetHrtfParamBinHandle( hIvasDec, &hHrtfParambin ); if ( ( error = IVAS_DEC_GetHrtfParamBinHandle( hIvasDec, &hHrtfParambin ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfParamBinHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } if ( ( error = load_parambin_HRTF_from_binary( hHrtfParambin, hrtfReader ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in loading HRTF binary file %s for parametric binauralizer \n\n", arg.hrtfCRendFileName ); fprintf( stderr, "\nError in loading HRTF binary file %s for parametric binauralizer \n\n", arg.hrtfFileName ); } } Loading Loading @@ -903,7 +916,7 @@ static bool parseCmdlIVAS_dec( #endif #endif arg->output_Fs = 48000; arg->outputFormat = IVAS_DEC_OUTPUT_MONO; arg->outputConfig = IVAS_DEC_OUTPUT_MONO; arg->decMode = IVAS_DEC_MODE_IVAS; arg->quietModeEnabled = false; arg->delayCompensationEnabled = true; Loading @@ -926,14 +939,11 @@ static bool parseCmdlIVAS_dec( arg->jbmOffsetFilename = NULL; arg->FER = 0.f; arg->FEPatterFileName = NULL; arg->FEPatternFileName = NULL; arg->hrtfReaderEnabled = false; arg->hrtfFileName = NULL; arg->hrtfCRendReaderEnabled = false; arg->hrtfCRendFileName = NULL; arg->customLsOutputEnabled = false; arg->customLsSetupFilename = NULL; Loading Loading @@ -1057,7 +1067,7 @@ static bool parseCmdlIVAS_dec( ftmp = 0.0f; if ( sscanf( argv[i + 1], "%f", &ftmp ) != 1 ) { arg->FEPatterFileName = argv[i + 1]; arg->FEPatternFileName = argv[i + 1]; } else { Loading Loading @@ -1344,14 +1354,14 @@ static bool parseCmdlIVAS_dec( if ( i < argc - 3 ) { arg->outputFormat = cmdline2config( argv[i] ); if ( arg->outputFormat == IVAS_DEC_OUTPUT_LS_CUSTOM ) arg->outputConfig = cmdline2config( argv[i] ); if ( arg->outputConfig == IVAS_DEC_OUTPUT_LS_CUSTOM ) { arg->customLsOutputEnabled = true; arg->customLsSetupFilename = argv[i]; } i++; if ( ( arg->Opt_non_diegetic_pan ) && ( arg->outputFormat != IVAS_DEC_OUTPUT_STEREO ) ) if ( ( arg->Opt_non_diegetic_pan ) && ( arg->outputConfig != IVAS_DEC_OUTPUT_STEREO ) ) { fprintf( stderr, "Error: non-diegetic panning is supported in stereo only\n\n" ); usage_dec(); Loading @@ -1360,11 +1370,11 @@ static bool parseCmdlIVAS_dec( } else { arg->outputFormat = IVAS_DEC_OUTPUT_MONO; arg->outputConfig = IVAS_DEC_OUTPUT_MONO; arg->decMode = IVAS_DEC_MODE_EVS; if ( ( arg->Opt_non_diegetic_pan ) ) { arg->outputFormat = IVAS_DEC_OUTPUT_STEREO; arg->outputConfig = IVAS_DEC_OUTPUT_STEREO; } } Loading Loading @@ -1562,8 +1572,8 @@ static ivas_error initOnFirstGoodFrame( return error; } #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) || ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) ) if ( ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) || ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) ) { pFullDelayNumSamples[0] = 0; } Loading @@ -1590,7 +1600,7 @@ static ivas_error initOnFirstGoodFrame( } #ifdef SPLIT_REND_WITH_HEAD_ROT if ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) if ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) { int16_t delayNumSamples_temp[3]; int32_t delayTimeScale_temp; Loading @@ -1605,7 +1615,7 @@ static ivas_error initOnFirstGoodFrame( } else { if ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) if ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) { int16_t delayNumSamples_temp[3]; int32_t delayTimeScale_temp; Loading Loading @@ -1673,7 +1683,7 @@ static ivas_error initOnFirstGoodFrame( free( zeroBuf ); /* Open other output files if EXT output config - now details about ISM or MASA are known */ if ( arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { if ( ( error = IVAS_DEC_GetFormat( hIvasDec, pBsFormat ) ) != IVAS_ERR_OK ) { Loading Loading @@ -2036,7 +2046,7 @@ static ivas_error decodeG192( if ( decodedGoodFrame ) { #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) ) if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) ) { if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, splitRendBits.bits_buf, &splitRendBits.bits_read, &splitRendBits.bits_written, splitRendBits.codec, splitRendBits.pose_correction ) != IVAS_ERR_OK ) Loading @@ -2047,7 +2057,7 @@ static ivas_error decodeG192( } else { if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) ) if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputConfig == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) ) { if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, splitRendBits.bits_buf, &splitRendBits.bits_read, &splitRendBits.bits_written, splitRendBits.codec, splitRendBits.pose_correction ) != IVAS_ERR_OK ) Loading Loading @@ -2076,7 +2086,7 @@ static ivas_error decodeG192( } /* Write ISM metadata to external file(s) */ if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( decodedGoodFrame && arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { if ( bsFormat == IVAS_DEC_BS_OBJ ) { Loading Loading @@ -2176,7 +2186,7 @@ static ivas_error decodeG192( } /* Print output metadata file name(s) */ if ( arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { if ( bsFormat == IVAS_DEC_BS_OBJ ) { Loading Loading @@ -2651,7 +2661,7 @@ static ivas_error decodeVoIP( } /* Write ISM metadata to external file(s) */ if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( decodedGoodFrame && arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { int16_t i; Loading Loading @@ -3082,7 +3092,7 @@ static ivas_error decodeVariableSpeed( } /* Write ISm metadata to external file(s) */ if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( decodedGoodFrame && arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { if ( bsFormat == IVAS_DEC_BS_OBJ ) { Loading Loading @@ -3261,7 +3271,7 @@ static ivas_error decodeVariableSpeed( } /* Write ISm metadata to external file(s) */ if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( decodedGoodFrame && arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { if ( bsFormat == IVAS_DEC_BS_OBJ ) { Loading Loading @@ -3338,7 +3348,7 @@ static ivas_error decodeVariableSpeed( } /* Print output metadata file name(s) */ if ( arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) if ( arg.outputConfig == IVAS_DEC_OUTPUT_EXT ) { if ( bsFormat == IVAS_DEC_BS_OBJ ) { Loading
lib_com/ivas_cov_smooth.c +25 −2 Original line number Diff line number Diff line Loading @@ -40,7 +40,12 @@ #include "wmc_auto.h" #include "prot.h" /*-----------------------------------------------------------------------------------------* * Local constants *-----------------------------------------------------------------------------------------*/ #define BAND_SMOOTH_REST_START_IDX ( 2 ) #ifndef CODE_CLEAN_UP_DIRAC /*-----------------------------------------------------------------------------------------* * Function ivas_set_up_cov_smoothing() Loading Loading @@ -147,24 +152,36 @@ static void ivas_set_up_cov_smoothing( * To calculate the update factor *-----------------------------------------------------------------------------------------*/ static float ivas_calculate_update_factor( float *p_bin_to_band, int16_t active_bins ) static float ivas_calculate_update_factor( float *p_bin_to_band, int16_t active_bins ) { float update_factor_temp = 0.0f; int16_t k; for ( k = 0; k < active_bins; k++ ) { update_factor_temp += p_bin_to_band[k]; } return update_factor_temp; } /*-----------------------------------------------------------------------------------------* * Function ivas_calculate_smoothning_factor() * * To calculate the Smoothning factor *-----------------------------------------------------------------------------------------*/ static void ivas_calculate_smoothning_factor( float *Smoothing_factor, float update_factor, const int16_t min_pool_size, const float max_update_rate, const COV_SMOOTHING_TYPE smooth_mode, const int32_t ivas_total_brate, int16_t j ) static void ivas_calculate_smoothning_factor( float *Smoothing_factor, float update_factor, const int16_t min_pool_size, const float max_update_rate, const COV_SMOOTHING_TYPE smooth_mode, const int32_t ivas_total_brate, int16_t j ) { float smooth_fact; *Smoothing_factor = update_factor / min_pool_size; Loading @@ -180,12 +197,16 @@ static void ivas_calculate_smoothning_factor( float *Smoothing_factor, float upd } *Smoothing_factor *= ( j + 1 ) * smooth_fact; } if ( *Smoothing_factor > max_update_rate ) { *Smoothing_factor = max_update_rate; } return; } /*-----------------------------------------------------------------------------------------* * Function ivas_set_up_cov_smoothing() * Loading Loading @@ -223,6 +244,8 @@ static void ivas_set_up_cov_smoothing( } hCovState->prior_bank_idx = -1; return; } #endif Loading
lib_com/ivas_fb_mixer.c +2 −2 Original line number Diff line number Diff line Loading @@ -603,8 +603,8 @@ static void ivas_fb_mixer_cross_fading( if ( hFbMixer->first_frame[ch] == 0 ) { fade_start_offset = (int16_t) hFbMixer->cross_fade_start_offset; fade_end_offset = (int16_t) hFbMixer->cross_fade_end_offset; fade_start_offset = hFbMixer->cross_fade_start_offset; fade_end_offset = hFbMixer->cross_fade_end_offset; for ( k = 0; k < fade_start_offset; k++ ) { Loading
lib_com/ivas_prot.h +2 −1 Original line number Diff line number Diff line Loading @@ -2604,7 +2604,7 @@ void sns_avq_dec( void sns_avq_dec_stereo( int16_t *indexl, /* i : Quantization indices (left channel) */ int16_t *indexr, /* i : Quantization indices (right channe) */ const int16_t L_frame, const int16_t L_frame, /* i : frame length */ float *SNS_Ql, /* o : Quantized SNS vectors (left channel) */ float *SNS_Qr /* o : Quantized SNS vectors (right channe) */ ); Loading Loading @@ -3469,6 +3469,7 @@ void ivas_sba_getTCs( const int16_t input_frame /* i : frame length */ ); /*! r: SBA DirAC stereo flag */ int16_t ivas_sba_remapTCs( float sba_data[][L_FRAME48k], /* i/o: SBA signals */ Decoder_Struct *st_ivas, /* i/o: decoder struct */ Loading
lib_com/ivas_rom_com.c +145 −110 File changed.Preview size limit exceeded, changes collapsed. Show changes