Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,7 @@ #define RTP_S4_251135_CR26253_0016_REV1 /* RTP Pack/Unpack API corresponding to CR 26253 */ #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 */ /* #################### End BASOP porting switches ############################ */ Loading lib_util/ivas_rtp_file.c +113 −3 Original line number Diff line number Diff line Loading @@ -153,16 +153,24 @@ 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 ISM_PI_DATA #ifdef _WIN32 if ( ftell( f_piDataOut ) > 3 ) #else if ( ftell( f_piDataOut ) > 2 ) { fprintf( f_piDataOut, ",\n" ); } #endif #else if ( ftell( f_piDataOut ) > 2 ) #endif while ( nPiDataPresent-- > 0 ) { Loading Loading @@ -334,6 +342,107 @@ 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}", fixedToFloat( cur->data.ismOrientation.orientation[n].w_fx, Q15 ), fixedToFloat( cur->data.ismOrientation.orientation[n].x_fx, Q15 ), fixedToFloat( cur->data.ismOrientation.orientation[n].y_fx, Q15 ), fixedToFloat( cur->data.ismOrientation.orientation[n].z_fx, Q15 ) ); } 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 @@ -341,6 +450,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 +574 −40 File changed.Preview size limit exceeded, changes collapsed. Show changes lib_util/ivas_rtp_pi_data.h +18 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,9 @@ typedef struct { size_t size; /* sizeof(IVAS_PIDATA_ISM_ID) */ uint32_t piDataType; /* IVAS_PI_ISM_ID */ #ifdef ISM_PI_DATA uint16_t numObjects; /* number of objects */ #endif uint8_t id[IVAS_MAX_NUM_OBJECTS]; /* 8-bit ISM id of object */ } IVAS_PIDATA_ISM_ID; Loading @@ -215,6 +218,9 @@ typedef struct { size_t size; /* sizeof(IVAS_PIDATA_ISM_GAIN) */ uint32_t piDataType; /* IVAS_PI_ISM_GAIN */ #ifdef ISM_PI_DATA uint16_t numObjects; /* number of objects */ #endif int8_t dB[IVAS_MAX_NUM_OBJECTS]; /* ISM gain in dB per object [-96, +3] */ } IVAS_PIDATA_ISM_GAIN; Loading @@ -223,6 +229,9 @@ typedef struct { size_t size; /* sizeof(IVAS_PIDATA_ISM_ORIENTATION) */ uint32_t piDataType; /* IVAS_PI_ISM_ORIENTATION */ #ifdef ISM_PI_DATA uint16_t numObjects; /* number of objects */ #endif IVAS_QUATERNION orientation[IVAS_MAX_NUM_OBJECTS]; /* Orientation of audio objects in ISM(s) */ } IVAS_PIDATA_ISM_ORIENTATION; Loading @@ -231,6 +240,9 @@ typedef struct { size_t size; /* sizeof(IVAS_PIDATA_ISM_POSITION) */ uint32_t piDataType; /* IVAS_PI_ISM_POSITION */ #ifdef ISM_PI_DATA uint16_t numObjects; /* number of objects */ #endif IVAS_COORDINATE position[IVAS_MAX_NUM_OBJECTS]; /* Position of audio objects in ISM(s) */ } IVAS_PIDATA_ISM_POSITION; Loading @@ -250,6 +262,9 @@ typedef struct { size_t size; /* sizeof(IVAS_PIDATA_ISM_ATTENUATION) */ uint32_t piDataType; /* IVAS_PI_ISM_DISTANCE_ATTENUATION */ #ifdef ISM_PI_DATA uint16_t numObjects; /* number of objects */ #endif IVAS_DIST_ATTEN distAtten[IVAS_MAX_NUM_OBJECTS]; /* Distance attenuation of audio objects */ } IVAS_PIDATA_ISM_ATTENUATION; Loading @@ -269,6 +284,9 @@ typedef struct { size_t size; /* sizeof(IVAS_PIDATA_ISM_DIRECTIVITY) */ uint32_t piDataType; /* IVAS_PI_ISM_DIRECTIVITY */ #ifdef ISM_PI_DATA uint16_t numObjects; /* number of objects */ #endif IVAS_ISM_DIRECTIVITY directivity[IVAS_MAX_NUM_OBJECTS]; /* Directivity of audio objects */ } IVAS_PIDATA_ISM_DIRECTIVITY; Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,7 @@ #define RTP_S4_251135_CR26253_0016_REV1 /* RTP Pack/Unpack API corresponding to CR 26253 */ #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 */ /* #################### End BASOP porting switches ############################ */ Loading
lib_util/ivas_rtp_file.c +113 −3 Original line number Diff line number Diff line Loading @@ -153,16 +153,24 @@ 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 ISM_PI_DATA #ifdef _WIN32 if ( ftell( f_piDataOut ) > 3 ) #else if ( ftell( f_piDataOut ) > 2 ) { fprintf( f_piDataOut, ",\n" ); } #endif #else if ( ftell( f_piDataOut ) > 2 ) #endif while ( nPiDataPresent-- > 0 ) { Loading Loading @@ -334,6 +342,107 @@ 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}", fixedToFloat( cur->data.ismOrientation.orientation[n].w_fx, Q15 ), fixedToFloat( cur->data.ismOrientation.orientation[n].x_fx, Q15 ), fixedToFloat( cur->data.ismOrientation.orientation[n].y_fx, Q15 ), fixedToFloat( cur->data.ismOrientation.orientation[n].z_fx, Q15 ) ); } 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 @@ -341,6 +450,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 +574 −40 File changed.Preview size limit exceeded, changes collapsed. Show changes
lib_util/ivas_rtp_pi_data.h +18 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,9 @@ typedef struct { size_t size; /* sizeof(IVAS_PIDATA_ISM_ID) */ uint32_t piDataType; /* IVAS_PI_ISM_ID */ #ifdef ISM_PI_DATA uint16_t numObjects; /* number of objects */ #endif uint8_t id[IVAS_MAX_NUM_OBJECTS]; /* 8-bit ISM id of object */ } IVAS_PIDATA_ISM_ID; Loading @@ -215,6 +218,9 @@ typedef struct { size_t size; /* sizeof(IVAS_PIDATA_ISM_GAIN) */ uint32_t piDataType; /* IVAS_PI_ISM_GAIN */ #ifdef ISM_PI_DATA uint16_t numObjects; /* number of objects */ #endif int8_t dB[IVAS_MAX_NUM_OBJECTS]; /* ISM gain in dB per object [-96, +3] */ } IVAS_PIDATA_ISM_GAIN; Loading @@ -223,6 +229,9 @@ typedef struct { size_t size; /* sizeof(IVAS_PIDATA_ISM_ORIENTATION) */ uint32_t piDataType; /* IVAS_PI_ISM_ORIENTATION */ #ifdef ISM_PI_DATA uint16_t numObjects; /* number of objects */ #endif IVAS_QUATERNION orientation[IVAS_MAX_NUM_OBJECTS]; /* Orientation of audio objects in ISM(s) */ } IVAS_PIDATA_ISM_ORIENTATION; Loading @@ -231,6 +240,9 @@ typedef struct { size_t size; /* sizeof(IVAS_PIDATA_ISM_POSITION) */ uint32_t piDataType; /* IVAS_PI_ISM_POSITION */ #ifdef ISM_PI_DATA uint16_t numObjects; /* number of objects */ #endif IVAS_COORDINATE position[IVAS_MAX_NUM_OBJECTS]; /* Position of audio objects in ISM(s) */ } IVAS_PIDATA_ISM_POSITION; Loading @@ -250,6 +262,9 @@ typedef struct { size_t size; /* sizeof(IVAS_PIDATA_ISM_ATTENUATION) */ uint32_t piDataType; /* IVAS_PI_ISM_DISTANCE_ATTENUATION */ #ifdef ISM_PI_DATA uint16_t numObjects; /* number of objects */ #endif IVAS_DIST_ATTEN distAtten[IVAS_MAX_NUM_OBJECTS]; /* Distance attenuation of audio objects */ } IVAS_PIDATA_ISM_ATTENUATION; Loading @@ -269,6 +284,9 @@ typedef struct { size_t size; /* sizeof(IVAS_PIDATA_ISM_DIRECTIVITY) */ uint32_t piDataType; /* IVAS_PI_ISM_DIRECTIVITY */ #ifdef ISM_PI_DATA uint16_t numObjects; /* number of objects */ #endif IVAS_ISM_DIRECTIVITY directivity[IVAS_MAX_NUM_OBJECTS]; /* Directivity of audio objects */ } IVAS_PIDATA_ISM_DIRECTIVITY; Loading