Commit 3453d434 authored by janssontoftg's avatar janssontoftg Committed by Manuel Jander
Browse files

Port of rtp updates

parent ac65a1c9
Loading
Loading
Loading
Loading
+60 −4
Original line number Diff line number Diff line
@@ -145,11 +145,10 @@ static ivas_error IvasRtpFile_Read(
static const char *const PiDataNames[IVAS_PI_MAX_ID] = {
    "SCENE_ORIENTATION", "DEVICE_ORIENTATION_COMPENSATED", "DEVICE_ORIENTATION_UNCOMPENSATED",
    "ACOUSTIC_ENVIRONMENT", "AUDIO_DESCRIPTION", "ISM_NUM", "ISM_ID", "ISM_GAIN", "ISM_ORIENTATION",
    "ISM_POSITION", "ISM_DISTANCE_ATTENUATION", "ISM_DIRECTIVITY", "DIEGETIC_TYPE", "DYNAMIC_AUDIO_SUPPRESSION_INDICATION",
    "AUDIO_FOCUS_INDICATION", "RESERVED15", "PLAYBACK_DEVICE_ORIENTATION", "HEAD_ORIENTATION", "LISTENER_POSITION",
    "ISM_POSITION", "ISM_POSITION_COMPACT", "ISM_DISTANCE_ATTENUATION", "ISM_DIRECTIVITY", "DIEGETIC_TYPE", "DYNAMIC_AUDIO_SUPPRESSION_INDICATION",
    "AUDIO_FOCUS_INDICATION", "PLAYBACK_DEVICE_ORIENTATION", "HEAD_ORIENTATION", "LISTENER_POSITION",
    "DYNAMIC_AUDIO_SUPPRESSION_REQUEST", "AUDIO_FOCUS_REQUEST", "PI_LATENCY", "R_ISM_ID", "R_ISM_GAIN",
    "R_ISM_ORIENTATION", "R_ISM_POSITION", "R_ISM_DIRECTION", "RESERVED27", "RESERVED28", "RESERVED29",
    "RESERVED30", "NO_DATA"
    "R_ISM_ORIENTATION", "R_ISM_POSITION", "R_ISM_POSITION_COMPACT", "R_ISM_DIRECTION", "RESERVED27", "RESERVED28", "RESERVED29", "NO_DATA"
};

void IVAS_RTP_LogPiData(
@@ -345,11 +344,17 @@ void IVAS_RTP_LogPiData(
                fprintf( f_piDataOut, "\n\t\t}" );
            }
            break;
#ifdef RTP_S4_251135_CR26253_0016_REV1
            case IVAS_PI_RESERVED27:
            case IVAS_PI_RESERVED28:
            case IVAS_PI_RESERVED29:
#else
            case IVAS_PI_RESERVED15:
            case IVAS_PI_RESERVED27:
            case IVAS_PI_RESERVED28:
            case IVAS_PI_RESERVED29:
            case IVAS_PI_RESERVED30:
#endif
            {
                fprintf( f_piDataOut, "{}" );
            }
@@ -426,6 +431,22 @@ void IVAS_RTP_LogPiData(
                fprintf( f_piDataOut, "\n\t\t]" );
            }
            break;
#ifdef RTP_UPDATES_SA4_134
            case IVAS_PI_ISM_POSITION_COMPACT:
            {
                fprintf( f_piDataOut, "[\n" );
                for ( n = 0; n < cur->data.ismPositionCompact.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.ismPositionCompact.position[n].x, cur->data.ismPositionCompact.position[n].y, cur->data.ismPositionCompact.position[n].z );
                }
                fprintf( f_piDataOut, "\n\t\t]" );
            }
            break;
#endif
            case IVAS_PI_ISM_DISTANCE_ATTENUATION:
            {
                fprintf( f_piDataOut, "[\n" );
@@ -507,6 +528,14 @@ void IVAS_RTP_LogPiData(
                         cur->data.ismEditPosition.position.x, cur->data.ismEditPosition.position.y, cur->data.ismEditPosition.position.z );
            }
            break;
#ifdef RTP_UPDATES_SA4_134
            case IVAS_PI_R_ISM_POSITION_COMPACT:
            {
                fprintf( f_piDataOut, "{\n\t\t\t\"x\": %f,\n\t\t\t\"y\": %f,\n\t\t\t\"z\": %f \n\t\t}",
                         cur->data.ismEditPositionCompact.position.x, cur->data.ismEditPositionCompact.position.y, cur->data.ismEditPositionCompact.position.z );
            }
            break;
#endif
#endif
            case IVAS_PI_R_ISM_DIRECTION:
#ifdef REVERSE_ISM_PI_DATA
@@ -663,6 +692,20 @@ void IVAS_RTP_WriteExtPiData(
                }
            }
            break;
