Loading apps/decoder.c +4 −2 Original line number Diff line number Diff line Loading @@ -3591,9 +3591,11 @@ static ivas_error decodeVoIP( numPiData++; } if ( ( error = IVAS_RTP_ApplyPiData( hIvasDec, &ivasRtp.piData[ivasRtp.nProcPiData], numPiData ) ) != IVAS_ERR_OK ) IVAS_RTP_SavePiData( hIvasDec, &ivasRtp.piData[ivasRtp.nProcPiData], numPiData, &ivasRtp.piDataSaved ); if ( ( error = IVAS_RTP_ApplySavedPiData( hIvasDec, &ivasRtp.piDataSaved ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_VoIP_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); fprintf( stderr, "\nError in IVAS_RTP_ApplySavedPiData: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } Loading lib_dec/lib_dec.c +43 −14 Original line number Diff line number Diff line Loading @@ -43,10 +43,15 @@ #include "jbm_pcmdsp_fifo.h" #include <math.h> #include <assert.h> #ifdef IVAS_RTPDUMP #include <string.h> #endif #ifdef DEBUGGING #include "debug.h" #ifndef IVAS_RTPDUMP #include <string.h> #endif #endif #include "wmc_auto.h" /*---------------------------------------------------------------------* Loading Loading @@ -5623,9 +5628,8 @@ static void IVAS_DEC_setDiegeticInputPI( } #endif ivas_error IVAS_RTP_ApplyPiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_TS *piData, uint32_t numPiData ) void IVAS_RTP_SavePiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_TS *piData, uint32_t numPiData, PIDATA_SAVED *piDataSaved ) { ivas_error error = IVAS_ERR_OK; while ( numPiData-- ) { uint32_t piDataType = piData->data.noPiData.piDataType; Loading @@ -5633,25 +5637,23 @@ ivas_error IVAS_RTP_ApplyPiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_TS *piData, ui { case IVAS_PI_SCENE_ORIENTATION: { IVAS_QUATERNION *quat = &piData->data.scene.orientation; DEBUG_PRINT( stdout, "PI_SCENE_ORIENTATION : %f, %f, %f, %f\n", quat->w, quat->x, quat->y, quat->z ); error = IVAS_DEC_feedSinglePIorientation( hIvasDec, true, quat ); memcpy( &piDataSaved->scene, &piData->data.scene, piData->data.scene.size ); piDataSaved->sceneSaved = true; } break; case IVAS_PI_DEVICE_ORIENTATION_COMPENSATED: { IVAS_QUATERNION *quat = &piData->data.deviceCompensated.orientation; DEBUG_PRINT( stdout, "PI_DEVICE_ORIENTATION : %f, %f, %f, %f\n", quat->w, quat->x, quat->y, quat->z ); error = IVAS_DEC_feedSinglePIorientation( hIvasDec, true, quat ); memcpy( &piDataSaved->deviceCompensated, &piData->data.deviceCompensated, piData->data.deviceCompensated.size ); piDataSaved->deviceCompensatedSaved = true; } break; #ifdef RTP_S4_251135_CR26253_0016_REV1 case IVAS_PI_DIEGETIC_TYPE: { DEBUG_PRINT( stdout, "PI_DIEGETIC_TYPE : %d, %d, %d, %d, %d\n", piData->data.digeticIndicator.isDiegetic[0], piData->data.digeticIndicator.isDiegetic[1], piData->data.digeticIndicator.isDiegetic[2], piData->data.digeticIndicator.isDiegetic[3], piData->data.digeticIndicator.isDiegetic[4] ); IVAS_DEC_setDiegeticInputPI( hIvasDec, piData->data.digeticIndicator.isDiegetic ); memcpy( &piDataSaved->digeticIndicator, &piData->data.digeticIndicator, piData->data.digeticIndicator.size ); piDataSaved->digeticIndicatorSaved = true; } break; #endif Loading @@ -5662,12 +5664,39 @@ ivas_error IVAS_RTP_ApplyPiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_TS *piData, ui } break; } if ( error != IVAS_ERR_OK ) piData++; } } ivas_error IVAS_RTP_ApplySavedPiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_SAVED *piDataSaved ) { return error; ivas_error error = IVAS_ERR_OK; if ( piDataSaved->sceneSaved && !piDataSaved->sceneApplied ) { IVAS_QUATERNION *quat = &piDataSaved->scene.orientation; DEBUG_PRINT( stdout, "PI_SCENE_ORIENTATION : %f, %f, %f, %f\n", quat->w, quat->x, quat->y, quat->z ); error = IVAS_DEC_feedSinglePIorientation( hIvasDec, true, quat ); piDataSaved->sceneApplied = true; } piData++; if ( piDataSaved->deviceCompensatedSaved && !piDataSaved->deviceCompensatedApplied ) { IVAS_QUATERNION *quat = &piDataSaved->deviceCompensated.orientation; DEBUG_PRINT( stdout, "PI_DEVICE_ORIENTATION : %f, %f, %f, %f\n", quat->w, quat->x, quat->y, quat->z ); error = IVAS_DEC_feedSinglePIorientation( hIvasDec, true, quat ); piDataSaved->deviceCompensatedApplied = true; } #ifdef RTP_S4_251135_CR26253_0016_REV1 if ( piDataSaved->digeticIndicatorSaved && !piDataSaved->digeticIndicatorApplied ) { DEBUG_PRINT( stdout, "PI_DIEGETIC_TYPE : %d, %d, %d, %d, %d\n", piDataSaved->digeticIndicator.isDiegetic[0], piDataSaved->digeticIndicator.isDiegetic[1], piDataSaved->digeticIndicator.isDiegetic[2], piDataSaved->digeticIndicator.isDiegetic[3], piDataSaved->digeticIndicator.isDiegetic[4] ); IVAS_DEC_setDiegeticInputPI( hIvasDec, piDataSaved->digeticIndicator.isDiegetic ); piDataSaved->digeticIndicatorApplied = true; } #endif return error; } #endif lib_dec/lib_dec.h +2 −1 Original line number Diff line number Diff line Loading @@ -559,7 +559,8 @@ void IVAS_DEC_PrintDisclaimer( #ifdef IVAS_RTPDUMP #include "ivas_rtp_pi_data.h" ivas_error IVAS_RTP_ApplyPiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_TS *piData, uint32_t numPiData ); void IVAS_RTP_SavePiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_TS *piData, uint32_t numPiData, PIDATA_SAVED *piDataSaved ); ivas_error IVAS_RTP_ApplySavedPiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_SAVED *piDataSaved ); #endif /* clang-format on */ Loading lib_util/ivas_rtp_file.c +74 −0 Original line number Diff line number Diff line Loading @@ -146,6 +146,78 @@ static const char *const PiDataNames[IVAS_PI_MAX_ID] = { "RESERVED30", "NO_DATA" }; static void resetSavedPiDataAppliance( PIDATA_SAVED *piDataSaved ) { piDataSaved->sceneApplied = false; piDataSaved->deviceCompensatedApplied = false; piDataSaved->deviceUnCompensatedApplied = false; piDataSaved->acousticEnvApplied = false; #ifdef RTP_S4_251135_CR26253_0016_REV1 piDataSaved->audioDescApplied = false; piDataSaved->ismNumApplied = false; piDataSaved->ismIdApplied = false; piDataSaved->ismGainApplied = false; piDataSaved->ismOrientationApplied = false; piDataSaved->ismPositionApplied = false; piDataSaved->ismAttenuationApplied = false; piDataSaved->ismDirectivityApplied = false; piDataSaved->digeticIndicatorApplied = false; piDataSaved->dynSuppressionIndicationApplied = false; piDataSaved->focusIndicationApplied = false; piDataSaved->playbackOrientationApplied = false; piDataSaved->headOrientationApplied = false; piDataSaved->listnerPositionApplied = false; piDataSaved->dynSuppressionRequestApplied = false; piDataSaved->focusRequestApplied = false; piDataSaved->piLatencyApplied = false; piDataSaved->ismEditIdApplied = false; piDataSaved->ismEditGainApplied = false; piDataSaved->ismEditOrientationApplied = false; piDataSaved->ismEditPositionApplied = false; piDataSaved->ismEditDirectionApplied = false; #endif /* RTP_S4_251135_CR26253_0016_REV1 */ } static void initSavedPiData( PIDATA_SAVED *piDataSaved ) { piDataSaved->sceneSaved = false; piDataSaved->deviceCompensatedSaved = false; piDataSaved->deviceUnCompensatedSaved = false; piDataSaved->acousticEnvSaved = false; #ifdef RTP_S4_251135_CR26253_0016_REV1 piDataSaved->audioDescSaved = false; piDataSaved->ismNumSaved = false; piDataSaved->ismIdSaved = false; piDataSaved->ismGainSaved = false; piDataSaved->ismOrientationSaved = false; piDataSaved->ismPositionSaved = false; piDataSaved->ismAttenuationSaved = false; piDataSaved->ismDirectivitySaved = false; piDataSaved->digeticIndicatorSaved = false; piDataSaved->dynSuppressionIndicationSaved = false; piDataSaved->focusIndicationSaved = false; piDataSaved->playbackOrientationSaved = false; piDataSaved->headOrientationSaved = false; piDataSaved->listnerPositionSaved = false; piDataSaved->dynSuppressionRequestSaved = false; piDataSaved->focusRequestSaved = false; piDataSaved->piLatencySaved = false; piDataSaved->ismEditIdSaved = false; piDataSaved->ismEditGainSaved = false; piDataSaved->ismEditOrientationSaved = false; piDataSaved->ismEditPositionSaved = false; piDataSaved->ismEditDirectionSaved = false; #endif /* RTP_S4_251135_CR26253_0016_REV1 */ resetSavedPiDataAppliance( piDataSaved ); } void IVAS_RTP_LogPiData( FILE *f_piDataOut, /* i/o : Output json file handle to dump PI data for debug/test */ const PIDATA_TS *piData, /* i : PI Data + Timestamp array containing all PI data in current packet */ Loading Loading @@ -749,6 +821,7 @@ ivas_error IVAS_RTP_READER_Init( } } } initSavedPiData( &rtp->piDataSaved ); return error; } Loading Loading @@ -853,6 +926,7 @@ ivas_error IVAS_RTP_ReadNextFrame( rtp->nReadPiData = 0; rtp->nProcPiData = 0; resetSavedPiDataAppliance( &rtp->piDataSaved ); /* Pre-read all PI data */ while ( rtp->numPiDataInPacket != 0 ) Loading lib_util/ivas_rtp_file.h +1 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ typedef struct { uint8_t packet[NOMINAL_BUFFER_SIZE( IVAS_MAX_FRAMES_PER_RTP_PACKET )]; PIDATA_TS piData[IVAS_PI_MAX_ID * IVAS_MAX_FRAMES_PER_RTP_PACKET]; PIDATA_SAVED piDataSaved; IVAS_RTP_FILE_HANDLE hRtpFile; FILE *f_piDataOut; Loading Loading
apps/decoder.c +4 −2 Original line number Diff line number Diff line Loading @@ -3591,9 +3591,11 @@ static ivas_error decodeVoIP( numPiData++; } if ( ( error = IVAS_RTP_ApplyPiData( hIvasDec, &ivasRtp.piData[ivasRtp.nProcPiData], numPiData ) ) != IVAS_ERR_OK ) IVAS_RTP_SavePiData( hIvasDec, &ivasRtp.piData[ivasRtp.nProcPiData], numPiData, &ivasRtp.piDataSaved ); if ( ( error = IVAS_RTP_ApplySavedPiData( hIvasDec, &ivasRtp.piDataSaved ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_VoIP_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); fprintf( stderr, "\nError in IVAS_RTP_ApplySavedPiData: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } Loading
lib_dec/lib_dec.c +43 −14 Original line number Diff line number Diff line Loading @@ -43,10 +43,15 @@ #include "jbm_pcmdsp_fifo.h" #include <math.h> #include <assert.h> #ifdef IVAS_RTPDUMP #include <string.h> #endif #ifdef DEBUGGING #include "debug.h" #ifndef IVAS_RTPDUMP #include <string.h> #endif #endif #include "wmc_auto.h" /*---------------------------------------------------------------------* Loading Loading @@ -5623,9 +5628,8 @@ static void IVAS_DEC_setDiegeticInputPI( } #endif ivas_error IVAS_RTP_ApplyPiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_TS *piData, uint32_t numPiData ) void IVAS_RTP_SavePiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_TS *piData, uint32_t numPiData, PIDATA_SAVED *piDataSaved ) { ivas_error error = IVAS_ERR_OK; while ( numPiData-- ) { uint32_t piDataType = piData->data.noPiData.piDataType; Loading @@ -5633,25 +5637,23 @@ ivas_error IVAS_RTP_ApplyPiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_TS *piData, ui { case IVAS_PI_SCENE_ORIENTATION: { IVAS_QUATERNION *quat = &piData->data.scene.orientation; DEBUG_PRINT( stdout, "PI_SCENE_ORIENTATION : %f, %f, %f, %f\n", quat->w, quat->x, quat->y, quat->z ); error = IVAS_DEC_feedSinglePIorientation( hIvasDec, true, quat ); memcpy( &piDataSaved->scene, &piData->data.scene, piData->data.scene.size ); piDataSaved->sceneSaved = true; } break; case IVAS_PI_DEVICE_ORIENTATION_COMPENSATED: { IVAS_QUATERNION *quat = &piData->data.deviceCompensated.orientation; DEBUG_PRINT( stdout, "PI_DEVICE_ORIENTATION : %f, %f, %f, %f\n", quat->w, quat->x, quat->y, quat->z ); error = IVAS_DEC_feedSinglePIorientation( hIvasDec, true, quat ); memcpy( &piDataSaved->deviceCompensated, &piData->data.deviceCompensated, piData->data.deviceCompensated.size ); piDataSaved->deviceCompensatedSaved = true; } break; #ifdef RTP_S4_251135_CR26253_0016_REV1 case IVAS_PI_DIEGETIC_TYPE: { DEBUG_PRINT( stdout, "PI_DIEGETIC_TYPE : %d, %d, %d, %d, %d\n", piData->data.digeticIndicator.isDiegetic[0], piData->data.digeticIndicator.isDiegetic[1], piData->data.digeticIndicator.isDiegetic[2], piData->data.digeticIndicator.isDiegetic[3], piData->data.digeticIndicator.isDiegetic[4] ); IVAS_DEC_setDiegeticInputPI( hIvasDec, piData->data.digeticIndicator.isDiegetic ); memcpy( &piDataSaved->digeticIndicator, &piData->data.digeticIndicator, piData->data.digeticIndicator.size ); piDataSaved->digeticIndicatorSaved = true; } break; #endif Loading @@ -5662,12 +5664,39 @@ ivas_error IVAS_RTP_ApplyPiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_TS *piData, ui } break; } if ( error != IVAS_ERR_OK ) piData++; } } ivas_error IVAS_RTP_ApplySavedPiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_SAVED *piDataSaved ) { return error; ivas_error error = IVAS_ERR_OK; if ( piDataSaved->sceneSaved && !piDataSaved->sceneApplied ) { IVAS_QUATERNION *quat = &piDataSaved->scene.orientation; DEBUG_PRINT( stdout, "PI_SCENE_ORIENTATION : %f, %f, %f, %f\n", quat->w, quat->x, quat->y, quat->z ); error = IVAS_DEC_feedSinglePIorientation( hIvasDec, true, quat ); piDataSaved->sceneApplied = true; } piData++; if ( piDataSaved->deviceCompensatedSaved && !piDataSaved->deviceCompensatedApplied ) { IVAS_QUATERNION *quat = &piDataSaved->deviceCompensated.orientation; DEBUG_PRINT( stdout, "PI_DEVICE_ORIENTATION : %f, %f, %f, %f\n", quat->w, quat->x, quat->y, quat->z ); error = IVAS_DEC_feedSinglePIorientation( hIvasDec, true, quat ); piDataSaved->deviceCompensatedApplied = true; } #ifdef RTP_S4_251135_CR26253_0016_REV1 if ( piDataSaved->digeticIndicatorSaved && !piDataSaved->digeticIndicatorApplied ) { DEBUG_PRINT( stdout, "PI_DIEGETIC_TYPE : %d, %d, %d, %d, %d\n", piDataSaved->digeticIndicator.isDiegetic[0], piDataSaved->digeticIndicator.isDiegetic[1], piDataSaved->digeticIndicator.isDiegetic[2], piDataSaved->digeticIndicator.isDiegetic[3], piDataSaved->digeticIndicator.isDiegetic[4] ); IVAS_DEC_setDiegeticInputPI( hIvasDec, piDataSaved->digeticIndicator.isDiegetic ); piDataSaved->digeticIndicatorApplied = true; } #endif return error; } #endif
lib_dec/lib_dec.h +2 −1 Original line number Diff line number Diff line Loading @@ -559,7 +559,8 @@ void IVAS_DEC_PrintDisclaimer( #ifdef IVAS_RTPDUMP #include "ivas_rtp_pi_data.h" ivas_error IVAS_RTP_ApplyPiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_TS *piData, uint32_t numPiData ); void IVAS_RTP_SavePiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_TS *piData, uint32_t numPiData, PIDATA_SAVED *piDataSaved ); ivas_error IVAS_RTP_ApplySavedPiData( IVAS_DEC_HANDLE hIvasDec, PIDATA_SAVED *piDataSaved ); #endif /* clang-format on */ Loading
lib_util/ivas_rtp_file.c +74 −0 Original line number Diff line number Diff line Loading @@ -146,6 +146,78 @@ static const char *const PiDataNames[IVAS_PI_MAX_ID] = { "RESERVED30", "NO_DATA" }; static void resetSavedPiDataAppliance( PIDATA_SAVED *piDataSaved ) { piDataSaved->sceneApplied = false; piDataSaved->deviceCompensatedApplied = false; piDataSaved->deviceUnCompensatedApplied = false; piDataSaved->acousticEnvApplied = false; #ifdef RTP_S4_251135_CR26253_0016_REV1 piDataSaved->audioDescApplied = false; piDataSaved->ismNumApplied = false; piDataSaved->ismIdApplied = false; piDataSaved->ismGainApplied = false; piDataSaved->ismOrientationApplied = false; piDataSaved->ismPositionApplied = false; piDataSaved->ismAttenuationApplied = false; piDataSaved->ismDirectivityApplied = false; piDataSaved->digeticIndicatorApplied = false; piDataSaved->dynSuppressionIndicationApplied = false; piDataSaved->focusIndicationApplied = false; piDataSaved->playbackOrientationApplied = false; piDataSaved->headOrientationApplied = false; piDataSaved->listnerPositionApplied = false; piDataSaved->dynSuppressionRequestApplied = false; piDataSaved->focusRequestApplied = false; piDataSaved->piLatencyApplied = false; piDataSaved->ismEditIdApplied = false; piDataSaved->ismEditGainApplied = false; piDataSaved->ismEditOrientationApplied = false; piDataSaved->ismEditPositionApplied = false; piDataSaved->ismEditDirectionApplied = false; #endif /* RTP_S4_251135_CR26253_0016_REV1 */ } static void initSavedPiData( PIDATA_SAVED *piDataSaved ) { piDataSaved->sceneSaved = false; piDataSaved->deviceCompensatedSaved = false; piDataSaved->deviceUnCompensatedSaved = false; piDataSaved->acousticEnvSaved = false; #ifdef RTP_S4_251135_CR26253_0016_REV1 piDataSaved->audioDescSaved = false; piDataSaved->ismNumSaved = false; piDataSaved->ismIdSaved = false; piDataSaved->ismGainSaved = false; piDataSaved->ismOrientationSaved = false; piDataSaved->ismPositionSaved = false; piDataSaved->ismAttenuationSaved = false; piDataSaved->ismDirectivitySaved = false; piDataSaved->digeticIndicatorSaved = false; piDataSaved->dynSuppressionIndicationSaved = false; piDataSaved->focusIndicationSaved = false; piDataSaved->playbackOrientationSaved = false; piDataSaved->headOrientationSaved = false; piDataSaved->listnerPositionSaved = false; piDataSaved->dynSuppressionRequestSaved = false; piDataSaved->focusRequestSaved = false; piDataSaved->piLatencySaved = false; piDataSaved->ismEditIdSaved = false; piDataSaved->ismEditGainSaved = false; piDataSaved->ismEditOrientationSaved = false; piDataSaved->ismEditPositionSaved = false; piDataSaved->ismEditDirectionSaved = false; #endif /* RTP_S4_251135_CR26253_0016_REV1 */ resetSavedPiDataAppliance( piDataSaved ); } void IVAS_RTP_LogPiData( FILE *f_piDataOut, /* i/o : Output json file handle to dump PI data for debug/test */ const PIDATA_TS *piData, /* i : PI Data + Timestamp array containing all PI data in current packet */ Loading Loading @@ -749,6 +821,7 @@ ivas_error IVAS_RTP_READER_Init( } } } initSavedPiData( &rtp->piDataSaved ); return error; } Loading Loading @@ -853,6 +926,7 @@ ivas_error IVAS_RTP_ReadNextFrame( rtp->nReadPiData = 0; rtp->nProcPiData = 0; resetSavedPiDataAppliance( &rtp->piDataSaved ); /* Pre-read all PI data */ while ( rtp->numPiDataInPacket != 0 ) Loading
lib_util/ivas_rtp_file.h +1 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ typedef struct { uint8_t packet[NOMINAL_BUFFER_SIZE( IVAS_MAX_FRAMES_PER_RTP_PACKET )]; PIDATA_TS piData[IVAS_PI_MAX_ID * IVAS_MAX_FRAMES_PER_RTP_PACKET]; PIDATA_SAVED piDataSaved; IVAS_RTP_FILE_HANDLE hRtpFile; FILE *f_piDataOut; Loading