Loading apps/decoder.c +48 −0 Original line number Diff line number Diff line Loading @@ -128,7 +128,11 @@ typedef struct bool customLsOutputEnabled; char *customLsSetupFilename; int16_t orientation_tracking; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION bool non_diegetic_pan_enabled; #else int16_t Opt_non_diegetic_pan; #endif float non_diegetic_pan_gain; bool renderConfigEnabled; char *renderConfigFilename; Loading @@ -148,7 +152,11 @@ typedef struct #endif #endif AcousticEnvironmentSequence aeSequence; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION bool dpidEnabled; #else int16_t Opt_dpid_on; #endif uint16_t directivityPatternId[IVAS_MAX_NUM_OBJECTS]; } DecArguments; Loading Loading @@ -407,8 +415,12 @@ int main( if ( arg.renderConfigEnabled ) { /* sanity check */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.non_diegetic_pan_enabled == false ) #else if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.Opt_non_diegetic_pan == 0 ) #endif { fprintf( stderr, "\nError: Renderer configuration file cannot be used in this output configuration.\n\n" ); goto cleanup; Loading @@ -427,8 +439,14 @@ int main( asked_frame_size = arg.renderFramesize; uint16_t aeID = arg.aeSequence.count > 0 ? arg.aeSequence.pID[0] : 65535; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.renderFramesize, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.non_diegetic_pan_enabled, arg.non_diegetic_pan_gain, arg.dpidEnabled, aeID, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.renderFramesize, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.Opt_dpid_on, aeID, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -594,8 +612,12 @@ int main( /* sanity check */ if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.non_diegetic_pan_enabled == false ) #else arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.Opt_non_diegetic_pan == 0 ) #endif { 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" ); goto cleanup; Loading Loading @@ -1066,12 +1088,20 @@ static bool parseCmdlIVAS_dec( arg->renderConfigEnabled = false; arg->renderConfigFilename = NULL; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION arg->dpidEnabled = false; #else arg->Opt_dpid_on = 0; #endif arg->outputMdFilename = NULL; arg->inputFormat = IVAS_DEC_INPUT_FORMAT_G192; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION arg->non_diegetic_pan_enabled = false; #else arg->Opt_non_diegetic_pan = 0; #endif arg->non_diegetic_pan_gain = 0.f; arg->tsmEnabled = false; arg->renderFramesize = IVAS_RENDER_FRAMESIZE_20MS; Loading Loading @@ -1410,7 +1440,11 @@ static bool parseCmdlIVAS_dec( else if ( strcmp( argv_to_upper, "-NON_DIEGETIC_PAN" ) == 0 ) { i++; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION arg->non_diegetic_pan_enabled = true; #else arg->Opt_non_diegetic_pan = 1; #endif 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 ); Loading Loading @@ -1507,7 +1541,11 @@ static bool parseCmdlIVAS_dec( { int16_t id, tmp; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION arg->dpidEnabled = true; #else arg->Opt_dpid_on = 1; #endif ++i; tmp = 0; while ( is_number( argv[i + tmp] ) && tmp < IVAS_MAX_NUM_OBJECTS ) Loading Loading @@ -1587,7 +1625,12 @@ static bool parseCmdlIVAS_dec( arg->customLsSetupFilename = argv[i]; } i++; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION if ( arg->non_diegetic_pan_enabled && arg->outputConfig != IVAS_AUDIO_CONFIG_STEREO ) #else if ( ( arg->Opt_non_diegetic_pan ) && ( arg->outputConfig != IVAS_AUDIO_CONFIG_STEREO ) ) #endif { fprintf( stderr, "Error: non-diegetic panning is supported in stereo only\n\n" ); usage_dec(); Loading @@ -1605,7 +1648,12 @@ static bool parseCmdlIVAS_dec( { arg->outputConfig = IVAS_AUDIO_CONFIG_MONO; arg->decMode = IVAS_DEC_MODE_EVS; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION if ( arg->non_diegetic_pan_enabled ) #else if ( ( arg->Opt_non_diegetic_pan ) ) #endif { arg->outputConfig = IVAS_AUDIO_CONFIG_STEREO; } Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,7 @@ #define FIX_1121_MASA_DESCRIPTOR /* VA: issue 1121: Define 'ivasmasaFormatDescriptor' at one common place */ #define FIX_1113_CLDFB_REND_IN_ISAR /* issue 1113: fix the use of CLDFB renderer in split-rendering at the external renderer */ #define ADJUST_MCT_CHANNELS_MAX /* FhG: set correct max mct channels constant*/ #define FIX_745_FIX_DATA_TYPE_CONVERSION /* VA: issue 745: implicit data type conversion when calling IVAS_DEC_Configure() */ /* #################### End BE switches ################################## */ Loading lib_dec/lib_dec.c +64 −15 Original line number Diff line number Diff line Loading @@ -404,19 +404,43 @@ ivas_error IVAS_DEC_Configure( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const uint32_t sampleRate, /* i : output sampling frequency */ const AUDIO_CONFIG outputConfig, /* i : output configuration */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool tsmEnabled, /* i : enable TSM */ #else const int16_t tsmEnabled, /* i : enable time scale modification */ #endif const IVAS_RENDER_FRAMESIZE renderFramesize, /* i : rendering frame size */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool customLsOutputEnabled, /* i : enable custom loudspeaker setup handle */ const bool hrtfReaderEnabled, /* i : enable HRTF binary file input */ const bool enableHeadRotation, /* i : enable head rotation for binaural output */ const bool enableExternalOrientation, /* i : enable external orientations */ #else const int16_t customLsOutputEnabled, /* i : enable custom loudspeaker setup handle */ const int16_t hrtfReaderEnabled, /* i : enable HRTF binary file input */ const int16_t enableHeadRotation, /* i : enable head rotation for binaural output */ const int16_t enableExternalOrientation, /* i : enable external orientations */ #endif const IVAS_HEAD_ORIENT_TRK_T orientation_tracking, /* i : head orientation tracking type */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool renderConfigEnabled, /* i : enable Renderer config. file for binaural output */ const bool non_diegetic_pan_enabled, /* i : enabled diegetic panning */ #else const int16_t renderConfigEnabled, /* i : enable Renderer config. file for binaural output */ const int16_t Opt_non_diegetic_pan, /* i : diegetic or not */ #endif const float non_diegetic_pan_gain, /* i : non diegetic panning gain */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool dpidEnabled, /* i : enable directivity pattern option */ #else const int16_t Opt_dpid_on, /* i : enable directivity pattern option */ #endif const uint16_t acousticEnvironmentId, /* i : Acoustic environment ID */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool delayCompensationEnabled /* i : enable delay compensation */ #else const int16_t delayCompensationEnabled /* i : enable delay compensation */ #endif ) { Decoder_Struct *st_ivas; Loading @@ -434,8 +458,13 @@ ivas_error IVAS_DEC_Configure( return IVAS_ERR_WRONG_PARAMS; } #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION if ( hIvasDec->mode == IVAS_DEC_MODE_EVS && !( ( outputConfig == IVAS_AUDIO_CONFIG_MONO && !non_diegetic_pan_enabled ) || ( outputConfig == IVAS_AUDIO_CONFIG_STEREO && non_diegetic_pan_enabled ) ) ) #else if ( hIvasDec->mode == IVAS_DEC_MODE_EVS && !( ( outputConfig == IVAS_AUDIO_CONFIG_MONO && Opt_non_diegetic_pan == 0 ) || ( outputConfig == IVAS_AUDIO_CONFIG_STEREO && Opt_non_diegetic_pan == 1 ) ) ) #endif { return IVAS_ERR_WRONG_MODE; } Loading Loading @@ -463,17 +492,37 @@ ivas_error IVAS_DEC_Configure( hDecoderConfig->nchan_out = audioCfg2channels( hDecoderConfig->output_config ); } #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION hDecoderConfig->Opt_tsm = (int16_t) tsmEnabled; hDecoderConfig->Opt_LsCustom = (int16_t) customLsOutputEnabled; hDecoderConfig->Opt_Headrotation = (int16_t) enableHeadRotation; #else hDecoderConfig->Opt_tsm = tsmEnabled; hDecoderConfig->Opt_LsCustom = customLsOutputEnabled; hDecoderConfig->Opt_Headrotation = enableHeadRotation; #endif hDecoderConfig->orientation_tracking = orientation_tracking; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION hDecoderConfig->Opt_HRTF_binary = (int16_t) hrtfReaderEnabled; hDecoderConfig->Opt_RendConfigCustom = (int16_t) renderConfigEnabled; hDecoderConfig->Opt_non_diegetic_pan = (int16_t) non_diegetic_pan_enabled; #else hDecoderConfig->Opt_HRTF_binary = hrtfReaderEnabled; hDecoderConfig->Opt_RendConfigCustom = renderConfigEnabled; hDecoderConfig->Opt_non_diegetic_pan = Opt_non_diegetic_pan; #endif hDecoderConfig->non_diegetic_pan_gain = non_diegetic_pan_gain; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION hDecoderConfig->Opt_delay_comp = (int16_t) delayCompensationEnabled; #else hDecoderConfig->Opt_delay_comp = delayCompensationEnabled; #endif hDecoderConfig->Opt_ExternalOrientation = enableExternalOrientation; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION hDecoderConfig->Opt_dpid_on = (int16_t) dpidEnabled; #else hDecoderConfig->Opt_dpid_on = Opt_dpid_on; #endif hDecoderConfig->Opt_aeid_on = acousticEnvironmentId != 65535 ? TRUE : FALSE; if ( renderFramesize == IVAS_RENDER_FRAMESIZE_UNKNOWN ) Loading lib_dec/lib_dec.h +24 −0 Original line number Diff line number Diff line Loading @@ -122,19 +122,43 @@ ivas_error IVAS_DEC_Configure( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const uint32_t sampleRate, /* i : output sampling frequency */ const IVAS_AUDIO_CONFIG outputConfig, /* i : audio configuration */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool tsmEnabled, /* i : enable TSM */ #else const int16_t tsmEnabled, /* i : enable TSM */ #endif const IVAS_RENDER_FRAMESIZE renderFramesize, /* i : rendering frame size */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool customLsOutputEnabled, /* i : enable custom loudspeaker setup handle */ const bool hrtfReaderEnabled, /* i : enable HRTF binary file input */ const bool enableHeadRotation, /* i : enable head rotation for binaural output */ const bool enableExternalOrientation, /* i : enable external orientations */ #else const int16_t customLsOutputEnabled, /* i : enable custom loudspeaker setup handle */ const int16_t hrtfReaderEnabled, /* i : enable HRTF binary file input */ const int16_t enableHeadRotation, /* i : enable head rotation for binaural output */ const int16_t enableExternalOrientation, /* i : enable external orientations */ #endif const IVAS_HEAD_ORIENT_TRK_T orientation_tracking, /* i : head orientation tracking type */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool renderConfigEnabled, /* i : enable Renderer config. file for binaural output */ const bool non_diegetic_pan_enabled, /* i : enabled diegetic panning */ #else const int16_t renderConfigEnabled, /* i : enable Renderer config. file for binaural output */ const int16_t Opt_non_diegetic_pan, /* i : diegetic or not */ #endif const float non_diegetic_pan_gain, /* i : non diegetic panning gain */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool dpidEnabled, /* i : enable directivity pattern option */ #else const int16_t Opt_dpid_on, /* i : enable directivity pattern option */ #endif const uint16_t acousticEnvironmentId, /* i : Acoustic environment ID */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool delayCompensationEnabled /* i : enable delay compensation */ #else const int16_t delayCompensationEnabled /* i : enable delay compensation */ #endif ); void IVAS_DEC_Close( Loading Loading
apps/decoder.c +48 −0 Original line number Diff line number Diff line Loading @@ -128,7 +128,11 @@ typedef struct bool customLsOutputEnabled; char *customLsSetupFilename; int16_t orientation_tracking; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION bool non_diegetic_pan_enabled; #else int16_t Opt_non_diegetic_pan; #endif float non_diegetic_pan_gain; bool renderConfigEnabled; char *renderConfigFilename; Loading @@ -148,7 +152,11 @@ typedef struct #endif #endif AcousticEnvironmentSequence aeSequence; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION bool dpidEnabled; #else int16_t Opt_dpid_on; #endif uint16_t directivityPatternId[IVAS_MAX_NUM_OBJECTS]; } DecArguments; Loading Loading @@ -407,8 +415,12 @@ int main( if ( arg.renderConfigEnabled ) { /* sanity check */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.non_diegetic_pan_enabled == false ) #else if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.Opt_non_diegetic_pan == 0 ) #endif { fprintf( stderr, "\nError: Renderer configuration file cannot be used in this output configuration.\n\n" ); goto cleanup; Loading @@ -427,8 +439,14 @@ int main( asked_frame_size = arg.renderFramesize; uint16_t aeID = arg.aeSequence.count > 0 ? arg.aeSequence.pID[0] : 65535; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.renderFramesize, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.non_diegetic_pan_enabled, arg.non_diegetic_pan_gain, arg.dpidEnabled, aeID, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.renderFramesize, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.Opt_dpid_on, aeID, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -594,8 +612,12 @@ int main( /* sanity check */ if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.non_diegetic_pan_enabled == false ) #else arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.Opt_non_diegetic_pan == 0 ) #endif { 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" ); goto cleanup; Loading Loading @@ -1066,12 +1088,20 @@ static bool parseCmdlIVAS_dec( arg->renderConfigEnabled = false; arg->renderConfigFilename = NULL; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION arg->dpidEnabled = false; #else arg->Opt_dpid_on = 0; #endif arg->outputMdFilename = NULL; arg->inputFormat = IVAS_DEC_INPUT_FORMAT_G192; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION arg->non_diegetic_pan_enabled = false; #else arg->Opt_non_diegetic_pan = 0; #endif arg->non_diegetic_pan_gain = 0.f; arg->tsmEnabled = false; arg->renderFramesize = IVAS_RENDER_FRAMESIZE_20MS; Loading Loading @@ -1410,7 +1440,11 @@ static bool parseCmdlIVAS_dec( else if ( strcmp( argv_to_upper, "-NON_DIEGETIC_PAN" ) == 0 ) { i++; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION arg->non_diegetic_pan_enabled = true; #else arg->Opt_non_diegetic_pan = 1; #endif 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 ); Loading Loading @@ -1507,7 +1541,11 @@ static bool parseCmdlIVAS_dec( { int16_t id, tmp; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION arg->dpidEnabled = true; #else arg->Opt_dpid_on = 1; #endif ++i; tmp = 0; while ( is_number( argv[i + tmp] ) && tmp < IVAS_MAX_NUM_OBJECTS ) Loading Loading @@ -1587,7 +1625,12 @@ static bool parseCmdlIVAS_dec( arg->customLsSetupFilename = argv[i]; } i++; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION if ( arg->non_diegetic_pan_enabled && arg->outputConfig != IVAS_AUDIO_CONFIG_STEREO ) #else if ( ( arg->Opt_non_diegetic_pan ) && ( arg->outputConfig != IVAS_AUDIO_CONFIG_STEREO ) ) #endif { fprintf( stderr, "Error: non-diegetic panning is supported in stereo only\n\n" ); usage_dec(); Loading @@ -1605,7 +1648,12 @@ static bool parseCmdlIVAS_dec( { arg->outputConfig = IVAS_AUDIO_CONFIG_MONO; arg->decMode = IVAS_DEC_MODE_EVS; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION if ( arg->non_diegetic_pan_enabled ) #else if ( ( arg->Opt_non_diegetic_pan ) ) #endif { arg->outputConfig = IVAS_AUDIO_CONFIG_STEREO; } Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,7 @@ #define FIX_1121_MASA_DESCRIPTOR /* VA: issue 1121: Define 'ivasmasaFormatDescriptor' at one common place */ #define FIX_1113_CLDFB_REND_IN_ISAR /* issue 1113: fix the use of CLDFB renderer in split-rendering at the external renderer */ #define ADJUST_MCT_CHANNELS_MAX /* FhG: set correct max mct channels constant*/ #define FIX_745_FIX_DATA_TYPE_CONVERSION /* VA: issue 745: implicit data type conversion when calling IVAS_DEC_Configure() */ /* #################### End BE switches ################################## */ Loading
lib_dec/lib_dec.c +64 −15 Original line number Diff line number Diff line Loading @@ -404,19 +404,43 @@ ivas_error IVAS_DEC_Configure( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const uint32_t sampleRate, /* i : output sampling frequency */ const AUDIO_CONFIG outputConfig, /* i : output configuration */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool tsmEnabled, /* i : enable TSM */ #else const int16_t tsmEnabled, /* i : enable time scale modification */ #endif const IVAS_RENDER_FRAMESIZE renderFramesize, /* i : rendering frame size */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool customLsOutputEnabled, /* i : enable custom loudspeaker setup handle */ const bool hrtfReaderEnabled, /* i : enable HRTF binary file input */ const bool enableHeadRotation, /* i : enable head rotation for binaural output */ const bool enableExternalOrientation, /* i : enable external orientations */ #else const int16_t customLsOutputEnabled, /* i : enable custom loudspeaker setup handle */ const int16_t hrtfReaderEnabled, /* i : enable HRTF binary file input */ const int16_t enableHeadRotation, /* i : enable head rotation for binaural output */ const int16_t enableExternalOrientation, /* i : enable external orientations */ #endif const IVAS_HEAD_ORIENT_TRK_T orientation_tracking, /* i : head orientation tracking type */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool renderConfigEnabled, /* i : enable Renderer config. file for binaural output */ const bool non_diegetic_pan_enabled, /* i : enabled diegetic panning */ #else const int16_t renderConfigEnabled, /* i : enable Renderer config. file for binaural output */ const int16_t Opt_non_diegetic_pan, /* i : diegetic or not */ #endif const float non_diegetic_pan_gain, /* i : non diegetic panning gain */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool dpidEnabled, /* i : enable directivity pattern option */ #else const int16_t Opt_dpid_on, /* i : enable directivity pattern option */ #endif const uint16_t acousticEnvironmentId, /* i : Acoustic environment ID */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool delayCompensationEnabled /* i : enable delay compensation */ #else const int16_t delayCompensationEnabled /* i : enable delay compensation */ #endif ) { Decoder_Struct *st_ivas; Loading @@ -434,8 +458,13 @@ ivas_error IVAS_DEC_Configure( return IVAS_ERR_WRONG_PARAMS; } #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION if ( hIvasDec->mode == IVAS_DEC_MODE_EVS && !( ( outputConfig == IVAS_AUDIO_CONFIG_MONO && !non_diegetic_pan_enabled ) || ( outputConfig == IVAS_AUDIO_CONFIG_STEREO && non_diegetic_pan_enabled ) ) ) #else if ( hIvasDec->mode == IVAS_DEC_MODE_EVS && !( ( outputConfig == IVAS_AUDIO_CONFIG_MONO && Opt_non_diegetic_pan == 0 ) || ( outputConfig == IVAS_AUDIO_CONFIG_STEREO && Opt_non_diegetic_pan == 1 ) ) ) #endif { return IVAS_ERR_WRONG_MODE; } Loading Loading @@ -463,17 +492,37 @@ ivas_error IVAS_DEC_Configure( hDecoderConfig->nchan_out = audioCfg2channels( hDecoderConfig->output_config ); } #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION hDecoderConfig->Opt_tsm = (int16_t) tsmEnabled; hDecoderConfig->Opt_LsCustom = (int16_t) customLsOutputEnabled; hDecoderConfig->Opt_Headrotation = (int16_t) enableHeadRotation; #else hDecoderConfig->Opt_tsm = tsmEnabled; hDecoderConfig->Opt_LsCustom = customLsOutputEnabled; hDecoderConfig->Opt_Headrotation = enableHeadRotation; #endif hDecoderConfig->orientation_tracking = orientation_tracking; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION hDecoderConfig->Opt_HRTF_binary = (int16_t) hrtfReaderEnabled; hDecoderConfig->Opt_RendConfigCustom = (int16_t) renderConfigEnabled; hDecoderConfig->Opt_non_diegetic_pan = (int16_t) non_diegetic_pan_enabled; #else hDecoderConfig->Opt_HRTF_binary = hrtfReaderEnabled; hDecoderConfig->Opt_RendConfigCustom = renderConfigEnabled; hDecoderConfig->Opt_non_diegetic_pan = Opt_non_diegetic_pan; #endif hDecoderConfig->non_diegetic_pan_gain = non_diegetic_pan_gain; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION hDecoderConfig->Opt_delay_comp = (int16_t) delayCompensationEnabled; #else hDecoderConfig->Opt_delay_comp = delayCompensationEnabled; #endif hDecoderConfig->Opt_ExternalOrientation = enableExternalOrientation; #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION hDecoderConfig->Opt_dpid_on = (int16_t) dpidEnabled; #else hDecoderConfig->Opt_dpid_on = Opt_dpid_on; #endif hDecoderConfig->Opt_aeid_on = acousticEnvironmentId != 65535 ? TRUE : FALSE; if ( renderFramesize == IVAS_RENDER_FRAMESIZE_UNKNOWN ) Loading
lib_dec/lib_dec.h +24 −0 Original line number Diff line number Diff line Loading @@ -122,19 +122,43 @@ ivas_error IVAS_DEC_Configure( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const uint32_t sampleRate, /* i : output sampling frequency */ const IVAS_AUDIO_CONFIG outputConfig, /* i : audio configuration */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool tsmEnabled, /* i : enable TSM */ #else const int16_t tsmEnabled, /* i : enable TSM */ #endif const IVAS_RENDER_FRAMESIZE renderFramesize, /* i : rendering frame size */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool customLsOutputEnabled, /* i : enable custom loudspeaker setup handle */ const bool hrtfReaderEnabled, /* i : enable HRTF binary file input */ const bool enableHeadRotation, /* i : enable head rotation for binaural output */ const bool enableExternalOrientation, /* i : enable external orientations */ #else const int16_t customLsOutputEnabled, /* i : enable custom loudspeaker setup handle */ const int16_t hrtfReaderEnabled, /* i : enable HRTF binary file input */ const int16_t enableHeadRotation, /* i : enable head rotation for binaural output */ const int16_t enableExternalOrientation, /* i : enable external orientations */ #endif const IVAS_HEAD_ORIENT_TRK_T orientation_tracking, /* i : head orientation tracking type */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool renderConfigEnabled, /* i : enable Renderer config. file for binaural output */ const bool non_diegetic_pan_enabled, /* i : enabled diegetic panning */ #else const int16_t renderConfigEnabled, /* i : enable Renderer config. file for binaural output */ const int16_t Opt_non_diegetic_pan, /* i : diegetic or not */ #endif const float non_diegetic_pan_gain, /* i : non diegetic panning gain */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool dpidEnabled, /* i : enable directivity pattern option */ #else const int16_t Opt_dpid_on, /* i : enable directivity pattern option */ #endif const uint16_t acousticEnvironmentId, /* i : Acoustic environment ID */ #ifdef FIX_745_FIX_DATA_TYPE_CONVERSION const bool delayCompensationEnabled /* i : enable delay compensation */ #else const int16_t delayCompensationEnabled /* i : enable delay compensation */ #endif ); void IVAS_DEC_Close( Loading