Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading lib_util/ivas_rtp_file.c +106 −0 Original line number Diff line number Diff line Loading @@ -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" ); } Loading Loading @@ -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: Loading @@ -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: Loading lib_util/ivas_rtp_pi_data.c +13 −13 Original line number Diff line number Diff line Loading @@ -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" ); } Loading Loading @@ -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; Loading Loading @@ -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" ); } Loading Loading @@ -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" ); } Loading @@ -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" ); } Loading @@ -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 */ } Loading @@ -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" ); } Loading Loading @@ -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" ); } Loading Loading @@ -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 */ } Loading @@ -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" ); } Loading Loading @@ -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 */ Loading @@ -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" ); } Loading Loading @@ -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 */ Loading lib_util/ivas_rtp_pi_data.h +6 −6 Original line number Diff line number Diff line Loading @@ -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 */ Loading @@ -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 */ Loading @@ -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 */ Loading @@ -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 Loading @@ -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 :- Loading @@ -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 Loading tests/rtp/ivasrtp.py +1 −1 Original line number Diff line number Diff line Loading @@ -443,7 +443,7 @@ class PIDATA: data: any = None MAX_PACKED_PI_SIZE = 32 MAX_PACKED_PI_SIZE = 48 ivasBitrates = [ 13200, 16400, Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading
lib_util/ivas_rtp_file.c +106 −0 Original line number Diff line number Diff line Loading @@ -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" ); } Loading Loading @@ -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: Loading @@ -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: Loading
lib_util/ivas_rtp_pi_data.c +13 −13 Original line number Diff line number Diff line Loading @@ -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" ); } Loading Loading @@ -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; Loading Loading @@ -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" ); } Loading Loading @@ -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" ); } Loading @@ -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" ); } Loading @@ -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 */ } Loading @@ -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" ); } Loading Loading @@ -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" ); } Loading Loading @@ -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 */ } Loading @@ -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" ); } Loading Loading @@ -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 */ Loading @@ -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" ); } Loading Loading @@ -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 */ Loading
lib_util/ivas_rtp_pi_data.h +6 −6 Original line number Diff line number Diff line Loading @@ -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 */ Loading @@ -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 */ Loading @@ -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 */ Loading @@ -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 Loading @@ -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 :- Loading @@ -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 Loading
tests/rtp/ivasrtp.py +1 −1 Original line number Diff line number Diff line Loading @@ -443,7 +443,7 @@ class PIDATA: data: any = None MAX_PACKED_PI_SIZE = 32 MAX_PACKED_PI_SIZE = 48 ivasBitrates = [ 13200, 16400, Loading