#ifdef RTP_UPDATES_SA4_134
            case IVAS_PI_ISM_POSITION_COMPACT:
            {
                for ( i = 0; i < numObj; ++i )
                {
                    if ( i != 0 )
                    {
                        fprintf( f_piDataOut, "," );
                    }
                    fprintf( f_piDataOut, "%f,%f,%f", cur->data.ismPositionCompact.position[i].x, cur->data.ismPositionCompact.position[i].y, cur->data.ismPositionCompact.position[i].z );
                }
            }
            break;
#endif
            case IVAS_PI_ISM_DISTANCE_ATTENUATION:
            {
                for ( i = 0; i < numObj; ++i )
@@ -794,16 +837,29 @@ void IVAS_RTP_WriteExtPiData(
                fprintf( f_piDataOut, "%f,%f,%f", cur->data.ismEditPosition.position.x, cur->data.ismEditPosition.position.y, cur->data.ismEditPosition.position.z );
            }
            break;
#ifdef RTP_UPDATES_SA4_134
            case IVAS_PI_R_ISM_POSITION_COMPACT:
            {
                fprintf( f_piDataOut, "%f,%f,%f", cur->data.ismEditPositionCompact.position.x, cur->data.ismEditPositionCompact.position.y, cur->data.ismEditPositionCompact.position.z );
            }
            break;
#endif
            case IVAS_PI_R_ISM_DIRECTION:
            {
                fprintf( f_piDataOut, "%f,%f", cur->data.ismEditDirection.azimuth, cur->data.ismEditDirection.elevation );
            }
            break;
#ifdef RTP_UPDATES_SA4_134
            case IVAS_PI_RESERVED27:
            case IVAS_PI_RESERVED28:
            case IVAS_PI_RESERVED29:
#else
            case IVAS_PI_RESERVED15:
            case IVAS_PI_RESERVED27:
            case IVAS_PI_RESERVED28:
            case IVAS_PI_RESERVED29:
            case IVAS_PI_RESERVED30:
#endif
                break;
#endif /* RTP_S4_251135_CR26253_0016_REV1 */
        }
+11 −0
Original line number Diff line number Diff line
@@ -51,6 +51,10 @@ enum MASK_BITS
#ifdef REVERSE_ISM_PI_DATA
    MASK_9BIT = 0x1FF,
#endif
#ifdef RTP_UPDATES_SA4_134
    MASK_10BIT = 0x3FF,
    MASK_11BIT = 0x7FF,
#endif

};

@@ -69,6 +73,13 @@ enum MASK_BITS

#define MAX_PI_POSITION_METERS   ( 327.68f )
#define FLOAT_FROM_Q15( q15Val ) ( (float) ( q15Val ) / 32768.0f )
#ifdef RTP_UPDATES_SA4_134
#define MAX_PI_COMPACT_POSITION_XY_METERS ( 10.24f )
#define MAX_PI_COMPACT_POSITION_Z_METERS  ( 5.12f )
#define FLOAT_FROM_Q10( q10Val )          ( (float) ( q10Val ) / 1024.0f )
#define FLOAT_FROM_Q9( q9Val )            ( (float) ( q9Val ) / 512.0f )
#define FLOAT_FROM_Q7( q7Val )            ( (float) ( q7Val ) / 128.0f )
#endif

