Commit d6739f86 authored by janssontoftg's avatar janssontoftg
Browse files

Merge branch 'rtp-updates-sa4-134-porting' into 'main'

Port of rtp updates from SA4#134

See merge request !2602
parents a8d5672d 7bdf0370
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -167,6 +167,8 @@
#define PI_LATENCY                                     /* Support for PI latency */
#define DECODER_FORMAT_SWITCHING                       /* Re-initialize the decoder when the format/subformat of the incoming stream is changed */
#define FIX_SPLIT_RENDERING_ON_DECODER_RESTART         /* Re-configure split rendering on decoder restart */
#define RTP_UPDATES_SA4_134                            /* Updates to RTP during SA4 134 */
#define COMPACT_ORIENTATION_PI_DATA

/* #################### End BASOP porting switches ############################ */

+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 )
        {
+503 −24

File changed.

Preview size limit exceeded, changes collapsed.

Loading