Commit 87fac8a6 authored by norvell's avatar norvell
Browse files

Fixes for flexible reading of metadata in META format for external renderer

parent fb1e163b
Loading
Loading
Loading
Loading
Loading
+17 −21
Original line number Diff line number Diff line
@@ -2065,36 +2065,31 @@ static void parseObjectPosition(
    uint16_t *positionDuration )
{
    char *endptr;
#ifdef TD5
    int16_t read_values;
    float meta_prm[7] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f };

    readNextMetadataChunk( line, "," );
    *positionDuration = (uint16_t) strtol( line, &endptr, 10 );
    readNextMetadataChunk( line, "\n" );

    if ( *endptr != '\0' )
    {
        fprintf( stderr, "Error reading metadata\n" );
        exit( -1 );
    }

    readNextMetadataChunk( line, "," );
    position->azimuth = strtof( line, &endptr );
    read_values = (int16_t) sscanf( line, "%f,%f,%f,%f,%f,%f,%f", &meta_prm[0], &meta_prm[1], &meta_prm[2], &meta_prm[3], &meta_prm[4], &meta_prm[5], &meta_prm[6] );

    if ( *endptr != '\0' )
    if ( read_values < 2 )
    {
        fprintf( stderr, "Error reading metadata\n" );
        exit( -1 );
    }

    readNextMetadataChunk( line, "\n" );
    position->elevation = strtof( line, &endptr );
    if ( *endptr != '\0' )
    {
        fprintf( stderr, "Error reading metadata\n" );
        exit( -1 );
    }
    position->azimuth = meta_prm[0];
    position->elevation = meta_prm[1];
    position->radius = meta_prm[2];
    position->yaw = meta_prm[5];
    position->pitch = meta_prm[6];
#else

#ifdef TD5
    readNextMetadataChunk( line, "," );
    position->radius = strtof( line, &endptr );
    *positionDuration = (uint16_t) strtol( line, &endptr, 10 );

    if ( *endptr != '\0' )
    {
@@ -2102,8 +2097,9 @@ static void parseObjectPosition(
        exit( -1 );
    }

    readNextMetadataChunk( line, "\n" );
    position->yaw = strtof( line, &endptr );
    readNextMetadataChunk( line, "," );
    position->azimuth = strtof( line, &endptr );

    if ( *endptr != '\0' )
    {
        fprintf( stderr, "Error reading metadata\n" );
@@ -2111,7 +2107,7 @@ static void parseObjectPosition(
    }

    readNextMetadataChunk( line, "\n" );
    position->pitch = strtof( line, &endptr );
    position->elevation = strtof( line, &endptr );
    if ( *endptr != '\0' )
    {
        fprintf( stderr, "Error reading metadata\n" );
+5 −0
Original line number Diff line number Diff line
@@ -1005,6 +1005,11 @@ static IVAS_REND_AudioObjectPosition defaultObjectPosition(

    pos.azimuth = 0.0f;
    pos.elevation = 0.0f;
#ifdef TD5
    pos.radius = 1.0f;
    pos.yaw = 0.0f;
    pos.pitch = 0.0f;
#endif

    return pos;
}