Loading lib_util/ivas_rtp_internal.h +1 −1 Original line number Diff line number Diff line Loading @@ -76,8 +76,8 @@ enum MASK_BITS #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_Q11( q11Val ) ( (float) ( q11Val ) / 2048.0f ) #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 Loading lib_util/ivas_rtp_pi_data.c +29 −29 Original line number Diff line number Diff line Loading @@ -81,28 +81,28 @@ static int16_t ivasPayload_convertToQ15( float value ) #ifdef RTP_UPDATES_SA4_134 /*-----------------------------------------------------------------------* * ivasPayload_convertToQ11() * ivasPayload_convertToQ10() * * Convert a float value into a Q11 encoded value. * Convert a float value into a Q10 encoded value. *-----------------------------------------------------------------------*/ static int16_t ivasPayload_convertToQ11( float value ) static int16_t ivasPayload_convertToQ10( float value ) { value = ( value * 2048.0f ); value = value > +2048.0f ? +2048.0f : value; value = value < -2048.0f ? -2048.0f : value; value = ( value * 1024.0f ); value = value > +1024.0f ? +1024.0f : value; value = value < -1024.0f ? -1024.0f : value; return (int16_t) ( value ); } /*-----------------------------------------------------------------------* * ivasPayload_convertToQ10() * ivasPayload_convertToQ9() * * Convert a float value into a Q10 encoded value. * Convert a float value into a Q9 encoded value. *-----------------------------------------------------------------------*/ static int16_t ivasPayload_convertToQ10( float value ) static int16_t ivasPayload_convertToQ9( float value ) { value = ( value * 1024.0f ); value = value > +1024.0f ? +1024.0f : value; value = value < -1024.0f ? -1024.0f : value; value = ( value * 512.0f ); value = value > +512.0f ? +512.0f : value; value = value < -512.0f ? -512.0f : value; return (int16_t) ( value ); } Loading Loading @@ -751,9 +751,9 @@ static ivas_error packPositionCompact( const IVAS_PIDATA_GENERIC *piData, uint8_ buffer[nBytes++] = ( position->piDataType & MASK_5BIT ); /* PF/PM populated during final packing */ buffer[nBytes++] = 4; posX = (uint16_t) ivasPayload_convertToQ11( position->position.x / MAX_PI_COMPACT_POSITION_XY_METERS ); posY = (uint16_t) ivasPayload_convertToQ11( position->position.y / MAX_PI_COMPACT_POSITION_XY_METERS ); posZ = (uint16_t) ivasPayload_convertToQ10( position->position.z / MAX_PI_COMPACT_POSITION_Z_METERS ); posX = (uint16_t) ivasPayload_convertToQ10( position->position.x / MAX_PI_COMPACT_POSITION_XY_METERS ); posY = (uint16_t) ivasPayload_convertToQ10( position->position.y / MAX_PI_COMPACT_POSITION_XY_METERS ); posZ = (uint16_t) ivasPayload_convertToQ9( position->position.z / MAX_PI_COMPACT_POSITION_Z_METERS ); buffer[nBytes++] = (uint8_t) ( posX >> 8 ); buffer[nBytes++] = (uint8_t) ( ( ( posX & MASK_3BIT ) << 5 ) | posY >> 6 ); buffer[nBytes++] = (uint8_t) ( ( ( posY & MASK_6BIT ) << 2 ) | posZ >> 8 ); Loading @@ -767,7 +767,7 @@ static ivas_error packPositionCompact( const IVAS_PIDATA_GENERIC *piData, uint8_ static ivas_error unpackPositionCompact( const uint8_t *buffer, uint32_t numDataBytes, IVAS_PIDATA_GENERIC *piData ) { IVAS_PIDATA_POSITION *position = (IVAS_PIDATA_POSITION *) piData; uint32_t compactRead = 0; int32_t compactRead = 0; /* Compact position data is 4 bytes */ if ( numDataBytes != 4 ) Loading @@ -777,10 +777,10 @@ static ivas_error unpackPositionCompact( const uint8_t *buffer, uint32_t numData position->size = sizeof( IVAS_PIDATA_POSITION ); compactRead = ( (uint32_t) buffer[0] << 24 ) | ( (uint32_t) buffer[1] << 16 ) | ( (uint32_t) buffer[2] << 8 ) | ( (uint32_t) buffer[3] ); position->position.x = FLOAT_FROM_Q11( compactRead >> 21 ) * MAX_PI_COMPACT_POSITION_XY_METERS; position->position.y = FLOAT_FROM_Q11( ( compactRead >> 10 ) & MASK_11BIT ) * MAX_PI_COMPACT_POSITION_XY_METERS; position->position.z = FLOAT_FROM_Q10( compactRead & MASK_10BIT ) * MAX_PI_COMPACT_POSITION_Z_METERS; compactRead = ( (int32_t) buffer[0] << 24 ) | ( (int32_t) buffer[1] << 16 ) | ( (int32_t) buffer[2] << 8 ) | ( (int32_t) buffer[3] ); position->position.x = FLOAT_FROM_Q10( (int16_t) ( compactRead >> 21 ) ) * MAX_PI_COMPACT_POSITION_XY_METERS; position->position.y = FLOAT_FROM_Q10( ( (int16_t) ( compactRead >> 10 ) ) & MASK_11BIT ) * MAX_PI_COMPACT_POSITION_XY_METERS; position->position.z = FLOAT_FROM_Q9( (int16_t) ( compactRead & MASK_10BIT ) ) * MAX_PI_COMPACT_POSITION_Z_METERS; return IVAS_ERR_OK; } Loading Loading @@ -876,9 +876,9 @@ static ivas_error packISMPositionCompact( const IVAS_PIDATA_GENERIC *piData, uin buffer[nBytes++] = (uint8_t) ism_position->numObjects * 4; for ( n = 0; n < ism_position->numObjects; n++ ) { posX = (uint16_t) ivasPayload_convertToQ11( ism_position->position[n].x / MAX_PI_COMPACT_POSITION_XY_METERS ); posY = (uint16_t) ivasPayload_convertToQ11( ism_position->position[n].y / MAX_PI_COMPACT_POSITION_XY_METERS ); posZ = (uint16_t) ivasPayload_convertToQ10( ism_position->position[n].z / MAX_PI_COMPACT_POSITION_Z_METERS ); posX = (uint16_t) ivasPayload_convertToQ10( ism_position->position[n].x / MAX_PI_COMPACT_POSITION_XY_METERS ); posY = (uint16_t) ivasPayload_convertToQ10( ism_position->position[n].y / MAX_PI_COMPACT_POSITION_XY_METERS ); posZ = (uint16_t) ivasPayload_convertToQ9( ism_position->position[n].z / MAX_PI_COMPACT_POSITION_Z_METERS ); buffer[nBytes++] = (uint8_t) ( posX >> 8 ); buffer[nBytes++] = (uint8_t) ( ( ( posX & MASK_3BIT ) << 5 ) | posY >> 6 ); buffer[nBytes++] = (uint8_t) ( ( ( posY & MASK_6BIT ) << 2 ) | posZ >> 8 ); Loading @@ -891,7 +891,7 @@ static ivas_error packISMPositionCompact( const IVAS_PIDATA_GENERIC *piData, uin static ivas_error unpackISMPositionCompact( const uint8_t *buffer, uint32_t numDataBytes, IVAS_PIDATA_GENERIC *piData ) { uint16_t n; uint32_t compactRead = 0; int32_t compactRead = 0; IVAS_PIDATA_ISM_POSITION *ism_position = (IVAS_PIDATA_ISM_POSITION *) piData; /* Compact position data is 4 bytes */ Loading @@ -901,15 +901,15 @@ static ivas_error unpackISMPositionCompact( const uint8_t *buffer, uint32_t numD } ism_position->size = sizeof( IVAS_PIDATA_ISM_POSITION ); ism_position->piDataType = IVAS_PI_ISM_POSITION; ism_position->piDataType = IVAS_PI_ISM_POSITION_COMPACT; ism_position->numObjects = (uint16_t) numDataBytes / 4; for ( n = 0; n < ism_position->numObjects; n++ ) { compactRead = ( (uint32_t) buffer[0] << 24 ) | ( (uint32_t) buffer[1] << 16 ) | ( (uint32_t) buffer[2] << 8 ) | ( (uint32_t) buffer[3] ); ism_position->position[n].x = FLOAT_FROM_Q11( compactRead >> 21 ) * MAX_PI_COMPACT_POSITION_XY_METERS; ism_position->position[n].y = FLOAT_FROM_Q11( ( compactRead >> 10 ) & MASK_11BIT ) * MAX_PI_COMPACT_POSITION_XY_METERS; ism_position->position[n].z = FLOAT_FROM_Q10( compactRead & MASK_10BIT ) * MAX_PI_COMPACT_POSITION_Z_METERS; compactRead = ( (int32_t) buffer[0] << 24 ) | ( (int32_t) buffer[1] << 16 ) | ( (int32_t) buffer[2] << 8 ) | ( (int32_t) buffer[3] ); ism_position->position[n].x = FLOAT_FROM_Q10( (int16_t) ( compactRead >> 21 ) ) * MAX_PI_COMPACT_POSITION_XY_METERS; ism_position->position[n].y = FLOAT_FROM_Q10( ( (int16_t) ( compactRead >> 10 ) ) & MASK_11BIT ) * MAX_PI_COMPACT_POSITION_XY_METERS; ism_position->position[n].z = FLOAT_FROM_Q9( (int16_t) ( compactRead & MASK_10BIT ) ) * MAX_PI_COMPACT_POSITION_Z_METERS; } return IVAS_ERR_OK; } Loading tests/rtp/ivasrtp.py +4 −4 Original line number Diff line number Diff line Loading @@ -730,8 +730,8 @@ cmrLookup = [ ] q15 = lambda x: int(min(32767.0, max(-32768.0, x * 32768.0))) q11 = lambda x: int(min(2047.0, max(-2048.0, x * 2048.0))) q10 = lambda x: int(min(1023.0, max(-1024.0, x * 1024.0))) q9 = lambda x: int(min(511.0, max(-512.0, x * 512.0))) q7 = lambda x: int(min(127.0, max(-128.0, x * 128.0))) Loading Loading @@ -822,9 +822,9 @@ def packPositionsCompact(bitstrm: BitStream, data: any): assert ( type(position) == POSITION ), "Compact position PI Data expects a data of type list[POSITIONS]" bitstrm.append(f"intbe:11={q11(position.x / 20.48)}") bitstrm.append(f"intbe:11={q11(position.y / 20.48)}") bitstrm.append(f"intbe:10={q10(position.z / 10.24)}") bitstrm.append(f"int:11={q10(position.x / 10.24)}") bitstrm.append(f"int:11={q10(position.y / 10.24)}") bitstrm.append(f"int:10={q9(position.z / 5.12)}") def unpackOrientation(bitstrm: ConstBitStream, piSize: int) -> ORIENTATION: Loading tests/rtp/test_rtp.py +8 −0 Original line number Diff line number Diff line Loading @@ -193,6 +193,11 @@ def generatePiData(startTs: int, endTs: int) -> dict: y=random.randint(-32788, 32767) / 100.0, z=random.randint(-32788, 32767) / 100.0, ) somePositionCompact = lambda: POSITION( x=random.randint(-1024, 1023) / 100.0, y=random.randint(-1024, 1023) / 100.0, z=random.randint(-512, 511) / 100.0, ) someDesc = lambda: AUDIO_DESCRIPTION( isSpeech=bool(random.getrandbits(1)), isMusic=bool(random.getrandbits(1)), Loading Loading @@ -275,6 +280,7 @@ def generatePiData(startTs: int, endTs: int) -> dict: someISMGains = lambda num_ism : ISM_GAIN(gains=[random.choice([int(random.randint(-24,12)), -128]) for _ in range(num_ism)]) # -128 corresponds to -Inf someISMOrientations = lambda num_ism : [ORIENTATION(w=2*random.random()-1.0, x=2*random.random()-1.0, y=2*random.random()-1.0, z=2*random.random()-1.0) for _ in range(num_ism)] someISMPositions = lambda num_ism : [POSITION( x=random.randint(-32788, 32767)/100.0, y=random.randint(-32788, 32767)/100.0, z=random.randint(-32788, 32767)/100.0) for _ in range(num_ism)] someISMPositionsCompact = lambda num_ism : [POSITION( x=random.randint(-1024, 1023)/100.0, y=random.randint(-1024, 1023)/100.0, z=random.randint(-512, 511)/100.0) for _ in range(num_ism)] someISMDistanceAttenuations = lambda num_ism : [DISTANCE_ATTENUATION(ref_dist=random.randint(1,64)/10.0, max_dist=random.randint(1,64), roll_off=random.randint(0,40)/10.0) for _ in range(num_ism)] someISMDirectivities = lambda num_ism : [DIRECTIVITY(inner_ang=random.randint(0,24)*15, outer_ang=random.randint(0,24)*15, outer_att=random.choice([random.randint(-30,0)*3, -128])) for _ in range(num_ism)] # -128 corresponds to -Inf Loading @@ -301,6 +307,7 @@ def generatePiData(startTs: int, endTs: int) -> dict: pidata["ISM_GAIN"] = someISMGains(pidata["ISM_NUM"].num) pidata["ISM_ORIENTATION"] = someISMOrientations(pidata["ISM_NUM"].num) pidata["ISM_POSITION"] = someISMPositions(pidata["ISM_NUM"].num) pidata["ISM_POSITION_COMPACT"] = someISMPositionsCompact(pidata["ISM_NUM"].num) pidata["ISM_DISTANCE_ATTENUATION"] = someISMDistanceAttenuations(pidata["ISM_NUM"].num) pidata["ISM_DIRECTIVITY"] = someISMDirectivities(pidata["ISM_NUM"].num) Loading @@ -308,6 +315,7 @@ def generatePiData(startTs: int, endTs: int) -> dict: pidata["R_ISM_GAIN"] = someReverseISMGain() pidata["R_ISM_ORIENTATION"] = someOrientation() pidata["R_ISM_POSITION"] = somePosition() pidata["R_ISM_POSITION_COMPACT"] = somePositionCompact() pidata["R_ISM_DIRECTION"] = someReverseISMDirection() data[str(ts)] = pidata return data Loading Loading
lib_util/ivas_rtp_internal.h +1 −1 Original line number Diff line number Diff line Loading @@ -76,8 +76,8 @@ enum MASK_BITS #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_Q11( q11Val ) ( (float) ( q11Val ) / 2048.0f ) #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 Loading
lib_util/ivas_rtp_pi_data.c +29 −29 Original line number Diff line number Diff line Loading @@ -81,28 +81,28 @@ static int16_t ivasPayload_convertToQ15( float value ) #ifdef RTP_UPDATES_SA4_134 /*-----------------------------------------------------------------------* * ivasPayload_convertToQ11() * ivasPayload_convertToQ10() * * Convert a float value into a Q11 encoded value. * Convert a float value into a Q10 encoded value. *-----------------------------------------------------------------------*/ static int16_t ivasPayload_convertToQ11( float value ) static int16_t ivasPayload_convertToQ10( float value ) { value = ( value * 2048.0f ); value = value > +2048.0f ? +2048.0f : value; value = value < -2048.0f ? -2048.0f : value; value = ( value * 1024.0f ); value = value > +1024.0f ? +1024.0f : value; value = value < -1024.0f ? -1024.0f : value; return (int16_t) ( value ); } /*-----------------------------------------------------------------------* * ivasPayload_convertToQ10() * ivasPayload_convertToQ9() * * Convert a float value into a Q10 encoded value. * Convert a float value into a Q9 encoded value. *-----------------------------------------------------------------------*/ static int16_t ivasPayload_convertToQ10( float value ) static int16_t ivasPayload_convertToQ9( float value ) { value = ( value * 1024.0f ); value = value > +1024.0f ? +1024.0f : value; value = value < -1024.0f ? -1024.0f : value; value = ( value * 512.0f ); value = value > +512.0f ? +512.0f : value; value = value < -512.0f ? -512.0f : value; return (int16_t) ( value ); } Loading Loading @@ -751,9 +751,9 @@ static ivas_error packPositionCompact( const IVAS_PIDATA_GENERIC *piData, uint8_ buffer[nBytes++] = ( position->piDataType & MASK_5BIT ); /* PF/PM populated during final packing */ buffer[nBytes++] = 4; posX = (uint16_t) ivasPayload_convertToQ11( position->position.x / MAX_PI_COMPACT_POSITION_XY_METERS ); posY = (uint16_t) ivasPayload_convertToQ11( position->position.y / MAX_PI_COMPACT_POSITION_XY_METERS ); posZ = (uint16_t) ivasPayload_convertToQ10( position->position.z / MAX_PI_COMPACT_POSITION_Z_METERS ); posX = (uint16_t) ivasPayload_convertToQ10( position->position.x / MAX_PI_COMPACT_POSITION_XY_METERS ); posY = (uint16_t) ivasPayload_convertToQ10( position->position.y / MAX_PI_COMPACT_POSITION_XY_METERS ); posZ = (uint16_t) ivasPayload_convertToQ9( position->position.z / MAX_PI_COMPACT_POSITION_Z_METERS ); buffer[nBytes++] = (uint8_t) ( posX >> 8 ); buffer[nBytes++] = (uint8_t) ( ( ( posX & MASK_3BIT ) << 5 ) | posY >> 6 ); buffer[nBytes++] = (uint8_t) ( ( ( posY & MASK_6BIT ) << 2 ) | posZ >> 8 ); Loading @@ -767,7 +767,7 @@ static ivas_error packPositionCompact( const IVAS_PIDATA_GENERIC *piData, uint8_ static ivas_error unpackPositionCompact( const uint8_t *buffer, uint32_t numDataBytes, IVAS_PIDATA_GENERIC *piData ) { IVAS_PIDATA_POSITION *position = (IVAS_PIDATA_POSITION *) piData; uint32_t compactRead = 0; int32_t compactRead = 0; /* Compact position data is 4 bytes */ if ( numDataBytes != 4 ) Loading @@ -777,10 +777,10 @@ static ivas_error unpackPositionCompact( const uint8_t *buffer, uint32_t numData position->size = sizeof( IVAS_PIDATA_POSITION ); compactRead = ( (uint32_t) buffer[0] << 24 ) | ( (uint32_t) buffer[1] << 16 ) | ( (uint32_t) buffer[2] << 8 ) | ( (uint32_t) buffer[3] ); position->position.x = FLOAT_FROM_Q11( compactRead >> 21 ) * MAX_PI_COMPACT_POSITION_XY_METERS; position->position.y = FLOAT_FROM_Q11( ( compactRead >> 10 ) & MASK_11BIT ) * MAX_PI_COMPACT_POSITION_XY_METERS; position->position.z = FLOAT_FROM_Q10( compactRead & MASK_10BIT ) * MAX_PI_COMPACT_POSITION_Z_METERS; compactRead = ( (int32_t) buffer[0] << 24 ) | ( (int32_t) buffer[1] << 16 ) | ( (int32_t) buffer[2] << 8 ) | ( (int32_t) buffer[3] ); position->position.x = FLOAT_FROM_Q10( (int16_t) ( compactRead >> 21 ) ) * MAX_PI_COMPACT_POSITION_XY_METERS; position->position.y = FLOAT_FROM_Q10( ( (int16_t) ( compactRead >> 10 ) ) & MASK_11BIT ) * MAX_PI_COMPACT_POSITION_XY_METERS; position->position.z = FLOAT_FROM_Q9( (int16_t) ( compactRead & MASK_10BIT ) ) * MAX_PI_COMPACT_POSITION_Z_METERS; return IVAS_ERR_OK; } Loading Loading @@ -876,9 +876,9 @@ static ivas_error packISMPositionCompact( const IVAS_PIDATA_GENERIC *piData, uin buffer[nBytes++] = (uint8_t) ism_position->numObjects * 4; for ( n = 0; n < ism_position->numObjects; n++ ) { posX = (uint16_t) ivasPayload_convertToQ11( ism_position->position[n].x / MAX_PI_COMPACT_POSITION_XY_METERS ); posY = (uint16_t) ivasPayload_convertToQ11( ism_position->position[n].y / MAX_PI_COMPACT_POSITION_XY_METERS ); posZ = (uint16_t) ivasPayload_convertToQ10( ism_position->position[n].z / MAX_PI_COMPACT_POSITION_Z_METERS ); posX = (uint16_t) ivasPayload_convertToQ10( ism_position->position[n].x / MAX_PI_COMPACT_POSITION_XY_METERS ); posY = (uint16_t) ivasPayload_convertToQ10( ism_position->position[n].y / MAX_PI_COMPACT_POSITION_XY_METERS ); posZ = (uint16_t) ivasPayload_convertToQ9( ism_position->position[n].z / MAX_PI_COMPACT_POSITION_Z_METERS ); buffer[nBytes++] = (uint8_t) ( posX >> 8 ); buffer[nBytes++] = (uint8_t) ( ( ( posX & MASK_3BIT ) << 5 ) | posY >> 6 ); buffer[nBytes++] = (uint8_t) ( ( ( posY & MASK_6BIT ) << 2 ) | posZ >> 8 ); Loading @@ -891,7 +891,7 @@ static ivas_error packISMPositionCompact( const IVAS_PIDATA_GENERIC *piData, uin static ivas_error unpackISMPositionCompact( const uint8_t *buffer, uint32_t numDataBytes, IVAS_PIDATA_GENERIC *piData ) { uint16_t n; uint32_t compactRead = 0; int32_t compactRead = 0; IVAS_PIDATA_ISM_POSITION *ism_position = (IVAS_PIDATA_ISM_POSITION *) piData; /* Compact position data is 4 bytes */ Loading @@ -901,15 +901,15 @@ static ivas_error unpackISMPositionCompact( const uint8_t *buffer, uint32_t numD } ism_position->size = sizeof( IVAS_PIDATA_ISM_POSITION ); ism_position->piDataType = IVAS_PI_ISM_POSITION; ism_position->piDataType = IVAS_PI_ISM_POSITION_COMPACT; ism_position->numObjects = (uint16_t) numDataBytes / 4; for ( n = 0; n < ism_position->numObjects; n++ ) { compactRead = ( (uint32_t) buffer[0] << 24 ) | ( (uint32_t) buffer[1] << 16 ) | ( (uint32_t) buffer[2] << 8 ) | ( (uint32_t) buffer[3] ); ism_position->position[n].x = FLOAT_FROM_Q11( compactRead >> 21 ) * MAX_PI_COMPACT_POSITION_XY_METERS; ism_position->position[n].y = FLOAT_FROM_Q11( ( compactRead >> 10 ) & MASK_11BIT ) * MAX_PI_COMPACT_POSITION_XY_METERS; ism_position->position[n].z = FLOAT_FROM_Q10( compactRead & MASK_10BIT ) * MAX_PI_COMPACT_POSITION_Z_METERS; compactRead = ( (int32_t) buffer[0] << 24 ) | ( (int32_t) buffer[1] << 16 ) | ( (int32_t) buffer[2] << 8 ) | ( (int32_t) buffer[3] ); ism_position->position[n].x = FLOAT_FROM_Q10( (int16_t) ( compactRead >> 21 ) ) * MAX_PI_COMPACT_POSITION_XY_METERS; ism_position->position[n].y = FLOAT_FROM_Q10( ( (int16_t) ( compactRead >> 10 ) ) & MASK_11BIT ) * MAX_PI_COMPACT_POSITION_XY_METERS; ism_position->position[n].z = FLOAT_FROM_Q9( (int16_t) ( compactRead & MASK_10BIT ) ) * MAX_PI_COMPACT_POSITION_Z_METERS; } return IVAS_ERR_OK; } Loading
tests/rtp/ivasrtp.py +4 −4 Original line number Diff line number Diff line Loading @@ -730,8 +730,8 @@ cmrLookup = [ ] q15 = lambda x: int(min(32767.0, max(-32768.0, x * 32768.0))) q11 = lambda x: int(min(2047.0, max(-2048.0, x * 2048.0))) q10 = lambda x: int(min(1023.0, max(-1024.0, x * 1024.0))) q9 = lambda x: int(min(511.0, max(-512.0, x * 512.0))) q7 = lambda x: int(min(127.0, max(-128.0, x * 128.0))) Loading Loading @@ -822,9 +822,9 @@ def packPositionsCompact(bitstrm: BitStream, data: any): assert ( type(position) == POSITION ), "Compact position PI Data expects a data of type list[POSITIONS]" bitstrm.append(f"intbe:11={q11(position.x / 20.48)}") bitstrm.append(f"intbe:11={q11(position.y / 20.48)}") bitstrm.append(f"intbe:10={q10(position.z / 10.24)}") bitstrm.append(f"int:11={q10(position.x / 10.24)}") bitstrm.append(f"int:11={q10(position.y / 10.24)}") bitstrm.append(f"int:10={q9(position.z / 5.12)}") def unpackOrientation(bitstrm: ConstBitStream, piSize: int) -> ORIENTATION: Loading
tests/rtp/test_rtp.py +8 −0 Original line number Diff line number Diff line Loading @@ -193,6 +193,11 @@ def generatePiData(startTs: int, endTs: int) -> dict: y=random.randint(-32788, 32767) / 100.0, z=random.randint(-32788, 32767) / 100.0, ) somePositionCompact = lambda: POSITION( x=random.randint(-1024, 1023) / 100.0, y=random.randint(-1024, 1023) / 100.0, z=random.randint(-512, 511) / 100.0, ) someDesc = lambda: AUDIO_DESCRIPTION( isSpeech=bool(random.getrandbits(1)), isMusic=bool(random.getrandbits(1)), Loading Loading @@ -275,6 +280,7 @@ def generatePiData(startTs: int, endTs: int) -> dict: someISMGains = lambda num_ism : ISM_GAIN(gains=[random.choice([int(random.randint(-24,12)), -128]) for _ in range(num_ism)]) # -128 corresponds to -Inf someISMOrientations = lambda num_ism : [ORIENTATION(w=2*random.random()-1.0, x=2*random.random()-1.0, y=2*random.random()-1.0, z=2*random.random()-1.0) for _ in range(num_ism)] someISMPositions = lambda num_ism : [POSITION( x=random.randint(-32788, 32767)/100.0, y=random.randint(-32788, 32767)/100.0, z=random.randint(-32788, 32767)/100.0) for _ in range(num_ism)] someISMPositionsCompact = lambda num_ism : [POSITION( x=random.randint(-1024, 1023)/100.0, y=random.randint(-1024, 1023)/100.0, z=random.randint(-512, 511)/100.0) for _ in range(num_ism)] someISMDistanceAttenuations = lambda num_ism : [DISTANCE_ATTENUATION(ref_dist=random.randint(1,64)/10.0, max_dist=random.randint(1,64), roll_off=random.randint(0,40)/10.0) for _ in range(num_ism)] someISMDirectivities = lambda num_ism : [DIRECTIVITY(inner_ang=random.randint(0,24)*15, outer_ang=random.randint(0,24)*15, outer_att=random.choice([random.randint(-30,0)*3, -128])) for _ in range(num_ism)] # -128 corresponds to -Inf Loading @@ -301,6 +307,7 @@ def generatePiData(startTs: int, endTs: int) -> dict: pidata["ISM_GAIN"] = someISMGains(pidata["ISM_NUM"].num) pidata["ISM_ORIENTATION"] = someISMOrientations(pidata["ISM_NUM"].num) pidata["ISM_POSITION"] = someISMPositions(pidata["ISM_NUM"].num) pidata["ISM_POSITION_COMPACT"] = someISMPositionsCompact(pidata["ISM_NUM"].num) pidata["ISM_DISTANCE_ATTENUATION"] = someISMDistanceAttenuations(pidata["ISM_NUM"].num) pidata["ISM_DIRECTIVITY"] = someISMDirectivities(pidata["ISM_NUM"].num) Loading @@ -308,6 +315,7 @@ def generatePiData(startTs: int, endTs: int) -> dict: pidata["R_ISM_GAIN"] = someReverseISMGain() pidata["R_ISM_ORIENTATION"] = someOrientation() pidata["R_ISM_POSITION"] = somePosition() pidata["R_ISM_POSITION_COMPACT"] = somePositionCompact() pidata["R_ISM_DIRECTION"] = someReverseISMDirection() data[str(ts)] = pidata return data Loading