Loading lib_com/disclaimer.c +4 −2 Original line number Diff line number Diff line Loading @@ -47,10 +47,12 @@ int16_t print_disclaimer( FILE *fPtr ) { fprintf( fPtr, "\n==================================================================================================\n" ); fprintf( fPtr, " \n IVAS Codec Version IVAS-FL-2.0\n" ); fprintf( fPtr, "\n" ); fprintf( fPtr, " 3GPP TS26.258 IVAS Codec Version IVAS-FL-3.0 (floating-point C-Code)\n" ); fprintf( fPtr, "\n" ); fprintf( fPtr, " Based on EVS Codec (Floating Point) 3GPP TS26.443 Nov 04, 2021,\n" ); fprintf( fPtr, " Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0\n" ); fprintf( fPtr, "\n" ); fprintf( fPtr, "==================================================================================================\n\n" ); return 0; Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -169,6 +169,7 @@ #define DECODER_FORMAT_SWITCHING /* Re-initialize the decoder when the format/subformat of the incoming stream is changed */ #define RTP_SR_CODEC_FRAME_SIZE_IN_TOC_BYTE /* CR for split rendering codec framesize signalling in Toc Byte*/ #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 /* ################### Start BE switches ################################# */ Loading lib_util/ivas_rtp_file.c +60 −4 Original line number Diff line number Diff line Loading @@ -144,11 +144,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( Loading Loading @@ -335,11 +334,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, "{}" ); } Loading Loading @@ -413,6 +418,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" ); Loading Loading @@ -491,6 +512,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 Loading Loading @@ -631,6 +660,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 ) Loading Loading @@ -746,16 +789,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 */ } Loading lib_util/ivas_rtp_internal.h +9 −1 Original line number Diff line number Diff line Loading @@ -51,8 +51,9 @@ enum MASK_BITS #ifdef REVERSE_ISM_PI_DATA MASK_9BIT = 0x1FF, #endif #ifdef COMPACT_ORIENTATION_PI_DATA #ifdef RTP_UPDATES_SA4_134 MASK_10BIT = 0x3FF, MASK_11BIT = 0x7FF, #endif }; Loading @@ -72,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]; Loading lib_util/ivas_rtp_payload.c +14 −0 Original line number Diff line number Diff line Loading @@ -1568,6 +1568,7 @@ static ivas_error parsePIData( IVAS_RTP_UNPACK_HANDLE hUnpack, uint32_t rtpTimes { bool PF = true; uint32_t nBytes = *numBytes; bool isFirstPiSize = true; while ( PF ) { Loading @@ -1585,6 +1586,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++]; Loading @@ -1594,6 +1607,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 ) { Loading Loading
lib_com/disclaimer.c +4 −2 Original line number Diff line number Diff line Loading @@ -47,10 +47,12 @@ int16_t print_disclaimer( FILE *fPtr ) { fprintf( fPtr, "\n==================================================================================================\n" ); fprintf( fPtr, " \n IVAS Codec Version IVAS-FL-2.0\n" ); fprintf( fPtr, "\n" ); fprintf( fPtr, " 3GPP TS26.258 IVAS Codec Version IVAS-FL-3.0 (floating-point C-Code)\n" ); fprintf( fPtr, "\n" ); fprintf( fPtr, " Based on EVS Codec (Floating Point) 3GPP TS26.443 Nov 04, 2021,\n" ); fprintf( fPtr, " Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0\n" ); fprintf( fPtr, "\n" ); fprintf( fPtr, "==================================================================================================\n\n" ); return 0; Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -169,6 +169,7 @@ #define DECODER_FORMAT_SWITCHING /* Re-initialize the decoder when the format/subformat of the incoming stream is changed */ #define RTP_SR_CODEC_FRAME_SIZE_IN_TOC_BYTE /* CR for split rendering codec framesize signalling in Toc Byte*/ #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 /* ################### Start BE switches ################################# */ Loading
lib_util/ivas_rtp_file.c +60 −4 Original line number Diff line number Diff line Loading @@ -144,11 +144,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( Loading Loading @@ -335,11 +334,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, "{}" ); } Loading Loading @@ -413,6 +418,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" ); Loading Loading @@ -491,6 +512,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 Loading Loading @@ -631,6 +660,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 ) Loading Loading @@ -746,16 +789,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 */ } Loading
lib_util/ivas_rtp_internal.h +9 −1 Original line number Diff line number Diff line Loading @@ -51,8 +51,9 @@ enum MASK_BITS #ifdef REVERSE_ISM_PI_DATA MASK_9BIT = 0x1FF, #endif #ifdef COMPACT_ORIENTATION_PI_DATA #ifdef RTP_UPDATES_SA4_134 MASK_10BIT = 0x3FF, MASK_11BIT = 0x7FF, #endif }; Loading @@ -72,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]; Loading
lib_util/ivas_rtp_payload.c +14 −0 Original line number Diff line number Diff line Loading @@ -1568,6 +1568,7 @@ static ivas_error parsePIData( IVAS_RTP_UNPACK_HANDLE hUnpack, uint32_t rtpTimes { bool PF = true; uint32_t nBytes = *numBytes; bool isFirstPiSize = true; while ( PF ) { Loading @@ -1585,6 +1586,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++]; Loading @@ -1594,6 +1607,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 ) { Loading