Commit ee40262a authored by kinuthia's avatar kinuthia
Browse files

fix directivity parsing and add documentation

- Add documentation of directivity pattern id (-DPID) in usage_dec()
- Bug fix in text_to_binary_payload.py when writing directivity to
  binary payload
  parameters
- Bug fix for binary parsing of directivity
parent b2dbe8f1
Loading
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -1381,7 +1381,7 @@ static bool parseCmdlIVAS_dec(
            arg->acousticEnvironmentId = (int16_t) atoi( argv[i++] );
        }
#ifdef CONTROL_METADATA_DIRECTIVITY
        else if ( strcmp( argv_to_upper, "-ISMDIRECTIVITY" ) == 0 )
        else if ( strcmp( argv_to_upper, "-DPID" ) == 0 )
        {
            ++i;
            int16_t tmp;
@@ -1579,7 +1579,10 @@ static void usage_dec( void )
    fprintf( stdout, "                      Currently, all values default to level 3 (full functionality).\n" );
#endif
    fprintf( stdout, "-exof File          : External orientation file for external orientation trajectory\n" );
    fprintf( stdout, "-aeid ID            : Acoustic environment ID (number >= 0) for BINAURAL_ROOM_REVERB output configuration\n" );
    #ifdef CONTROL_METADATA_DIRECTIVITY

    #endif
    fprintf( stdout, "-dpid ID            : Directivity pattern ID(s) (space-separated list of up to 4 numbers can be specified) for binaural output configuration\n" );
#ifdef DEBUG_MODE_INFO
#ifdef DEBUG_MODE_INFO_TWEAK
    fprintf( stdout, "-info <folder>      : specify subfolder name for debug output\n" );
+30 −0
Original line number Diff line number Diff line
@@ -175,6 +175,9 @@ typedef struct
    float lfeConfigElevation;
    bool lfeCustomRoutingEnabled;
    char inLfePanningMatrixFile[RENDERER_MAX_CLI_ARG_LENGTH];
#ifdef CONTROL_METADATA_DIRECTIVITY
    uint16_t directivityPatternId[RENDERER_MAX_ISM_INPUTS];
#endif
#ifdef CONTROL_METADATA_REVERB
    uint16_t acousticEnvironmentId;
#endif
@@ -206,6 +209,9 @@ typedef enum
#endif
    CmdLnOptionId_referenceVectorFile,
    CmdLnOptionId_exteriorOrientationFile,
#ifdef CONTROL_METADATA_DIRECTIVITY
    CmdLnOptionId_directivityPatternId,
#endif
#ifdef CONTROL_METADATA_REVERB
    CmdLnOptionId_acousticEnvironmentId
#endif
@@ -348,6 +354,14 @@ static const CmdLnParser_Option cliOptions[] = {
        .matchShort = "exof",
        .description = "External orientation trajectory file for simulation of external orientations",
    },
#ifdef CONTROL_METADATA_DIRECTIVITY
    {
        .id = CmdLnOptionId_directivityPatternId,
        .match = "ism_directivity_pattern_id",
        .matchShort = "dpid",
        .description = "Directivity pattern ID(s) (space-separated list of up to 4 numbers can be specified) for binaural output configuration",
    },
#endif
#ifdef CONTROL_METADATA_REVERB
    {
        .id = CmdLnOptionId_acousticEnvironmentId,
@@ -2521,6 +2535,13 @@ static CmdlnArgs defaultArgs(
    args.lfeCustomRoutingEnabled = false;
    clearString( args.inLfePanningMatrixFile );

#ifdef CONTROL_METADATA_DIRECTIVITY
    for ( int32_t i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i )
    {
        args.directivityPatternId[i] = 0;
    }
#endif

#ifdef CONTROL_METADATA_REVERB
    args.acousticEnvironmentId = 0;
#endif
@@ -2664,6 +2685,15 @@ static void parseOption(
                exit( -1 );
            }
            break;
#ifdef CONTROL_METADATA_DIRECTIVITY
        case CmdLnOptionId_directivityPatternId:
            assert( numOptionValues <= RENDERER_MAX_ISM_INPUTS );
            for ( int16_t i = 0; i < numOptionValues; ++i )
            {
                args->directivityPatternId[i] = (int16_t) strtol( optionValues[i], NULL, 10 );
            }
            break;
#endif
#ifdef CONTROL_METADATA_REVERB
        case CmdLnOptionId_acousticEnvironmentId:
            assert( numOptionValues == 1 );
+7 −2
Original line number Diff line number Diff line
@@ -1841,11 +1841,12 @@ static ivas_error RenderConfigReader_readBinary(
                free( pRenderConfigReader->pDP );
            }

            pRenderConfigReader->nDP = nDP;

            if ( ( pRenderConfigReader->pDP = (DirectrivityPat *) malloc( pRenderConfigReader->nDP * sizeof( DirectrivityPat ) ) ) == NULL )
            {
                return IVAS_ERR_FAILED_ALLOC;
            }
            pRenderConfigReader->nDP = nDP;

            for ( n = 0; n < nDP; n++ )
            {
@@ -2817,7 +2818,11 @@ ivas_error RenderConfigReader_read(
                    fprintf( stderr, "        PARAM: %s -> %s\n", item, pValue );
#endif
#ifdef CONTROL_METADATA_REVERB
#ifdef CONTROL_METADATA_DIRECTIVITY
                    if ( strcmp( item, "REVERBFILE" ) == 0 )
#else
                    if ( strcmp( item, "BINARYCONFIG" ) == 0 )
#endif
                    {
                        /* get correct case reverb configuration file path */
                        sscanf( pTemp + params_idx, "%*[^=] = %[^;];", pValue );
@@ -2960,7 +2965,7 @@ ivas_error RenderConfigReader_getAcousticEnvironment(

ivas_error RenderConfigReader_getDirectivity(
    RenderConfigReader *pRenderConfigReader, /* i  : RenderConfigReader handle              */
    uint16_t *id,                            /* i  : directivity pattern ID                 */
    uint16_t *id,                            /* i  : Directivity pattern ID                 */
    float *directivity                       /* o  : Target directivity                     */
)
{
+1 −1
Original line number Diff line number Diff line
@@ -159,8 +159,8 @@ def parse_reverb_text_configuration_and_generate_binary_payload(file):
    # parse directivity
    hasDirectivity = len(sections['directivitySetting']) > 0
    data += get_bool_code(hasDirectivity)
    data += bitarray(get_id_code(len(sections['directivityPattern'])))
    if hasDirectivity:
        data += bitarray(get_id_code(len(sections['directivityPattern'])))
        for index, dir_pattern in sections['directivityPattern'].items():
            data += bitarray(get_id_code(eval_option(index)))
            dir_values = eval_option(dir_pattern['directivity'])