Loading apps/renderer.c +50 −7 Original line number Diff line number Diff line Loading @@ -397,6 +397,8 @@ static IVAS_AUDIO_CONFIG ambisonicsOrderToEnum( const int16_t order ); static void parseSceneDescriptionFile( char *path, char *audioFilePath, InputConfig *inConfig, IsmPositionProvider *positionProvider, MasaFileReader **masaReaders, LfeRoutingConfig **lfeRoutingConfigs ); static void parseCombinedFormatInput( InputConfig *inConfig, char **configString ); static ivas_error parseCustomLayoutFile( const char *filePath, IVAS_CUSTOM_LS_DATA *pLsSetupCustom ); static CmdlnArgs parseCmdlnArgs( const int argc, char **argv ); Loading Loading @@ -2093,16 +2095,11 @@ static bool parseInConfig( inConfig->masaBuses[0].gain_dB = 0.0f; break; case IVAS_AUDIO_CONFIG_OBA: /* If input format is objects, parse the characters after "ISM" to get number of objects */ /* If input format is objects, parse the characters after "ISM" to get * number of objects and check for combined formats. */ { char *ptr = NULL; inConfig->numAudioObjects = (uint16_t) strtol( inFormatStr + 3, &ptr, 10 ); if ( ptr == NULL || *ptr != '\0' ) { /* Failed to parse string as a number */ fprintf( stderr, "Cannot parse string \"%s\" as a valid input format", inFormatStr ); return false; } if ( inConfig->numAudioObjects > RENDERER_MAX_ISM_INPUTS ) { fprintf( stderr, "Too many objects at input. Max %d supported.", RENDERER_MAX_ISM_INPUTS ); Loading @@ -2114,6 +2111,17 @@ static bool parseInConfig( inConfig->audioObjects[i].inputChannelIndex = i; inConfig->audioObjects[i].gain_dB = 0.0f; } if ( *ptr != '\0' ) { /* Try to parse combined format */ parseCombinedFormatInput( inConfig, &ptr ); } if ( ptr == NULL || *ptr != '\0' ) { /* Failed to parse string as a number */ fprintf( stderr, "Cannot parse string \"%s\" as a valid input format", inFormatStr ); return false; } } break; case IVAS_AUDIO_CONFIG_INVALID: Loading Loading @@ -3436,6 +3444,41 @@ static void parseMasa( return; } static void parseCombinedFormatInput( InputConfig *inConfig, char **configString ) { IVAS_AUDIO_CONFIG audioConfig; audioConfig = parseAudioConfig( *configString ); if ( audioConfig == IVAS_AUDIO_CONFIG_FOA || audioConfig == IVAS_AUDIO_CONFIG_HOA2 || audioConfig == IVAS_AUDIO_CONFIG_HOA3 ) { /* OSBA */ inConfig->numAmbisonicsBuses = 1; inConfig->ambisonicsBuses[0].audioConfig = audioConfig; inConfig->ambisonicsBuses[0].inputChannelIndex = inConfig->numAudioObjects; inConfig->ambisonicsBuses[0].gain_dB = -6.f; *configString += 4; /* Modify input gain for objects too */ for ( int16_t i = 0; i < inConfig->numAudioObjects; ++i ) { inConfig->audioObjects[i].gain_dB = -6.f; } } else if ( audioConfig == IVAS_AUDIO_CONFIG_MASA1 || audioConfig == IVAS_AUDIO_CONFIG_MASA2 ) { /* OMASA */ inConfig->numMasaBuses = 1; inConfig->masaBuses[0].audioConfig = audioConfig; inConfig->masaBuses[0].inputChannelIndex = inConfig->numAudioObjects; inConfig->masaBuses[0].gain_dB = 0.0f; *configString += 5; } return; } static ivas_error parseCustomLayoutFile( const char *filePath, IVAS_CUSTOM_LS_DATA *pLsSetupCustom ) Loading Loading
apps/renderer.c +50 −7 Original line number Diff line number Diff line Loading @@ -397,6 +397,8 @@ static IVAS_AUDIO_CONFIG ambisonicsOrderToEnum( const int16_t order ); static void parseSceneDescriptionFile( char *path, char *audioFilePath, InputConfig *inConfig, IsmPositionProvider *positionProvider, MasaFileReader **masaReaders, LfeRoutingConfig **lfeRoutingConfigs ); static void parseCombinedFormatInput( InputConfig *inConfig, char **configString ); static ivas_error parseCustomLayoutFile( const char *filePath, IVAS_CUSTOM_LS_DATA *pLsSetupCustom ); static CmdlnArgs parseCmdlnArgs( const int argc, char **argv ); Loading Loading @@ -2093,16 +2095,11 @@ static bool parseInConfig( inConfig->masaBuses[0].gain_dB = 0.0f; break; case IVAS_AUDIO_CONFIG_OBA: /* If input format is objects, parse the characters after "ISM" to get number of objects */ /* If input format is objects, parse the characters after "ISM" to get * number of objects and check for combined formats. */ { char *ptr = NULL; inConfig->numAudioObjects = (uint16_t) strtol( inFormatStr + 3, &ptr, 10 ); if ( ptr == NULL || *ptr != '\0' ) { /* Failed to parse string as a number */ fprintf( stderr, "Cannot parse string \"%s\" as a valid input format", inFormatStr ); return false; } if ( inConfig->numAudioObjects > RENDERER_MAX_ISM_INPUTS ) { fprintf( stderr, "Too many objects at input. Max %d supported.", RENDERER_MAX_ISM_INPUTS ); Loading @@ -2114,6 +2111,17 @@ static bool parseInConfig( inConfig->audioObjects[i].inputChannelIndex = i; inConfig->audioObjects[i].gain_dB = 0.0f; } if ( *ptr != '\0' ) { /* Try to parse combined format */ parseCombinedFormatInput( inConfig, &ptr ); } if ( ptr == NULL || *ptr != '\0' ) { /* Failed to parse string as a number */ fprintf( stderr, "Cannot parse string \"%s\" as a valid input format", inFormatStr ); return false; } } break; case IVAS_AUDIO_CONFIG_INVALID: Loading Loading @@ -3436,6 +3444,41 @@ static void parseMasa( return; } static void parseCombinedFormatInput( InputConfig *inConfig, char **configString ) { IVAS_AUDIO_CONFIG audioConfig; audioConfig = parseAudioConfig( *configString ); if ( audioConfig == IVAS_AUDIO_CONFIG_FOA || audioConfig == IVAS_AUDIO_CONFIG_HOA2 || audioConfig == IVAS_AUDIO_CONFIG_HOA3 ) { /* OSBA */ inConfig->numAmbisonicsBuses = 1; inConfig->ambisonicsBuses[0].audioConfig = audioConfig; inConfig->ambisonicsBuses[0].inputChannelIndex = inConfig->numAudioObjects; inConfig->ambisonicsBuses[0].gain_dB = -6.f; *configString += 4; /* Modify input gain for objects too */ for ( int16_t i = 0; i < inConfig->numAudioObjects; ++i ) { inConfig->audioObjects[i].gain_dB = -6.f; } } else if ( audioConfig == IVAS_AUDIO_CONFIG_MASA1 || audioConfig == IVAS_AUDIO_CONFIG_MASA2 ) { /* OMASA */ inConfig->numMasaBuses = 1; inConfig->masaBuses[0].audioConfig = audioConfig; inConfig->masaBuses[0].inputChannelIndex = inConfig->numAudioObjects; inConfig->masaBuses[0].gain_dB = 0.0f; *configString += 5; } return; } static ivas_error parseCustomLayoutFile( const char *filePath, IVAS_CUSTOM_LS_DATA *pLsSetupCustom ) Loading