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

Add porting of ISM_PI_DATA from float main, float MR !2329. Includes already...

Add porting of ISM_PI_DATA from float main, float MR !2329. Includes already updated range for ISM_GAIN PI data, float MR !2386.
parent 17586d3b
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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 ############################ */

+113 −3
Original line number Diff line number Diff line
@@ -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 )
    {
@@ -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:
@@ -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:
+574 −40

File changed.

Preview size limit exceeded, changes collapsed.

+18 −0
Original line number Diff line number Diff line
@@ -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;

@@ -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;

@@ -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;

@@ -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;

@@ -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;

@@ -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;