Unverified Commit c9efdec2 authored by janssontoftg's avatar janssontoftg
Browse files

missing fixes

parent bef93c59
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -163,6 +163,7 @@
#define IVAS_RTPDUMP                                   /* RTPDUMP writing and reading for IVAS payloads */
#define FIXED_RTP_SEQUENCE_NUM                         /* Remove random sequence number initialization */
#define ISM_PI_DATA                                    /* Add reading and packing/unpacking of ISM PI data */
#define PI_DATA_FIX                                    /* Fix for PI Data JSON file */

/* ################### Start BE switches ################################# */
/* only BE switches wrt selection floating point code */
+106 −0
Original line number Diff line number Diff line
@@ -152,13 +152,20 @@ void IVAS_RTP_LogPiData(
    uint32_t nPiDataPresent  /* i   : Number of valid elements in the piData array                       */
)
{
#ifdef ISM_PI_DATA
    uint16_t n;
#endif
    uint32_t timestamp = ~0u;
    if ( f_piDataOut == NULL || piData == NULL || nPiDataPresent == 0 )
    {
        return;
    }

#ifdef PI_DATA_FIX
    if ( ftell( f_piDataOut ) > 3 )
#else
    if ( ftell( f_piDataOut ) > 2 )
#endif
    {
        fprintf( f_piDataOut, ",\n" );
    }
@@ -324,6 +331,104 @@ void IVAS_RTP_LogPiData(
                fprintf( f_piDataOut, "{}" );
            }
            break;
#ifdef ISM_PI_DATA
            case IVAS_PI_ISM_ORIENTATION:
            {
                fprintf( f_piDataOut, "[\n" );
                for ( n = 0; n < cur->data.ismOrientation.numObjects; n++ )
                {
                    if ( n != 0 )
                    {
                        fprintf( f_piDataOut, ",\n" );
                    }
                    fprintf( f_piDataOut, "\t\t\t{\n\t\t\t\t\"w\": %f,\n\t\t\t\t\"x\": %f,\n\t\t\t\t\"y\": %f,\n\t\t\t\t\"z\": %f \n\t\t\t}",
                             cur->data.ismOrientation.orientation[n].w, cur->data.ismOrientation.orientation[n].x, cur->data.ismOrientation.orientation[n].y, cur->data.ismOrientation.orientation[n].z );
                }
                fprintf( f_piDataOut, "\n\t\t]" );
            }
            break;
            case IVAS_PI_ISM_NUM:
            {
                fprintf( f_piDataOut, "{\n" );
                fprintf( f_piDataOut, "\t\t\t\"num\": %d", cur->data.ismNum.numObjects );
                fprintf( f_piDataOut, "\n\t\t}" );
            }
            break;
            case IVAS_PI_ISM_ID:
            {
                fprintf( f_piDataOut, "{\n" );
                fprintf( f_piDataOut, "\t\t\t\"ids\": [\n" );
                for ( n = 0; n < cur->data.ismId.numObjects; n++ )
                {
                    if ( n != 0 )
                    {
                        fprintf( f_piDataOut, ",\n" );
                    }
                    fprintf( f_piDataOut, "\t\t\t\t%d", cur->data.ismId.id[n] );
                }
                fprintf( f_piDataOut, "\n\t\t\t]" );
                fprintf( f_piDataOut, "\n\t\t}" );
            }
            break;
            case IVAS_PI_ISM_GAIN:
            {
                fprintf( f_piDataOut, "{\n" );
                fprintf( f_piDataOut, "\t\t\t\"gains\": [\n" );
                for ( n = 0; n < cur->data.ismGain.numObjects; n++ )
                {
                    if ( n != 0 )
                    {
                        fprintf( f_piDataOut, ",\n" );
                    }
                    fprintf( f_piDataOut, "\t\t\t\t%d", cur->data.ismGain.dB[n] );
                }
                fprintf( f_piDataOut, "\n\t\t\t]" );
                fprintf( f_piDataOut, "\n\t\t}" );
            }
            break;
            case IVAS_PI_ISM_POSITION:
            {
                fprintf( f_piDataOut, "[\n" );
                for ( n = 0; n < cur->data.ismPosition.numObjects; n++ )
                {
                    if ( n != 0 )
                    {
                        fprintf( f_piDataOut, ",\n" );
                    }
                    fprintf( f_piDataOut, "\t\t\t{\n\t\t\t\t\"x\": %f,\n\t\t\t\t\"y\": %f,\n\t\t\t\t\"z\": %f \n\t\t\t}", cur->data.ismPosition.position[n].x, cur->data.ismPosition.position[n].y, cur->data.ismPosition.position[n].z );
                }
                fprintf( f_piDataOut, "\n\t\t]" );
            }
            break;
            case IVAS_PI_ISM_DISTANCE_ATTENUATION:
            {
                fprintf( f_piDataOut, "[\n" );
                for ( n = 0; n < cur->data.ismAttenuation.numObjects; n++ )
                {
                    if ( n != 0 )
                    {
                        fprintf( f_piDataOut, ",\n" );
                    }
                    fprintf( f_piDataOut, "\t\t\t{\n\t\t\t\t\"ref_dist\": %f,\n\t\t\t\t\"max_dist\": %f,\n\t\t\t\t\"roll_off\": %f \n\t\t\t}", cur->data.ismAttenuation.distAtten[n].ref_dist, cur->data.ismAttenuation.distAtten[n].max_dist, cur->data.ismAttenuation.distAtten[n].roll );
                }
                fprintf( f_piDataOut, "\n\t\t]" );
            }
            break;
            case IVAS_PI_ISM_DIRECTIVITY:
            {
                fprintf( f_piDataOut, "[\n" );
                for ( n = 0; n < cur->data.ismDirectivity.numObjects; n++ )
                {
                    if ( n != 0 )
                    {
                        fprintf( f_piDataOut, ",\n" );
                    }
                    fprintf( f_piDataOut, "\t\t\t{\n\t\t\t\t\"inner_ang\": %d,\n\t\t\t\t\"outer_ang\": %d,\n\t\t\t\t\"outer_att\": %f \n\t\t\t}", cur->data.ismDirectivity.directivity[n].innerConeAngle, cur->data.ismDirectivity.directivity[n].outerConeAngle, cur->data.ismDirectivity.directivity[n].outerAttenuationdB );
                }
                fprintf( f_piDataOut, "\n\t\t]" );
            }
            break;
#else
            case IVAS_PI_ISM_NUM:
            case IVAS_PI_ISM_ID:
            case IVAS_PI_ISM_GAIN:
@@ -331,6 +436,7 @@ void IVAS_RTP_LogPiData(
            case IVAS_PI_ISM_POSITION:
            case IVAS_PI_ISM_DISTANCE_ATTENUATION:
            case IVAS_PI_ISM_DIRECTIVITY:
#endif
            case IVAS_PI_PI_LATENCY:
            case IVAS_PI_R_ISM_ID:
            case IVAS_PI_R_ISM_GAIN:
+13 −13
Original line number Diff line number Diff line
@@ -175,7 +175,7 @@ static ivas_error packISMOrientation( const IVAS_PIDATA_GENERIC *piData, uint8_t
        return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Incorrect PI ID in Orientation PI data" );
    }
    /* Orientation data is 8 bytes, header is 2 bytes */
    if ( maxDataBytes < 8 * IVAS_PI_MAX_OBJECTS + 2 )
    if ( maxDataBytes < 8 * IVAS_MAX_NUM_OBJECTS + 2 )
    {
        return IVAS_ERROR( IVAS_ERR_RTP_INSUFFICIENT_OUTPUT_SIZE, "Insufficient space to pack Orientation PI data" );
    }
@@ -235,7 +235,7 @@ static ivas_error unpackISMOrientation( const uint8_t *buffer, uint32_t numDataB
        ism_orientation->orientation[n].y = FLOAT_FROM_Q15( readInt16( &buffer[8 * n + 4] ) );
        ism_orientation->orientation[n].z = FLOAT_FROM_Q15( readInt16( &buffer[8 * n + 6] ) );
    }
    for ( ; n < IVAS_PI_MAX_OBJECTS; n++ )
    for ( ; n < IVAS_MAX_NUM_OBJECTS; n++ )
    {
        ism_orientation->orientation[n].w = 0.0f;
        ism_orientation->orientation[n].x = 0.0f;
@@ -589,7 +589,7 @@ static ivas_error packISMPosition( const IVAS_PIDATA_GENERIC *piData, uint8_t *b
    }

    /* Position data is 6 bytes, header is 2 bytes */
    if ( maxDataBytes < 6 * IVAS_PI_MAX_OBJECTS + 2 )
    if ( maxDataBytes < 6 * IVAS_MAX_NUM_OBJECTS + 2 )
    {
        return IVAS_ERROR( IVAS_ERR_RTP_INSUFFICIENT_OUTPUT_SIZE, "Insufficient space to pack ISM POSITION PI data" );
    }
@@ -851,7 +851,7 @@ static ivas_error packISMID( const IVAS_PIDATA_GENERIC *piData, uint8_t *buffer,
    }

    /* ISM_ID data is 1 byte per object */
    if ( maxDataBytes < 1 * IVAS_PI_MAX_OBJECTS )
    if ( maxDataBytes < 1 * IVAS_MAX_NUM_OBJECTS )
    {
        return IVAS_ERROR( IVAS_ERR_RTP_INSUFFICIENT_OUTPUT_SIZE, "Insufficient space to pack ISM_NUM PI data" );
    }
@@ -873,7 +873,7 @@ static ivas_error unpackISMID( const uint8_t *buffer, uint32_t numDataBytes, IVA
    IVAS_PIDATA_ISM_ID *ism_id = (IVAS_PIDATA_ISM_ID *) piData;

    /* ISM_ID data is 1 byte per object */
    if ( numDataBytes > IVAS_PI_MAX_OBJECTS )
    if ( numDataBytes > IVAS_MAX_NUM_OBJECTS )
    {
        return IVAS_ERROR( IVAS_ERR_RTP_UNPACK_PI_DATA, "Incorrect size to unpack ISM_ID PI data" );
    }
@@ -887,7 +887,7 @@ static ivas_error unpackISMID( const uint8_t *buffer, uint32_t numDataBytes, IVA
    {
        ism_id->id[n] = buffer[n];
    }
    for ( ; n < IVAS_PI_MAX_OBJECTS; n++ )
    for ( ; n < IVAS_MAX_NUM_OBJECTS; n++ )
    {
        ism_id->id[n] = 0; /* Initializing to 0, although there might be another object with this ID */
    }
@@ -914,7 +914,7 @@ static ivas_error packISMGain( const IVAS_PIDATA_GENERIC *piData, uint8_t *buffe
    }

    /* ISM_GAIN data is 1 byte per object */
    if ( maxDataBytes < 1 * IVAS_PI_MAX_OBJECTS )
    if ( maxDataBytes < 1 * IVAS_MAX_NUM_OBJECTS )
    {
        return IVAS_ERROR( IVAS_ERR_RTP_INSUFFICIENT_OUTPUT_SIZE, "Insufficient space to pack ISM_GAIN PI data" );
    }
@@ -943,7 +943,7 @@ static ivas_error unpackISMGain( const uint8_t *buffer, uint32_t numDataBytes, I
    IVAS_PIDATA_ISM_GAIN *ism_gain = (IVAS_PIDATA_ISM_GAIN *) piData;

    /* ISM_GAIN data is 1 byte per object */
    if ( numDataBytes > IVAS_PI_MAX_OBJECTS )
    if ( numDataBytes > IVAS_MAX_NUM_OBJECTS )
    {
        return IVAS_ERROR( IVAS_ERR_RTP_UNPACK_PI_DATA, "Incorrect size to unpack ISM_GAIN PI data" );
    }
@@ -976,7 +976,7 @@ static ivas_error unpackISMGain( const uint8_t *buffer, uint32_t numDataBytes, I
            return IVAS_ERROR( IVAS_ERR_RTP_UNPACK_PI_DATA, "Incorrect index for ISM_GAIN PI data" );
        }
    }
    for ( ; n < IVAS_PI_MAX_OBJECTS; n++ )
    for ( ; n < IVAS_MAX_NUM_OBJECTS; n++ )
    {
        ism_gain->dB[n] = 0; /* Set to default */
    }
@@ -1002,7 +1002,7 @@ static ivas_error packISMDistanceAttenuation( const IVAS_PIDATA_GENERIC *piData,
    }

    /* ISM_DISTANCE_ATTENUATION data is 3 bytes per object */
    if ( maxDataBytes > 3 * IVAS_PI_MAX_OBJECTS )
    if ( maxDataBytes > 3 * IVAS_MAX_NUM_OBJECTS )
    {
        return IVAS_ERROR( IVAS_ERR_RTP_INSUFFICIENT_OUTPUT_SIZE, "Insufficient space to pack ISM_DISTANCE_ATTENUATION PI data" );
    }
@@ -1054,7 +1054,7 @@ static ivas_error unpackISMDistanceAttenuation( const uint8_t *buffer, uint32_t
        ism_att->distAtten[n].max_dist = (float) ( ( lWord >> 12 ) & MASK_6BIT ) + 1;
        ism_att->distAtten[n].roll = ( ( lWord >> 6 ) & MASK_6BIT ) / 10.0f;
    }
    for ( ; n < IVAS_PI_MAX_OBJECTS; n++ )
    for ( ; n < IVAS_MAX_NUM_OBJECTS; n++ )
    {
        ism_att->distAtten[n].ref_dist = 1.0f;  /* Set to default */
        ism_att->distAtten[n].max_dist = 16.0f; /* Set to default */
@@ -1081,7 +1081,7 @@ static ivas_error packISMDirectivity( const IVAS_PIDATA_GENERIC *piData, uint8_t
    }

    /* ISM_DIRECTIVITY data is 2 bytes per object, header is 2 bytes */
    if ( maxDataBytes > 2 * IVAS_PI_MAX_OBJECTS )
    if ( maxDataBytes > 2 * IVAS_MAX_NUM_OBJECTS )
    {
        return IVAS_ERROR( IVAS_ERR_RTP_INSUFFICIENT_OUTPUT_SIZE, "Insufficient space to pack ISM_DIRECTIVITY PI data" );
    }
@@ -1144,7 +1144,7 @@ static ivas_error unpackISMDirectivity( const uint8_t *buffer, uint32_t numDataB
            ism_directivity->directivity[n].outerAttenuationdB = -3.0f * ( 31 - ( ( word >> 1 ) & MASK_5BIT ) );
        }
    }
    for ( ; n < IVAS_PI_MAX_OBJECTS; n++ )
    for ( ; n < IVAS_MAX_NUM_OBJECTS; n++ )
    {
        ism_directivity->directivity[n].innerConeAngle = 360;   /* Set to default */
        ism_directivity->directivity[n].outerConeAngle = 360;   /* Set to default */
+6 −6
Original line number Diff line number Diff line
@@ -210,7 +210,7 @@ typedef struct
#ifdef ISM_PI_DATA
        uint16_t numObjects; /* number of objects */
#endif
        uint8_t id[IVAS_PI_MAX_OBJECTS]; /* 8-bit ISM id of object     */
        uint8_t id[IVAS_MAX_NUM_OBJECTS]; /* 8-bit ISM id of object     */
    } IVAS_PIDATA_ISM_ID;

    /* ISM gain */
@@ -221,7 +221,7 @@ typedef struct
#ifdef ISM_PI_DATA
        uint16_t numObjects; /* number of objects */
#endif
        int8_t dB[IVAS_PI_MAX_OBJECTS]; /* ISM gain in dB per object [-96, +3] */
        int8_t dB[IVAS_MAX_NUM_OBJECTS]; /* ISM gain in dB per object [-96, +3] */
    } IVAS_PIDATA_ISM_GAIN;

    /* ISM orientation */
@@ -232,7 +232,7 @@ typedef struct
#ifdef ISM_PI_DATA
        uint16_t numObjects; /* number of objects */
#endif
        IVAS_QUATERNION orientation[IVAS_PI_MAX_OBJECTS]; /* Orientation of audio objects in ISM(s) */
        IVAS_QUATERNION orientation[IVAS_MAX_NUM_OBJECTS]; /* Orientation of audio objects in ISM(s) */
    } IVAS_PIDATA_ISM_ORIENTATION;

    /* ISM position */
@@ -243,7 +243,7 @@ typedef struct
#ifdef ISM_PI_DATA
        uint16_t numObjects; /* number of objects */
#endif
        IVAS_COORDINATE position[IVAS_PI_MAX_OBJECTS]; /* Position of audio objects in ISM(s) */
        IVAS_COORDINATE position[IVAS_MAX_NUM_OBJECTS]; /* Position of audio objects in ISM(s) */
    } IVAS_PIDATA_ISM_POSITION;

/* ISM distance attenuation comprising of following gains per ISM
@@ -265,7 +265,7 @@ typedef struct
#ifdef ISM_PI_DATA
        uint16_t numObjects; /* number of objects */
#endif
        IVAS_DIST_ATTEN distAtten[IVAS_PI_MAX_OBJECTS]; /* Distance attenuation of audio objects */
        IVAS_DIST_ATTEN distAtten[IVAS_MAX_NUM_OBJECTS]; /* Distance attenuation of audio objects */
    } IVAS_PIDATA_ISM_ATTENUATION;

/* ISM Directivity comprising of following per ISM :-
@@ -287,7 +287,7 @@ typedef struct
#ifdef ISM_PI_DATA
        uint16_t numObjects; /* number of objects */
#endif
        IVAS_ISM_DIRECTIVITY directivity[IVAS_PI_MAX_OBJECTS]; /* Directivity of audio objects        */
        IVAS_ISM_DIRECTIVITY directivity[IVAS_MAX_NUM_OBJECTS]; /* Directivity of audio objects        */
    } IVAS_PIDATA_ISM_DIRECTIVITY;

/* Diegetic and non-diegetic indication flag as per audio format
+1 −1
Original line number Diff line number Diff line
@@ -443,7 +443,7 @@ class PIDATA:
    data: any = None


MAX_PACKED_PI_SIZE = 32
MAX_PACKED_PI_SIZE = 48
ivasBitrates = [
    13200,
    16400,