Loading apps/renderer.c +48 −0 Original line number Diff line number Diff line Loading @@ -655,6 +655,10 @@ int main( lfeRoutingConfigs[i] = NULL; } #ifdef FIX_DISCLAIMER IVAS_REND_PrintDisclaimer(); #endif CmdlnArgs args = parseCmdlnArgs( argc, argv ); if ( args.nonDiegeticPan && !( ( args.inConfig.numAudioObjects == 0 && args.inConfig.multiChannelBuses[0].audioConfig == IVAS_AUDIO_CONFIG_MONO ) || Loading Loading @@ -816,6 +820,50 @@ int main( exit( -1 ); } #ifdef FIX_DISCLAIMER fprintf( stdout, "Input audio file: %s\n", args.inputFilePath ); fprintf( stdout, "Output audio file: %s\n\n", args.outputFilePath ); if ( args.inConfig.numAudioObjects > 0 ) { if ( args.inConfig.numAudioObjects == 1 ) { IVAS_REND_PrintInputConfig( IVAS_AUDIO_CONFIG_ISM1 ); } else if ( args.inConfig.numAudioObjects == 2 ) { IVAS_REND_PrintInputConfig( IVAS_AUDIO_CONFIG_ISM2 ); } else if ( args.inConfig.numAudioObjects == 3 ) { IVAS_REND_PrintInputConfig( IVAS_AUDIO_CONFIG_ISM3 ); } else if ( args.inConfig.numAudioObjects == 4 ) { IVAS_REND_PrintInputConfig( IVAS_AUDIO_CONFIG_ISM4 ); } } for ( i = 0; i < args.inConfig.numMultiChannelBuses; i++ ) { IVAS_REND_PrintInputConfig( args.inConfig.multiChannelBuses[i].audioConfig ); } for ( i = 0; i < args.inConfig.numMasaBuses; i++ ) { IVAS_REND_PrintInputConfig( args.inConfig.masaBuses[i].audioConfig ); } for ( i = 0; i < args.inConfig.numAmbisonicsBuses; i++ ) { IVAS_REND_PrintInputConfig( args.inConfig.ambisonicsBuses[i].audioConfig ); } if ( ( error = IVAS_REND_PrintConfig( hIvasRend ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\n IVAS_REND_PrintConfig failed: %s\n\n", ivas_error_to_string( error ) ); // goto cleanup; exit( -1 ); } #endif /* === Configure === */ if ( ( error = IVAS_REND_InitConfig( hIvasRend, args.outConfig.audioConfig ) ) != IVAS_ERR_OK ) { Loading lib_com/disclaimer.c +4 −0 Original line number Diff line number Diff line Loading @@ -44,7 +44,11 @@ int16_t print_disclaimer( FILE *fPtr ) { fprintf( fPtr, "\n==================================================================================================\n" ); #ifdef FIX_DISCLAIMER fprintf( fPtr, " IVAS Codec BASOP Baseline\n" ); #else fprintf( fPtr, " IVAS Codec Baseline\n" ); #endif fprintf( fPtr, " \n" ); fprintf( fPtr, " Based on EVS Codec (Floating Point) 3GPP TS26.443 Nov 04, 2021,\n" ); fprintf( fPtr, " Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0\n" ); Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -116,4 +116,5 @@ #define FIX_ISSUE_1157 /* Ittiam: Fix for Issue 1157: Encoder crash for Stereo at 48/64kbps DTX on/off in kernel_switch_trafo_fx() */ #define FIX_ISSUE_1152 /* Ittiam: Fix for issue 1152: Assertion error observed in evs_enc_fx (with option stereo_dmx_evs) from find_tilt_fx function*/ #define FIX_ISSUE_1156 /* Ittiam: Fix for Issue 1156: Encoder crash for Stereo at 32kbps in SWB_BWE_encoding_ivas_fx() */ #define FIX_DISCLAIMER /* VA: Add disclaimer for external renderer + Add info about IVAS reference version (FLP issue 1225) */ #endif lib_dec/lib_dec_fx.c +7 −2 Original line number Diff line number Diff line Loading @@ -44,6 +44,11 @@ #include "jbm_jb4sb.h" #include "jbm_pcmdsp_apa.h" #include "jbm_pcmdsp_fifo.h" #include <math.h> #include <assert.h> #ifndef FIX_DISCLAIMER #include <string.h> #endif #include "wmc_auto.h" #define INV_1000_Q31 2147484 /*1/1000 IN Q31*/ Loading Loading @@ -3058,7 +3063,7 @@ const char *IVAS_DEC_GetErrorMessage( return ivas_error_to_string( error ); } #ifndef FIX_DISCLAIMER /*---------------------------------------------------------------------* * get_channel_config() * Loading Loading @@ -3136,7 +3141,7 @@ static ivas_error get_channel_config( return IVAS_ERR_OK; } #endif /*---------------------------------------------------------------------* * printConfigInfo_dec( ) Loading lib_rend/ivas_output_init_fx.c +117 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,10 @@ #include "ivas_prot_fx.h" #include "ivas_prot.h" #include "ivas_prot_rend.h" #ifdef FIX_DISCLAIMER #include <string.h> #endif Word16 ivas_get_nchan_buffers_dec_ivas_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ const Word16 sba_analysis_order, /* i : SBA order evaluated in SBA decoder */ Loading Loading @@ -157,3 +161,116 @@ Word16 ivas_get_nchan_buffers_dec_ivas_fx( return nchan_out_buff; } #ifdef FIX_DISCLAIMER /*---------------------------------------------------------------------* * get_channel_config() * * Gets a str related to audio configuration *---------------------------------------------------------------------*/ ivas_error get_channel_config( const AUDIO_CONFIG config, /* i : audio configuration */ Word8 *str /* o : string with the configuration name */ ) { IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_MONO ) ) { strcpy( (char *) str, "Mono" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_STEREO ) ) { strcpy( (char *) str, "Stereo" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_ISM1 ) ) { strcpy( (char *) str, "Object-based audio (1 object)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_ISM2 ) ) { strcpy( (char *) str, "Object-based audio (2 objects)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_ISM3 ) ) { strcpy( (char *) str, "Object-based audio (3 objects)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_ISM4 ) ) { strcpy( (char *) str, "Object-based audio (4 objects)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_5_1 ) ) { strcpy( (char *) str, "Multichannel 5.1 (CICP6)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_7_1 ) ) { strcpy( (char *) str, "Multichannel 7.1 (CICP12)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_5_1_2 ) ) { strcpy( (char *) str, "Multichannel 5.1+2 (CICP14)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_5_1_4 ) ) { strcpy( (char *) str, "Multichannel 5.1+4 (CICP16)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_7_1_4 ) ) { strcpy( (char *) str, "Multichannel 7.1+4 (CICP19)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) { strcpy( (char *) str, "Multichannel (custom loudspeaker layout)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_MASA1 ) ) { strcpy( (char *) str, "Metadata-Assisted Spatial Audio mono (MASA1)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_MASA2 ) ) { strcpy( (char *) str, "Metadata-Assisted Spatial Audio stereo (MASA2)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_FOA ) ) { strcpy( (char *) str, "Ambisonics: First Order (FOA)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_HOA2 ) ) { strcpy( (char *) str, "Ambisonics: Second Order (HOA2)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_HOA3 ) ) { strcpy( (char *) str, "Ambisonics: Third Order (HOA3)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_BINAURAL ) ) { strcpy( (char *) str, "Binaural: no room" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { strcpy( (char *) str, "Binaural: room with impulse responses" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { strcpy( (char *) str, "Binaural: room with reverb" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) { strcpy( (char *) str, "BINAURAL_SPLIT_CODED" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { strcpy( (char *) str, "Binaural_Split_PCM" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) { strcpy( (char *) str, "External renderer" ); } ELSE { return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Error: Incorrect Input/Output Configuration" ); } return IVAS_ERR_OK; } #endif Loading
apps/renderer.c +48 −0 Original line number Diff line number Diff line Loading @@ -655,6 +655,10 @@ int main( lfeRoutingConfigs[i] = NULL; } #ifdef FIX_DISCLAIMER IVAS_REND_PrintDisclaimer(); #endif CmdlnArgs args = parseCmdlnArgs( argc, argv ); if ( args.nonDiegeticPan && !( ( args.inConfig.numAudioObjects == 0 && args.inConfig.multiChannelBuses[0].audioConfig == IVAS_AUDIO_CONFIG_MONO ) || Loading Loading @@ -816,6 +820,50 @@ int main( exit( -1 ); } #ifdef FIX_DISCLAIMER fprintf( stdout, "Input audio file: %s\n", args.inputFilePath ); fprintf( stdout, "Output audio file: %s\n\n", args.outputFilePath ); if ( args.inConfig.numAudioObjects > 0 ) { if ( args.inConfig.numAudioObjects == 1 ) { IVAS_REND_PrintInputConfig( IVAS_AUDIO_CONFIG_ISM1 ); } else if ( args.inConfig.numAudioObjects == 2 ) { IVAS_REND_PrintInputConfig( IVAS_AUDIO_CONFIG_ISM2 ); } else if ( args.inConfig.numAudioObjects == 3 ) { IVAS_REND_PrintInputConfig( IVAS_AUDIO_CONFIG_ISM3 ); } else if ( args.inConfig.numAudioObjects == 4 ) { IVAS_REND_PrintInputConfig( IVAS_AUDIO_CONFIG_ISM4 ); } } for ( i = 0; i < args.inConfig.numMultiChannelBuses; i++ ) { IVAS_REND_PrintInputConfig( args.inConfig.multiChannelBuses[i].audioConfig ); } for ( i = 0; i < args.inConfig.numMasaBuses; i++ ) { IVAS_REND_PrintInputConfig( args.inConfig.masaBuses[i].audioConfig ); } for ( i = 0; i < args.inConfig.numAmbisonicsBuses; i++ ) { IVAS_REND_PrintInputConfig( args.inConfig.ambisonicsBuses[i].audioConfig ); } if ( ( error = IVAS_REND_PrintConfig( hIvasRend ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\n IVAS_REND_PrintConfig failed: %s\n\n", ivas_error_to_string( error ) ); // goto cleanup; exit( -1 ); } #endif /* === Configure === */ if ( ( error = IVAS_REND_InitConfig( hIvasRend, args.outConfig.audioConfig ) ) != IVAS_ERR_OK ) { Loading
lib_com/disclaimer.c +4 −0 Original line number Diff line number Diff line Loading @@ -44,7 +44,11 @@ int16_t print_disclaimer( FILE *fPtr ) { fprintf( fPtr, "\n==================================================================================================\n" ); #ifdef FIX_DISCLAIMER fprintf( fPtr, " IVAS Codec BASOP Baseline\n" ); #else fprintf( fPtr, " IVAS Codec Baseline\n" ); #endif fprintf( fPtr, " \n" ); fprintf( fPtr, " Based on EVS Codec (Floating Point) 3GPP TS26.443 Nov 04, 2021,\n" ); fprintf( fPtr, " Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0\n" ); Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -116,4 +116,5 @@ #define FIX_ISSUE_1157 /* Ittiam: Fix for Issue 1157: Encoder crash for Stereo at 48/64kbps DTX on/off in kernel_switch_trafo_fx() */ #define FIX_ISSUE_1152 /* Ittiam: Fix for issue 1152: Assertion error observed in evs_enc_fx (with option stereo_dmx_evs) from find_tilt_fx function*/ #define FIX_ISSUE_1156 /* Ittiam: Fix for Issue 1156: Encoder crash for Stereo at 32kbps in SWB_BWE_encoding_ivas_fx() */ #define FIX_DISCLAIMER /* VA: Add disclaimer for external renderer + Add info about IVAS reference version (FLP issue 1225) */ #endif
lib_dec/lib_dec_fx.c +7 −2 Original line number Diff line number Diff line Loading @@ -44,6 +44,11 @@ #include "jbm_jb4sb.h" #include "jbm_pcmdsp_apa.h" #include "jbm_pcmdsp_fifo.h" #include <math.h> #include <assert.h> #ifndef FIX_DISCLAIMER #include <string.h> #endif #include "wmc_auto.h" #define INV_1000_Q31 2147484 /*1/1000 IN Q31*/ Loading Loading @@ -3058,7 +3063,7 @@ const char *IVAS_DEC_GetErrorMessage( return ivas_error_to_string( error ); } #ifndef FIX_DISCLAIMER /*---------------------------------------------------------------------* * get_channel_config() * Loading Loading @@ -3136,7 +3141,7 @@ static ivas_error get_channel_config( return IVAS_ERR_OK; } #endif /*---------------------------------------------------------------------* * printConfigInfo_dec( ) Loading
lib_rend/ivas_output_init_fx.c +117 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,10 @@ #include "ivas_prot_fx.h" #include "ivas_prot.h" #include "ivas_prot_rend.h" #ifdef FIX_DISCLAIMER #include <string.h> #endif Word16 ivas_get_nchan_buffers_dec_ivas_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ const Word16 sba_analysis_order, /* i : SBA order evaluated in SBA decoder */ Loading Loading @@ -157,3 +161,116 @@ Word16 ivas_get_nchan_buffers_dec_ivas_fx( return nchan_out_buff; } #ifdef FIX_DISCLAIMER /*---------------------------------------------------------------------* * get_channel_config() * * Gets a str related to audio configuration *---------------------------------------------------------------------*/ ivas_error get_channel_config( const AUDIO_CONFIG config, /* i : audio configuration */ Word8 *str /* o : string with the configuration name */ ) { IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_MONO ) ) { strcpy( (char *) str, "Mono" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_STEREO ) ) { strcpy( (char *) str, "Stereo" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_ISM1 ) ) { strcpy( (char *) str, "Object-based audio (1 object)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_ISM2 ) ) { strcpy( (char *) str, "Object-based audio (2 objects)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_ISM3 ) ) { strcpy( (char *) str, "Object-based audio (3 objects)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_ISM4 ) ) { strcpy( (char *) str, "Object-based audio (4 objects)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_5_1 ) ) { strcpy( (char *) str, "Multichannel 5.1 (CICP6)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_7_1 ) ) { strcpy( (char *) str, "Multichannel 7.1 (CICP12)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_5_1_2 ) ) { strcpy( (char *) str, "Multichannel 5.1+2 (CICP14)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_5_1_4 ) ) { strcpy( (char *) str, "Multichannel 5.1+4 (CICP16)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_7_1_4 ) ) { strcpy( (char *) str, "Multichannel 7.1+4 (CICP19)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) { strcpy( (char *) str, "Multichannel (custom loudspeaker layout)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_MASA1 ) ) { strcpy( (char *) str, "Metadata-Assisted Spatial Audio mono (MASA1)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_MASA2 ) ) { strcpy( (char *) str, "Metadata-Assisted Spatial Audio stereo (MASA2)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_FOA ) ) { strcpy( (char *) str, "Ambisonics: First Order (FOA)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_HOA2 ) ) { strcpy( (char *) str, "Ambisonics: Second Order (HOA2)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_HOA3 ) ) { strcpy( (char *) str, "Ambisonics: Third Order (HOA3)" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_BINAURAL ) ) { strcpy( (char *) str, "Binaural: no room" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { strcpy( (char *) str, "Binaural: room with impulse responses" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { strcpy( (char *) str, "Binaural: room with reverb" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) { strcpy( (char *) str, "BINAURAL_SPLIT_CODED" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { strcpy( (char *) str, "Binaural_Split_PCM" ); } ELSE IF( EQ_16( (Word16) config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) { strcpy( (char *) str, "External renderer" ); } ELSE { return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Error: Incorrect Input/Output Configuration" ); } return IVAS_ERR_OK; } #endif