extern const float mapDSR[1u << NBITS_DSR];
extern const float mapRT60[1u << NBITS_RT60];
+16 −0
Original line number Diff line number Diff line
@@ -1568,6 +1568,9 @@ static ivas_error parsePIData( IVAS_RTP_UNPACK_HANDLE hUnpack, uint32_t rtpTimes
{
    bool PF = true;
    uint32_t nBytes = *numBytes;
#ifdef RTP_UPDATES_SA4_134
    bool isFirstPiSize = true;
#endif

    while ( PF )
    {
@@ -1585,6 +1588,18 @@ static ivas_error parsePIData( IVAS_RTP_UNPACK_HANDLE hUnpack, uint32_t rtpTimes
        PM = ( piHeader0 & ( ~MASK_5BIT ) ) & MASK_7BIT; /* PI Marker Bits */
        piDataType = ( piHeader0 & MASK_5BIT );

#ifdef RTP_UPDATES_SA4_134
        do
        {
            byte = payload->buffer[nBytes++];
            piSize += isFirstPiSize ? ( byte & MASK_5BIT ) : byte;
            if ( nBytes >= payload->length )
            {
                return IVAS_ERROR( IVAS_ERR_RTP_UNDERFLOW, "Underflow during reading piSize" );
            }
            isFirstPiSize = false;
        } while ( byte == 255 || piSize == 32 );
#else
        do
        {
            byte = payload->buffer[nBytes++];
@@ -1594,6 +1609,7 @@ static ivas_error parsePIData( IVAS_RTP_UNPACK_HANDLE hUnpack, uint32_t rtpTimes
                return IVAS_ERROR( IVAS_ERR_RTP_UNDERFLOW, "Underflow during reading piSize" );
            }
        } while ( byte == 255 );
#endif

        if ( piDataType == IVAS_PI_NO_DATA )
        {
+501 −22

File changed.

Preview size limit exceeded, changes collapsed.

+31 −16
Original line number Diff line number Diff line
@@ -61,13 +61,17 @@ typedef enum
    IVAS_PI_ISM_GAIN,          /* gain of each object */
    IVAS_PI_ISM_ORIENTATION,   /* orientation of each object */
    IVAS_PI_ISM_POSITION,      /* position of each object */
#ifdef RTP_UPDATES_SA4_134
    IVAS_PI_ISM_POSITION_COMPACT, /* position of each object in compact representation */
#endif
    IVAS_PI_ISM_DISTANCE_ATTENUATION,             /* distance attenuation for each object */
    IVAS_PI_ISM_DIRECTIVITY,                      /* directivity of each object */
    IVAS_PI_DIEGETIC_TYPE,                        /* digetic audio indication */
    IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION_INDICATION, /* audio suppression indication */
    IVAS_PI_AUDIO_FOCUS_INDICATION,               /* audio focus indication (direction in Quaternions and/or level) */
#ifndef RTP_UPDATES_SA4_134
    IVAS_PI_RESERVED15, /* reserved */

#endif
    /* Reverse direction PI types */
    IVAS_PI_PLAYBACK_DEVICE_ORIENTATION,       /* orientation of the playback device in quaternions */
    IVAS_PI_HEAD_ORIENTATION,                  /* head orientation of the listener in Quaternions */
@@ -79,11 +83,16 @@ typedef enum
    IVAS_PI_R_ISM_GAIN,                        /* editing request for gain factor for received object */
    IVAS_PI_R_ISM_ORIENTATION,                 /* editing request for orientation for received object */
    IVAS_PI_R_ISM_POSITION,                    /* editing request for position for received object */
#ifdef RTP_UPDATES_SA4_134
    IVAS_PI_R_ISM_POSITION_COMPACT, /* editing request for position for received object in a compact representation*/
#endif
    IVAS_PI_R_ISM_DIRECTION, /* editing request for direction for received object */
    IVAS_PI_RESERVED27,      /* reserved */
    IVAS_PI_RESERVED28,      /* reserved */
    IVAS_PI_RESERVED29,      /* reserved */
#ifndef RTP_UPDATES_SA4_134
    IVAS_PI_RESERVED30, /* reserved */
#endif
#endif                    /* RTP_S4_251135_CR26253_0016_REV1 */
    IVAS_PI_NO_DATA = 31, /* Indicates an empty PI data frame */
    IVAS_PI_MAX_ID        /* Max number of PI data IDs supprted */
@@ -502,6 +511,9 @@ typedef union
    IVAS_PIDATA_ISM_GAIN ismGain;
    IVAS_PIDATA_ISM_ORIENTATION ismOrientation;
    IVAS_PIDATA_ISM_POSITION ismPosition;
#ifdef RTP_UPDATES_SA4_134
    IVAS_PIDATA_ISM_POSITION ismPositionCompact;
#endif
    IVAS_PIDATA_ISM_ATTENUATION ismAttenuation;
    IVAS_PIDATA_ISM_DIRECTIVITY ismDirectivity;
    IVAS_PIDATA_DIEGETIC digeticIndicator;
@@ -525,6 +537,9 @@ typedef union
    IVAS_PIDATA_POSITION ismEditPosition;
#else
    IVAS_PIDATA_ISM_EDIT_POSITION ismEditPosition;
#endif
#ifdef RTP_UPDATES_SA4_134
    IVAS_PIDATA_POSITION ismEditPositionCompact;
#endif
    IVAS_PIDATA_ISM_EDIT_DIRECTION ismEditDirection;
#endif /* RTP_S4_251135_CR26253_0016_REV1 */