diff --git a/apps/decoder.c b/apps/decoder.c index 2b7268854a7f570c4287a8ef5bd598c6d8808e24..e8831449874ca1ba669116675dedf66428a12d97 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -42,9 +42,7 @@ #include "ls_custom_file_reader.h" #include "hrtf_file_reader.h" #include "head_rotation_file_reader.h" -#ifdef OTR_REFERENCE_VECTOR_TRACKING #include "vector3_pair_file_reader.h" -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ #include "jbm_file_writer.h" #include "evs_rtp_payload.h" #ifdef DEBUGGING @@ -72,18 +70,11 @@ static #define MAX_NUM_OUTPUT_CHANNELS 16 #define MAX_OUTPUT_PCM_BUFFER_SIZE ( MAX_NUM_OUTPUT_CHANNELS * MAX_FRAME_SIZE ) -#ifdef FIX_I109_ORIENTATION_TRACKING -#define IVAS_PUBLIC_ORIENT_TRK_NONE ( 0 ) -#define IVAS_PUBLIC_ORIENT_TRK_REF ( 1 ) -#define IVAS_PUBLIC_ORIENT_TRK_AVG ( 2 ) -#ifdef OTR_REFERENCE_VECTOR_TRACKING +#define IVAS_PUBLIC_ORIENT_TRK_NONE ( 0 ) +#define IVAS_PUBLIC_ORIENT_TRK_REF ( 1 ) +#define IVAS_PUBLIC_ORIENT_TRK_AVG ( 2 ) #define IVAS_PUBLIC_ORIENT_TRK_REF_VEC ( 3 ) #define IVAS_PUBLIC_ORIENT_TRK_REF_VEC_LEV ( 4 ) -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#else -#define IVAS_PUBLIC_ORIENT_TRK_REF 0 -#define IVAS_PUBLIC_ORIENT_TRK_AVG 1 -#endif typedef struct { @@ -97,14 +88,10 @@ typedef struct bool voipMode; bool enableHeadRotation; char *headrotTrajFileName; -#ifdef FIX_I109_ORIENTATION_TRACKING bool enableReferenceRotation; char *refrotTrajFileName; -#endif -#ifdef OTR_REFERENCE_VECTOR_TRACKING bool enableReferenceVectorTracking; char *referenceVectorTrajFileName; -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ #ifdef SUPPORT_JBM_TRACEFILE char *jbmTraceFilename; #endif @@ -140,15 +127,7 @@ typedef struct static bool parseCmdlIVAS_dec( int16_t argc, char **argv, DecArguments *arg ); static void usage_dec( void ); -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, HeadRotFileReader *headRotReader, HeadRotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); -#else /* OTR_REFERENCE_VECTOR_TRACKING */ -static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, HeadRotFileReader *headRotReader, HeadRotFileReader *refRotReader, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); -#endif -#else -static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, HeadRotFileReader *headRotReader, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); -#endif static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HANDLE hIvasDec ); #ifdef DEBUGGING static ivas_error printBitstreamInfoVoip( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HANDLE hIvasDec ); @@ -174,12 +153,8 @@ int main( LsCustomFileReader *hLsCustomReader = NULL; hrtfFileReader *hrtfReader = NULL; HeadRotFileReader *headRotReader = NULL; -#ifdef FIX_I109_ORIENTATION_TRACKING HeadRotFileReader *refRotReader = NULL; -#endif -#ifdef OTR_REFERENCE_VECTOR_TRACKING Vector3PairFileReader *referenceVectorReader = NULL; -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ ivas_error error = IVAS_ERR_UNKNOWN; int16_t pcmBuf[MAX_OUTPUT_PCM_BUFFER_SIZE]; RenderConfigReader *renderConfigReader = NULL; @@ -289,7 +264,6 @@ int main( } } -#ifdef FIX_I109_ORIENTATION_TRACKING /*------------------------------------------------------------------------------------------* * Open reference rotation file *------------------------------------------------------------------------------------------*/ @@ -301,8 +275,6 @@ int main( goto cleanup; } } -#endif -#ifdef OTR_REFERENCE_VECTOR_TRACKING /*------------------------------------------------------------------------------------------* * Open reference vector trajectory file *------------------------------------------------------------------------------------------*/ @@ -314,7 +286,6 @@ int main( goto cleanup; } } -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ /*------------------------------------------------------------------------------------------* * Open custom loudspeaker layout file @@ -459,17 +430,9 @@ int main( IVAS_RENDER_CONFIG_DATA renderConfig; /* sanity check */ -#ifdef TD5 if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL ) -#else - if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM ) -#endif { -#ifdef TD5 fprintf( stderr, "\nExternal Renderer Config is supported only for BINAURAL and BINAURAL_ROOM. Exiting. \n\n" ); -#else - fprintf( stderr, "\nExternal Renderer Config is supported only when BINAURAL_ROOM is used as output. Exiting. \n\n" ); -#endif goto cleanup; } @@ -572,15 +535,7 @@ int main( } else { -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING error = decodeG192( arg, hBsReader, headRotReader, refRotReader, referenceVectorReader, hIvasDec, pcmBuf ); -#else - error = decodeG192( arg, hBsReader, headRotReader, refRotReader, hIvasDec, pcmBuf ); -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#else - error = decodeG192( arg, hBsReader, headRotReader, hIvasDec, pcmBuf ); -#endif } if ( error == IVAS_ERR_OK || error == IVAS_ERR_END_OF_FILE ) @@ -636,12 +591,8 @@ cleanup: CustomLsReader_close( &hLsCustomReader ); hrtfFileReader_close( &hrtfReader ); HeadRotationFileReader_close( &headRotReader ); -#ifdef FIX_I109_ORIENTATION_TRACKING HeadRotationFileReader_close( &refRotReader ); -#endif -#ifdef OTR_REFERENCE_VECTOR_TRACKING Vector3PairFileReader_close( &referenceVectorReader ); -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ RenderConfigReader_close( &renderConfigReader ); if ( BS_Reader_Close( &hBsReader ) != IVAS_ERR_OK ) @@ -778,17 +729,11 @@ static bool parseCmdlIVAS_dec( arg->enableHeadRotation = false; arg->headrotTrajFileName = NULL; -#ifdef FIX_I109_ORIENTATION_TRACKING arg->orientation_tracking = IVAS_PUBLIC_ORIENT_TRK_NONE; arg->enableReferenceRotation = false; arg->headrotTrajFileName = NULL; -#ifdef OTR_REFERENCE_VECTOR_TRACKING arg->enableReferenceVectorTracking = false; arg->referenceVectorTrajFileName = NULL; -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#else - arg->orientation_tracking = IVAS_PUBLIC_ORIENT_TRK_REF; -#endif #ifdef SUPPORT_JBM_TRACEFILE arg->jbmTraceFilename = NULL; @@ -963,27 +908,16 @@ static bool parseCmdlIVAS_dec( } else if ( strcmp( argv_to_upper, "-OTR" ) == 0 ) { -#ifndef FIX_I109_ORIENTATION_TRACKING - if ( strlen( argv[i + 1] ) > 3 ) - { - fprintf( stderr, "Error: Invalid orientation tracking type %s \n\n", argv[i + 1] ); - usage_dec(); - return false; - } -#endif strncpy( argv_to_upper, argv[i + 1], sizeof( argv_to_upper ) - 1 ); argv_to_upper[sizeof( argv_to_upper ) - 1] = '\0'; to_upper( argv_to_upper ); -#ifdef FIX_I109_ORIENTATION_TRACKING if ( strcmp( argv_to_upper, "NONE" ) == 0 ) { arg->orientation_tracking = IVAS_PUBLIC_ORIENT_TRK_NONE; } - else -#endif - if ( strcmp( argv_to_upper, "REF" ) == 0 ) + else if ( strcmp( argv_to_upper, "REF" ) == 0 ) { arg->orientation_tracking = IVAS_PUBLIC_ORIENT_TRK_REF; } @@ -991,7 +925,6 @@ static bool parseCmdlIVAS_dec( { arg->orientation_tracking = IVAS_PUBLIC_ORIENT_TRK_AVG; } -#ifdef OTR_REFERENCE_VECTOR_TRACKING else if ( strcmp( argv_to_upper, "REF_VEC" ) == 0 ) { arg->orientation_tracking = IVAS_PUBLIC_ORIENT_TRK_REF_VEC; @@ -1000,7 +933,6 @@ static bool parseCmdlIVAS_dec( { arg->orientation_tracking = IVAS_PUBLIC_ORIENT_TRK_REF_VEC_LEV; } -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ else { fprintf( stderr, "Error: Invalid orientation tracking type %s \n\n", argv[i + 1] ); @@ -1009,7 +941,6 @@ static bool parseCmdlIVAS_dec( } i += 2; } -#ifdef FIX_I109_ORIENTATION_TRACKING else if ( strcmp( argv_to_upper, "-RF" ) == 0 ) { arg->enableReferenceRotation = true; @@ -1025,8 +956,6 @@ static bool parseCmdlIVAS_dec( arg->refrotTrajFileName = argv[i]; i++; } -#endif -#ifdef OTR_REFERENCE_VECTOR_TRACKING else if ( strcmp( argv_to_upper, "-RVF" ) == 0 ) { arg->enableReferenceVectorTracking = true; @@ -1042,7 +971,6 @@ static bool parseCmdlIVAS_dec( arg->referenceVectorTrajFileName = argv[i]; i++; } -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ else if ( strcmp( argv_to_upper, "-RENDER_CONFIG" ) == 0 ) { arg->renderConfigEnabled = true; @@ -1235,17 +1163,11 @@ static void usage_dec( void ) fprintf( stdout, " default is OFF, if this option is not used\n" ); fprintf( stdout, "-force R : Force specific binaural rendering mode, R = (TDREND, CLDFBREND),\n" ); #endif -#ifdef FIX_I109_ORIENTATION_TRACKING fprintf( stdout, "-otr tracking_type : head orientation tracking type: 'none', 'ref' or 'avg' (only for binaural rendering)\n" ); fprintf( stdout, "-rf File : Reference rotation specified by external trajectory file\n" ); fprintf( stdout, " works only in combination with -otr ref mode\n" ); -#else - fprintf( stdout, "-otr tracking_type : head orientation tracking type: 'ref' or 'avg' (only for binaural rendering)\n" ); -#endif -#ifdef OTR_REFERENCE_VECTOR_TRACKING fprintf( stdout, "-rvf File : Reference vector specified by external trajectory file\n" ); fprintf( stdout, " works only in combination with -otr ref_vec and ref_vec_lev modes\n" ); -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ fprintf( stdout, "-render_config file : Renderer configuration file\n" ); fprintf( stdout, "-no_diegetic_pan : panning mono no dietic sound to stereo -1<= pan <=1,\n" ); fprintf( stdout, " left or l or 1->left, right or r or -1->right, center or c or 0->middle\n" ); @@ -1295,7 +1217,6 @@ static ivas_error initOnFirstGoodFrame( ivas_error error = IVAS_ERR_UNKNOWN; /* Now delay, number of output channels and frame size are known */ -#ifdef FIX_371_DELAY_REPORT if ( ( error = IVAS_DEC_GetDelay( hIvasDec, pFullDelayNumSamples, delayTimeScale ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) ); @@ -1304,35 +1225,9 @@ static ivas_error initOnFirstGoodFrame( if ( !arg.delayCompensationEnabled ) { -#ifdef BINAURALIZATION_DELAY_REPORT pFullDelayNumSamples[0] = 0; -#else - *pFullDelayNumSamples = 0; -#endif - } -#else - if ( arg.delayCompensationEnabled ) - { - if ( ( error = IVAS_DEC_GetDelay( hIvasDec, pFullDelayNumSamples, delayTimeScale ) ) != IVAS_ERR_OK ) - { - fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) ); - return error; - } - } - else - { -#ifdef BINAURALIZATION_DELAY_REPORT - pFullDelayNumSamples[0] = 0; -#else - *pFullDelayNumSamples = 0; -#endif } -#endif -#ifdef BINAURALIZATION_DELAY_REPORT *pRemainingDelayNumSamples = pFullDelayNumSamples[0]; -#else - *pRemainingDelayNumSamples = *pFullDelayNumSamples; -#endif if ( ( error = IVAS_DEC_GetNumOutputChannels( hIvasDec, pNumOutChannels ) ) != IVAS_ERR_OK ) { @@ -1479,12 +1374,8 @@ static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, HeadRotFileReader *headRotReader, -#ifdef FIX_I109_ORIENTATION_TRACKING HeadRotFileReader *refRotReader, -#ifdef OTR_REFERENCE_VECTOR_TRACKING Vector3PairFileReader *referenceVectorReader, -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#endif IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ) @@ -1502,19 +1393,13 @@ static ivas_error decodeG192( int16_t numInitialBadFrames = 0; /* Number of bad frames received until first good frame is decoded */ int16_t nOutChannels = 0; int16_t delayNumSamples = -1; -#ifdef BINAURALIZATION_DELAY_REPORT int16_t delayNumSamples_orig[3]; /* stores: overall delay, dec+rend delay, and binauralization delay */ -#else - int16_t delayNumSamples_orig = 0; -#endif int16_t nOutSamples = 0; int32_t delayTimeScale = 0; ivas_error error = IVAS_ERR_UNKNOWN; uint16_t numObj = 0; IVAS_DEC_BS_FORMAT bsFormat = IVAS_DEC_BS_UNKOWN; -#ifdef TD5 IVAS_POSITION Pos[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; -#endif IsmFileWriter *ismWriters[IVAS_MAX_NUM_OBJECTS]; for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; ++i ) @@ -1532,9 +1417,7 @@ static ivas_error decodeG192( fprintf( stdout, "\n-- Start the decoder (quiet mode) --\n\n" ); } -#ifdef BINAURALIZATION_DELAY_REPORT delayNumSamples_orig[0] = -1; -#endif #ifdef WMOPS reset_stack(); @@ -1584,8 +1467,6 @@ static ivas_error decodeG192( goto cleanup; } -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING /* reference vector */ if ( arg.enableReferenceVectorTracking ) { @@ -1602,16 +1483,11 @@ static ivas_error decodeG192( goto cleanup; } } -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ /* Reference rotation */ if ( arg.enableReferenceRotation ) { IVAS_QUATERNION quaternion; -#ifdef TD5 if ( ( error = HeadRotationFileReading( refRotReader, &quaternion, NULL ) ) != IVAS_ERR_OK ) -#else - if ( ( error = HeadRotationFileReading( refRotReader, &quaternion ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nError %s while reading reference rotation from %s\n", IVAS_DEC_GetErrorMessage( error ), HeadRotationFileReader_getFilePath( refRotReader ) ); goto cleanup; @@ -1623,42 +1499,21 @@ static ivas_error decodeG192( goto cleanup; } } -#endif /* Head-tracking input simulation */ if ( arg.enableHeadRotation ) { IVAS_QUATERNION Quaternions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; -#ifdef FIX_I109_ORIENTATION_TRACKING for ( i = 0; i < IVAS_MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { -#ifdef TD5 if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK ) -#else - if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i] ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), HeadRotationFileReader_getFilePath( headRotReader ) ); goto cleanup; } } -#else -#ifdef TD5 - if ( ( error = HeadRotationFileReading( headRotReader, Quaternions, Pos ) ) != IVAS_ERR_OK ) -#else - if ( ( error = HeadRotationFileReading( headRotReader, Quaternions, frame ) ) != IVAS_ERR_OK ) -#endif - { - fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), HeadRotationFileReader_getFilePath( headRotReader ) ); - goto cleanup; - } -#endif -#ifdef TD5 if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions, Pos ) ) != IVAS_ERR_OK ) -#else - if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -1688,11 +1543,7 @@ static ivas_error decodeG192( arg, numInitialBadFrames, nOutSamples, -#ifdef BINAURALIZATION_DELAY_REPORT delayNumSamples_orig, -#else - &delayNumSamples_orig, -#endif &delayNumSamples, &delayTimeScale, &bsFormat, @@ -1806,13 +1657,8 @@ static ivas_error decodeG192( * Add zeros at the end to have equal length of synthesized signals *------------------------------------------------------------------------------------------*/ -#ifdef BINAURALIZATION_DELAY_REPORT memset( pcmBuf, 0, delayNumSamples_orig[0] * nOutChannels * sizeof( int16_t ) ); if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig[0] * nOutChannels ) ) != IVAS_ERR_OK ) -#else - memset( pcmBuf, 0, delayNumSamples_orig * nOutChannels * sizeof( int16_t ) ); - if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig * nOutChannels ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nError writing output file: %s\n", ivas_error_to_string( error ) ); goto cleanup; @@ -1824,21 +1670,13 @@ static ivas_error decodeG192( if ( !arg.quietModeEnabled ) { -#ifdef BINAURALIZATION_DELAY_REPORT printf( "\n\nDecoder+renderer delay: %4.2f ms (%3u samples at timescale %5u)\n", 1000.f * delayNumSamples_orig[1] / (float) delayTimeScale, delayNumSamples_orig[1], delayTimeScale ); if ( delayNumSamples_orig[2] > 0 ) { printf( "HRIR/BRIR delay: %4.2f ms (%3u samples at timescale %5u)\n", 1000.f * delayNumSamples_orig[2] / (float) delayTimeScale, delayNumSamples_orig[2], delayTimeScale ); -#ifdef FIX_371_DELAY_REPORT printf( "Total delay: %4.2f ms (%3u samples at timescale %5u)\n", 1000.f * ( delayNumSamples_orig[1] + delayNumSamples_orig[2] ) / (float) delayTimeScale, delayNumSamples_orig[1] + delayNumSamples_orig[2], delayTimeScale ); -#else - printf( "Total delay: %4.2f ms (%3u samples at timescale %5u)\n", 1000.f * delayNumSamples_orig[0] / (float) delayTimeScale, delayNumSamples_orig[0], delayTimeScale ); -#endif } -#else - fprintf( stdout, "\nDecoder delay: %-5u [samples] - Timescale: %5u\n", delayNumSamples_orig, delayTimeScale ); -#endif } /* Print output metadata file name(s) */ @@ -2027,11 +1865,7 @@ static ivas_error decodeVoIP( #endif JbmOffsetFileWriter *jbmOffsetWriter = NULL; -#ifdef BINAURALIZATION_DELAY_REPORT int16_t delayNumSamples_orig[3]; /* stores: overall delay, dec+rend delay, and binauralization delay */ -#else - int16_t delayNumSamples_orig = -1; -#endif int16_t delayNumSamples = -1; int32_t delayTimeScale = -1; @@ -2051,9 +1885,7 @@ static ivas_error decodeVoIP( ismWriters[i] = NULL; } -#ifdef BINAURALIZATION_DELAY_REPORT delayNumSamples_orig[0] = -1; -#endif rtpdumpDepacker.rtpdump = NULL; switch ( arg.inputFormat ) @@ -2250,11 +2082,7 @@ static ivas_error decodeVoIP( arg, numInitialBadFrames, nOutSamples, -#ifdef BINAURALIZATION_DELAY_REPORT delayNumSamples_orig, -#else - &delayNumSamples_orig, -#endif &delayNumSamples, &delayTimeScale, &bsFormat, @@ -2311,13 +2139,8 @@ static ivas_error decodeVoIP( * Add zeros at the end to have equal length of synthesized signals *------------------------------------------------------------------------------------------*/ -#ifdef BINAURALIZATION_DELAY_REPORT memset( pcmBuf, 0, delayNumSamples_orig[0] * nOutChannels * sizeof( int16_t ) ); if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig[0] * nOutChannels ) ) != IVAS_ERR_OK ) -#else - memset( pcmBuf, 0, delayNumSamples_orig * nOutChannels * sizeof( int16_t ) ); - if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig * nOutChannels ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nError writing output file: %s\n", ivas_error_to_string( error ) ); goto cleanup; @@ -2329,21 +2152,13 @@ static ivas_error decodeVoIP( if ( !arg.quietModeEnabled ) { -#ifdef BINAURALIZATION_DELAY_REPORT printf( "\n\nDecoder+renderer delay: %4.2f ms (%3u samples at timescale %5u)\n", 1000.f * delayNumSamples_orig[1] / (float) delayTimeScale, delayNumSamples_orig[1], delayTimeScale ); if ( delayNumSamples_orig[2] > 0 ) { printf( "HRIR/BRIR delay: %4.2f ms (%3u samples at timescale %5u)\n", 1000.f * delayNumSamples_orig[2] / (float) delayTimeScale, delayNumSamples_orig[2], delayTimeScale ); -#ifdef FIX_371_DELAY_REPORT printf( "Total delay: %4.2f ms (%3u samples at timescale %5u)\n", 1000.f * ( delayNumSamples_orig[1] + delayNumSamples_orig[2] ) / (float) delayTimeScale, delayNumSamples_orig[1] + delayNumSamples_orig[2], delayTimeScale ); -#else - printf( "Total delay: %4.2f ms (%3u samples at timescale %5u)\n", 1000.f * delayNumSamples_orig[0] / (float) delayTimeScale, delayNumSamples_orig[0], delayTimeScale ); -#endif } -#else - printf( "\nDecoder delay: %5u [samples] - Timescale: %5u\n", delayNumSamples_orig, delayTimeScale ); -#endif } /*------------------------------------------------------------------------------------------* diff --git a/apps/encoder.c b/apps/encoder.c index ff6f461838a5b73410129dde9f274f42f1e28bfe..aae2e1e88e1766814bff4987d2b6aab8156d59a8 100644 --- a/apps/encoder.c +++ b/apps/encoder.c @@ -126,9 +126,7 @@ typedef struct #endif #endif bool pca; -#ifdef TD5 bool ism_extended_metadata; -#endif } EncArguments; @@ -381,11 +379,7 @@ int main( } break; case IVAS_ENC_INPUT_ISM: -#ifdef TD5 if ( ( error = IVAS_ENC_ConfigureForObjects( hIvasEnc, arg.inputFs, totalBitrate, arg.max_bwidth_user, bandwidth, arg.dtxConfig, arg.inputFormatConfig.ism.numObjects, arg.ism_extended_metadata ) ) != IVAS_ERR_OK ) -#else - if ( ( error = IVAS_ENC_ConfigureForObjects( hIvasEnc, arg.inputFs, totalBitrate, arg.max_bwidth_user, bandwidth, arg.dtxConfig, arg.inputFormatConfig.ism.numObjects ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nIVAS_ENC_ConfigureForObjects failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) ); goto cleanup; @@ -883,9 +877,7 @@ static void initArgStruct( EncArguments *arg ) arg->caConfig = IVAS_ENC_GetDefaultChannelAwareConfig(); arg->ca_config_file = NULL; arg->mimeOutput = false; -#ifdef TD5 arg->ism_extended_metadata = false; -#endif #ifdef DEBUGGING arg->forcedMode = IVAS_ENC_FORCE_UNFORCED; @@ -1273,13 +1265,11 @@ static bool parseCmdlIVAS_enc( if ( i < argc - 4 ) { -#ifdef TD5 if ( argv[i][0] == '+' ) { argv[i]++; arg->ism_extended_metadata = true; } -#endif if ( !is_digits_only( argv[i] ) ) { fprintf( stderr, "Error: Number of ISM channels must be an integer number!\n\n" ); @@ -1660,14 +1650,9 @@ static void usage_enc( void ) fprintf( stdout, "EVS mono is default, for IVAS choose one of the following: -stereo, -ism, -sba, -masa, -mc\n" ); fprintf( stdout, "-stereo [Mode] : Stereo format, default is unified stereo \n" ); fprintf( stdout, " optional for Mode: 1: DFT Stereo, 2: TD Stereo, 3: MDCT Stereo\n" ); -#ifdef TD5 fprintf( stdout, "-ism (+)Ch Files : ISM format \n" ); fprintf( stdout, " where Ch specifies the number of ISMs (1-4)\n" ); fprintf( stdout, " where positive (+) means extended metadata format is used (including orientation and radius) \n" ); -#else - fprintf( stdout, "-ism Channels Files : ISM format \n" ); - fprintf( stdout, " where Channels specifies the number of ISMs (1-4)\n" ); -#endif fprintf( stdout, " and Files specify input files containing metadata, one file per object\n" ); fprintf( stdout, " (use NULL for no input metadata)\n" ); fprintf( stdout, "-sba +/-Order : Scene Based Audio input format (Ambisonics ACN/SN3D),\n" ); diff --git a/apps/renderer.c b/apps/renderer.c index 5e8ca98e9c8295e360cec57e551dfa93f50568a4..c2fb6add8a680642a7ec9715170e078936499cee 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -42,9 +42,7 @@ #include "cmdl_tools.h" #include "cmdln_parser.h" #include "head_rotation_file_reader.h" -#ifdef OTR_REFERENCE_VECTOR_TRACKING #include "vector3_pair_file_reader.h" -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ #include "hrtf_file_reader.h" #include "ism_file_reader.h" #include "ls_custom_file_reader.h" @@ -133,12 +131,8 @@ typedef struct char inMetadataFilePaths[RENDERER_MAX_ISM_INPUTS][RENDERER_MAX_CLI_ARG_LENGTH]; int16_t numInMetadataFiles; char headRotationFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING char referenceVectorFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ char referenceRotationFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; -#endif char customHrtfFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; char renderConfigFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; int8_t orientationTracking; @@ -175,9 +169,7 @@ typedef enum CmdLnOptionId_inputMetadata, CmdLnOptionId_listFormats, CmdLnOptionId_inputGain, -#ifdef OTR_REFERENCE_VECTOR_TRACKING CmdLnOptionId_referenceVectorFile, -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ } CmdLnOptionId; static const CmdLnParser_Option cliOptions[] = { @@ -251,15 +243,7 @@ static const CmdLnParser_Option cliOptions[] = { .id = CmdLnOptionId_orientationTracking, .match = "tracking_type", .matchShort = "otr", -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING .description = "Head orientation tracking type: 'none', 'ref', 'avg' or `ref_vec` or `ref_vec_lev` (only for BINAURAL and BINAURAL_ROOM)", -#else - .description = "Head orientation tracking type: 'none', 'ref' or 'avg' (only for BINAURAL and BINAURAL_ROOM)", -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#else - .description = "Head orientation tracking type: 'ref' or 'avg' (only for BINAURAL and BINAURAL_ROOM)", -#endif }, { .id = CmdlnOptionId_lfePosition, @@ -295,14 +279,12 @@ static const CmdLnParser_Option cliOptions[] = { .matchShort = "l", .description = "List supported audio formats", }, -#ifdef OTR_REFERENCE_VECTOR_TRACKING { .id = CmdLnOptionId_referenceVectorFile, .match = "reference_vector_file", .matchShort = "rvf", .description = "Reference vector trajectory file for simulation of head tracking (only for BINAURAL and BINAURAL_ROOM outputs)", }, -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ }; @@ -529,12 +511,8 @@ int main( { IVAS_REND_HANDLE hIvasRend; HeadRotFileReader *headRotReader = NULL; -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING Vector3PairFileReader *referenceVectorReader = NULL; -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ HeadRotFileReader *referenceRotReader = NULL; -#endif hrtfFileReader *hrtfFileReader = NULL; IsmPositionProvider *positionProvider; RenderConfigReader *renderConfigReader = NULL; @@ -558,9 +536,7 @@ int main( int32_t delayTimeScale = 0; int16_t i, numChannels; ivas_error error = IVAS_ERR_OK; -#ifdef TD5 IVAS_POSITION Pos[RENDERER_HEAD_POSITIONS_PER_FRAME]; -#endif #ifdef WMOPS reset_wmops(); @@ -579,20 +555,9 @@ int main( convert_backslash( args.inputFilePath ); convert_backslash( args.outputFilePath ); -#ifndef FIX_I109_ORIENTATION_TRACKING - /* disable 'refrotequal' test cases */ - if ( strstr( args.headRotationFilePath, "azi_plus_2-ele_plus_2-every-100-frames.csv" ) != NULL ) - { - memset( args.headRotationFilePath, '\0', sizeof( args.headRotationFilePath ) ); - } -#endif convert_backslash( args.headRotationFilePath ); -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING convert_backslash( args.referenceVectorFilePath ); -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ convert_backslash( args.referenceRotationFilePath ); -#endif convert_backslash( args.inLfePanningMatrixFile ); if ( !isEmptyString( args.headRotationFilePath ) ) @@ -604,7 +569,6 @@ int main( } } -#ifdef FIX_I109_ORIENTATION_TRACKING if ( !isEmptyString( args.referenceRotationFilePath ) ) { if ( HeadRotationFileReader_open( args.referenceRotationFilePath, &referenceRotReader ) != IVAS_ERR_OK ) @@ -613,7 +577,6 @@ int main( exit( -1 ); } } -#ifdef OTR_REFERENCE_VECTOR_TRACKING if ( !isEmptyString( args.referenceVectorFilePath ) ) { if ( Vector3PairFileReader_open( args.referenceVectorFilePath, &referenceVectorReader ) != IVAS_ERR_OK ) @@ -622,8 +585,6 @@ int main( exit( -1 ); } } -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#endif if ( !isEmptyString( args.customHrtfFilePath ) ) { @@ -712,11 +673,7 @@ int main( } /* === Configure === */ -#ifdef TD5 if ( ( error = IVAS_REND_InitConfig( hIvasRend, ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM ) || ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL ) ) ) != IVAS_ERR_OK ) -#else - if ( ( error = IVAS_REND_InitConfig( hIvasRend, strlen( args.renderConfigFilePath ) != 0 ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "Error in Renderer Config Init\n" ); exit( -1 ); @@ -727,17 +684,9 @@ int main( IVAS_RENDER_CONFIG_DATA renderConfig; /* sanity check */ -#ifdef TD5 if ( ( args.outConfig.audioConfig != IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM ) && ( args.outConfig.audioConfig != IVAS_REND_AUDIO_CONFIG_BINAURAL ) ) -#else - if ( args.outConfig.audioConfig != IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM ) -#endif { -#ifdef TD5 fprintf( stderr, "\nExternal Renderer Config is supported only when BINAURAL or BINAURAL_ROOM is used as output. Exiting. \n" ); -#else - fprintf( stderr, "\nExternal Renderer Config is supported only when BINAURAL_ROOM is used as output. Exiting. \n" ); -#endif exit( -1 ); } @@ -760,12 +709,10 @@ int main( } } -#ifdef FIX_I109_ORIENTATION_TRACKING if ( ( error = IVAS_REND_SetOrientationTrackingMode( hIvasRend, args.orientationTracking ) ) != IVAS_ERR_OK ) { return error; } -#endif /* Set up output custom layout configuration */ if ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) @@ -966,8 +913,6 @@ int main( ObjectPositionBuffer mtdBuffer; IsmPositionProvider_getNextFrame( positionProvider, &mtdBuffer ); -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING if ( referenceVectorReader != NULL ) { IVAS_VECTOR3 listenerPos, refPos; @@ -982,16 +927,11 @@ int main( exit( -1 ); } } -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ /* Read from reference rotation trajectory file if specified */ if ( referenceRotReader != NULL ) { IVAS_QUATERNION quaternion; -#ifdef TD5 if ( ( error = HeadRotationFileReading( referenceRotReader, &quaternion, NULL ) ) != IVAS_ERR_OK ) -#else - if ( HeadRotationFileReading( referenceRotReader, &quaternion ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "Error in Head Rotation File Reading: %s\n", ivas_error_to_string( error ) ); exit( -1 ); @@ -1003,38 +943,21 @@ int main( exit( -1 ); } } -#endif /* Read from head rotation trajectory file if specified */ if ( headRotReader != NULL ) { IVAS_QUATERNION quatBuffer[RENDERER_HEAD_POSITIONS_PER_FRAME]; -#ifdef FIX_I109_ORIENTATION_TRACKING for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; i++ ) { -#ifdef TD5 if ( ( error = HeadRotationFileReading( headRotReader, &quatBuffer[i], &Pos[i] ) ) != IVAS_ERR_OK ) -#else - if ( HeadRotationFileReading( headRotReader, &quatBuffer[i] ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "Error in Head Rotation File Reading: %s\n", ivas_error_to_string( error ) ); exit( -1 ); } } -#else -#ifdef TD5 - HeadRotationFileReading( headRotReader, quatBuffer, Pos ); -#else - HeadRotationFileReading( headRotReader, quatBuffer, frame ); -#endif -#endif -#ifdef TD5 if ( ( error = IVAS_REND_SetHeadRotation( hIvasRend, quatBuffer, Pos ) ) != IVAS_ERR_OK ) -#else - if ( IVAS_REND_SetHeadRotation( hIvasRend, quatBuffer ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "Error setting Head Rotation: %s\n", ivas_error_to_string( error ) ); exit( -1 ); @@ -1042,11 +965,7 @@ int main( } else { -#ifdef TD5 if ( ( ( error = IVAS_REND_SetHeadRotation( hIvasRend, NULL, NULL ) ) != IVAS_ERR_OK ) && ( IVAS_REND_SetHeadRotation( hIvasRend, NULL, NULL ) != IVAS_ERR_INVALID_OUTPUT_FORMAT ) ) // VE: TBC -#else - if ( ( IVAS_REND_SetHeadRotation( hIvasRend, NULL ) != IVAS_ERR_OK ) && ( IVAS_REND_SetHeadRotation( hIvasRend, NULL ) != IVAS_ERR_INVALID_OUTPUT_FORMAT ) ) -#endif { fprintf( stderr, "Error setting Head Rotation: %s\n", ivas_error_to_string( error ) ); exit( -1 ); @@ -1226,12 +1145,8 @@ int main( AudioFileReader_close( &audioReader ); AudioFileWriter_close( &audioWriter ); HeadRotationFileReader_close( &headRotReader ); -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING Vector3PairFileReader_close( &referenceVectorReader ); -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ HeadRotationFileReader_close( &referenceRotReader ); -#endif hrtfFileReader_close( &hrtfFileReader ); IVAS_REND_Close( &hIvasRend ); IsmPositionProvider_close( positionProvider ); @@ -1457,15 +1372,11 @@ static bool parseOrientationTracking( to_upper( value ); -#ifdef FIX_I109_ORIENTATION_TRACKING if ( strcmp( value, "NONE" ) == 0 ) { *tracking_type = IVAS_ORIENT_TRK_NONE; } else if ( strcmp( value, "REF" ) == 0 ) -#else - if ( strcmp( value, "REF" ) == 0 ) -#endif { *tracking_type = IVAS_ORIENT_TRK_REF; } @@ -1473,8 +1384,6 @@ static bool parseOrientationTracking( { *tracking_type = IVAS_ORIENT_TRK_AVG; } -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING else if ( strcmp( value, "REF_VEC" ) == 0 ) { *tracking_type = IVAS_ORIENT_TRK_REF_VEC; @@ -1483,8 +1392,6 @@ static bool parseOrientationTracking( { *tracking_type = IVAS_ORIENT_TRK_REF_VEC_LEV; } -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#endif else { fprintf( stderr, "Error: Invalid orientation tracking type %s \n\n", value ); @@ -1702,20 +1609,12 @@ static CmdlnArgs defaultArgs( args.numInMetadataFiles = 0; clearString( args.headRotationFilePath ); -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING clearString( args.referenceVectorFilePath ); -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ clearString( args.referenceRotationFilePath ); -#endif clearString( args.customHrtfFilePath ); clearString( args.renderConfigFilePath ); -#ifdef FIX_I109_ORIENTATION_TRACKING args.orientationTracking = IVAS_ORIENT_TRK_NONE; -#else - args.orientationTracking = IVAS_ORIENT_TRK_REF; -#endif args.noDiegeticPan = 0.0f; args.delayCompensationEnabled = true; @@ -1790,18 +1689,14 @@ static void parseOption( assert( numOptionValues == 1 ); strncpy( args->headRotationFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 ); break; -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING case CmdLnOptionId_referenceVectorFile: assert( numOptionValues == 1 ); strncpy( args->referenceVectorFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 ); break; -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ case CmdLnOptionId_refRotFile: assert( numOptionValues == 1 ); strncpy( args->referenceRotationFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 ); break; -#endif case CmdLnOptionId_customHrtfFile: assert( numOptionValues == 1 ); strncpy( args->customHrtfFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 ); @@ -1924,11 +1819,9 @@ void getMetadataFromFileReader( objectMetadataBuffer->positions[objIdx].azimuth = ismMetadata.azimuth; objectMetadataBuffer->positions[objIdx].elevation = ismMetadata.elevation; -#ifdef TD5 objectMetadataBuffer->positions[objIdx].radius = ismMetadata.radius; objectMetadataBuffer->positions[objIdx].yaw = ismMetadata.yaw; objectMetadataBuffer->positions[objIdx].pitch = ismMetadata.pitch; -#endif return; } @@ -1983,11 +1876,9 @@ static void IsmPositionProvider_getNextFrame( { objectMetadataBuffer->positions[objIdx].azimuth = 0.0f; objectMetadataBuffer->positions[objIdx].elevation = 0.0f; -#ifdef TD5 objectMetadataBuffer->positions[objIdx].radius = 1.0f; objectMetadataBuffer->positions[objIdx].yaw = 0.0f; objectMetadataBuffer->positions[objIdx].pitch = 0.0f; -#endif } /* Wrap azimuth to lie within (-180, 180] range */ @@ -2002,7 +1893,6 @@ static void IsmPositionProvider_getNextFrame( /* Clamp elevation to lie within [-90, 90] range (can't be wrapped easily) */ objectMetadataBuffer->positions[objIdx].elevation = min( max( objectMetadataBuffer->positions[objIdx].elevation, -90 ), 90 ); -#ifdef TD5 /* Wrap yaw to lie within (-180, 180] range */ while ( objectMetadataBuffer->positions[objIdx].yaw < 0.0f ) { @@ -2015,7 +1905,6 @@ static void IsmPositionProvider_getNextFrame( /* Clamp pitch to lie within [-90, 90] range (can't be wrapped easily) */ objectMetadataBuffer->positions[objIdx].pitch = min( max( objectMetadataBuffer->positions[objIdx].pitch, -90 ), 90 ); -#endif } ++positionProvider->frameCounter; @@ -2250,7 +2139,6 @@ static void parseObjectPosition( uint16_t *positionDuration ) { char *endptr; -#ifdef TD5 int16_t read_values; float meta_prm[7] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f }; @@ -2271,34 +2159,6 @@ static void parseObjectPosition( position->radius = meta_prm[2]; position->yaw = meta_prm[5]; position->pitch = meta_prm[6]; -#else - - readNextMetadataChunk( line, "," ); - *positionDuration = (uint16_t) strtol( line, &endptr, 10 ); - - if ( *endptr != '\0' ) - { - fprintf( stderr, "Error reading metadata\n" ); - exit( -1 ); - } - - readNextMetadataChunk( line, "," ); - position->azimuth = strtof( line, &endptr ); - - if ( *endptr != '\0' ) - { - fprintf( stderr, "Error reading metadata\n" ); - exit( -1 ); - } - - readNextMetadataChunk( line, "\n" ); - position->elevation = strtof( line, &endptr ); - if ( *endptr != '\0' ) - { - fprintf( stderr, "Error reading metadata\n" ); - exit( -1 ); - } -#endif return; } diff --git a/lib_com/common_api_types.h b/lib_com/common_api_types.h index 0ca4d6b461ac97f9a0f0c7cf2009d9628270b934..3e012a6f99685c080760cade2d1e15a90874970a 100644 --- a/lib_com/common_api_types.h +++ b/lib_com/common_api_types.h @@ -78,10 +78,8 @@ typedef struct _IVAS_ISM_METADATA float radius; float spread; float gainFactor; -#ifdef TD5 float yaw; float pitch; -#endif } IVAS_ISM_METADATA; typedef struct @@ -90,20 +88,16 @@ typedef struct } IVAS_QUATERNION; -#ifdef OTR_REFERENCE_VECTOR_TRACKING typedef struct { float x, y, z; } IVAS_VECTOR3; -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#ifdef TD5 typedef struct { float x, y, z; } IVAS_POSITION; -#endif typedef struct ivas_masa_metadata_frame_struct *IVAS_MASA_METADATA_HANDLE; #ifdef FIX_350_MASA_DELAY_COMP @@ -130,11 +124,9 @@ typedef struct { float azimuth; float elevation; -#ifdef TD5 float radius; float yaw; float pitch; -#endif } IVAS_REND_AudioObjectPosition; typedef struct _IVAS_ROOM_ACOUSTICS_CONFIG @@ -156,9 +148,7 @@ typedef struct _IVAS_RENDER_CONFIG IVAS_RENDER_TYPE_OVERRIDE renderer_type_override; #endif IVAS_ROOM_ACOUSTICS_CONFIG_DATA room_acoustics; -#ifdef TD5 float directivity[3]; -#endif } IVAS_RENDER_CONFIG_DATA, *IVAS_RENDER_CONFIG_HANDLE; typedef struct _IVAS_LS_CUSTOM_LAYOUT diff --git a/lib_com/delay_comp.c b/lib_com/delay_comp.c index 9f8c1c7b9b1530716d207462b021b5b2a5e4bdfe..b96798815e46592f6a4bf3194e248c1145b7bc30 100644 --- a/lib_com/delay_comp.c +++ b/lib_com/delay_comp.c @@ -55,10 +55,6 @@ int32_t get_delay( const int32_t io_fs, /* i : input/output sampling frequency */ const IVAS_FORMAT ivas_format, /* i : IVAS format */ HANDLE_CLDFB_FILTER_BANK hCldfb /* i : Handle of Cldfb analysis */ -#ifndef BINAURALIZATION_DELAY_REPORT - , - const int32_t binaural_latency_ns /* i : binaural renderer HRTF delay in ns */ -#endif ) { int32_t delay = 0; @@ -110,10 +106,6 @@ int32_t get_delay( delay += IVAS_FB_DEC_DELAY_NS; } -#ifndef BINAURALIZATION_DELAY_REPORT - /* compensate for binauralization delay */ - delay += binaural_latency_ns; -#endif #ifdef FIX_350_MASA_DELAY_COMP if ( ivas_format == MASA_FORMAT ) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 3f48b0b43e8c8596b538fc4642f68c89d22bff6b..8f0059d0924a3a996c62779761bb1e3743483ed3 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -320,13 +320,11 @@ typedef enum #define ISM_Q_STEP 2.5f #define ISM_Q_STEP_BORDER 5.0f -#ifdef TD5 #define ISM_RADIUS_NBITS 6 #define ISM_RADIUS_MIN 0.0f #define ISM_RADIUS_DELTA 0.25f /* Max radius = (2^ISM_RADIUS_NBITS-1)*0.25 = 15.75 */ #define ISM_EXTENDED_METADATA_BRATE IVAS_64k #define ISM_EXTENDED_METADATA_BITS 1 -#endif /* Parametric ISM */ #define MAX_PARAM_ISM_NBANDS 11 @@ -374,12 +372,8 @@ typedef enum enum { IND_ISM_NUM_OBJECTS, -#ifdef TD5 IND_ISM_EXTENDED_FLAG = IND_ISM_NUM_OBJECTS + MAX_NUM_OBJECTS, IND_ISM_METADATA_FLAG = IND_ISM_EXTENDED_FLAG + MAX_NUM_OBJECTS, /* EN2VE: Is this not supposed to be in the loop part below, since it is one per ISM? */ -#else - IND_ISM_METADATA_FLAG = IND_ISM_NUM_OBJECTS + MAX_NUM_OBJECTS, -#endif IND_ISM_VAD_FLAG = IND_ISM_METADATA_FLAG + MAX_NUM_OBJECTS, #ifdef DISCRETE_ISM_DTX_CNG IND_ISM_NOISY_SPEECH_FLAG = IND_ISM_VAD_FLAG + MAX_NUM_OBJECTS, @@ -396,10 +390,8 @@ enum IND_ISM_AZIMUTH = TAG_ISM_LOOP_START, IND_ISM_ELEVATION_DIFF_FLAG = TAG_ISM_LOOP_START, IND_ISM_ELEVATION = TAG_ISM_LOOP_START, -#ifdef TD5 IND_ISM_RADIUS_DIFF_FLAG = TAG_ISM_LOOP_START, IND_ISM_RADIUS = TAG_ISM_LOOP_START, -#endif TAG_ISM_LOOP_END = TAG_ISM_LOOP_START + 100, /* IVAS_fmToDo: to be reviewed once the final metadata are defined */ /* --------- end of loop for objects ----------- */ @@ -964,10 +956,8 @@ typedef enum #ifdef FIX_350_MASA_DELAY_COMP #define DELAY_MASA_PARAM_DEC_SFR 2 /* Delay to be compensation for MASA parameters in the decoder (subframes) */ -#ifdef FIX_373_MASA_DELAY_COMP_MSAN #define SPH_IDX_FRONT ( MASA_NO_POINTS_EQUATOR / 2 ) /* Spherical index corresponding to front direction for setting as default value */ #endif -#endif #define DIRAC_SLOT_NS 1250000L /* time duration of a time slot, 1.25ms (==DELAY_RENERER_NS/MAX_PARAM_SPATIAL_SUBFRAMES) */ #define DIRAC_SLOT_ENC_NS 5000000L @@ -1508,35 +1498,20 @@ typedef enum *----------------------------------------------------------------------------------*/ /* Orientation tracking types */ -#ifdef FIX_I109_ORIENTATION_TRACKING #define IVAS_ORIENT_TRK_NONE 0 #define IVAS_ORIENT_TRK_REF 1 #define IVAS_ORIENT_TRK_AVG 2 -#ifdef OTR_REFERENCE_VECTOR_TRACKING #define IVAS_ORIENT_TRK_REF_VEC 3 #define IVAS_ORIENT_TRK_REF_VEC_LEV 4 -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#else -#define IVAS_ORIENT_TRK_REF 0 -#define IVAS_ORIENT_TRK_AVG 1 -#endif typedef enum { -#ifdef FIX_I109_ORIENTATION_TRACKING OTR_TRACKING_NONE = IVAS_ORIENT_TRK_NONE, -#else - OTR_TRACKING_NONE = IVAS_ORIENT_TRK_REF-1, -#endif OTR_TRACKING_REF_ORIENT = IVAS_ORIENT_TRK_REF, /* track orientation relative to external reference orientation (default: no rotation) */ OTR_TRACKING_AVG_ORIENT = IVAS_ORIENT_TRK_AVG /* track orientation relative to average orientation */ -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING , OTR_TRACKING_REF_VEC = IVAS_ORIENT_TRK_REF_VEC, /* track orientation relative to external reference vector */ OTR_TRACKING_REF_VEC_LEV = IVAS_ORIENT_TRK_REF_VEC_LEV /* track orientation relative to level component of external reference vector */ -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#endif } OTR_TRACKING_T; diff --git a/lib_com/ivas_ism_com.c b/lib_com/ivas_ism_com.c index cdcb3a9b1c980cb1f74ab89928e5048e4177c608..297e2cfb45b3724438270d7fcf69bb85f52cb77b 100644 --- a/lib_com/ivas_ism_com.c +++ b/lib_com/ivas_ism_com.c @@ -132,12 +132,10 @@ ivas_error ivas_ism_config( /* count ISM common signaling bits */ if ( hIsmMeta != NULL ) { -#ifdef TD5 if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE ) { nb_bits_metadata[0] += ISM_EXTENDED_METADATA_BITS; } -#endif nb_bits_metadata[0] += n_ISms * ISM_METADATA_FLAG_BITS + nchan_ism; for ( ch = 0; ch < n_ISms; ch++ ) @@ -336,11 +334,9 @@ void ivas_ism_reset_metadata( { hIsmMeta->azimuth = 0.0f; hIsmMeta->elevation = 0.0f; -#ifdef TD5 hIsmMeta->yaw = 0.0f; hIsmMeta->pitch = 0.0f; hIsmMeta->radius = 1.0f; -#endif return; } diff --git a/lib_com/ivas_masa_com.c b/lib_com/ivas_masa_com.c index bd0336ad432f868ea1b25942446abd122217eb76..5bfbd00939e33161d07c40426ecf5c37589af763 100644 --- a/lib_com/ivas_masa_com.c +++ b/lib_com/ivas_masa_com.c @@ -314,7 +314,7 @@ void masa_sample_rate_band_correction( int16_t *band_mapping, /* i/o: Band mapping used and modified */ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: QMetadata structure for modification */ const int32_t sampling_rate /* i : Sampling rate */ -#ifdef FIX_373_MASA_DELAY_COMP_MSAN +#ifdef FIX_373_MASA_DELAY_COMP , MASA_DECODER_EXT_OUT_META_HANDLE hExtOutMeta /* i/o: MASA decoder metadata ext out buffer */ #endif @@ -390,7 +390,7 @@ void masa_sample_rate_band_correction( hQMetaData->twoDirBands[band] = 0; } } -#ifdef FIX_373_MASA_DELAY_COMP_MSAN +#ifdef FIX_373_MASA_DELAY_COMP if ( hExtOutMeta != NULL ) { /* in decoder, zero the EXT out MASA meta buffer */ diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index 72975e1f9f5eea806c3839be7e6401e850287599..c51321d667c20ee989502e57041a67bba01e4924 100644 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -786,14 +786,10 @@ float ism_dequant_meta( ivas_error ivas_set_ism_metadata( ISM_METADATA_HANDLE hIsmMeta, /* o : ISM metadata handle */ const float azimuth, /* i : azimuth value */ -#ifdef TD5 const float elevation, /* i : elevation value */ const float radius_meta, /* i : radius */ const float yaw, /* i : yaw */ const float pitch /* i : pitch */ -#else - const float elevation /* i : elevation value */ -#endif ); ivas_error ivas_ism_metadata_enc_create( @@ -827,12 +823,8 @@ ivas_error ivas_ism_metadata_enc( int16_t nb_bits_metadata[], /* o : number of metadata bits */ const int16_t localVAD[], /* i : VAD flag */ const int16_t ism_mode, /* i : ISM mode */ -#ifdef TD5 const PARAM_ISM_CONFIG_HANDLE hParamIsm, /* i : Param ISM Config Handle */ const int16_t ism_extended_metadata_flag /* i : Extended metadata flag */ -#else - const PARAM_ISM_CONFIG_HANDLE hParamIsm /* i : Param ISM Config Handle */ -#endif ); ivas_error ivas_ism_metadata_dec( @@ -4627,7 +4619,7 @@ void masa_sample_rate_band_correction( int16_t *band_mapping, /* i/o: Band mapping used and modified */ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: QMetadata structure for modification */ const int32_t sampling_rate /* i : sampling rate */ -#ifdef FIX_373_MASA_DELAY_COMP_MSAN +#ifdef FIX_373_MASA_DELAY_COMP , MASA_DECODER_EXT_OUT_META_HANDLE hExtOutMeta /* i/o: MASA decoder metadata ext out buffer */ #endif ); diff --git a/lib_com/ivas_stat_com.h b/lib_com/ivas_stat_com.h index b445ac6f0487de5c710c7cf6c9d4d5355d727554..eedb65dbf3b400ed2af8ea4070a8fde86954b419 100644 --- a/lib_com/ivas_stat_com.h +++ b/lib_com/ivas_stat_com.h @@ -44,7 +44,6 @@ * Declaration of ISM common (encoder & decoder) structure *----------------------------------------------------------------------------------*/ -#ifdef TD5 typedef struct { int16_t last_azimuth_idx; /* last frame index of coded azimuth */ @@ -53,7 +52,6 @@ typedef struct int16_t elevation_diff_cnt; /* FEC counter of consecutive differentially elevation coded frames */ } ISM_METADATA_ANGLE, *ISM_METADATA_ANGLE_HANDLE; -#endif /* ISM metadata handle (storage for one frame of read ISM metadata) */ typedef struct @@ -63,19 +61,12 @@ typedef struct float azimuth; /* azimuth value read from the input metadata file */ float elevation; /* azimuth value read from the input metadata file */ -#ifdef TD5 float radius; float yaw; /* azimuth orientation value read from the input metadata file */ float pitch; /* elevation orientation value read from the input metadata file */ ISM_METADATA_ANGLE angle[2]; /* Angle structs for [0] azimuth/elevation and [1] yaw/pitch */ int16_t last_radius_idx; /* last frame index of coded radius */ int16_t radius_diff_cnt; /* FEC counter of consecutive differentially radius coded frames */ -#else - int16_t last_azimuth_idx; /* last frame index of coded azimuth */ - int16_t azimuth_diff_cnt; /* FEC counter of consecutive differentially azimuth coded frames */ - int16_t last_elevation_idx; /* last frame index of coded elevation */ - int16_t elevation_diff_cnt; /* FEC counter of consecutive differentially elevation coded frames */ -#endif #ifdef DISCRETE_ISM_DTX_CNG float last_azimuth; /* MD smoothing in DTX- last Q azimuth value */ diff --git a/lib_com/options.h b/lib_com/options.h index c054a9b5a7efb36bfdb4b4b749ab9492fc3861c9..3c6e1aa960dd573dfa76276a35479a066c9aff6f 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -141,24 +141,9 @@ #define DISABLE_ADAP_RES_COD_TMP /* temporary fix for IVAS-403, disables adaptive residual coding */ /*#define ITD_WINNER_GAIN_MODIFY */ /* ITD optimization - WORK IN PROGRESS */ /*#define FIX_I4_OL_PITCH*/ /* fix open-loop pitch used for EVS core switching */ -#define FIX_I109_ORIENTATION_TRACKING /* Issue 109: Harmonize head and orientation tracking */ /*#define SBA_HPF_TUNING_DEC*/ -#define BINAURALIZATION_DELAY_REPORT /* VA: Issue 255 - Changes the way the decoder delay is reported */ -#define TUNE_360_OBJECT_WITH_NOISE /* VA: issue 360: consider objects being speech+noise for active speech coding */ #define FIX_350_MASA_DELAY_COMP /* Nokia: Issue 350: MASA audio/meta delay compensation */ -#define FIX_372_LIB_REND_VALIDATE_IO /* FhG: Issue 372: IVAS_rend segfaults with unsupported I/O configs - add validation checks of I/O config */ -#define FIX_376_SBA_ROTATE /*DLB: Fix for issue 376*/ -#define TD5 /* Eri: Contribution 17: Extended metadata for 6 DoF rendering in TD renderer */ -#define TD5_FIX_INVALID_MEMORY_ACCESS /* FhG: Resolves segfault in case IVAS_REND_InitConfig gets initialized with rendererConfigEnabled:=false && ISM are being rendered */ -#define FIX_371_DELAY_REPORT /* Issue 371: div. by zero with -no_delay_cmp */ -#define FIX_373_MASA_DELAY_COMP_MSAN /* Nokia: Issue 373: MASA audio/meta delay compensation. MSAN bugfix */ - -#ifdef FIX_I109_ORIENTATION_TRACKING -#define OTR_REFERENCE_VECTOR_TRACKING /* FhG: enables the reference position orientation tracking mode */ -#endif - -#define FIX_380_BFI_PARAMISM /* VA: issue 380 - fix metadata recovery in ParamISM BFI */ #define FIX_MDCT_BASED_BWD /* FhG: fixes for BWD for issues with reaction to transients for MDCT-stereo and MCT */ #define DISCRETE_ISM_DTX_CNG /* FhG/VA: contribution 15 - DTX/CNG for (discrete) ISM */ #define NCHAN_ISM_PARAMETER /* VA: make 'nchan_ism' parameter part of st_ivas/hEncoderConfig */ diff --git a/lib_com/prot.h b/lib_com/prot.h index c8f69fe832232b1373312c8ef0ecbf6fd8e3255e..e89037076e09d444ba077fe2b10759fdfece64ec 100644 --- a/lib_com/prot.h +++ b/lib_com/prot.h @@ -681,10 +681,6 @@ int32_t get_delay( const int32_t io_fs, /* i : input/output sampling frequency */ const IVAS_FORMAT ivas_format, /* i : IVAS format */ HANDLE_CLDFB_FILTER_BANK hCldfb /* i : Handle of Cldfb analysis */ -#ifndef BINAURALIZATION_DELAY_REPORT - , - const int32_t binaural_latency_ns /* i : binauralization delay in ns */ -#endif ); void decision_matrix_enc( diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index bc0a69ae560060b2c4ea351ca6c3b9fbaee33ada..5c19eca256723bf9fe739ee147c2b0d03cf0cc54 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -787,7 +787,6 @@ ivas_error ivas_init_decoder( } } -#ifdef FIX_I109_ORIENTATION_TRACKING /*-----------------------------------------------------------------* * Set head/orientation tracking *-----------------------------------------------------------------*/ @@ -815,7 +814,6 @@ ivas_error ivas_init_decoder( return error; } } -#ifdef OTR_REFERENCE_VECTOR_TRACKING else if ( st_ivas->hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_REF_VEC ) { if ( ( error = ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, OTR_TRACKING_REF_VEC ) ) != IVAS_ERR_OK ) @@ -834,9 +832,7 @@ ivas_error ivas_init_decoder( { return IVAS_ERR_WRONG_MODE; } -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ } -#endif /*-----------------------------------------------------------------* * Allocate and initialize SCE/CPE and other handles @@ -1336,13 +1332,8 @@ ivas_error ivas_init_decoder( } } -#ifdef FIX_I109_ORIENTATION_TRACKING if ( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) -#else - if ( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, - st_ivas->hRenderConfig, st_ivas->hDecoderConfig->Opt_Headrotation, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) -#endif { return error; } @@ -1817,15 +1808,7 @@ void ivas_destroy_dec( } /* Head track data handle */ -#ifdef FIX_I109_ORIENTATION_TRACKING ivas_headTrack_close( &st_ivas->hHeadTrackData ); -#else - if ( st_ivas->hHeadTrackData != NULL ) - { - free( st_ivas->hHeadTrackData ); - st_ivas->hHeadTrackData = NULL; - } -#endif /* Time Domain binaural renderer handle */ if ( st_ivas->hBinRendererTd != NULL ) diff --git a/lib_dec/ivas_ism_dec.c b/lib_dec/ivas_ism_dec.c index 5e0b475e3e0ad02c41c6621c2526b6e36fd163ac..e6571e83d9370369c73086286d6f7e0b145a9255 100644 --- a/lib_dec/ivas_ism_dec.c +++ b/lib_dec/ivas_ism_dec.c @@ -158,9 +158,6 @@ static ivas_error ivas_ism_bitrate_switching( st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, -#ifndef FIX_I109_ORIENTATION_TRACKING - st_ivas->hDecoderConfig->Opt_Headrotation, -#endif st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) { diff --git a/lib_dec/ivas_ism_metadata_dec.c b/lib_dec/ivas_ism_metadata_dec.c index 99f94fa536100b377a11fa6c43b62a525a6a9eb9..75b9164e1dc34f33603c748a6dce1bd8d26c18e4 100644 --- a/lib_dec/ivas_ism_metadata_dec.c +++ b/lib_dec/ivas_ism_metadata_dec.c @@ -46,7 +46,6 @@ #include "wmc_auto.h" -#ifdef TD5 /*-----------------------------------------------------------------------* * Local functions *-----------------------------------------------------------------------*/ @@ -54,7 +53,6 @@ static void decode_angle_indices( DEC_CORE_HANDLE st0, ISM_METADATA_ANGLE_HANDLE angle, int16_t *flag_abs_azimuth ); static int16_t decode_radius( DEC_CORE_HANDLE st0, int16_t *last_radius_idx, int16_t *flag_abs_radius ); -#endif #ifdef DISCRETE_ISM_DTX_CNG /*-------------------------------------------------------------------------* @@ -159,24 +157,15 @@ ivas_error ivas_ism_metadata_dec( const PARAM_ISM_CONFIG_HANDLE hParamIsm /* i : Param ISM Config Handle */ ) { -#ifdef TD5 int16_t ch, nb_bits_start = 0, last_bit_pos; int16_t idx_radius; -#else - int16_t ch, nb_bits_start = 0, last_bit_pos, sgn, diff; -#endif int32_t element_brate[MAX_NUM_OBJECTS], total_brate[MAX_NUM_OBJECTS]; DEC_CORE_HANDLE st0; -#ifdef TD5 int16_t ism_extended_metadata_flag; int16_t flag_abs_radius; int16_t flag_abs_orientation; int16_t idx_azimuth, flag_abs_azimuth; int16_t idx_elevation; -#else - int16_t idx_azimuth, nbits_diff_azimuth, flag_abs_azimuth; - int16_t idx_elevation, nbits_diff_elevation; -#endif int16_t next_bit_pos_orig; uint16_t i, bstr_meta[MAX_BITS_METADATA], *bstr_orig; ISM_METADATA_HANDLE hIsmMetaData; @@ -229,9 +218,7 @@ ivas_error ivas_ism_metadata_dec( bstr_orig = st0->bit_stream; next_bit_pos_orig = st0->next_bit_pos; st0->next_bit_pos = 0; -#ifdef TD5 ism_extended_metadata_flag = 0; -#endif /* reverse the bitstream for easier reading of indices */ for ( i = 0; i < min( MAX_BITS_METADATA, last_bit_pos ); i++ ) @@ -280,13 +267,11 @@ ivas_error ivas_ism_metadata_dec( return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "wrong number of objects signalled!" ); } -#ifdef TD5 /* read extended metadata presence flag */ if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE ) { ism_extended_metadata_flag = get_next_indice( st0, ISM_EXTENDED_METADATA_BITS ); } -#endif /* Read ISM present flags (one per object) */ for ( ch = 0; ch < *nchan_transport; ch++ ) @@ -347,14 +332,11 @@ ivas_error ivas_ism_metadata_dec( } flag_abs_azimuth = 0; -#ifdef TD5 flag_abs_orientation = 0; flag_abs_radius = 0; -#endif if ( hIsmMeta[ch]->ism_metadata_flag ) { -#ifdef TD5 decode_angle_indices( st0, &( hIsmMetaData->angle[0] ), &flag_abs_azimuth ); idx_azimuth = hIsmMetaData->angle[0].last_azimuth_idx; idx_elevation = hIsmMetaData->angle[0].last_elevation_idx; @@ -388,156 +370,6 @@ ivas_error ivas_ism_metadata_dec( hIsmMetaData->radius = 1.0f; } } -#else - /*----------------------------------------------------------------* - * Azimuth decoding and dequantization - *----------------------------------------------------------------*/ - - /* Decode azimuth index */ - if ( get_next_indice( st0, 1 ) == 1 ) /* azimuth_abs_flag */ - { - idx_azimuth = get_next_indice( st0, ISM_AZIMUTH_NBITS ); - flag_abs_azimuth = 1; - } - else - { - diff = 0; - sgn = 1; - - if ( get_next_indice( st0, 1 ) == 0 ) - { - nbits_diff_azimuth = 1; - } - else - { - nbits_diff_azimuth = 1; - - if ( get_next_indice( st0, 1 ) == 1 ) /* negative sign */ - { - sgn = -1; - } - - nbits_diff_azimuth++; - - /* read until the stop bit */ - while ( ( nbits_diff_azimuth < ISM_AZIMUTH_NBITS - 1 ) && ( get_next_indice( st0, 1 ) == 1 ) ) - { - diff++; - nbits_diff_azimuth++; - } - - if ( nbits_diff_azimuth < ISM_AZIMUTH_NBITS - 1 ) - { - /* count stop bit */ - nbits_diff_azimuth++; - } - } - - idx_azimuth = hIsmMetaData->last_azimuth_idx + sgn * diff; - } - - /* azimuth is on a circle - check for diff coding for -180° -> 180° and vice versa changes */ - if ( idx_azimuth > ( 1 << ISM_AZIMUTH_NBITS ) - 1 ) - { - idx_azimuth -= ( 1 << ISM_AZIMUTH_NBITS ) - 1; /* +180° -> -180° */ - } - else if ( idx_azimuth < 0 ) - { - idx_azimuth += ( 1 << ISM_AZIMUTH_NBITS ) - 1; /* -180° -> +180° */ - } - - /* +180° == -180° */ - if ( idx_azimuth == ( 1 << ISM_AZIMUTH_NBITS ) - 1 ) - { - idx_azimuth = 0; - } - - /* sanity check in case of FER or BER */ - if ( idx_azimuth < 0 || idx_azimuth > ( 1 << ISM_AZIMUTH_NBITS ) - 1 ) - { - idx_azimuth = hIsmMetaData->last_azimuth_idx; - } - - /* Azimuth dequantization */ - if ( ism_mode == ISM_MODE_PARAM ) - { - hParamIsm->azi_index[ch] = idx_azimuth; - } - else /* ISM_MODE_DISC */ - { - hIsmMetaData->azimuth = ism_dequant_meta( idx_azimuth, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ); - } - - /*----------------------------------------------------------------* - * Elevation decoding and dequantization - *----------------------------------------------------------------*/ - - /* Decode elevation index */ - if ( flag_abs_azimuth == 0 && get_next_indice( st0, 1 ) == 1 ) /* elevation_abs_flag */ - { - idx_elevation = get_next_indice( st0, ISM_ELEVATION_NBITS ); - } - else - { - diff = 0; - sgn = 1; - - if ( get_next_indice( st0, 1 ) == 0 ) - { - nbits_diff_elevation = 1; - } - else - { - nbits_diff_elevation = 1; - - if ( get_next_indice( st0, 1 ) == 1 ) /* negative sign */ - { - sgn = -1; - } - - nbits_diff_elevation++; - - /* read until the stop bit */ - while ( ( nbits_diff_elevation < ISM_ELEVATION_NBITS ) && ( get_next_indice( st0, 1 ) == 1 ) ) - { - diff++; - nbits_diff_elevation++; - } - - if ( nbits_diff_elevation < ISM_ELEVATION_NBITS ) - { - /* count stop bit */ - nbits_diff_elevation++; - } - } - - idx_elevation = hIsmMetaData->last_elevation_idx + sgn * diff; - } - - /* sanity check in case of FER or BER */ - if ( idx_elevation < 0 || idx_elevation > ( 1 << ISM_ELEVATION_NBITS ) - 1 ) - { - idx_elevation = hIsmMetaData->last_elevation_idx; - } - - /* Elevation dequantization */ - if ( ism_mode == ISM_MODE_PARAM ) - { - hParamIsm->ele_index[ch] = idx_elevation; - } - else /* ISM_MODE_DISC */ - { - hIsmMetaData->elevation = ism_dequant_meta( idx_elevation, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ); - } - - /*----------------------------------------------------------------* - * Final updates - *----------------------------------------------------------------*/ - - /* updates */ - hIsmMetaData->last_azimuth_idx = idx_azimuth; - hIsmMetaData->last_elevation_idx = idx_elevation; -#endif #ifdef DISCRETE_ISM_DTX_CNG /* save for smoothing metadata evolution */ hIsmMetaData->last_true_azimuth = hIsmMetaData->azimuth; @@ -605,7 +437,6 @@ ivas_error ivas_ism_metadata_dec( } else /* BFI */ { -#ifdef FIX_380_BFI_PARAMISM #ifndef NCHAN_ISM_PARAMETER /* "nchan_ism", "hIsmMeta->azimuth" and "hIsmMeta->elevation" are recycled from the last frame */ if ( ism_mode == ISM_MODE_PARAM ) @@ -618,14 +449,6 @@ ivas_error ivas_ism_metadata_dec( } #endif for ( ch = 0; ch < nchan_ism; ch++ ) -#else - /* "*nISms", "hIsmMeta->azimuth" and "hIsmMeta->elevation" are recycled from the last frame */ - for ( ch = 0; ch < *nchan_transport; ch++ ) - { - hIsmMeta[ch]->ism_metadata_flag = hIsmMeta[ch]->last_ism_metadata_flag; - } - for ( ; ch < nchan_ism; ch++ ) -#endif { hIsmMeta[ch]->last_ism_metadata_flag = hIsmMeta[ch]->ism_metadata_flag; } @@ -636,24 +459,10 @@ ivas_error ivas_ism_metadata_dec( { for ( ch = 0; ch < nchan_ism; ch++ ) { -#ifdef FIX_380_BFI_PARAMISM - hParamIsm->azi_index[ch] = hParamIsm->azi_index[ch] + hParamIsm->last_az_sgn[ch] * hParamIsm->last_az_diff[ch]; - hParamIsm->ele_index[ch] = hParamIsm->ele_index[ch] + hParamIsm->last_el_sgn[ch] * hParamIsm->last_el_diff[ch]; -#else hParamIsm->azi_index[ch] = hParamIsm->azi_index[ch] + hParamIsm->last_az_sgn[ch] * hParamIsm->last_az_diff[ch]; - /*hParamIsm->azi_index[ch] = hParamIsm->azi_index[ch] % hParamIsm->az_alpha[ch];*/ - hParamIsm->azi_index[ch] = hParamIsm->azi_index[ch]; hParamIsm->ele_index[ch] = hParamIsm->ele_index[ch] + hParamIsm->last_el_sgn[ch] * hParamIsm->last_el_diff[ch]; - /*hParamIsm->ele_index[ch] = hParamIsm->ele_index[ch] % hParamIsm->ele_alpha;*/ - hParamIsm->ele_index[ch] = hParamIsm->ele_index[ch]; -#endif -#ifdef TD5 hIsmMeta[ch]->angle[0].last_azimuth_idx = hParamIsm->azi_index[ch]; hIsmMeta[ch]->angle[0].last_elevation_idx = hParamIsm->ele_index[ch]; -#else - hIsmMeta[ch]->last_azimuth_idx = hParamIsm->azi_index[ch]; - hIsmMeta[ch]->last_elevation_idx = hParamIsm->ele_index[ch]; -#endif } } } @@ -767,16 +576,11 @@ ivas_error ivas_ism_metadata_dec_create( } st_ivas->hIsmMetaData[ch]->last_ism_metadata_flag = 0; -#ifdef TD5 st_ivas->hIsmMetaData[ch]->angle[0].last_azimuth_idx = 0; st_ivas->hIsmMetaData[ch]->angle[0].last_elevation_idx = 1 << ( ISM_ELEVATION_NBITS - 1 ); st_ivas->hIsmMetaData[ch]->angle[1].last_azimuth_idx = 0; st_ivas->hIsmMetaData[ch]->angle[1].last_elevation_idx = 1 << ( ISM_ELEVATION_NBITS - 1 ); st_ivas->hIsmMetaData[ch]->last_radius_idx = 8; /* Init to radius 1.0 */ -#else - st_ivas->hIsmMetaData[ch]->last_azimuth_idx = 0; - st_ivas->hIsmMetaData[ch]->last_elevation_idx = 1 << ( ISM_ELEVATION_NBITS - 1 ); -#endif #ifdef DISCRETE_ISM_DTX_CNG st_ivas->hIsmMetaData[ch]->last_true_azimuth = 0; @@ -799,7 +603,6 @@ ivas_error ivas_ism_metadata_dec_create( } -#ifdef TD5 /*------------------------------------------------------------------------- * decode_angle_indices() * @@ -1013,7 +816,6 @@ static int16_t decode_radius( return idx_radius; } -#endif #ifdef DISCRETE_ISM_DTX_CNG @@ -1163,23 +965,13 @@ void ivas_ism_metadata_sid_dec( /* update last indexes to correspond to active frames coding */ if ( nBits_azimuth > ISM_AZIMUTH_NBITS ) { -#ifdef TD5 hIsmMetaData->angle[0].last_azimuth_idx = idx_azimuth >> ( nBits_azimuth - ISM_AZIMUTH_NBITS ); hIsmMetaData->angle[0].last_elevation_idx = idx_elevation >> ( nBits_elevation - ISM_ELEVATION_NBITS ); -#else - hIsmMetaData->last_azimuth_idx = idx_azimuth >> ( nBits_azimuth - ISM_AZIMUTH_NBITS ); - hIsmMetaData->last_elevation_idx = idx_elevation >> ( nBits_elevation - ISM_ELEVATION_NBITS ); -#endif } else { -#ifdef TD5 hIsmMetaData->angle[0].last_azimuth_idx = idx_azimuth << ( ISM_AZIMUTH_NBITS - nBits_azimuth ); hIsmMetaData->angle[0].last_elevation_idx = idx_elevation << ( ISM_ELEVATION_NBITS - nBits_elevation ); -#else - hIsmMetaData->last_azimuth_idx = idx_azimuth << ( ISM_AZIMUTH_NBITS - nBits_azimuth ); - hIsmMetaData->last_elevation_idx = idx_elevation << ( ISM_ELEVATION_NBITS - nBits_elevation ); -#endif } /* save for smoothing metadata evolution */ diff --git a/lib_dec/ivas_masa_dec.c b/lib_dec/ivas_masa_dec.c index 5b0223a9bede4e37fc715c8c1178154926ccdaa7..9e2540e968949fe7ff29acdb344df55da0751571 100644 --- a/lib_dec/ivas_masa_dec.c +++ b/lib_dec/ivas_masa_dec.c @@ -501,7 +501,7 @@ static ivas_error ivas_masa_dec_config( ivas_set_qmetadata_maxbit_req( st_ivas->hQMetaData, st_ivas->ivas_format ); -#ifdef FIX_373_MASA_DELAY_COMP_MSAN +#ifdef FIX_373_MASA_DELAY_COMP if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL ) { /* need to apply the sampling rate correction also for the EXT output MASA meta buffer */ diff --git a/lib_dec/ivas_mct_dec.c b/lib_dec/ivas_mct_dec.c index 553cdf2a1bc37c43ba94d7f697d35f2530169ffd..8c53538deccfb06b314ed8a7b1bfd373e80023c6 100644 --- a/lib_dec/ivas_mct_dec.c +++ b/lib_dec/ivas_mct_dec.c @@ -1113,9 +1113,6 @@ static ivas_error ivas_mc_dec_reconfig( st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, -#ifndef FIX_I109_ORIENTATION_TRACKING - st_ivas->hDecoderConfig->Opt_Headrotation, -#endif st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) { diff --git a/lib_dec/ivas_objectRenderer_internal.c b/lib_dec/ivas_objectRenderer_internal.c index d06a2b8f5b6d9ecdd2d1ccd30309004f2e771e72..f1c1fc04f207070edf6ba1652ee35d1fa5fe3c77 100644 --- a/lib_dec/ivas_objectRenderer_internal.c +++ b/lib_dec/ivas_objectRenderer_internal.c @@ -53,13 +53,8 @@ ivas_error ivas_td_binaural_open( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ) { -#ifdef TD5 return ivas_td_binaural_open_unwrap( &st_ivas->hHrtfTD, st_ivas->hDecoderConfig->output_Fs, st_ivas->nchan_transport, st_ivas->ivas_format, st_ivas->transport_config, st_ivas->hRenderConfig->directivity, st_ivas->hTransSetup, &st_ivas->hBinRendererTd, &st_ivas->binaural_latency_ns ); -#else - return ivas_td_binaural_open_unwrap( &st_ivas->hHrtfTD, st_ivas->hDecoderConfig->output_Fs, st_ivas->nchan_transport, st_ivas->ivas_format, - st_ivas->transport_config, st_ivas->hTransSetup, &st_ivas->hBinRendererTd, &st_ivas->binaural_latency_ns ); -#endif } @@ -80,10 +75,6 @@ ivas_error ivas_td_binaural_renderer( st_ivas->hReverb, st_ivas->transport_config, st_ivas->hBinRendererTd, st_ivas->nchan_transport, LFE_CHANNEL, st_ivas->ivas_format, -#ifdef TD5 st_ivas->hIsmMetaData, st_ivas->hDecoderConfig->Opt_Headrotation, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->Quaternions : NULL, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->Pos : NULL, output, output_frame ); -#else - st_ivas->hIsmMetaData, st_ivas->hDecoderConfig->Opt_Headrotation, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->Quaternions : NULL, output, output_frame ); -#endif } diff --git a/lib_dec/lib_dec.c b/lib_dec/lib_dec.c index 61c9494e30bf2244b42a65534bc5e874149f330f..f95f18ae194bb4e3074af06a954c588fd339be27 100644 --- a/lib_dec/lib_dec.c +++ b/lib_dec/lib_dec.c @@ -833,13 +833,9 @@ ivas_error IVAS_DEC_GetObjectMetadata( { metadata->azimuth = hIsmMeta->azimuth; metadata->elevation = hIsmMeta->elevation; -#ifdef TD5 metadata->radius = hIsmMeta->radius; metadata->yaw = hIsmMeta->yaw; metadata->pitch = hIsmMeta->pitch; -#else - metadata->radius = 0.f; -#endif metadata->spread = 0.f; metadata->gainFactor = 1.f; } @@ -889,23 +885,15 @@ ivas_error IVAS_DEC_GetMasaMetadata( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_FeedHeadTrackData( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ -#ifdef TD5 + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ IVAS_QUATERNION *orientation, /* i : head-tracking data, listener orientation */ IVAS_POSITION *Pos /* i : listener position */ -#else - IVAS_QUATERNION *orientation /* i : head-tracking data, listener orientation */ -#endif ) { HEAD_TRACK_DATA_HANDLE hHeadTrackData; int16_t i; -#ifdef FIX_I109_ORIENTATION_TRACKING if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || orientation == NULL ) -#else - if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) -#endif { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } @@ -920,7 +908,6 @@ ivas_error IVAS_DEC_FeedHeadTrackData( /* Move head-tracking data to the decoder handle */ for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { -#ifdef FIX_I109_ORIENTATION_TRACKING /* check for Euler angle signaling */ if ( orientation[i].w == -3.0f ) { @@ -928,17 +915,9 @@ ivas_error IVAS_DEC_FeedHeadTrackData( } ivas_orient_trk_Process( hHeadTrackData->OrientationTracker, orientation[i], FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES, &hHeadTrackData->Quaternions[i] ); -#else - hHeadTrackData->Quaternions[i].w = orientation[i].w; - hHeadTrackData->Quaternions[i].x = orientation[i].x; - hHeadTrackData->Quaternions[i].y = orientation[i].y; - hHeadTrackData->Quaternions[i].z = orientation[i].z; -#endif -#ifdef TD5 hHeadTrackData->Pos[i].x = Pos[i].x; hHeadTrackData->Pos[i].y = Pos[i].y; hHeadTrackData->Pos[i].z = Pos[i].z; -#endif } hIvasDec->st_ivas->hHeadTrackData->num_quaternions = 0; @@ -946,7 +925,6 @@ ivas_error IVAS_DEC_FeedHeadTrackData( return IVAS_ERR_OK; } -#ifdef FIX_I109_ORIENTATION_TRACKING /*---------------------------------------------------------------------* * IVAS_DEC_FeedRefRotData( ) * @@ -975,7 +953,6 @@ ivas_error IVAS_DEC_FeedRefRotData( return IVAS_ERR_OK; } -#ifdef OTR_REFERENCE_VECTOR_TRACKING /*---------------------------------------------------------------------* * IVAS_DEC_FeedRefVectorData( ) * @@ -1000,8 +977,6 @@ ivas_error IVAS_DEC_FeedRefVectorData( pOtr = hIvasDec->st_ivas->hHeadTrackData->OrientationTracker; return ivas_orient_trk_SetReferenceVector( pOtr, listenerPos, refPos ); } -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#endif /*---------------------------------------------------------------------* * IVAS_DEC_FeedCustomLsData( ) @@ -1185,9 +1160,7 @@ ivas_error IVAS_DEC_GetRenderConfig( mvr2r( hRCin->roomAcoustics.pFc_input, hRCout->room_acoustics.pFc_input, CLDFB_NO_CHANNELS_MAX ); mvr2r( hRCin->roomAcoustics.pAcoustic_rt60, hRCout->room_acoustics.pAcoustic_rt60, CLDFB_NO_CHANNELS_MAX ); mvr2r( hRCin->roomAcoustics.pAcoustic_dsr, hRCout->room_acoustics.pAcoustic_dsr, CLDFB_NO_CHANNELS_MAX ); -#ifdef TD5 mvr2r( hRCin->directivity, hRCout->directivity, 3 ); -#endif return IVAS_ERR_OK; } @@ -1232,9 +1205,7 @@ ivas_error IVAS_DEC_FeedRenderConfig( mvr2r( renderConfig.room_acoustics.pFc_input, hRenderConfig->roomAcoustics.pFc_input, CLDFB_NO_CHANNELS_MAX ); mvr2r( renderConfig.room_acoustics.pAcoustic_rt60, hRenderConfig->roomAcoustics.pAcoustic_rt60, CLDFB_NO_CHANNELS_MAX ); mvr2r( renderConfig.room_acoustics.pAcoustic_dsr, hRenderConfig->roomAcoustics.pAcoustic_dsr, CLDFB_NO_CHANNELS_MAX ); -#ifdef TD5 mvr2r( renderConfig.directivity, hRenderConfig->directivity, 3 ); -#endif return IVAS_ERR_OK; } @@ -1269,13 +1240,9 @@ ivas_error IVAS_DEC_GetDelay( st_ivas = hIvasDec->st_ivas; hDecoderConfig = st_ivas->hDecoderConfig; -#ifdef BINAURALIZATION_DELAY_REPORT nSamples[1] = NS2SA( hDecoderConfig->output_Fs, get_delay( DEC, hDecoderConfig->output_Fs, st_ivas->ivas_format, st_ivas->cldfbAnaDec[0] ) ); nSamples[2] = (int16_t) roundf( (float) st_ivas->binaural_latency_ns * hDecoderConfig->output_Fs / 1000000000.f ); nSamples[0] = nSamples[1] + nSamples[2]; -#else - *nSamples = (int16_t) roundf( (float) get_delay( DEC, hDecoderConfig->output_Fs, st_ivas->ivas_format, st_ivas->cldfbAnaDec[0], st_ivas->binaural_latency_ns ) * hDecoderConfig->output_Fs / 1000000000.f ); -#endif *timeScale = hDecoderConfig->output_Fs; diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h index a717e0002eead8416ddd194f2de72e256ed97c58..e1e5bfe9f47fbcb676cf2c8c79ece0d5c2a39398 100644 --- a/lib_dec/lib_dec.h +++ b/lib_dec/lib_dec.h @@ -176,29 +176,21 @@ ivas_error IVAS_DEC_GetMasaMetadata( /*! r: error code */ ivas_error IVAS_DEC_FeedHeadTrackData( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ -#ifdef TD5 IVAS_QUATERNION *orientation, /* i : head-tracking data */ IVAS_POSITION *Pos /* i : listener position */ -#else - IVAS_QUATERNION *orientation /* i : head-tracking data */ -#endif ); -#ifdef FIX_I109_ORIENTATION_TRACKING /*! r: error code */ ivas_error IVAS_DEC_FeedRefRotData( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ IVAS_QUATERNION rotation /* i : reference rotation data */ ); -#ifdef OTR_REFERENCE_VECTOR_TRACKING /*! r: error code */ ivas_error IVAS_DEC_FeedRefVectorData( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const IVAS_VECTOR3 listenerPos, /* i : Listener position */ const IVAS_VECTOR3 refPos /* i : Reference position */ ); -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#endif /*! r: error code */ ivas_error IVAS_DEC_VoIP_FeedFrame( diff --git a/lib_enc/ivas_ism_enc.c b/lib_enc/ivas_ism_enc.c index 25ce78ff2e2b9e7f4351bc3889546dc682dd7d9e..f073609b8ab9c877cba22099bca0abc17ee8eb32 100644 --- a/lib_enc/ivas_ism_enc.c +++ b/lib_enc/ivas_ism_enc.c @@ -270,35 +270,19 @@ ivas_error ivas_ism_enc( else if ( st_ivas->ism_mode == ISM_MODE_PARAM ) { // VE: call ivas_ism_metadata_enc() with 'st_ivas' - TBD -#ifdef TD5 ivas_ism_metadata_enc( st_ivas->hEncoderConfig->ivas_total_brate, #ifdef NCHAN_ISM_PARAMETER nchan_ism, #endif st_ivas->nchan_transport, st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData, nb_bits_metadata, vad_flag, st_ivas->ism_mode, st_ivas->hDirAC->hParamIsm, st_ivas->hEncoderConfig->ism_extended_metadata_flag ); -#else - ivas_ism_metadata_enc( st_ivas->hEncoderConfig->ivas_total_brate, -#ifdef NCHAN_ISM_PARAMETER - nchan_ism, -#endif - st_ivas->nchan_transport, st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData, nb_bits_metadata, vad_flag, st_ivas->ism_mode, st_ivas->hDirAC->hParamIsm ); -#endif } else /* ISM_MODE_DISC */ { -#ifdef TD5 ivas_ism_metadata_enc( st_ivas->hEncoderConfig->ivas_total_brate, #ifdef NCHAN_ISM_PARAMETER nchan_ism, #endif st_ivas->nchan_transport, st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData, nb_bits_metadata, vad_flag, st_ivas->ism_mode, NULL, st_ivas->hEncoderConfig->ism_extended_metadata_flag ); -#else - ivas_ism_metadata_enc( st_ivas->hEncoderConfig->ivas_total_brate, -#ifdef NCHAN_ISM_PARAMETER - nchan_ism, -#endif - st_ivas->nchan_transport, st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData, nb_bits_metadata, vad_flag, st_ivas->ism_mode, NULL ); -#endif } #ifdef DISCRETE_ISM_DTX_CNG diff --git a/lib_enc/ivas_ism_metadata_enc.c b/lib_enc/ivas_ism_metadata_enc.c index 1540e35ce4855a2dcc410a0d28ce171af2fff0b3..5b45d909f1aa52086d8d176e315da6aacd4574be 100644 --- a/lib_enc/ivas_ism_metadata_enc.c +++ b/lib_enc/ivas_ism_metadata_enc.c @@ -49,24 +49,17 @@ * Local constants *-----------------------------------------------------------------------*/ -#ifdef TD5 #define ISM_NUM_PARAM 5 /* number of coded metadata parameters */ -#else -#define ISM_NUM_PARAM 2 /* number of coded metadata parameters */ -#endif #define ISM_MAX_AZIMUTH_DIFF_IDX ( ISM_AZIMUTH_NBITS - 1 /*zero*/ - 1 /*sign*/ ) #define ISM_MAX_ELEVATION_DIFF_IDX ( ISM_ELEVATION_NBITS - 1 /*zero*/ - 1 /*sign*/ ) -#ifdef TD5 -#define ISM_MAX_RADIUS_DIFF_IDX ( ISM_RADIUS_NBITS - 1 /*zero*/ - 1 /*sign*/ ) -#endif +#define ISM_MAX_RADIUS_DIFF_IDX ( ISM_RADIUS_NBITS - 1 /*zero*/ - 1 /*sign*/ ) #define ISM_FEC_MAX 10 #define INTER_OBJECT_PARAM_CHECK ( ( ISM_FEC_MAX / 2 ) - 2 ) /* note: constant must be less than (ISM_FEC_MAX / number of coded parameters) */ -#ifdef TD5 /*-----------------------------------------------------------------------* * Local function declarations *-----------------------------------------------------------------------*/ @@ -75,7 +68,6 @@ static void encode_angle_indices( BSTR_ENC_HANDLE hBstr, ISM_METADATA_ANGLE_HAND static void encode_radius( BSTR_ENC_HANDLE hBstr, int16_t *last_radius_idx, int16_t *radius_diff_cnt, const int16_t last_ism_metadata_flag, const int16_t idx_radius_abs, int16_t *flag_abs_radius ); -#endif /*-------------------------------------------------------------------------* * ivas_set_ism_metadata() @@ -86,14 +78,10 @@ static void encode_radius( BSTR_ENC_HANDLE hBstr, int16_t *last_radius_idx, int1 ivas_error ivas_set_ism_metadata( ISM_METADATA_HANDLE hIsmMeta, /* o : ISM metadata handle */ const float azimuth, /* i : azimuth value */ -#ifdef TD5 - const float elevation, /* i : elevation */ - const float radius_meta, /* i : radius */ - const float yaw, /* i : yaw */ - const float pitch /* i : pitch */ -#else - const float elevation /* i : elevation value */ -#endif + const float elevation, /* i : elevation */ + const float radius_meta, /* i : radius */ + const float yaw, /* i : yaw */ + const float pitch /* i : pitch */ ) { if ( hIsmMeta == NULL ) @@ -106,11 +94,9 @@ ivas_error ivas_set_ism_metadata( /* save read metadata parameters to the internal codec structure */ hIsmMeta->azimuth = azimuth; hIsmMeta->elevation = elevation; -#ifdef TD5 hIsmMeta->radius = radius_meta; hIsmMeta->yaw = yaw; hIsmMeta->pitch = pitch; -#endif return IVAS_ERR_OK; } @@ -180,36 +166,22 @@ ivas_error ivas_ism_metadata_enc( #ifdef NCHAN_ISM_PARAMETER const int16_t nchan_ism, /* i : number of ISM channels */ #endif - const int16_t nchan_transport, /* i : number of transport channels */ - ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ - SCE_ENC_HANDLE hSCE[], /* i/o: SCE encoder handles */ - BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */ - int16_t nb_bits_metadata[], /* o : number of metadata bits */ - const int16_t localVAD[], /* i : VAD flag */ - const int16_t ism_mode, /* i : ISM mode */ -#ifdef TD5 + const int16_t nchan_transport, /* i : number of transport channels */ + ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ + SCE_ENC_HANDLE hSCE[], /* i/o: SCE encoder handles */ + BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */ + int16_t nb_bits_metadata[], /* o : number of metadata bits */ + const int16_t localVAD[], /* i : VAD flag */ + const int16_t ism_mode, /* i : ISM mode */ const PARAM_ISM_CONFIG_HANDLE hParamIsm, /* i : Param ISM Enc Handle */ const int16_t ism_extended_metadata_flag /* i : Extended metadata flag */ -#else - const PARAM_ISM_CONFIG_HANDLE hParamIsm /* i : Param ISM Enc Handle */ -#endif ) { -#ifdef TD5 -#ifdef TUNE_360_OBJECT_WITH_NOISE int16_t i, ch, nb_bits_start = 0; -#else - int16_t i, ch, nb_bits_start = 0, diff; -#endif int16_t idx_azimuth_abs = 0, flag_abs_azimuth[MAX_NUM_OBJECTS]; int16_t idx_elevation_abs = 0, flag_abs_elevation[MAX_NUM_OBJECTS]; int16_t flag_abs_azimuth_orientation[MAX_NUM_OBJECTS]; int16_t idx_radius_abs = 0, flag_abs_radius[MAX_NUM_OBJECTS]; -#else - int16_t i, ch, nb_bits_start = 0, diff; - int16_t idx_azimuth, idx_azimuth_abs = 0, flag_abs_azimuth[MAX_NUM_OBJECTS], nbits_diff_azimuth; - int16_t idx_elevation, idx_elevation_abs = 0, flag_abs_elevation[MAX_NUM_OBJECTS], nbits_diff_elevation; -#endif float valQ; ISM_METADATA_HANDLE hIsmMetaData; int32_t element_brate[MAX_NUM_OBJECTS], total_brate[MAX_NUM_OBJECTS]; @@ -256,10 +228,8 @@ ivas_error ivas_ism_metadata_enc( set_s( nb_bits_metadata, 0, nchan_transport ); set_s( flag_abs_azimuth, 0, nchan_ism ); set_s( flag_abs_elevation, 0, nchan_ism ); -#ifdef TD5 set_s( flag_abs_azimuth_orientation, 0, nchan_ism ); set_s( flag_abs_radius, 0, nchan_ism ); -#endif /*----------------------------------------------------------------* * Set Metadata presence / importance flag @@ -273,8 +243,6 @@ ivas_error ivas_ism_metadata_enc( } else if ( ism_mode == ISM_MODE_DISC ) { -#ifdef TD5 -#ifdef TUNE_360_OBJECT_WITH_NOISE #ifdef DISCRETE_ISM_DTX_CNG hIsmMeta[ch]->ism_metadata_flag = localVAD[ch] || hSCE[ch]->hCoreCoder[0]->lp_noise > 10; #else @@ -283,52 +251,6 @@ ivas_error ivas_ism_metadata_enc( { hIsmMeta[ch]->ism_metadata_flag = 0; } -#endif -#else - if ( hIsmMeta[ch]->ism_metadata_flag ) - { - /* at highest bitrates (with TCX core only) metadata are sent also for inactive frames */ - if ( localVAD[ch] == 0 && !( hSCE[ch]->hCoreCoder[0]->tcxonly ) ) - { - /* send metadata even in inactive segments when noise is audible and metadata are changing */ - diff = (int16_t) fabsf( hIsmMeta[ch]->azimuth - ism_dequant_meta( hIsmMeta[ch]->angle[0].last_azimuth_idx, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ) ); - diff = max( diff, (int16_t) fabsf( hIsmMeta[ch]->elevation - ism_dequant_meta( hIsmMeta[ch]->angle[0].last_elevation_idx, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ) ) ); - if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE && ism_extended_metadata_flag ) - { - diff = max( diff, (int16_t) fabsf( hIsmMeta[ch]->yaw - ism_dequant_meta( hIsmMeta[ch]->angle[1].last_azimuth_idx, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ) ) ); - diff = max( diff, (int16_t) fabsf( hIsmMeta[ch]->pitch - ism_dequant_meta( hIsmMeta[ch]->angle[1].last_elevation_idx, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ) ) ); - } - if ( !( hSCE[ch]->hCoreCoder[0]->lp_noise > 15 && diff >= 10 ) ) - { - hIsmMeta[ch]->ism_metadata_flag = 0; - } - } - } -#endif -#else -#ifdef TUNE_360_OBJECT_WITH_NOISE - hIsmMeta[ch]->ism_metadata_flag = localVAD[ch] || hSCE[ch]->hCoreCoder[0]->lp_noise > 10; -#else - hIsmMeta[ch]->ism_metadata_flag = localVAD[ch]; - - if ( hIsmMeta[ch]->ism_metadata_flag == 0 ) - { - /* send metadata even in inactive segments when noise is audible and metadata are changing */ - diff = (int16_t) fabsf( hIsmMeta[ch]->azimuth - ism_dequant_meta( hIsmMeta[ch]->last_azimuth_idx, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ) ); - diff = max( diff, (int16_t) fabsf( hIsmMeta[ch]->elevation - ism_dequant_meta( hIsmMeta[ch]->last_elevation_idx, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ) ) ); - - if ( hSCE[ch]->hCoreCoder[0]->lp_noise > 15 && diff >= 10 ) - { - hIsmMeta[ch]->ism_metadata_flag = 1; - } - } -#endif - - if ( hSCE[ch]->hCoreCoder[0]->tcxonly ) - { - /* at highest bitrates (with TCX core only) metadata are sent in every frame */ - hIsmMeta[ch]->ism_metadata_flag = 1; - } #endif } } @@ -339,27 +261,6 @@ ivas_error ivas_ism_metadata_enc( rate_ism_importance( nchan_transport, hIsmMeta, hSCE, ism_imp ); -#ifndef TUNE_360_OBJECT_WITH_NOISE - /* relax the importance decision in "stereo" coding for noisy audio */ - if ( ism_mode == ISM_MODE_DISC && nchan_ism == 2 ) - { - float diff_F; - - if ( hIsmMeta[0]->ism_metadata_flag ^ hIsmMeta[1]->ism_metadata_flag ) - { - for ( ch = 0; ch < nchan_ism; ch++ ) - { - diff_F = hSCE[ch]->hCoreCoder[0]->lp_speech - hSCE[ch]->hCoreCoder[0]->lp_noise; - - if ( hIsmMeta[ch]->ism_metadata_flag == 0 && diff_F < 25.0f ) - { - hIsmMeta[ch]->ism_metadata_flag = 1; - ism_imp[ch] = ISM_LOW_IMP; - } - } - } - } -#endif /*----------------------------------------------------------------* * Write ISM common signaling @@ -372,13 +273,11 @@ ivas_error ivas_ism_metadata_enc( } push_indice( hBstr, IND_ISM_NUM_OBJECTS, 0, 1 ); -#ifdef TD5 /* write extended metadata presence flag */ if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE ) { push_indice( hBstr, IND_ISM_EXTENDED_FLAG, ism_extended_metadata_flag, ISM_EXTENDED_METADATA_BITS ); } -#endif /* write ISM metadata flag (one per object) */ for ( ch = 0; ch < nchan_transport; ch++ ) @@ -428,7 +327,6 @@ ivas_error ivas_ism_metadata_enc( if ( hIsmMeta[ch]->ism_metadata_flag ) { -#ifdef TD5 /*----------------------------------------------------------------* * Quantize and encode azimuth and elevation *----------------------------------------------------------------*/ @@ -464,252 +362,6 @@ ivas_error ivas_ism_metadata_enc( { nb_bits_metadata[ch] = hBstr->nb_bits_tot - nb_bits_start; } -#else - /*----------------------------------------------------------------* - * Azimuth quantization and encoding - *----------------------------------------------------------------*/ - - /* Azimuth quantization (quantize azimuth to the AZIMUTH_NBITS-bit index */ - if ( ism_mode == ISM_MODE_DISC ) - { - idx_azimuth_abs = ism_quant_meta( hIsmMetaData->azimuth, &valQ, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ); - } - else if ( ism_mode == ISM_MODE_PARAM ) - { - idx_azimuth_abs = hParamIsm->azi_index[ch]; - } - idx_azimuth = idx_azimuth_abs; - - nbits_diff_azimuth = 0; - - flag_abs_azimuth[ch] = 0; /* differential coding by default */ - if ( hIsmMetaData->azimuth_diff_cnt == ISM_FEC_MAX /* make differential encoding in ISM_FEC_MAX consecutive frames at maximum (in order to control the decoding in FEC) */ - || hIsmMetaData->last_ism_metadata_flag == 0 /* If last frame had no metadata coded, do not use differential coding */ - ) - { - flag_abs_azimuth[ch] = 1; - } - - /* try differential coding */ - if ( flag_abs_azimuth[ch] == 0 ) - { - diff = idx_azimuth_abs - hIsmMetaData->last_azimuth_idx; - - /* azimuth is on a circle - check for diff coding for -180° -> 180° and vice versa changes */ - if ( abs( diff ) > ( ( 1 << ISM_AZIMUTH_NBITS ) - 1 ) - ISM_MAX_AZIMUTH_DIFF_IDX ) - { - if ( diff > 0 ) - { - diff -= ( 1 << ISM_AZIMUTH_NBITS ) - 1; - } - else - { - diff += ( 1 << ISM_AZIMUTH_NBITS ) - 1; - } - } - - if ( diff == 0 ) - { - idx_azimuth = 0; - nbits_diff_azimuth = 1; - } - else if ( ABSVAL( diff ) < ISM_MAX_AZIMUTH_DIFF_IDX ) /* when diff bits >= abs bits, prefer abs */ - { - idx_azimuth = 1 << 1; - nbits_diff_azimuth = 1; - - if ( diff < 0 ) - { - idx_azimuth += 1; /* negative sign */ - diff *= -1; - } - else - { - idx_azimuth += 0; /* positive sign */ - } - - idx_azimuth = idx_azimuth << diff; - nbits_diff_azimuth++; - - /* unary coding of "diff */ - idx_azimuth += ( ( 1 << diff ) - 1 ); - nbits_diff_azimuth += diff; - - if ( nbits_diff_azimuth < ISM_AZIMUTH_NBITS - 1 ) - { - /* add stop bit - only for codewords shorter than ISM_AZIMUTH_NBITS */ - idx_azimuth = idx_azimuth << 1; - nbits_diff_azimuth++; - } - } - else - { - flag_abs_azimuth[ch] = 1; - } - } - - /* update counter */ - if ( flag_abs_azimuth[ch] == 0 ) - { - hIsmMetaData->azimuth_diff_cnt++; - hIsmMetaData->elevation_diff_cnt = min( hIsmMetaData->elevation_diff_cnt, ISM_FEC_MAX ); - } - else - { - hIsmMetaData->azimuth_diff_cnt = 0; - } - - /* Write azimuth */ - push_indice( hBstr, IND_ISM_AZIMUTH_DIFF_FLAG, flag_abs_azimuth[ch], 1 ); - - if ( flag_abs_azimuth[ch] ) - { - push_indice( hBstr, IND_ISM_AZIMUTH, idx_azimuth, ISM_AZIMUTH_NBITS ); - } - else - { - push_indice( hBstr, IND_ISM_AZIMUTH, idx_azimuth, nbits_diff_azimuth ); - } - - /*----------------------------------------------------------------* - * Elevation quantization and encoding - *----------------------------------------------------------------*/ - - /* Elevation quantization (quantize azimuth to the ELEVATION_NBITS-bit index */ - if ( ism_mode == ISM_MODE_DISC ) - { - idx_elevation_abs = ism_quant_meta( hIsmMetaData->elevation, &valQ, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ); - } - else /* ISM_MODE_PARAM */ - { - idx_elevation_abs = hParamIsm->ele_index[ch]; - } - idx_elevation = idx_elevation_abs; - - nbits_diff_elevation = 0; - - flag_abs_elevation[ch] = 0; /* differential coding by default */ - if ( hIsmMetaData->elevation_diff_cnt == ISM_FEC_MAX /* make differential encoding in ISM_FEC_MAX consecutive frames at maximum (in order to control the decoding in FEC) */ - || hIsmMetaData->last_ism_metadata_flag == 0 /* If last frame had no metadata coded, do not use differential coding */ - ) - { - flag_abs_elevation[ch] = 1; - } - - /* note: elevation is coded starting from the second frame only (it is meaningless in the init_frame) */ - if ( hSCE[0]->hCoreCoder[0]->ini_frame == 0 ) - { - flag_abs_elevation[ch] = 1; - hIsmMetaData->last_elevation_idx = idx_elevation_abs; - } - - diff = idx_elevation_abs - hIsmMetaData->last_elevation_idx; - - /* avoid absolute coding of elevation if absolute coding was already used for azimuth */ - if ( flag_abs_azimuth[ch] == 1 ) - { - int16_t diff_orig = diff; - - flag_abs_elevation[ch] = 0; - - - if ( diff >= 0 ) - { - diff = min( diff, ISM_MAX_ELEVATION_DIFF_IDX ); - } - else - { - diff = -1 * min( -diff, ISM_MAX_ELEVATION_DIFF_IDX ); - } - - if ( hIsmMetaData->last_ism_metadata_flag == 0 || abs( diff_orig - diff ) > ISM_MAX_ELEVATION_DIFF_IDX ) - { - hIsmMetaData->elevation_diff_cnt = ISM_FEC_MAX - 1; - } - } - - /* try differential coding */ - if ( flag_abs_elevation[ch] == 0 ) - { - if ( diff == 0 ) - { - idx_elevation = 0; - nbits_diff_elevation = 1; - } - else if ( ABSVAL( diff ) <= ISM_MAX_ELEVATION_DIFF_IDX ) - { - idx_elevation = 1 << 1; - nbits_diff_elevation = 1; - - if ( diff < 0 ) - { - idx_elevation += 1; /* negative sign */ - diff *= -1; - } - else - { - idx_elevation += 0; /* positive sign */ - } - - idx_elevation = idx_elevation << diff; - nbits_diff_elevation++; - - /* unary coding of "diff */ - idx_elevation += ( ( 1 << diff ) - 1 ); - nbits_diff_elevation += diff; - - if ( nbits_diff_elevation < ISM_ELEVATION_NBITS ) - { - /* add stop bit */ - idx_elevation = idx_elevation << 1; - nbits_diff_elevation++; - } - } - else - { - flag_abs_elevation[ch] = 1; - } - } - - /* update counter */ - if ( flag_abs_elevation[ch] == 0 ) - { - hIsmMetaData->elevation_diff_cnt++; - hIsmMetaData->elevation_diff_cnt = min( hIsmMetaData->elevation_diff_cnt, ISM_FEC_MAX ); - } - else - { - hIsmMetaData->elevation_diff_cnt = 0; - } - - /* Write elevation */ - if ( flag_abs_azimuth[ch] == 0 ) /* do not write "flag_abs_elevation" if "flag_abs_azimuth == 1" */ - { - push_indice( hBstr, IND_ISM_ELEVATION_DIFF_FLAG, flag_abs_elevation[ch], 1 ); - } - - if ( flag_abs_elevation[ch] ) - { - push_indice( hBstr, IND_ISM_ELEVATION, idx_elevation, ISM_ELEVATION_NBITS ); - } - else - { - push_indice( hBstr, IND_ISM_ELEVATION, idx_elevation, nbits_diff_elevation ); - } - - /*----------------------------------------------------------------* - * Updates - *----------------------------------------------------------------*/ - - hIsmMetaData->last_azimuth_idx = idx_azimuth_abs; - hIsmMetaData->last_elevation_idx = idx_elevation_abs; - - /* save number of metadata bits written */ - if ( ism_mode == ISM_MODE_DISC ) - { - nb_bits_metadata[ch] = hBstr->nb_bits_tot - nb_bits_start; - } -#endif } } @@ -722,11 +374,7 @@ ivas_error ivas_ism_metadata_enc( while ( i == 0 || i < nchan_ism / INTER_OBJECT_PARAM_CHECK ) { int16_t num, abs_num, abs_first, abs_next, pos_zero; -#ifdef TD5 int16_t abs_matrice[INTER_OBJECT_PARAM_CHECK * ISM_NUM_PARAM]; -#else - int16_t abs_matrice[INTER_OBJECT_PARAM_CHECK * 2]; -#endif num = min( INTER_OBJECT_PARAM_CHECK, nchan_ism - i * INTER_OBJECT_PARAM_CHECK ); i++; @@ -774,20 +422,12 @@ ivas_error ivas_ism_metadata_enc( if ( abs_next % ISM_NUM_PARAM == 0 ) { -#ifdef TD5 hIsmMeta[ch]->angle[0].azimuth_diff_cnt = abs_num - 1; -#else - hIsmMeta[ch]->azimuth_diff_cnt = abs_num - 1; -#endif } if ( abs_next % ISM_NUM_PARAM == 1 ) { -#ifdef TD5 hIsmMeta[ch]->angle[0].elevation_diff_cnt = abs_num - 1; -#else - hIsmMeta[ch]->elevation_diff_cnt = abs_num - 1; -#endif /*hIsmMeta[ch]->elevation_diff_cnt = min( hIsmMeta[ch]->elevation_diff_cnt, ISM_FEC_MAX );*/ } @@ -923,7 +563,6 @@ ivas_error ivas_ism_metadata_enc_create( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for ISM MetaData\n" ) ); } -#ifdef TD5 st_ivas->hIsmMetaData[ch]->angle[0].last_azimuth_idx = 0; st_ivas->hIsmMetaData[ch]->angle[0].azimuth_diff_cnt = ISM_FEC_MAX; st_ivas->hIsmMetaData[ch]->angle[0].last_elevation_idx = 0; @@ -934,12 +573,6 @@ ivas_error ivas_ism_metadata_enc_create( st_ivas->hIsmMetaData[ch]->angle[1].azimuth_diff_cnt = ISM_FEC_MAX - 2; st_ivas->hIsmMetaData[ch]->angle[1].last_elevation_idx = 0; st_ivas->hIsmMetaData[ch]->angle[1].elevation_diff_cnt = ISM_FEC_MAX - 2; -#else - st_ivas->hIsmMetaData[ch]->last_azimuth_idx = 0; - st_ivas->hIsmMetaData[ch]->azimuth_diff_cnt = ISM_FEC_MAX; - st_ivas->hIsmMetaData[ch]->last_elevation_idx = 0; - st_ivas->hIsmMetaData[ch]->elevation_diff_cnt = ISM_FEC_MAX - 1; -#endif st_ivas->hIsmMetaData[ch]->last_ism_metadata_flag = 0; ivas_ism_reset_metadata( st_ivas->hIsmMetaData[ch] ); @@ -959,7 +592,6 @@ ivas_error ivas_ism_metadata_enc_create( } -#ifdef TD5 /*------------------------------------------------------------------------- * encode_radius() * @@ -1304,7 +936,6 @@ static void encode_angle_indices( return; } -#endif #ifdef DISCRETE_ISM_DTX_CNG @@ -1425,23 +1056,13 @@ void ivas_ism_metadata_sid_enc( /* update last indexes to correspond to active frames coding */ if ( nBits_azimuth > ISM_AZIMUTH_NBITS ) { -#ifdef TD5 hIsmMetaData->angle[0].last_azimuth_idx = idx_azimuth >> ( nBits_azimuth - ISM_AZIMUTH_NBITS ); hIsmMetaData->angle[0].last_elevation_idx = idx_elevation >> ( nBits_elevation - ISM_ELEVATION_NBITS ); -#else - hIsmMetaData->last_azimuth_idx = idx_azimuth >> ( nBits_azimuth - ISM_AZIMUTH_NBITS ); - hIsmMetaData->last_elevation_idx = idx_elevation >> ( nBits_elevation - ISM_ELEVATION_NBITS ); -#endif } else { -#ifdef TD5 hIsmMetaData->angle[0].last_azimuth_idx = idx_azimuth << ( ISM_AZIMUTH_NBITS - nBits_azimuth ); hIsmMetaData->angle[0].last_elevation_idx = idx_elevation << ( ISM_ELEVATION_NBITS - nBits_elevation ); -#else - hIsmMetaData->last_azimuth_idx = idx_azimuth << ( ISM_AZIMUTH_NBITS - nBits_azimuth ); - hIsmMetaData->last_elevation_idx = idx_elevation << ( ISM_ELEVATION_NBITS - nBits_elevation ); -#endif } } } diff --git a/lib_enc/ivas_masa_enc.c b/lib_enc/ivas_masa_enc.c index 337753925c24dcab21c99a66b36b8adb8c762544..3655c1994a20de762e967544f51f3b3ed498dea7 100644 --- a/lib_enc/ivas_masa_enc.c +++ b/lib_enc/ivas_masa_enc.c @@ -595,7 +595,7 @@ ivas_error ivas_masa_enc_config( ivas_set_qmetadata_maxbit_req( hQMetaData, ivas_format ); -#ifdef FIX_373_MASA_DELAY_COMP_MSAN +#ifdef FIX_373_MASA_DELAY_COMP masa_sample_rate_band_correction( &( hMasa->config ), hMasa->data.band_mapping, hQMetaData, st_ivas->hEncoderConfig->input_Fs, NULL ); #else masa_sample_rate_band_correction( &( hMasa->config ), hMasa->data.band_mapping, hQMetaData, st_ivas->hEncoderConfig->input_Fs ); diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h index a56f6423d39f2f3a055acd30b119f6537255237b..598a618ee865340cc487ca63edc591fcaa2b0a44 100644 --- a/lib_enc/ivas_stat_enc.h +++ b/lib_enc/ivas_stat_enc.h @@ -1020,9 +1020,7 @@ typedef struct encoder_config_structure int16_t sba_order; /* Ambisonic (SBA) order */ int16_t sba_planar; /* Ambisonic (SBA) planar flag */ MC_LS_SETUP mc_input_setup; /* multichannel input ls setup */ -#ifdef TD5 int16_t ism_extended_metadata_flag; /* flag indicating extended metadata encoding, including radius and orientation (yaw, pitch) in ISM format */ -#endif int16_t Opt_AMR_WB; /* flag indicating AMR-WB IO mode */ diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c old mode 100755 new mode 100644 index 50052cda3c587c2a9962936f87777ff5bb39a521..ebc2551ce2ce9896c7d4d559bf0ff291676bdc4b --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -366,12 +366,8 @@ ivas_error IVAS_ENC_ConfigureForObjects( const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */ const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */ const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */ -#ifdef TD5 - const uint16_t numObjects, /* i : number of objects to be encoded */ - const bool ism_extended_metadata /* i : Extended metadata used (true/false), where extended metadata includes radius and orientation */ -#else - const uint16_t numObjects /* i : number of objects to be encoded */ -#endif + const uint16_t numObjects, /* i : number of objects to be encoded */ + const bool ism_extended_metadata /* i : Extended metadata used (true/false), where extended metadata includes radius and orientation */ ) { Encoder_Struct *st_ivas; @@ -394,9 +390,7 @@ ivas_error IVAS_ENC_ConfigureForObjects( #ifdef NCHAN_ISM_PARAMETER st_ivas->hEncoderConfig->nchan_ism = numObjects; #endif -#ifdef TD5 st_ivas->hEncoderConfig->ism_extended_metadata_flag = ism_extended_metadata; -#endif hIvasEnc->maxBandwidthUser = max_bwidth_user; error = configureEncoder( hIvasEnc, inputFs, bitrate, maxBandwidth, dtxConfig, IVAS_ENC_GetDefaultChannelAwareConfig() ); @@ -436,11 +430,7 @@ ivas_error IVAS_ENC_FeedObjectMetadata( return IVAS_ERR_INDEX_OUT_OF_BOUNDS; } -#ifdef TD5 error = ivas_set_ism_metadata( hIvasEnc->st_ivas->hIsmMetaData[ismIndex], metadata.azimuth, metadata.elevation, metadata.radius, metadata.yaw, metadata.pitch ); -#else - error = ivas_set_ism_metadata( hIvasEnc->st_ivas->hIsmMetaData[ismIndex], metadata.azimuth, metadata.elevation ); -#endif if ( error != IVAS_ERR_OK ) { @@ -978,11 +968,7 @@ ivas_error IVAS_ENC_GetDelay( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#ifdef BINAURALIZATION_DELAY_REPORT *delay = NS2SA( hEncoderConfig->input_Fs, get_delay( ENC, hEncoderConfig->input_Fs, hEncoderConfig->ivas_format, NULL ) ); -#else - *delay = NS2SA( hEncoderConfig->input_Fs, get_delay( ENC, hEncoderConfig->input_Fs, hEncoderConfig->ivas_format, NULL, 0 ) ); -#endif *delay *= hEncoderConfig->nchan_inp; @@ -2022,12 +2008,10 @@ static ivas_error sanitizeBitrateISM( return IVAS_ERROR( IVAS_ERR_INVALID_BITRATE, "Too low bitrate for 4 ISM specified in IVAS: %d", hEncoderConfig->ivas_total_brate ); } -#ifdef TD5 if ( hEncoderConfig->ivas_total_brate < ISM_EXTENDED_METADATA_BRATE && hEncoderConfig->ism_extended_metadata_flag == 1 ) { return IVAS_ERROR( IVAS_ERR_INVALID_BITRATE, "Too low bitrate for extended metadata format specified in IVAS: %d", hEncoderConfig->ivas_total_brate ); } -#endif return IVAS_ERR_OK; } @@ -2289,9 +2273,7 @@ static void init_encoder_config( #endif hEncoderConfig->sba_order = 0; hEncoderConfig->sba_planar = 0; -#ifdef TD5 hEncoderConfig->ism_extended_metadata_flag = 0; -#endif #ifdef DEBUGGING hEncoderConfig->stereo_mode_cmdl = 0; hEncoderConfig->force = -1; diff --git a/lib_enc/lib_enc.h b/lib_enc/lib_enc.h index 37fd4b4deeeffe927a899fc08900998e221cb8f8..349c41ebef721a1b65be35235e7a17e63a1de4e4 100644 --- a/lib_enc/lib_enc.h +++ b/lib_enc/lib_enc.h @@ -180,12 +180,8 @@ ivas_error IVAS_ENC_ConfigureForObjects( const bool max_bwidth_user, /* i : shows if bandwidth limitation was set by the user (true) or if default bandwidth was used (false) */ const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */ const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */ -#ifdef TD5 const uint16_t numObjects, /* i : number of objects to be encoded */ const bool ism_extended_metadata /* i : Extended metadata used (true/false), where extended metadata includes radius and orientation */ -#else - const uint16_t numObjects /* i : number of objects to be encoded */ -#endif ); /*! r: error code */ diff --git a/lib_rend/ivas_crend.c b/lib_rend/ivas_crend.c index c4941b610c68b5f74414917c8d820683b748a1d1..c05ae7c2626401afd599719743834488a63786fd 100644 --- a/lib_rend/ivas_crend.c +++ b/lib_rend/ivas_crend.c @@ -733,9 +733,6 @@ ivas_error ivas_rend_openCrend( const AUDIO_CONFIG inConfig, const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, -#ifndef FIX_I109_ORIENTATION_TRACKING - int16_t Opt_Headrotation, -#endif HRTFS_CREND_HANDLE hSetOfHRTF, const int32_t output_Fs ) { @@ -1141,30 +1138,6 @@ ivas_error ivas_rend_crendProcess( if ( hDecoderConfig && hDecoderConfig->Opt_Headrotation && hHeadTrackData && hHeadTrackData->num_quaternions >= 0 ) { /* Orientation tracking */ -#ifndef FIX_I109_ORIENTATION_TRACKING - if ( pCrend->hCrend->hTrack != NULL ) - { - if ( hDecoderConfig->orientation_tracking == IVAS_ORIENT_TRK_AVG ) - { - ivas_orient_trk_SetTrackingType( pCrend->hCrend->hTrack, OTR_TRACKING_AVG_ORIENT ); - } - else - { - ivas_orient_trk_SetTrackingType( pCrend->hCrend->hTrack, OTR_TRACKING_REF_ORIENT ); - } - - /* get current subframe quaternion and convert to euler angles */ - Quat2Euler( hHeadTrackData->Quaternions[subframe_idx], &( pCrend->hCrend->m_fYaw ), &( pCrend->hCrend->m_fPitch ), &( pCrend->hCrend->m_fRoll ) ); - ivas_orient_trk_SetAbsoluteOrientation( pCrend->hCrend->hTrack, pCrend->hCrend->m_fYaw, pCrend->hCrend->m_fPitch, pCrend->hCrend->m_fRoll ); - - if ( ( error = ivas_orient_trk_Process( pCrend->hCrend->hTrack ) ) != IVAS_ERR_OK ) - { - return error; - } - - ivas_orient_trk_GetTrackedOrientation( pCrend->hCrend->hTrack, &( pCrend->hCrend->m_fYaw ), &( pCrend->hCrend->m_fPitch ), &( pCrend->hCrend->m_fRoll ) ); - } -#endif /* Rotation in SHD for: MC with elevation (5_1_2 / 5_1_4 / 7_1_4) -> BINAURAL diff --git a/lib_rend/ivas_objectRenderer.c b/lib_rend/ivas_objectRenderer.c index 67f73fab303e664b67d2ff67de0a8d732339a564..ed36fa26b11a1e90fcd71276d542ad431b79d8a7 100644 --- a/lib_rend/ivas_objectRenderer.c +++ b/lib_rend/ivas_objectRenderer.c @@ -48,9 +48,7 @@ *---------------------------------------------------------------------*/ static void TDREND_Clear_Update_flags( BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd ); -#ifdef TD5 static void angles_to_vec( const float radius, const float azimuth, const float elevation, float *vec ); -#endif /*---------------------------------------------------------------------* * ivas_td_binaural_open_unwrap() @@ -59,14 +57,12 @@ static void angles_to_vec( const float radius, const float azimuth, const float *---------------------------------------------------------------------*/ ivas_error ivas_td_binaural_open_unwrap( - TDREND_HRFILT_FiltSet_t **hHrtfTD, /* i/o: HR filter model (from file or NULL) */ - const int32_t output_Fs, /* i : Output sampling rate */ - const int16_t nchan_transport, /* i : Number of channels */ - const IVAS_FORMAT ivas_format, /* i : IVAS format (ISM/MC) */ - const AUDIO_CONFIG transport_config, /* i : Transport configuration */ -#ifdef TD5 - const float *directivity, /* i : Directivity pattern (used for ISM) */ -#endif + TDREND_HRFILT_FiltSet_t **hHrtfTD, /* i/o: HR filter model (from file or NULL) */ + const int32_t output_Fs, /* i : Output sampling rate */ + const int16_t nchan_transport, /* i : Number of channels */ + const IVAS_FORMAT ivas_format, /* i : IVAS format (ISM/MC) */ + const AUDIO_CONFIG transport_config, /* i : Transport configuration */ + const float *directivity, /* i : Directivity pattern (used for ISM) */ const IVAS_OUTPUT_SETUP hTransSetup, /* i : Loudspeaker layout */ BINAURAL_TD_OBJECT_RENDERER_HANDLE *hBinRendererTd, /* o : TD renderer handle */ int32_t *binaural_latency_ns /* i : Binauralization delay */ @@ -175,13 +171,7 @@ ivas_error ivas_td_binaural_open_unwrap( for ( nS = 0; nS < nchan_rend; nS++ ) { /* Set source positions according to loudspeaker layout */ -#ifdef TD5 angles_to_vec( 1.0f, ls_azimuth[nS], ls_elevation[nS], Pos ); -#else - Pos[0] = cosf( ls_elevation[nS] * PI_OVER_180 ) * cosf( ls_azimuth[nS] * PI_OVER_180 ); - Pos[1] = cosf( ls_elevation[nS] * PI_OVER_180 ) * sinf( ls_azimuth[nS] * PI_OVER_180 ); - Pos[2] = sinf( ls_elevation[nS] * PI_OVER_180 ); -#endif Dir[0] = 1.0f; Dir[1] = 0.0f; Dir[2] = 0.0f; @@ -197,11 +187,9 @@ ivas_error ivas_td_binaural_open_unwrap( TDREND_MIX_SRC_SetDirAtten( pBinRendTd, nS, DirAtten_p ); } } -#ifdef TD5 if ( ivas_format == ISM_FORMAT ) { DirAtten_p = pBinRendTd->DirAtten_p; -#ifdef TD5_FIX_INVALID_MEMORY_ACCESS if ( NULL == directivity ) { DirAtten_p->ConeInnerAngle = 360.0f; /* Front cone */ @@ -214,18 +202,12 @@ ivas_error ivas_td_binaural_open_unwrap( DirAtten_p->ConeOuterAngle = directivity[1]; DirAtten_p->ConeOuterGain = directivity[2]; } -#else - DirAtten_p->ConeInnerAngle = directivity[0]; - DirAtten_p->ConeOuterAngle = directivity[1]; - DirAtten_p->ConeOuterGain = directivity[2]; -#endif for ( nS = 0; nS < nchan_rend; nS++ ) { TDREND_MIX_SRC_SetDirAtten( pBinRendTd, nS, DirAtten_p ); } } -#endif *hBinRendererTd = pBinRendTd; *binaural_latency_ns = (int32_t) ( ( *hBinRendererTd )->HrFiltSet_p->latency_s * 1000000000.f ); @@ -276,11 +258,9 @@ ivas_error ivas_td_binaural_renderer_unwrap( ISM_METADATA_HANDLE *hIsmMetaData, /* i : ISM metadata handle */ const int16_t Opt_Headrotation, /* i : Head rotation flag */ const IVAS_QUATERNION *Quaternions, /* i : Head tracking data per subframe */ -#ifdef TD5 - const IVAS_POSITION *Pos, /* i : Listener position data per subframe */ -#endif - float output[][L_FRAME48k], /* i/o: SCE channels / Binaural synthesis */ - const int16_t output_frame /* i : output frame length */ + const IVAS_POSITION *Pos, /* i : Listener position data per subframe */ + float output[][L_FRAME48k], /* i/o: SCE channels / Binaural synthesis */ + const int16_t output_frame /* i : output frame length */ ) { int16_t subframe_length; @@ -296,11 +276,7 @@ ivas_error ivas_td_binaural_renderer_unwrap( for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ ) { /* Update the listener's location/orientation */ -#ifdef TD5 TDREND_Update_listener_orientation( hBinRendererTd, Opt_Headrotation, ( Quaternions != NULL ) ? &Quaternions[subframe_idx] : NULL, ( Pos != NULL ) ? &Pos[subframe_idx] : NULL ); -#else - TDREND_Update_listener_orientation( hBinRendererTd, Opt_Headrotation, ( Quaternions != NULL ) ? &Quaternions[subframe_idx] : NULL ); -#endif if ( hReverb != NULL && hReverb->pConfig.roomAcoustics.late_reverb_on ) { @@ -457,18 +433,8 @@ void TDREND_Update_object_positions( /* Update the source positions */ /* Source position and direction */ -#ifdef TD5 angles_to_vec( hIsmMetaData[nS]->radius, hIsmMetaData[nS]->azimuth, hIsmMetaData[nS]->elevation, Pos ); angles_to_vec( 1.0f, hIsmMetaData[nS]->yaw, hIsmMetaData[nS]->pitch, Dir ); -#else - Pos[0] = cosf( hIsmMetaData[nS]->elevation * PI_OVER_180 ) * cosf( hIsmMetaData[nS]->azimuth * PI_OVER_180 ); - Pos[1] = cosf( hIsmMetaData[nS]->elevation * PI_OVER_180 ) * sinf( hIsmMetaData[nS]->azimuth * PI_OVER_180 ); - Pos[2] = sinf( hIsmMetaData[nS]->elevation * PI_OVER_180 ); - Dir[0] = 1.0f; - Dir[1] = 0.0f; - Dir[2] = 0.0f; - -#endif /* Source directivity info */ DirAtten_p->ConeInnerAngle = 360.0f; DirAtten_p->ConeOuterAngle = 360.0f; @@ -495,29 +461,14 @@ void TDREND_Update_object_positions( void TDREND_Update_listener_orientation( BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD Renderer handle */ const int16_t headRotEnabled, /* i : Headrotation flag */ -#ifdef TD5 - const IVAS_QUATERNION *headPosition, /* i : Listener orientation */ - const IVAS_POSITION *Pos /* i : Listener Position */ -#else - const IVAS_QUATERNION *headPosition /* i : Head Position */ -#endif + const IVAS_QUATERNION *headPosition, /* i : Listener orientation */ + const IVAS_POSITION *Pos /* i : Listener Position */ ) { -#ifndef TD5 - float Pos[3]; -#endif float FrontVec[3]; float UpVec[3]; float Rmat[3][3]; -#ifdef TD5 float Pos_p[3]; -#else - /* Update the listener's location/orientation */ - /* Listener at the origin */ - Pos[0] = 0.0f; - Pos[1] = 0.0f; - Pos[2] = 0.0f; -#endif if ( headRotEnabled ) { @@ -531,12 +482,10 @@ void TDREND_Update_listener_orientation( UpVec[0] = Rmat[2][0]; UpVec[1] = Rmat[2][1]; UpVec[2] = Rmat[2][2]; -#ifdef TD5 /* Input position */ Pos_p[0] = ( *Pos ).x; Pos_p[1] = ( *Pos ).y; Pos_p[2] = ( *Pos ).z; -#endif } else { @@ -548,20 +497,14 @@ void TDREND_Update_listener_orientation( UpVec[0] = 0.0f; UpVec[1] = 0.0f; UpVec[2] = 1.0f; -#ifdef TD5 /* Listener at the origin */ Pos_p[0] = 0.0f; Pos_p[1] = 0.0f; Pos_p[2] = 0.0f; -#endif } /* Set the listener position and orientation:*/ -#ifdef TD5 TDREND_MIX_LIST_SetPos( hBinRendererTd, Pos_p ); -#else - TDREND_MIX_LIST_SetPos( hBinRendererTd, Pos ); -#endif TDREND_MIX_LIST_SetOrient( hBinRendererTd, FrontVec, UpVec ); return; @@ -577,9 +520,7 @@ void TDREND_Update_listener_orientation( ivas_error ivas_td_binaural_open_ext( TDREND_WRAPPER *pTDRend, IVAS_REND_AudioConfig inConfig, -#ifdef TD5 RENDER_CONFIG_DATA *hRendCfg, /* i : Renderer configuration */ -#endif LSSETUP_CUSTOM_STRUCT *customLsInput, const int32_t outFs ) { @@ -588,9 +529,7 @@ ivas_error ivas_td_binaural_open_ext( IVAS_FORMAT ivas_format; IVAS_OUTPUT_SETUP hTransSetup; ivas_error error; -#ifdef TD5_FIX_INVALID_MEMORY_ACCESS float *directivity = NULL; -#endif if ( inConfig != IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) { @@ -609,20 +548,12 @@ ivas_error ivas_td_binaural_open_ext( hTransSetup.ls_azimuth = customLsInput->ls_azimuth; hTransSetup.ls_elevation = customLsInput->ls_elevation; -#ifdef TD5 -#ifdef TD5_FIX_INVALID_MEMORY_ACCESS if ( NULL != hRendCfg ) { directivity = hRendCfg->directivity; } return ivas_td_binaural_open_unwrap( &pTDRend->hHrtfTD, outFs, nchan_transport, ivas_format, transport_config, directivity, hTransSetup, &pTDRend->hBinRendererTd, &pTDRend->binaural_latency_ns ); -#else - return ivas_td_binaural_open_unwrap( &pTDRend->hHrtfTD, outFs, nchan_transport, ivas_format, transport_config, hRendCfg->directivity, hTransSetup, &pTDRend->hBinRendererTd, &pTDRend->binaural_latency_ns ); -#endif -#else - return ivas_td_binaural_open_unwrap( &pTDRend->hHrtfTD, outFs, nchan_transport, ivas_format, transport_config, hTransSetup, &pTDRend->hBinRendererTd, &pTDRend->binaural_latency_ns ); -#endif } @@ -684,20 +615,14 @@ ivas_error ivas_td_binaural_renderer_ext( hIsmMetaData[0] = &hIsmMetaDataFrame; hIsmMetaData[0]->azimuth = currentPos->azimuth; hIsmMetaData[0]->elevation = currentPos->elevation; -#ifdef TD5 hIsmMetaData[0]->yaw = currentPos->yaw; hIsmMetaData[0]->pitch = currentPos->pitch; hIsmMetaData[0]->radius = currentPos->radius; -#endif } if ( ( error = ivas_td_binaural_renderer_unwrap( hReverb, transport_config, pTDRend->hBinRendererTd, num_src, lfe_idx, ivas_format, hIsmMetaData, headRotData->headRotEnabled, ( headRotData != NULL ) ? headRotData->headPositions : NULL, -#ifdef TD5 ( headRotData != NULL ) ? headRotData->Pos : NULL, output, output_frame ) ) != IVAS_ERR_OK ) -#else - output, output_frame ) ) != IVAS_ERR_OK ) -#endif { return error; } @@ -707,7 +632,6 @@ ivas_error ivas_td_binaural_renderer_ext( return IVAS_ERR_OK; } -#ifdef TD5 /*---------------------------------------------------------------------* * angles_to_vec() * @@ -727,4 +651,3 @@ static void angles_to_vec( return; } -#endif diff --git a/lib_rend/ivas_objectRenderer_hrFilt.c b/lib_rend/ivas_objectRenderer_hrFilt.c index d28abdba30626bed51d1485baf0899c67c08b264..91b018b1486f9f3538c9d30d6f890fef0a06c732 100644 --- a/lib_rend/ivas_objectRenderer_hrFilt.c +++ b/lib_rend/ivas_objectRenderer_hrFilt.c @@ -69,20 +69,13 @@ ivas_error TDREND_REND_RenderSourceHRFilt( { float LeftOutputFrame[L_SPATIAL_SUBFR_48k]; float RightOutputFrame[L_SPATIAL_SUBFR_48k]; -#ifdef TD5 float Gain; Gain = ( *Src_p->SrcRend_p->DirGain_p ) * ( *Src_p->SrcRend_p->DistGain_p ); -#endif TDREND_Apply_ITD( Src_p->InputFrame_p, LeftOutputFrame, RightOutputFrame, &Src_p->previtd, Src_p->itd, Src_p->mem_itd, subframe_length ); -#ifdef TD5 TDREND_firfilt( LeftOutputFrame, Src_p->hrf_left_prev, hrf_left_delta, intp_count, Src_p->mem_hrf_left, subframe_length, Src_p->filterlength, Gain ); TDREND_firfilt( RightOutputFrame, Src_p->hrf_right_prev, hrf_right_delta, intp_count, Src_p->mem_hrf_right, subframe_length, Src_p->filterlength, Gain ); -#else - TDREND_firfilt( LeftOutputFrame, Src_p->hrf_left_prev, hrf_left_delta, intp_count, Src_p->mem_hrf_left, subframe_length, Src_p->filterlength ); - TDREND_firfilt( RightOutputFrame, Src_p->hrf_right_prev, hrf_right_delta, intp_count, Src_p->mem_hrf_right, subframe_length, Src_p->filterlength ); -#endif /* Copy to accumulative output frame */ v_add( LeftOutputFrame, output_buf[0], output_buf[0], subframe_length ); diff --git a/lib_rend/ivas_objectRenderer_sfx.c b/lib_rend/ivas_objectRenderer_sfx.c index 72493b050117d115f653f1afe9c5b4c6d3770cb4..98f45a5dd94b7d6542e679fda3d122d3a13faaa1 100644 --- a/lib_rend/ivas_objectRenderer_sfx.c +++ b/lib_rend/ivas_objectRenderer_sfx.c @@ -235,12 +235,8 @@ void TDREND_firfilt( const int16_t intp_count, /* i : interpolation count */ float *mem, /* i/o: filter memory */ const int16_t subframe_length, /* i : Length of signal */ -#ifdef TD5 - const int16_t filterlength, /* i : Filter length */ - const float Gain /* i : Gain */ -#else - const int16_t filterlength /* i : Filter length */ -#endif + const int16_t filterlength, /* i : Filter length */ + const float Gain /* i : Gain */ ) { float buffer[SFX_SPAT_BIN_MAX_FILTER_LENGTH - 1 + L_SUBFRAME5MS_48k]; @@ -266,11 +262,7 @@ void TDREND_firfilt( { tmp += ( *p_filter++ ) * ( *p_tmp-- ); } -#ifdef TD5 signal[i] = tmp * Gain; -#else - signal[i] = tmp; -#endif if ( i < intp_count ) { diff --git a/lib_rend/ivas_objectRenderer_sources.c b/lib_rend/ivas_objectRenderer_sources.c index 2a13efc24c219dec2e8d608a01e71498df33fee3..4449945711a1d7cc20fd6e5b929628a2fb3c301f 100644 --- a/lib_rend/ivas_objectRenderer_sources.c +++ b/lib_rend/ivas_objectRenderer_sources.c @@ -266,9 +266,7 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams( TDREND_MIX_Listener_t *Listener_p; TDREND_HRFILT_FiltSet_t *HrFiltSet_p; float ListRelPos[3], ListRelDist; -#ifdef TD5 float ListRelPosAbs[3]; /* Relative position, ignoring orientation of listener */ -#endif float Azim, Elev; float hrf_left[SFX_SPAT_BIN_MAX_FILTER_LENGTH]; float hrf_right[SFX_SPAT_BIN_MAX_FILTER_LENGTH]; @@ -290,22 +288,14 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams( break; case TDREND_POSTYPE_ABSOLUTE: /* Absolute position */ -#ifdef TD5 TDREND_SPATIAL_VecMapToNewCoordSystem( SrcSpatial_p->Pos_p, Listener_p->Pos, Listener_p->Front, Listener_p->Up, Listener_p->Right, ListRelPos, ListRelPosAbs ); -#else - TDREND_SPATIAL_VecMapToNewCoordSystem( SrcSpatial_p->Pos_p, Listener_p->Pos, Listener_p->Front, Listener_p->Up, Listener_p->Right, ListRelPos ); -#endif break; default: /* Illegal position type */ #ifdef DEBUGGING printf( "Warning! TDREND_SRC_REND_UpdateFiltersFromSpatialParams: Invalid position type. Assuming absolute position!\n" ); #endif /* Assume absolute position */ -#ifdef TD5 TDREND_SPATIAL_VecMapToNewCoordSystem( SrcSpatial_p->Pos_p, Listener_p->Pos, Listener_p->Front, Listener_p->Up, Listener_p->Right, ListRelPos, ListRelPosAbs ); -#else - TDREND_SPATIAL_VecMapToNewCoordSystem( SrcSpatial_p->Pos_p, Listener_p->Pos, Listener_p->Front, Listener_p->Up, Listener_p->Right, ListRelPos ); -#endif break; } @@ -331,11 +321,7 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams( *SrcRend_p->DirGain_p = 1.0f; if ( SrcSpatial_p->DirAttenEnabled ) { -#ifdef TD5 *SrcRend_p->DirGain_p = TDREND_SRC_SPATIAL_GetDirGain( &SrcSpatial_p->DirAtten, SrcSpatial_p->Front_p, ListRelPosAbs ); -#else - *SrcRend_p->DirGain_p = TDREND_SRC_SPATIAL_GetDirGain( &SrcSpatial_p->DirAtten, SrcSpatial_p->Front_p, ListRelPos ); -#endif } /* Distance gain */ diff --git a/lib_rend/ivas_objectRenderer_vec.c b/lib_rend/ivas_objectRenderer_vec.c index f17d769821ab9e3abee43fed7b53d02829a14dfd..061b790e1b46e9010d14a0b0162b528bbd3768fb 100644 --- a/lib_rend/ivas_objectRenderer_vec.c +++ b/lib_rend/ivas_objectRenderer_vec.c @@ -111,33 +111,16 @@ void TDREND_SPATIAL_VecMapToNewCoordSystem( const float *DirVec_p, /* i : Direction vector */ const float *UpVec_p, /* i : Up vector */ const float *RightVec_p, /* i : Right vector */ -#ifdef TD5 - float *MappedVec_p, /* o : Transformed vector */ - float *LisRelPosAbs /* o : Transformed vector ignoring orientation */ -#else - float *MappedVec_p /* o : Transformed vector */ -#endif + float *MappedVec_p, /* o : Transformed vector */ + float *LisRelPosAbs /* o : Transformed vector ignoring orientation */ ) { -#ifdef TD5 v_sub( Vec_p, TranslVec_p, LisRelPosAbs, 3 ); /* Evalute the relative Vec in the coordinates of the Orientation vectors, */ /* which form an orthonormal basis */ MappedVec_p[0] = dotp( LisRelPosAbs, DirVec_p, 3 ); MappedVec_p[1] = dotp( LisRelPosAbs, RightVec_p, 3 ); MappedVec_p[2] = dotp( LisRelPosAbs, UpVec_p, 3 ); -#else - float RelVec[3]; - - /* Evaluate Vec relative to the new origin given by TranslVec */ - v_sub( Vec_p, TranslVec_p, RelVec, 3 ); - - /* Evalute the relative Vec in the coordinates of the Orientation vectors, */ - /* which form an orthonormal basis */ - MappedVec_p[0] = dotp( RelVec, DirVec_p, 3 ); - MappedVec_p[1] = dotp( RelVec, RightVec_p, 3 ); - MappedVec_p[2] = dotp( RelVec, UpVec_p, 3 ); -#endif return; } diff --git a/lib_rend/ivas_orient_trk.c b/lib_rend/ivas_orient_trk.c index af71cbf543f84530a1bec434c20fd2662097f22b..63d863c4b635dcdfc832f9c0027d165a7c902238 100644 --- a/lib_rend/ivas_orient_trk.c +++ b/lib_rend/ivas_orient_trk.c @@ -57,7 +57,6 @@ * Local functions *------------------------------------------------------------------------------------------*/ -#ifdef FIX_I109_ORIENTATION_TRACKING /*------------------------------------------------------------------------------------------* * IdentityQuaternion() * @@ -246,7 +245,6 @@ static void QuaternionInverse( } -#ifdef OTR_REFERENCE_VECTOR_TRACKING /*------------------------------------------------------------------------------------------* * VectorSubtract() * @@ -374,46 +372,6 @@ static void VectorRotationToQuaternion( return; } -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#else -static float ClipAngle( - const float angle, - const float min_angle, - const float max_angle ) -{ - float result = angle; - - /* wrap angle modulo 2*pi into range of [-pi, pi> radians */ - /* 'while' assumed to use comparison to 0 */ - while ( result > EVS_PI ) - { - result -= PI2; - } - /* 'while' assumed to use comparison to 0 */ - while ( result <= -EVS_PI ) - { - result += PI2; - } - - /* Next, clip angle into range */ - /* 'if' assumed to use comparison to 0 */ - if ( result < min_angle ) - { - result = min_angle; - } - else - { - /* 'if' assumed to use comparison to 0 */ - if ( result > max_angle ) - { - result = max_angle; - } - } - - return result; -} - -#endif /*-------------------------------------------------------------------* * ivas_orient_trk_Init() @@ -421,14 +379,9 @@ static float ClipAngle( * *-------------------------------------------------------------------*/ -#ifdef FIX_I109_ORIENTATION_TRACKING ivas_error ivas_orient_trk_Init( -#else -void ivas_orient_trk_Init( -#endif ivas_orient_trk_state_t *pOTR ) /* i/o : orientation tracker handle */ { -#ifdef FIX_I109_ORIENTATION_TRACKING IVAS_QUATERNION identity; if ( pOTR == NULL ) @@ -438,10 +391,6 @@ void ivas_orient_trk_Init( identity.w = 1.0f; identity.x = identity.y = identity.z = 0.0f; -#else - /* Track relative to a reference orientation */ - pOTR->trackingType = OTR_TRACKING_REF_ORIENT; -#endif /* configuration parameters */ pOTR->centerAdaptationRate = 1.0f / 30.0f; @@ -451,10 +400,7 @@ void ivas_orient_trk_Init( /* initial adaptivity filter coefficient, will be auto-adapted */ pOTR->alpha = sinf( PI2 * pOTR->offCenterAdaptationRate / OTR_UPDATE_RATE ); /* start adaptation at off-center rate = fastest rate */ -#ifdef FIX_I109_ORIENTATION_TRACKING -#ifdef OTR_REFERENCE_VECTOR_TRACKING pOTR->trkRot = identity; -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ pOTR->absAvgRot = identity; /* Use frontal and horiontal orientation as reference orientation, unless/until overridden */ pOTR->refRot = identity; @@ -463,27 +409,6 @@ void ivas_orient_trk_Init( pOTR->trackingType = OTR_TRACKING_NONE; return IVAS_ERR_OK; -#else - pOTR->absYaw = 0.0f; - pOTR->absPitch = 0.0f; - pOTR->absRoll = 0.0f; - - pOTR->absAvgYaw = 0.0f; - pOTR->absAvgPitch = 0.0f; - pOTR->absAvgRoll = 0.0f; - - /* Use frontal and horiontal orientation as reference orientation, - unless/until overridden by ivas_orient_trk_SetAbsoluteOrientation() */ - pOTR->refYaw = 0.0f; - pOTR->refPitch = 0.0f; - pOTR->refRoll = 0.0f; - - pOTR->trkYaw = 0.0f; - pOTR->trkPitch = 0.0f; - pOTR->trkRoll = 0.0f; - - return; -#endif } @@ -493,7 +418,6 @@ void ivas_orient_trk_Init( * *-------------------------------------------------------------------*/ -#ifdef FIX_I109_ORIENTATION_TRACKING ivas_error ivas_orient_trk_SetTrackingType( ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */ const OTR_TRACKING_T trackingType /* i/o: orientation tracking type */ @@ -507,16 +431,7 @@ ivas_error ivas_orient_trk_SetTrackingType( return IVAS_ERR_OK; } -#else -void ivas_orient_trk_SetTrackingType( - ivas_orient_trk_state_t *pOTR, /* i/o : orientation tracker handle */ - const OTR_TRACKING_T trackingType ) /* i/o : orientation tracking type */ -{ - pOTR->trackingType = trackingType; -} -#endif -#ifdef FIX_I109_ORIENTATION_TRACKING /*-------------------------------------------------------------------* * ivas_orient_trk_SetReferenceRotation() * @@ -567,10 +482,8 @@ ivas_error ivas_orient_trk_GetMainOrientation( case OTR_TRACKING_NONE: *pOrientation = IdentityQuaternion(); break; -#ifdef OTR_REFERENCE_VECTOR_TRACKING case OTR_TRACKING_REF_VEC: case OTR_TRACKING_REF_VEC_LEV: -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ case OTR_TRACKING_REF_ORIENT: *pOrientation = pOTR->refRot; break; @@ -605,7 +518,6 @@ ivas_error ivas_orient_trk_GetTrackedRotation( } -#ifdef OTR_REFERENCE_VECTOR_TRACKING /*-------------------------------------------------------------------* * ivas_orient_trk_SetReferenceVector() * @@ -663,28 +575,6 @@ ivas_error ivas_orient_trk_SetReferenceVector( return IVAS_ERR_OK; } -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#else -/*-------------------------------------------------------------------* - * ivas_orient_trk_SetAbsoluteOrientation() - * - * - *-------------------------------------------------------------------*/ - -void ivas_orient_trk_SetAbsoluteOrientation( - ivas_orient_trk_state_t *pOTR, - const float yaw, - const float pitch, - const float roll ) -{ - /* TODO implement condition checks */ - pOTR->absYaw = yaw; - pOTR->absPitch = pitch; - pOTR->absRoll = roll; - - return; -} -#endif /*-------------------------------------------------------------------* @@ -693,7 +583,6 @@ void ivas_orient_trk_SetAbsoluteOrientation( * *-------------------------------------------------------------------*/ -#ifdef FIX_I109_ORIENTATION_TRACKING ivas_error ivas_orient_trk_Process( ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */ IVAS_QUATERNION absRot, /* i : absolute head rotation */ @@ -721,10 +610,8 @@ ivas_error ivas_orient_trk_Process( case OTR_TRACKING_NONE: pOTR->trkRot = absRot; break; -#ifdef OTR_REFERENCE_VECTOR_TRACKING case OTR_TRACKING_REF_VEC: case OTR_TRACKING_REF_VEC_LEV: -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ case OTR_TRACKING_REF_ORIENT: /* Reset average orientation */ pOTR->absAvgRot = absRot; @@ -785,138 +672,3 @@ ivas_error ivas_orient_trk_Process( return result; } -#else -ivas_error ivas_orient_trk_Process( - ivas_orient_trk_state_t *pOTR ) -{ - float yaw; - float pitch; - float roll; - - if ( pOTR->trackingType == OTR_TRACKING_AVG_ORIENT ) - { - float normalizedOrientation; - float relativeOrientationRate; - float rateRange; - float cutoffFrequency; - float alpha = pOTR->alpha; - - /* Copy absolute orientation as input to compute further on */ - yaw = pOTR->absYaw; - pitch = pOTR->absPitch; - roll = pOTR->absRoll; - - /* Compute average (low-pass filtered) absolute orientation */ - pOTR->absAvgYaw = ( 1.0f - alpha ) * pOTR->absAvgYaw + alpha * yaw; - pOTR->absAvgPitch = ( 1.0f - alpha ) * pOTR->absAvgPitch + alpha * pitch; - pOTR->absAvgRoll = ( 1.0f - alpha ) * pOTR->absAvgRoll + alpha * roll; - - /* Compute relative orientation = (absolute orientation) - (average absolute orientation) */ - yaw -= pOTR->absAvgYaw; - pitch -= pOTR->absAvgPitch; - roll -= pOTR->absAvgRoll; - - /* Clip tracked relative orientation to avoid wrap around */ - yaw = ClipAngle( yaw, -MAX_TRACKED_ANGLE_AVG_ORIENT, MAX_TRACKED_ANGLE_AVG_ORIENT ); - pitch = ClipAngle( pitch, -MAX_TRACKED_ANGLE_AVG_ORIENT, MAX_TRACKED_ANGLE_AVG_ORIENT ); - roll = ClipAngle( roll, -MAX_TRACKED_ANGLE_AVG_ORIENT, MAX_TRACKED_ANGLE_AVG_ORIENT ); - - /* Store relative orientation result as output */ - pOTR->trkYaw = yaw; - pOTR->trkPitch = pitch; - pOTR->trkRoll = roll; - - /* Reconstruct the mean absolute orientation, compensating for non-linear computation of relative orientation: - take absolute orientation and subtract the *clipped* mean relative orientation */ - pOTR->absAvgYaw = pOTR->absYaw - yaw; - pOTR->absAvgPitch = pOTR->absPitch - pitch; - pOTR->absAvgRoll = pOTR->absRoll - roll; - - /* Adapt LPF constant based on orientation excursion relative to current mean: - - low cutoff (slow adaptation) for small excursions (around center) - - high cutoff (fast adaptation) for large excursions (off-center) - */ - - normalizedOrientation = yaw * yaw; - normalizedOrientation += pitch * pitch; - normalizedOrientation += roll * roll; - - relativeOrientationRate = sqrtf( normalizedOrientation ) / pOTR->adaptationAngle; - /* 'if' assumed to perform comparison to 0 */ - if ( relativeOrientationRate > 1.0f ) - { - relativeOrientationRate = 1.0f; - } - - /* Compute range of the adaptation rate between center = lower rate and off-center = higher rate */ - rateRange = pOTR->offCenterAdaptationRate - pOTR->centerAdaptationRate; - /* 'if' assumed to perform comparison to 0 */ - if ( rateRange < 0.0f ) - { - rateRange = 0.0f; - } - - /* Compute adaptivity cutoff frequency: interpolate between minimum (center) and maximum (off-center) values */ - cutoffFrequency = pOTR->centerAdaptationRate + ( relativeOrientationRate * rateRange ); - - /* Compute filter coefficient corresponding to desired cutoff frequency */ - pOTR->alpha = sinf( 2.0f * EVS_PI * cutoffFrequency / OTR_UPDATE_RATE ); - } - else - { - /* 'if' assumed to perform comparison to 0 */ - if ( pOTR->trackingType == OTR_TRACKING_REF_ORIENT ) - { - /* Reset average orientation */ - pOTR->absAvgYaw = pOTR->absYaw; - pOTR->absAvgPitch = pOTR->absPitch; - pOTR->absAvgRoll = pOTR->absRoll; - - /* Reset adaptation filter - start adaptation at center rate */ - pOTR->alpha = sinf( 2.0f * EVS_PI * pOTR->centerAdaptationRate / OTR_UPDATE_RATE ); - - /* Copy absolute orientation as input to compute further on */ - yaw = pOTR->absYaw; - pitch = pOTR->absPitch; - roll = pOTR->absRoll; - - /* Compute relative orientation = (absolute orientation) - (reference orientation) */ - yaw -= pOTR->refYaw; - pitch -= pOTR->refPitch; - roll -= pOTR->refRoll; - - /* Clip computed relative orientation to avoid wrap around and store as output */ - pOTR->trkYaw = ClipAngle( yaw, -MAX_TRACKED_ANGLE_REF_ORIENT, MAX_TRACKED_ANGLE_REF_ORIENT ); - pOTR->trkPitch = ClipAngle( pitch, -MAX_TRACKED_ANGLE_REF_ORIENT, MAX_TRACKED_ANGLE_REF_ORIENT ); - pOTR->trkRoll = ClipAngle( roll, -MAX_TRACKED_ANGLE_REF_ORIENT, MAX_TRACKED_ANGLE_REF_ORIENT ); - } - - else - { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Non-supported orientation tracking adaptation type" ); - } - } - - return IVAS_ERR_OK; -} - - -/*-------------------------------------------------------------------* - * ivas_orient_trk_GetTrackedOrientation() - * - * - *-------------------------------------------------------------------*/ - -void ivas_orient_trk_GetTrackedOrientation( - ivas_orient_trk_state_t *pOTR, - float *yaw, - float *pitch, - float *roll ) -{ - *yaw = pOTR->trkYaw; - *pitch = pOTR->trkPitch; - *roll = pOTR->trkRoll; - - return; -} -#endif diff --git a/lib_rend/ivas_prot_rend.h b/lib_rend/ivas_prot_rend.h index 4c79280a8687e74fb02b89934bfc9447da717f08..938e8de02c909c85236052bb6055cbd1f97b8143 100644 --- a/lib_rend/ivas_prot_rend.h +++ b/lib_rend/ivas_prot_rend.h @@ -221,9 +221,7 @@ ivas_error ivas_td_binaural_renderer_unwrap( ISM_METADATA_HANDLE *hIsmMetaData, /* i : ISM metadata handle */ const int16_t Opt_Headrotation, /* i : Head rotation flag */ const IVAS_QUATERNION *Quaternions, /* i : Head tracking data per subframe */ -#ifdef TD5 const IVAS_POSITION *Pos, /* i : Listener position data per subframe */ -#endif float output[][L_FRAME48k], /* i/o: SCE channels / Binaural synthesis */ const int16_t output_frame /* i : output frame length */ ); @@ -245,9 +243,7 @@ ivas_error ivas_td_binaural_open_unwrap( const int16_t nchan_transport, /* i : Number of channels */ const IVAS_FORMAT ivas_format, /* i : IVAS format (ISM/MC) */ const AUDIO_CONFIG transport_config, /* i : Transport configuration */ -#ifdef TD5 const float *directivity, /* i : Directivity pattern (used for ISM) */ -#endif const IVAS_OUTPUT_SETUP hTransSetup, /* i : Loudspeaker layout */ BINAURAL_TD_OBJECT_RENDERER_HANDLE *hBinRendererTd, /* o : TD renderer handle */ int32_t *binaural_latency_ns /* i : Binauralization delay */ @@ -256,9 +252,7 @@ ivas_error ivas_td_binaural_open_unwrap( ivas_error ivas_td_binaural_open_ext( TDREND_WRAPPER *pTDRend, const IVAS_REND_AudioConfig inConfig, -#ifdef TD5 RENDER_CONFIG_DATA *hRendCfg, /* i : Renderer configuration */ -#endif LSSETUP_CUSTOM_STRUCT *customLsInput, const int32_t output_Fs ); @@ -278,12 +272,8 @@ ivas_error TDREND_GetMix( void TDREND_Update_listener_orientation( BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD Renderer handle */ const int16_t headRotEnabled, /* i : Headrotation flag */ -#ifdef TD5 const IVAS_QUATERNION *headPosition, /* i : Listener orientation */ const IVAS_POSITION *Pos /* i : Listener Position */ -#else - const IVAS_QUATERNION *headPosition /* i : Head Position */ -#endif ); void TDREND_Update_object_positions( @@ -404,12 +394,8 @@ void TDREND_SPATIAL_VecMapToNewCoordSystem( const float *DirVec_p, /* i : Direction vector */ const float *UpVec_p, /* i : Up vector */ const float *RightVec_p, /* i : Right vector */ -#ifdef TD5 float *MappedVec_p, /* o : Transformed vector */ float *LisRelPosAbs /* o : Transformed vector ignoring orientation */ -#else - float *MappedVec_p /* o : Transformed vector */ -#endif ); /*! r: Flag if the orientation has been updated */ @@ -475,12 +461,8 @@ void TDREND_firfilt( const int16_t intp_count, /* i : interpolation count */ float *mem, /* i/o: filter memory */ const int16_t subframe_length, /* i : Length of signal */ -#ifdef TD5 const int16_t filterlength, /* i : Filter length */ const float Gain /* i : Gain */ -#else - const int16_t filterlength /* i : Filter length */ -#endif ); @@ -493,9 +475,6 @@ ivas_error ivas_rend_openCrend( const AUDIO_CONFIG inConfig, const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, -#ifndef FIX_I109_ORIENTATION_TRACKING - int16_t Opt_Headrotation, -#endif HRTFS_CREND_HANDLE hSetOfHRTF, const int32_t output_Fs ); @@ -771,7 +750,6 @@ ivas_error ivas_headTrack_open( HEAD_TRACK_DATA_HANDLE *hHeadTrackData /* o : head track handle */ ); -#ifdef FIX_I109_ORIENTATION_TRACKING void ivas_headTrack_close( HEAD_TRACK_DATA_HANDLE *hHeadTrackData /* i/o: head track handle */ ); @@ -785,14 +763,6 @@ void Euler2Quat( float deg2rad( float degrees ); -#else -void Quat2Euler( - const IVAS_QUATERNION quat, /* i : quaternion describing the rotation */ - float *yaw, /* o : yaw (z) */ - float *pitch, /* o : pitch (y) */ - float *roll /* o : roll (x) */ -); -#endif void QuatToRotMat( @@ -872,36 +842,25 @@ ivas_error ivas_render_config_init_from_rom( * Orientation tracking *----------------------------------------------------------------------------------*/ -#ifdef FIX_I109_ORIENTATION_TRACKING ivas_error ivas_orient_trk_Init( -#else -void ivas_orient_trk_Init( -#endif ivas_orient_trk_state_t *pOTR /* i/o: orientation tracker handle */ ); -#ifdef FIX_I109_ORIENTATION_TRACKING ivas_error ivas_orient_trk_SetTrackingType( -#else -void ivas_orient_trk_SetTrackingType( -#endif ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */ const OTR_TRACKING_T trackingType /* i : orientation tracking type */ ); -#ifdef FIX_I109_ORIENTATION_TRACKING ivas_error ivas_orient_trk_SetReferenceRotation( ivas_orient_trk_state_t *pOTR, /* i/o: orientatoin trakcer handle */ const IVAS_QUATERNION refRot /* i : reference rotation */ ); -#ifdef OTR_REFERENCE_VECTOR_TRACKING ivas_error ivas_orient_trk_SetReferenceVector( ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */ const IVAS_VECTOR3 listenerPos, /* i : Listener position */ const IVAS_VECTOR3 refPos /* i : Reference position */ ); -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ ivas_error ivas_orient_trk_GetMainOrientation( ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */ @@ -912,9 +871,7 @@ ivas_error ivas_orient_trk_GetTrackedRotation( ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */ IVAS_QUATERNION *pRotation /* i/o: processed rotation */ ); -#endif -#ifdef FIX_I109_ORIENTATION_TRACKING ivas_error ivas_orient_trk_Process( ivas_orient_trk_state_t *pOTR, /* i/o: orientation tracker handle */ IVAS_QUATERNION absRot, /* i : absolute head rotation */ @@ -922,25 +879,6 @@ ivas_error ivas_orient_trk_Process( IVAS_QUATERNION *pTrkRot /* o : tracked rotation */ ); -#else -void ivas_orient_trk_SetAbsoluteOrientation( - ivas_orient_trk_state_t *pOTR, - const float yaw, - const float pitch, - const float roll -); - -ivas_error ivas_orient_trk_Process( - ivas_orient_trk_state_t *pOTR -); - -void ivas_orient_trk_GetTrackedOrientation( - ivas_orient_trk_state_t *pOTR, - float *yaw, - float *pitch, - float *roll -); -#endif /* clang-format on */ #endif /* IVAS_PROT_REND_H */ diff --git a/lib_rend/ivas_render_config.c b/lib_rend/ivas_render_config.c index 2fdbeff0eb1840ecd60eb4d579c4baecb3097cfe..efd866ccec4139bb01801f6141e6b4451776bc51 100644 --- a/lib_rend/ivas_render_config.c +++ b/lib_rend/ivas_render_config.c @@ -126,11 +126,9 @@ ivas_error ivas_render_config_init_from_rom( mvr2r( ivas_reverb_default_RT60, ( *hRenderConfig )->roomAcoustics.pAcoustic_rt60, IVAS_REVERB_DEFAULT_N_BANDS ); mvr2r( ivas_reverb_default_DSR, ( *hRenderConfig )->roomAcoustics.pAcoustic_dsr, IVAS_REVERB_DEFAULT_N_BANDS ); -#ifdef TD5 ( *hRenderConfig )->directivity[0] = 360.0f; /* Front cone */ ( *hRenderConfig )->directivity[1] = 360.0f; /* Back cone */ ( *hRenderConfig )->directivity[2] = 1.0f; /* Back attenuation */ -#endif return IVAS_ERR_OK; } diff --git a/lib_rend/ivas_rotation.c b/lib_rend/ivas_rotation.c index 2a45c6d61acad2ed98edf822d82ba1aa892dbfbf..0386a49c7d9fdaa727c0bee1f0c40563218f4adb 100644 --- a/lib_rend/ivas_rotation.c +++ b/lib_rend/ivas_rotation.c @@ -68,7 +68,6 @@ ivas_error ivas_headTrack_open( ( *hHeadTrackData )->lrSwitchInterpVal = 0.0f; ( *hHeadTrackData )->lrSwitchedCurrent = 0; ( *hHeadTrackData )->lrSwitchedNext = 0; -#ifdef FIX_I109_ORIENTATION_TRACKING if ( ( ( *hHeadTrackData )->OrientationTracker = (ivas_orient_trk_state_t *) malloc( sizeof( ivas_orient_trk_state_t ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Orientation tracking" ); @@ -78,7 +77,6 @@ ivas_error ivas_headTrack_open( { return error; } -#endif /* Initialise Rmat_prev to I, Rmat will be computed later */ for ( i = 0; i < 3; i++ ) @@ -91,7 +89,6 @@ ivas_error ivas_headTrack_open( } -#ifdef FIX_I109_ORIENTATION_TRACKING /*-----------------------------------------------------------------------* * ivas_headTrack_close() * @@ -118,7 +115,6 @@ void ivas_headTrack_close( return; } -#endif /*---------------------------------------------------------------------------------- @@ -132,7 +128,6 @@ void QuatToRotMat( float Rmat[3][3] /* o : real-space rotation matrix for this rotation */ ) { -#ifdef FIX_I109_ORIENTATION_TRACKING Rmat[0][0] = quat.w * quat.w + quat.x * quat.x - quat.y * quat.y - quat.z * quat.z; Rmat[0][1] = 2.0f * ( quat.x * quat.y - quat.w * quat.z ); Rmat[0][2] = 2.0f * ( quat.x * quat.z + quat.w * quat.y ); @@ -144,109 +139,11 @@ void QuatToRotMat( Rmat[2][0] = 2.0f * ( quat.x * quat.z - quat.w * quat.y ); Rmat[2][1] = 2.0f * ( quat.y * quat.z + quat.w * quat.x ); Rmat[2][2] = quat.w * quat.w - quat.x * quat.x - quat.y * quat.y + quat.z * quat.z; -#else - float s1, s2, s3, c1, c2, c3; - -#ifdef DEBUGGING - /* PrintQuat( quat ); */ -#endif - - /* For debugging purposes we can also calculate the rotation matrix from - * Euler angles instead of quaternions. In this case, all the w values must - * be set to -3.0 in the trajectory file to signal switching to Euler angles. - * The x,y, and z components of the quaternion are then interpreted as -#ifdef FIX_I109_ORIENTATION_TRACKING - * yaw-pitch-roll. -#else // see below: "Euler angles in R_X(roll)*R_Y(pitch)*R_Z(yaw) convention" - * roll-pitch-yaw. -#endif - */ - if ( quat.w != -3.0 ) - { - Rmat[0][0] = quat.w * quat.w + quat.x * quat.x - quat.y * quat.y - quat.z * quat.z; - Rmat[0][1] = 2.0f * ( quat.x * quat.y - quat.w * quat.z ); - Rmat[0][2] = 2.0f * ( quat.x * quat.z + quat.w * quat.y ); - - Rmat[1][0] = 2.0f * ( quat.x * quat.y + quat.w * quat.z ); - Rmat[1][1] = quat.w * quat.w - quat.x * quat.x + quat.y * quat.y - quat.z * quat.z; - Rmat[1][2] = 2.0f * ( quat.y * quat.z - quat.w * quat.x ); - - Rmat[2][0] = 2.0f * ( quat.x * quat.z - quat.w * quat.y ); - Rmat[2][1] = 2.0f * ( quat.y * quat.z + quat.w * quat.x ); - Rmat[2][2] = quat.w * quat.w - quat.x * quat.x - quat.y * quat.y + quat.z * quat.z; - } - else - { - /* Euler angles in R_X(roll)*R_Y(pitch)*R_Z(yaw) convention - * - * yaw: rotate scene counter-clockwise in the horizontal plane - * pitch: rotate scene in the median plane, increase elevation with positive values - * roll: rotate scene from the right ear to the top - */ - - c1 = cosf( quat.z / _180_OVER_PI ); - c2 = cosf( quat.y / _180_OVER_PI ); - c3 = cosf( quat.x / _180_OVER_PI ); - - s1 = sinf( quat.z / _180_OVER_PI ); - s2 = sinf( -quat.y / _180_OVER_PI ); - s3 = sinf( quat.x / _180_OVER_PI ); - - Rmat[0][0] = c2 * c3; - Rmat[0][1] = -c2 * s3; - Rmat[0][2] = s2; - - Rmat[1][0] = c1 * s3 + c3 * s1 * s2; - Rmat[1][1] = c1 * c3 - s1 * s2 * s3; - Rmat[1][2] = -c2 * s1; - - Rmat[2][0] = s1 * s3 - c1 * c3 * s2; - Rmat[2][1] = c3 * s1 + c1 * s2 * s3; - Rmat[2][2] = c1 * c2; - } -#endif return; } -#ifndef FIX_I109_ORIENTATION_TRACKING -/*------------------------------------------------------------------------- - * Quat2Euler() - * - * Quaternion handling: calculate corresponding Euler angles in radians - *------------------------------------------------------------------------*/ -void Quat2Euler( - const IVAS_QUATERNION quat, /* i : quaternion describing the rotation */ - float *yaw, /* o : yaw (z) */ - float *pitch, /* o : pitch (y) */ - float *roll /* o : roll (x) */ -) -{ - if ( quat.w != -3.0 ) - { - *yaw = atan2f( 2 * ( quat.w * quat.x + quat.y * quat.z ), 1 - 2 * ( quat.x * quat.x + quat.y * quat.y ) ); - *pitch = asinf( 2 * ( quat.w * quat.y - quat.z * quat.x ) ); - *roll = atan2f( 2 * ( quat.w * quat.z + quat.x * quat.y ), 1 - 2 * ( quat.y * quat.y + quat.z * quat.z ) ); - } - else - { - /* Euler angles in R_X(roll)*R_Y(pitch)*R_Z(yaw) convention - * - * yaw: rotate scene counter-clockwise in the horizontal plane - * pitch: rotate scene in the median plane, increase elevation with positive values - * roll: rotate scene from the right ear to the top - */ - *yaw = quat.z; - *pitch = quat.y; - *roll = quat.x; - } - - return; -} -#endif - -#ifdef FIX_I109_ORIENTATION_TRACKING /*------------------------------------------------------------------------- * Euler2Quat() * @@ -294,7 +191,6 @@ float deg2rad( return PI_OVER_180 * degrees; } -#endif /*------------------------------------------------------------------------- * rotateAziEle() diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index 13c6084b2d8a05d06529888460ea7d65611032ec..226b9fcd32e81717d22e647ec988414b5495e3de 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -225,7 +225,6 @@ typedef struct EFAP * Orientation tracking structure *----------------------------------------------------------------------------------*/ -#ifdef FIX_I109_ORIENTATION_TRACKING typedef struct ivas_orient_trk_state_t { OTR_TRACKING_T trackingType; @@ -239,34 +238,6 @@ typedef struct ivas_orient_trk_state_t IVAS_QUATERNION trkRot; /* tracked rotation */ } ivas_orient_trk_state_t; -#else -typedef struct ivas_orient_trk_state_t -{ - OTR_TRACKING_T trackingType; - float centerAdaptationRate; - float offCenterAdaptationRate; - float adaptationAngle; - - float alpha; - - float absYaw; /* absolute orientation */ - float absPitch; - float absRoll; - - float absAvgYaw; /* average absolute orientation */ - float absAvgPitch; - float absAvgRoll; - - float refYaw; /* reference orientation */ - float refPitch; - float refRoll; - - float trkYaw; /* tracked orientation */ - float trkPitch; - float trkRoll; - -} ivas_orient_trk_state_t; -#endif /*----------------------------------------------------------------------------------* * Head rotation data structure @@ -276,13 +247,9 @@ typedef struct { int8_t headRotEnabled; IVAS_QUATERNION headPositions[RENDERER_HEAD_POSITIONS_PER_FRAME]; -#ifdef TD5 IVAS_POSITION Pos[RENDERER_HEAD_POSITIONS_PER_FRAME]; -#endif float crossfade[L_FRAME48k / RENDERER_HEAD_POSITIONS_PER_FRAME]; -#ifdef FIX_I109_ORIENTATION_TRACKING ivas_orient_trk_state_t *hOrientationTracker; -#endif } IVAS_REND_HeadRotData; @@ -290,9 +257,7 @@ typedef struct ivas_binaural_head_track_struct { int16_t num_quaternions; IVAS_QUATERNION Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES]; -#ifdef TD5 IVAS_POSITION Pos[MAX_PARAM_SPATIAL_SUBFRAMES]; -#endif float Rmat[3][3]; float Rmat_prev[3][3]; @@ -301,9 +266,7 @@ typedef struct ivas_binaural_head_track_struct float lrSwitchInterpVal; int16_t shd_rot_max_order; -#ifdef FIX_I109_ORIENTATION_TRACKING ivas_orient_trk_state_t *OrientationTracker; -#endif } HEAD_TRACK_DATA, *HEAD_TRACK_DATA_HANDLE; @@ -333,9 +296,7 @@ typedef struct ivas_render_config_t ivas_renderTypeOverride renderer_type_override; #endif ivas_roomAcoustics_t roomAcoustics; -#ifdef TD5 float directivity[3]; -#endif } RENDER_CONFIG_DATA, *RENDER_CONFIG_HANDLE; diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 1dc1c1f9567bd4b4ac122e0f2aecedf8b0a499a6..37851cf1ab2063fd29acaa89067c96033cedb39c 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -901,11 +901,7 @@ static ivas_error getEfapGains( return IVAS_ERR_OK; } -#ifdef FIX_I109_ORIENTATION_TRACKING static ivas_error initHeadRotation( -#else -static void initHeadRotation( -#endif IVAS_REND_HANDLE hIvasRend ) { int16_t i, crossfade_len; @@ -929,7 +925,6 @@ static void initHeadRotation( hIvasRend->headRotData.headPositions[i] = quaternionInit(); } -#ifdef FIX_I109_ORIENTATION_TRACKING if ( ( hIvasRend->headRotData.hOrientationTracker = (ivas_orient_trk_state_t *) malloc( sizeof( ivas_orient_trk_state_t ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Orientation tracking" ); @@ -941,12 +936,8 @@ static void initHeadRotation( } return IVAS_ERR_OK; -#else - return; -#endif } -#ifdef FIX_I109_ORIENTATION_TRACKING static void closeHeadRotation( IVAS_REND_HANDLE hIvasRend ) { @@ -957,7 +948,6 @@ static void closeHeadRotation( return; } -#endif static void initRotMatrix( rotation_matrix rot_mat ) @@ -1017,11 +1007,9 @@ static IVAS_REND_AudioObjectPosition defaultObjectPosition( pos.azimuth = 0.0f; pos.elevation = 0.0f; -#ifdef TD5 pos.radius = 1.0f; pos.yaw = 0.0f; pos.pitch = 0.0f; -#endif return pos; } @@ -1114,11 +1102,7 @@ static ivas_error setRendInputActiveIsm( error = IVAS_ERR_OK; if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL ) { -#ifdef TD5 if ( ( error = ivas_td_binaural_open_ext( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) -#else - if ( ( error = ivas_td_binaural_open_ext( &inputIsm->tdRendWrapper, inConfig, NULL, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) -#endif { return error; } @@ -1127,11 +1111,7 @@ static ivas_error setRendInputActiveIsm( { if ( hRendCfg != NULL && hRendCfg->roomAcoustics.use_brir == 0 && hRendCfg->roomAcoustics.late_reverb_on ) { -#ifdef TD5 if ( ( error = ivas_td_binaural_open_ext( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) -#else - if ( ( error = ivas_td_binaural_open_ext( &inputIsm->tdRendWrapper, inConfig, NULL, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) -#endif { return error; } @@ -1144,9 +1124,6 @@ static ivas_error setRendInputActiveIsm( else { if ( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, AUDIO_CONFIG_7_1_4, getIvasAudioConfigFromRendAudioConfig( outConfig ), hRendCfg, -#ifndef FIX_I109_ORIENTATION_TRACKING - 0, -#endif NULL, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) { return error; @@ -1839,11 +1816,7 @@ static ivas_error initMcBinauralRendering( // if ( initTDRend ) { -#ifdef TD5 if ( ( error = ivas_td_binaural_open_ext( &inputMc->tdRendWrapper, inConfig, hRendCfg, &inputMc->customLsInput, outSampleRate ) ) != IVAS_ERR_OK ) -#else - if ( ( error = ivas_td_binaural_open_ext( &inputMc->tdRendWrapper, inConfig, &inputMc->customLsInput, outSampleRate ) ) != IVAS_ERR_OK ) -#endif { return error; } @@ -1859,9 +1832,6 @@ static ivas_error initMcBinauralRendering( { if ( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) ? AUDIO_CONFIG_7_1_4 : getIvasAudioConfigFromRendAudioConfig( inConfig ), getIvasAudioConfigFromRendAudioConfig( outConfig ), hRendCfg, -#ifndef FIX_I109_ORIENTATION_TRACKING - 0, -#endif NULL, outSampleRate ) ) != IVAS_ERR_OK ) { return error; @@ -2130,9 +2100,6 @@ static ivas_error updateSbaPanGains( getIvasAudioConfigFromRendAudioConfig( inConfig ), getIvasAudioConfigFromRendAudioConfig( outConfig ), hRendCfg, -#ifndef FIX_I109_ORIENTATION_TRACKING - 0, -#endif NULL, *rendCtx.pOutSampleRate ); break; @@ -2146,9 +2113,6 @@ static ivas_error updateSbaPanGains( AUDIO_CONFIG_7_1_4, getIvasAudioConfigFromRendAudioConfig( outConfig ), hRendCfg, -#ifndef FIX_I109_ORIENTATION_TRACKING - 0, -#endif NULL, *rendCtx.pOutSampleRate ); break; @@ -2508,10 +2472,8 @@ static DecoderDummy *initDecoderDummy( decDummy->hHeadTrackData->lrSwitchInterpVal = 0.0f; decDummy->hHeadTrackData->lrSwitchedCurrent = 0; decDummy->hHeadTrackData->lrSwitchedNext = 0; -#ifdef FIX_I109_ORIENTATION_TRACKING decDummy->hHeadTrackData->OrientationTracker = (ivas_orient_trk_state_t *) malloc( sizeof( ivas_orient_trk_state_t ) ); ivas_orient_trk_Init( decDummy->hHeadTrackData->OrientationTracker ); -#endif } else { @@ -2592,12 +2554,10 @@ static void freeDecoderDummy( if ( pDecDummy->hHeadTrackData != NULL ) { -#ifdef FIX_I109_ORIENTATION_TRACKING if ( pDecDummy->hHeadTrackData->OrientationTracker != NULL ) { free( pDecDummy->hHeadTrackData->OrientationTracker ); } -#endif free( pDecDummy->hHeadTrackData ); } ivas_render_config_close( &pDecDummy->hRenderConfig ); @@ -2712,14 +2672,10 @@ ivas_error IVAS_REND_Open( } /* Initialize headrotation data */ -#ifdef FIX_I109_ORIENTATION_TRACKING if ( ( error = initHeadRotation( hIvasRend ) ) != IVAS_ERR_OK ) { return error; } -#else - initHeadRotation( hIvasRend ); -#endif /* Initialize EFAP */ if ( ( error = initEfap( &hIvasRend->efapOutWrapper, outConfig, &hIvasRend->customLsOut ) ) != IVAS_ERR_OK ) @@ -3795,9 +3751,7 @@ int16_t IVAS_REND_FeedRenderConfig( } hRenderConfig = hIvasRend->hRendererConfig; -#ifdef TD5 mvr2r( renderConfig.directivity, hRenderConfig->directivity, 3 ); -#endif #ifdef DEBUGGING hRenderConfig->renderer_type_override = RENDER_TYPE_OVERRIDE_NONE; if ( renderConfig.renderer_type_override == IVAS_RENDER_TYPE_OVERRIDE_FASTCONV ) @@ -3830,19 +3784,13 @@ int16_t IVAS_REND_FeedRenderConfig( *-------------------------------------------------------------------*/ ivas_error IVAS_REND_SetHeadRotation( - IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ -#ifdef TD5 + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const IVAS_QUATERNION headRot[RENDERER_HEAD_POSITIONS_PER_FRAME], /* i : head orientations for next rendering call */ const IVAS_POSITION Pos[RENDERER_HEAD_POSITIONS_PER_FRAME] /* i : listener positions for next rendering call */ -#else - const IVAS_QUATERNION headRot[RENDERER_HEAD_POSITIONS_PER_FRAME] /* i : head positions for next rendering call */ -#endif ) { int16_t i; -#ifdef FIX_I109_ORIENTATION_TRACKING IVAS_QUATERNION rotQuat; -#endif /* Validate function arguments */ if ( hIvasRend == NULL ) @@ -3865,7 +3813,6 @@ ivas_error IVAS_REND_SetHeadRotation( hIvasRend->headRotData.headRotEnabled = 1; for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; ++i ) { -#ifdef FIX_I109_ORIENTATION_TRACKING /* check for Euler angle signaling */ if ( headRot[i].w == -3.0f ) { @@ -3877,12 +3824,7 @@ ivas_error IVAS_REND_SetHeadRotation( } ivas_orient_trk_Process( hIvasRend->headRotData.hOrientationTracker, rotQuat, FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES, &hIvasRend->headRotData.headPositions[i] ); -#else - hIvasRend->headRotData.headPositions[i] = headRot[i]; -#endif -#ifdef TD5 hIvasRend->headRotData.Pos[i] = Pos[i]; -#endif } } @@ -3890,7 +3832,6 @@ ivas_error IVAS_REND_SetHeadRotation( } -#ifdef FIX_I109_ORIENTATION_TRACKING /*-------------------------------------------------------------------* * IVAS_REND_SetOrientationTrackingMode() * @@ -3918,14 +3859,12 @@ ivas_error IVAS_REND_SetOrientationTrackingMode( case IVAS_ORIENT_TRK_REF: mode = OTR_TRACKING_REF_ORIENT; break; -#ifdef OTR_REFERENCE_VECTOR_TRACKING case IVAS_ORIENT_TRK_REF_VEC: mode = OTR_TRACKING_REF_VEC; break; case IVAS_ORIENT_TRK_REF_VEC_LEV: mode = OTR_TRACKING_REF_VEC_LEV; break; -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ case IVAS_ORIENT_TRK_NONE: default: mode = OTR_TRACKING_NONE; @@ -4023,7 +3962,6 @@ ivas_error IVAS_REND_GetTrackedRotation( } -#ifdef OTR_REFERENCE_VECTOR_TRACKING /*---------------------------------------------------------------------* * IVAS_REND_SetReferenceVector( ) * @@ -4044,8 +3982,6 @@ ivas_error IVAS_REND_SetReferenceVector( return ivas_orient_trk_SetReferenceVector( hIvasRend->headRotData.hOrientationTracker, listenerPos, refPos ); } -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#endif /*-------------------------------------------------------------------* @@ -4323,7 +4259,6 @@ static ivas_error rotateFrameSba( ( 1 - headRotData->crossfade[i] ) * gains_prev[n][m] * ( *readPtr ); } } -#ifdef FIX_376_SBA_ROTATE /* write back the result */ for ( n = m1; n < m2; n++ ) { @@ -4332,18 +4267,7 @@ static ivas_error rotateFrameSba( } m1 = m2; m2 += 2 * ( l + 1 ) + 1; -#endif - } -#ifndef FIX_376_SBA_ROTATE - /* write back the result */ - for ( n = m1; n < m2; n++ ) - { - writePtr = getSmplPtr( outAudio, n, subframe_idx * subframe_len + i ); - ( *writePtr ) = tmpRot[n - m1]; } - m1 = m2; - m2 += 2 * ( l + 1 ) + 1; -#endif } /*unoptimized code for reference (full matrix multiplication)*/ @@ -5659,9 +5583,7 @@ void IVAS_REND_Close( ivas_limiter_close( &hIvasRend->hLimiter ); -#ifdef FIX_I109_ORIENTATION_TRACKING closeHeadRotation( hIvasRend ); -#endif free( hIvasRend ); *phIvasRend = NULL; diff --git a/lib_rend/lib_rend.h b/lib_rend/lib_rend.h index b313bea5c12ff1fdec424b910158322f863c2f9c..99b33dc381a2d8f2db0afa535c78b0eeee666f0d 100644 --- a/lib_rend/lib_rend.h +++ b/lib_rend/lib_rend.h @@ -244,15 +244,10 @@ int16_t IVAS_REND_FeedRenderConfig( ivas_error IVAS_REND_SetHeadRotation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ -#ifdef TD5 const IVAS_QUATERNION headRot[RENDERER_HEAD_POSITIONS_PER_FRAME], /* i : head orientations for next rendering call */ const IVAS_POSITION Pos[RENDERER_HEAD_POSITIONS_PER_FRAME] /* i : listener positions for next rendering call */ -#else - const IVAS_QUATERNION headRot[RENDERER_HEAD_POSITIONS_PER_FRAME] /* i : head positions for next rendering call */ -#endif ); -#ifdef FIX_I109_ORIENTATION_TRACKING ivas_error IVAS_REND_SetOrientationTrackingMode( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const uint8_t otrMode /* i : Orientation tracking mode */ @@ -273,14 +268,11 @@ ivas_error IVAS_REND_GetTrackedRotation( IVAS_QUATERNION *pRotation /* i/o: Quaternion pointer for processed rotation */ ); -#ifdef OTR_REFERENCE_VECTOR_TRACKING ivas_error IVAS_REND_SetReferenceVector( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const IVAS_VECTOR3 listenerPos, /* i : Listener position */ const IVAS_VECTOR3 refPos /* i : Reference position */ ); -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ -#endif /* FIX_I109_ORIENTATION_TRACKING */ ivas_error IVAS_REND_GetSamples( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ diff --git a/lib_util/audio_file_writer.c b/lib_util/audio_file_writer.c index b27a8ceca6cf9ae990de7ff580a4eb53443307d9..81084dbd95b686d52477327b948ada136225f42f 100644 --- a/lib_util/audio_file_writer.c +++ b/lib_util/audio_file_writer.c @@ -98,11 +98,7 @@ ivas_error AudioFileWriter_open( int8_t retCode; -#ifdef FIX_I109_ORIENTATION_TRACKING if ( ( fileNameLen > wavSuffixLen ) && ( strncmp( fileName + fileNameLen - wavSuffixLen, wavSuffix, wavSuffixLen ) == 0 ) ) -#else - if ( fileNameLen > wavSuffixLen && strncmp( fileName + fileNameLen - wavSuffixLen, wavSuffix, wavSuffixLen ) == 0 ) -#endif { retCode = AudioFileWriter_open_wav( self, fileName, sampleRate, numChannels ); } diff --git a/lib_util/head_rotation_file_reader.c b/lib_util/head_rotation_file_reader.c index 500fdd2b7a7b748d56675f8952046012d18416d4..02f14be9247c62fb5ba80701fab7de6d96a49c84 100644 --- a/lib_util/head_rotation_file_reader.c +++ b/lib_util/head_rotation_file_reader.c @@ -91,43 +91,28 @@ ivas_error HeadRotationFileReader_open( * Read values from the trajectory file *-----------------------------------------------------------------------*/ -#ifdef FIX_I109_ORIENTATION_TRACKING ivas_error HeadRotationFileReading( HeadRotFileReader *headRotReader, /* i/o: HeadRotFileReader handle */ -#ifdef TD5 - IVAS_QUATERNION *pQuaternion, /* o : head-tracking data */ - IVAS_POSITION *pPos /* o : listener position */ -#else - IVAS_QUATERNION *pQuaternion /* o : head-tracking data */ -#endif + IVAS_QUATERNION *pQuaternion, /* o : head-tracking data */ + IVAS_POSITION *pPos /* o : listener position */ ) { float w, x, y, z; -#ifdef TD5 float posx, posy, posz; int32_t read_values; posx = 0.0f; posy = 0.0f; posz = 0.0f; -#endif -#ifdef TD5 read_values = fscanf( headRotReader->trajFile, "%f,%f,%f,%f,%f,%f,%f", &w, &x, &y, &z, &posx, &posy, &posz ); if ( ( read_values != 4 ) && ( read_values != 7 ) ) /* Allow either orientation (4) or orientation+position (4+3) */ -#else - if ( 4 != fscanf( headRotReader->trajFile, "%f,%f,%f,%f", &w, &x, &y, &z ) ) -#endif { if ( feof( headRotReader->trajFile ) ) { rewind( headRotReader->trajFile ); headRotReader->fileRewind = true; -#ifdef TD5 return HeadRotationFileReading( headRotReader, pQuaternion, pPos ); -#else - return HeadRotationFileReading( headRotReader, pQuaternion ); -#endif } return IVAS_ERR_FAILED_FILE_PARSE; } @@ -138,79 +123,16 @@ ivas_error HeadRotationFileReading( pQuaternion->x = x; pQuaternion->y = y; pQuaternion->z = z; -#ifdef TD5 if ( pPos != NULL ) { pPos->x = posx; pPos->y = posy; pPos->z = posz; } -#endif return IVAS_ERR_OK; } -#else -ivas_error HeadRotationFileReading( - HeadRotFileReader *headRotReader, /* i/o: HeadRotFileReader handle */ - IVAS_QUATERNION *Quaternions, /* o : head-tracking data, listener orientation */ -#ifdef TD5 - IVAS_POSITION *Pos /* o : listener position */ -#else - const int32_t frame_dec /* i : decoded frame number */ -#endif -) -{ - uint16_t i; - float w, x, y, z; -#ifdef TD5 - float posx, posy, posz; - int32_t read_values; - - posx = 0.0f; - posy = 0.0f; - posz = 0.0f; -#endif - - for ( i = 0; i < IVAS_MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) - { -#ifdef TD5 - read_values = fscanf( headRotReader->trajFile, "%f,%f,%f,%f,%f,%f,%f", &w, &x, &y, &z, &posx, &posy, &posz ); - if ( ( read_values != 4 ) && ( read_values != 7 ) ) /* Allow either orientation (4) or orientation+position (4+3) */ -#else - if ( 4 != fscanf( headRotReader->trajFile, "%f,%f,%f,%f", &w, &x, &y, &z ) ) -#endif - { - if ( feof( headRotReader->trajFile ) ) - { - rewind( headRotReader->trajFile ); - headRotReader->fileRewind = true; -#ifdef TD5 - return HeadRotationFileReading( headRotReader, Quaternions, Pos ); -#else - return HeadRotationFileReading( headRotReader, Quaternions, frame_dec ); -#endif - } - return IVAS_ERR_FAILED_FILE_PARSE; - } - - ( headRotReader->frameCounter )++; - - Quaternions[i].w = w; - Quaternions[i].x = x; - Quaternions[i].y = y; - Quaternions[i].z = z; -#ifdef TD5 - Pos[i].x = posx; - Pos[i].y = posy; - Pos[i].z = posz; -#endif - } - - return IVAS_ERR_OK; -} -#endif - /*-----------------------------------------------------------------------* * HeadRotationFileReader_close() diff --git a/lib_util/head_rotation_file_reader.h b/lib_util/head_rotation_file_reader.h index d735423e2cda0cc9fcc2cd485774073486fdba39..4794aeba45b2d17e2c7552112ff292741ca9655d 100644 --- a/lib_util/head_rotation_file_reader.h +++ b/lib_util/head_rotation_file_reader.h @@ -57,27 +57,11 @@ ivas_error HeadRotationFileReader_open( * Read values from the trajectory file *-----------------------------------------------------------------------*/ -#ifdef FIX_I109_ORIENTATION_TRACKING ivas_error HeadRotationFileReading( HeadRotFileReader *headRotReader, /* i/o: HeadRotFileReader handle */ -#ifdef TD5 - IVAS_QUATERNION *pQuaternion, /* o : head-tracking data */ - IVAS_POSITION *pPos /* o : listener position */ -#else - IVAS_QUATERNION *pQuaternion /* o : head-tracking data */ -#endif + IVAS_QUATERNION *pQuaternion, /* o : head-tracking data */ + IVAS_POSITION *pPos /* o : listener position */ ); -#else -ivas_error HeadRotationFileReading( - HeadRotFileReader *headRotReader, /* i/o: HeadRotFileReader handle */ - IVAS_QUATERNION *Quaternions, /* o : head-tracking data */ -#ifdef TD5 - IVAS_POSITION *Pos /* o : listener position */ -#else - const int32_t frame_dec /* i : decoded frame number */ -#endif -); -#endif /*-----------------------------------------------------------------------* * HeadRotationFileReader_close() diff --git a/lib_util/ism_file_reader.c b/lib_util/ism_file_reader.c index d60a7c1984be63283863b8298b01ebd333f5222d..b27d0e9e78d5ad243cefc98c67bbc64b6c22b06b 100644 --- a/lib_util/ism_file_reader.c +++ b/lib_util/ism_file_reader.c @@ -36,13 +36,9 @@ #include -#define META_LINE_LENGTH 200 /* max number of characters at one line of metadata input/output file */ -#ifdef TD5 -#define NUM_ISM_METADATA_PER_LINE 7 /* Number of ISM metadata per line in a metadata file */ -#define NUM_MIN_ISM_METADATA 2 /* Minimum number of metadata parameters (azimuth and elevation) */ -#else -#define NUM_ISM_METADATA_PER_LINE 5 /* Number of ISM metadata per line in a metadata file */ -#endif +#define META_LINE_LENGTH 200 /* max number of characters at one line of metadata input/output file */ +#define NUM_ISM_METADATA_PER_LINE 7 /* Number of ISM metadata per line in a metadata file */ +#define NUM_MIN_ISM_METADATA 2 /* Minimum number of metadata parameters (azimuth and elevation) */ struct IsmFileReader @@ -100,20 +96,16 @@ ivas_error IsmFileReader_readNextFrame( { char char_buff[META_LINE_LENGTH]; float meta_prm[NUM_ISM_METADATA_PER_LINE]; -#ifdef TD5 const float meta_prm_default[NUM_ISM_METADATA_PER_LINE] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f }; -#endif char *char_ptr; int16_t i; FILE *file; -#ifdef TD5 /* Set default metadata parameters */ for ( i = 0; i < NUM_ISM_METADATA_PER_LINE; i++ ) { meta_prm[i] = meta_prm_default[i]; } -#endif if ( ismMetadata == NULL || self->file == NULL ) { @@ -143,34 +135,21 @@ ivas_error IsmFileReader_readNextFrame( meta_prm[i++] = (float) atof( char_ptr ); } -#ifdef TD5 /* Check if minimum number of metadata values were read. Additional values are ignored. */ if ( i < NUM_MIN_ISM_METADATA ) -#else - if ( i != NUM_ISM_METADATA_PER_LINE ) -#endif { /* Not enough values provided in one line */ return IVAS_ERR_ISM_FILE_READER_INVALID_METADATA_FORMAT; } -#ifndef TD5 - if ( char_ptr != NULL ) - { - /* Too many values provided in one line */ - return IVAS_ERR_ISM_FILE_READER_INVALID_METADATA_FORMAT; - } -#endif ismMetadata->azimuth = meta_prm[0]; ismMetadata->elevation = meta_prm[1]; ismMetadata->radius = meta_prm[2]; ismMetadata->spread = meta_prm[3]; ismMetadata->gainFactor = meta_prm[4]; -#ifdef TD5 ismMetadata->yaw = meta_prm[5]; ismMetadata->pitch = meta_prm[6]; -#endif /* verify whether the read metadata values are in an expected range */ if ( ismMetadata->azimuth > 180 || ismMetadata->azimuth < -180 ) @@ -197,7 +176,6 @@ ivas_error IsmFileReader_readNextFrame( { return IVAS_ERR_ISM_INVALID_METADATA_VALUE; } -#ifdef TD5 if ( ismMetadata->yaw > 180 || ismMetadata->yaw < -180 ) { return IVAS_ERR_ISM_INVALID_METADATA_VALUE; @@ -207,7 +185,6 @@ ivas_error IsmFileReader_readNextFrame( { return IVAS_ERR_ISM_INVALID_METADATA_VALUE; } -#endif return IVAS_ERR_OK; } diff --git a/lib_util/ism_file_writer.c b/lib_util/ism_file_writer.c index 870cf335867073266763d2a454e6fc6b0a1fab14..b29386282b016342c147f0c60775a8b9eb314ba4 100644 --- a/lib_util/ism_file_writer.c +++ b/lib_util/ism_file_writer.c @@ -36,9 +36,6 @@ #define META_LINE_LENGTH 200 /* max number of characters at one line of metadata input/output file */ -#ifndef TD5 -#define NUM_ISM_METADATA_PER_LINE 5 /* Number of ISM metadata per line in a metadata file */ -#endif struct IsmFileWriter @@ -118,17 +115,9 @@ ivas_error IsmFileWriter_writeFrame( /* IVAS_fmToDo: work in progress; currently position_azimuth, position_elevation, position_radius, spread, gain_factor */ #ifdef FIX_293_EXT_RENDERER_CLI -#ifdef TD5 sprintf( char_buff, "%+07.2f,%+06.2f,%05.2f,%06.2f,%04.2f,%+07.2f,%+06.2f\n", ismMetadata.azimuth, ismMetadata.elevation, ismMetadata.radius, ismMetadata.spread, ismMetadata.gainFactor, ismMetadata.yaw, ismMetadata.pitch ); -#else - sprintf( char_buff, "%+07.2f,%+06.2f,%05.2f,%06.2f,%04.2f\n", ismMetadata.azimuth, ismMetadata.elevation, ismMetadata.radius, ismMetadata.spread, ismMetadata.gainFactor ); -#endif #endif -#ifdef TD5 snprintf( char_buff, sizeof( char_buff ), "%+07.2f,%+06.2f,%05.2f,%06.2f,%04.2f,%+07.2f,%+06.2f\n", ismMetadata.azimuth, ismMetadata.elevation, ismMetadata.radius, ismMetadata.spread, ismMetadata.gainFactor, ismMetadata.yaw, ismMetadata.pitch ); -#else - snprintf( char_buff, sizeof( char_buff ), "%+07.2f,%+06.2f,%05.2f,%06.2f,%04.2f\n", ismMetadata.azimuth, ismMetadata.elevation, ismMetadata.radius, ismMetadata.spread, ismMetadata.gainFactor ); -#endif if ( file ) { diff --git a/lib_util/masa_file_writer.c b/lib_util/masa_file_writer.c index 74429f9185c07ad0367325e2377112850389ac2b..5667968ece8b39c4a1a8ecc783a9efcea63b2011 100644 --- a/lib_util/masa_file_writer.c +++ b/lib_util/masa_file_writer.c @@ -67,10 +67,8 @@ struct MasaFileWriter *-----------------------------------------------------------------------*/ #ifndef FIX_350_MASA_DELAY_COMP -#ifndef FIX_373_MASA_DELAY_COMP_MSAN #define SPH_IDX_FRONT ( MASA_NO_POINTS_EQUATOR / 2 ) /* Spherical index corresponding to front direction for setting as default value */ #endif -#endif /*-----------------------------------------------------------------------* * Local functions diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index 907d148a6e7523172e6e2e8aa28f287abf357d75..54f2d012ce7f06c567ba87d1e216e98680306845 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -522,7 +522,6 @@ ivas_error RenderConfigReader_read( errorHandler( pValue, ERROR_VALUE_INVALID ); } } -#ifdef TD5 else if ( strcmp( item, "DIRECTIVITY" ) == 0 ) { if ( read_vector( pValue, 3, hRenderConfig->directivity ) ) @@ -530,7 +529,6 @@ ivas_error RenderConfigReader_read( errorHandler( item, ERROR_VALUE_INVALID ); } } -#endif #ifdef DEBUGGING else { diff --git a/lib_util/vector3_pair_file_reader.c b/lib_util/vector3_pair_file_reader.c index 1b8a95bc8802caedf0ca50a537928a6ff2622f34..9e03358b91c901e9c6f2875bb8f714cce00a86db 100644 --- a/lib_util/vector3_pair_file_reader.c +++ b/lib_util/vector3_pair_file_reader.c @@ -38,7 +38,6 @@ #include "prot.h" #include "options.h" /* only included to get access to the feature-defines */ -#ifdef OTR_REFERENCE_VECTOR_TRACKING struct Vector3PairFileReader { @@ -162,5 +161,3 @@ const char *Vector3PairFileReader_getFilePath( return reader->file_path; } - -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ diff --git a/lib_util/vector3_pair_file_reader.h b/lib_util/vector3_pair_file_reader.h index a2fd706fc2243fa5e01ce8f2bf8d86278b284578..4ab687848c25265bc08fc33a7f2d5e474516e25b 100644 --- a/lib_util/vector3_pair_file_reader.h +++ b/lib_util/vector3_pair_file_reader.h @@ -37,7 +37,6 @@ #include "ivas_error.h" #include "options.h" /* only included to get access to the feature-defines */ -#ifdef OTR_REFERENCE_VECTOR_TRACKING typedef struct Vector3PairFileReader Vector3PairFileReader; @@ -84,6 +83,5 @@ const char *Vector3PairFileReader_getFilePath( Vector3PairFileReader *vector3PairReader /* i/o: Vector3PairFileReader handle */ ); -#endif /* OTR_REFERENCE_VECTOR_TRACKING */ #endif /* IVAS_V3PAIR_FILE_READER_H */