Loading Workspace_msvc/lib_rend.vcxproj +3 −1 Original line number Original line Diff line number Diff line Loading @@ -138,6 +138,7 @@ </Lib> </Lib> </ItemDefinitionGroup> </ItemDefinitionGroup> <ItemGroup> <ItemGroup> <ClCompile Include="..\lib_rend\ivas_cldfb_ring_buffer.c" /> <ClCompile Include="..\lib_rend\ivas_dirac_decorr_dec_fx.c" /> <ClCompile Include="..\lib_rend\ivas_dirac_decorr_dec_fx.c" /> <ClCompile Include="..\lib_rend\ivas_dirac_dec_binaural_functions_fx.c" /> <ClCompile Include="..\lib_rend\ivas_dirac_dec_binaural_functions_fx.c" /> <ClCompile Include="..\lib_rend\ivas_dirac_onsets_dec_fx.c" /> <ClCompile Include="..\lib_rend\ivas_dirac_onsets_dec_fx.c" /> Loading Loading @@ -175,6 +176,7 @@ <ClCompile Include="..\lib_rend\ivas_rom_rend_fx.c" /> <ClCompile Include="..\lib_rend\ivas_rom_rend_fx.c" /> <ClCompile Include="..\lib_rend\ivas_shoebox_fx.c" /> <ClCompile Include="..\lib_rend\ivas_shoebox_fx.c" /> <ClCompile Include="..\lib_rend\ivas_td_decorr_fx.c" /> <ClCompile Include="..\lib_rend\ivas_td_decorr_fx.c" /> <ClCompile Include="..\lib_rend\ivas_td_ring_buffer_fx.c" /> <ClCompile Include="..\lib_rend\ivas_vbap_fx.c" /> <ClCompile Include="..\lib_rend\ivas_vbap_fx.c" /> <ClCompile Include="..\lib_rend\lib_rend_fx.c" /> <ClCompile Include="..\lib_rend\lib_rend_fx.c" /> </ItemGroup> </ItemGroup> Loading Workspace_msvc/lib_rend.vcxproj.filters +3 −0 Original line number Original line Diff line number Diff line Loading @@ -109,6 +109,9 @@ <ClCompile Include="..\lib_rend\ivas_td_decorr_fx.c"> <ClCompile Include="..\lib_rend\ivas_td_decorr_fx.c"> <Filter>rend_c</Filter> <Filter>rend_c</Filter> </ClCompile> </ClCompile> <ClCompile Include="..\lib_rend\ivas_cldfb_ring_buffer.c"> <Filter>rend_c</Filter> </ClCompile> <ClCompile Include="..\lib_rend\ivas_vbap_fx.c"> <ClCompile Include="..\lib_rend\ivas_vbap_fx.c"> <Filter>rend_c</Filter> <Filter>rend_c</Filter> </ClCompile> </ClCompile> Loading apps/decoder.c +149 −17 Original line number Original line Diff line number Diff line Loading @@ -166,7 +166,11 @@ typedef struct static bool parseCmdlIVAS_dec( int16_t argc, char **argv, DecArguments *arg ); static bool parseCmdlIVAS_dec( int16_t argc, char **argv, DecArguments *arg ); static void usage_dec( void ); static void usage_dec( void ); static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); #ifdef FIX_1119_SPLIT_RENDERING_VOIP static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtf, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); #else static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); #endif static ivas_error load_hrtf_from_file( IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, IVAS_DEC_HANDLE hIvasDec, const IVAS_AUDIO_CONFIG OutputConfig, const int32_t output_Fs ); static ivas_error load_hrtf_from_file( IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, IVAS_DEC_HANDLE hIvasDec, const IVAS_AUDIO_CONFIG OutputConfig, const int32_t output_Fs ); static void do_object_editing_fx( IVAS_EDITABLE_PARAMETERS *editableParameters, ObjectEditFileReader *objectEditFileReader ); static void do_object_editing_fx( IVAS_EDITABLE_PARAMETERS *editableParameters, ObjectEditFileReader *objectEditFileReader ); Loading Loading @@ -646,7 +650,11 @@ int main( if ( arg.voipMode ) if ( arg.voipMode ) { { #ifdef FIX_1119_SPLIT_RENDERING_VOIP error = decodeVoIP( arg, hBsReader, &hHrtfBinary, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, objectEditFileReader, &splitRendBits, hIvasDec, pcmBuf ); #else error = decodeVoIP( arg, hBsReader, &hHrtfBinary, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, objectEditFileReader, hIvasDec, pcmBuf ); error = decodeVoIP( arg, hBsReader, &hHrtfBinary, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, objectEditFileReader, hIvasDec, pcmBuf ); #endif } } else else { { Loading Loading @@ -1795,7 +1803,11 @@ static ivas_error initOnFirstGoodFrame( for ( int16_t i = 0; i < numInitialBadFrames; ++i ) for ( int16_t i = 0; i < numInitialBadFrames; ++i ) { { #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( isSplitRend ) #else if ( *splitRendWriter != NULL ) if ( *splitRendWriter != NULL ) #endif { { ISAR_SPLIT_REND_BITS_DATA splitRendBitsZero; ISAR_SPLIT_REND_BITS_DATA splitRendBitsZero; splitRendBitsZero.bits_buf = NULL; splitRendBitsZero.bits_buf = NULL; Loading @@ -1813,7 +1825,12 @@ static ivas_error initOnFirstGoodFrame( return error; return error; } } } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( !isSplitCoded ) #else else else #endif { { if ( *pRemainingDelayNumSamples < *numOutSamples ) if ( *pRemainingDelayNumSamples < *numOutSamples ) { { Loading Loading @@ -1851,7 +1868,11 @@ static ivas_error initOnFirstGoodFrame( for ( int16_t i = 0; i < numInitialBadFrames; ++i ) for ( int16_t i = 0; i < numInitialBadFrames; ++i ) { { #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( isSplitRend ) #else if ( *splitRendWriter != NULL ) if ( *splitRendWriter != NULL ) #endif { { ISAR_SPLIT_REND_BITS_DATA splitRendBitsZero; ISAR_SPLIT_REND_BITS_DATA splitRendBitsZero; splitRendBitsZero.bits_buf = NULL; splitRendBitsZero.bits_buf = NULL; Loading @@ -1869,7 +1890,12 @@ static ivas_error initOnFirstGoodFrame( return error; return error; } } } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( !isSplitCoded ) #else else else #endif { { if ( *pRemainingDelayNumSamples < *numOutSamples ) if ( *pRemainingDelayNumSamples < *numOutSamples ) { { Loading Loading @@ -2074,6 +2100,14 @@ static ivas_error decodeG192( return error; return error; } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( !isSplitRend ) { /* Ensure split rendering output struct is not used when not outputting to a split rendering output configuration */ splitRendBits = NULL; } #endif if ( ( error = IVAS_DEC_is_split_rendering_coded_out( hIvasDec, &isSplitCoded ) ) != IVAS_ERR_OK ) if ( ( error = IVAS_DEC_is_split_rendering_coded_out( hIvasDec, &isSplitCoded ) ) != IVAS_ERR_OK ) { { fprintf( stderr, "\nError in IVAS_DEC_is_split_rendering_coded_out, code: %d\n", error ); fprintf( stderr, "\nError in IVAS_DEC_is_split_rendering_coded_out, code: %d\n", error ); Loading Loading @@ -2335,7 +2369,11 @@ static ivas_error decodeG192( } } /* decode transport channels, do TSM and feed to renderer */ /* decode transport channels, do TSM and feed to renderer */ #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( ( error = IVAS_DEC_GetSamplesDecoder( hIvasDec, splitRendBits ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_GetSamplesDecoder( hIvasDec, isSplitRend, splitRendBits ) ) != IVAS_ERR_OK ) if ( ( error = IVAS_DEC_GetSamplesDecoder( hIvasDec, isSplitRend, splitRendBits ) ) != IVAS_ERR_OK ) #endif { { return error; return error; } } Loading Loading @@ -2781,6 +2819,9 @@ static ivas_error decodeVoIP( RotFileReader *refRotReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, ObjectEditFileReader *objectEditFileReader, #ifdef FIX_1119_SPLIT_RENDERING_VOIP ISAR_SPLIT_REND_BITS_DATA *splitRendBits, #endif IVAS_DEC_HANDLE hIvasDec, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ) int16_t *pcmBuf ) { { Loading Loading @@ -2838,6 +2879,29 @@ static ivas_error decodeVoIP( bool parametersAvailableForEditing = false; bool parametersAvailableForEditing = false; uint16_t nSamplesRendered; uint16_t nSamplesRendered; #ifdef FIX_1119_SPLIT_RENDERING_VOIP SplitFileReadWrite *splitRendWriter = NULL; int16_t isSplitRend, isSplitCoded; if ( ( error = IVAS_DEC_is_split_rendering_enabled( hIvasDec, &isSplitRend ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_is_split_rendering_enabled, code: %d\n", error ); return error; } if ( !isSplitRend ) { /* Ensure split rendering output struct is not used when not outputting to a split rendering format */ splitRendBits = NULL; } if ( ( error = IVAS_DEC_is_split_rendering_coded_out( hIvasDec, &isSplitCoded ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_is_split_rendering_coded_out, code: %d\n", error ); return error; } #endif vec_pos_update = 0; vec_pos_update = 0; if ( ( error = IVAS_DEC_GetRenderFramesizeMs( hIvasDec, &systemTimeInc_ms ) ) != IVAS_ERR_OK ) if ( ( error = IVAS_DEC_GetRenderFramesizeMs( hIvasDec, &systemTimeInc_ms ) ) != IVAS_ERR_OK ) { { Loading Loading @@ -3197,6 +3261,22 @@ static ivas_error decodeVoIP( ivasRtp.nProcPiData += numPiData; ivasRtp.nProcPiData += numPiData; } } #endif #endif #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( isSplitRend ) { #ifdef SUPPORT_JBM_TRACEFILE if ( ( error = IVAS_DEC_VoIP_GetSplitBinauralBitstream( hIvasDec, (void *) pcmBuf, splitRendBits, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, &nSamplesRendered, ¶metersAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_VoIP_GetSplitBinauralBitstream( hIvasDec, (void *) pcmBuf, splitRendBits, &bitstreamReadDone, &nSamplesRendered, ¶metersAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_VoIP_GetSplitBinauralBitstream: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } } else { #endif #ifdef SUPPORT_JBM_TRACEFILE #ifdef SUPPORT_JBM_TRACEFILE if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, &nSamplesRendered, ¶metersAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, &nSamplesRendered, ¶metersAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #else #else Loading @@ -3206,6 +3286,9 @@ static ivas_error decodeVoIP( fprintf( stderr, "\nError in IVAS_DEC_VoIP_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); fprintf( stderr, "\nError in IVAS_DEC_VoIP_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; goto cleanup; } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP } #endif if ( bitstreamReadDone == true ) if ( bitstreamReadDone == true ) { { Loading Loading @@ -3285,14 +3368,32 @@ static ivas_error decodeVoIP( /* Once good frame decoded, catch up */ /* Once good frame decoded, catch up */ if ( decodedGoodFrame ) if ( decodedGoodFrame ) { { #ifndef FIX_1119_SPLIT_RENDERING_VOIP SplitFileReadWrite *splitRendWriter = NULL; SplitFileReadWrite *splitRendWriter = NULL; if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, &nOutSamples, NULL, delayNumSamples_orig, &delayNumSamples, &delayTimeScale, #endif #ifdef IVAS_RTPDUMP if ( ( error = initOnFirstGoodFrame( hIvasDec, &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj, &srRtp, &splitRendWriter ) ) != IVAS_ERR_OK ) arg, numInitialBadFrames, &nOutSamples, #ifdef FIX_1119_SPLIT_RENDERING_VOIP &vec_pos_len, #else #else &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj, &splitRendWriter ) ) != IVAS_ERR_OK ) NULL, #endif #endif delayNumSamples_orig, &delayNumSamples, &delayTimeScale, &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj, #ifdef IVAS_RTPDUMP &srRtp, #endif &splitRendWriter ) ) != IVAS_ERR_OK ) { { goto cleanup; goto cleanup; } } Loading @@ -3310,6 +3411,19 @@ static ivas_error decodeVoIP( if ( decodedGoodFrame ) if ( decodedGoodFrame ) #endif #endif { { #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( isSplitRend ) { if ( split_rend_write_bitstream_to_file( splitRendWriter, splitRendBits->bits_buf, &splitRendBits->bits_read, &splitRendBits->bits_written ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to write to bitstream file!\n" ); goto cleanup; } } if ( !isSplitCoded ) { #endif if ( delayNumSamples < nOutSamples ) if ( delayNumSamples < nOutSamples ) { { if ( ( error = AudioFileWriter_write( afWriter, &pcmBuf[delayNumSamples * nOutChannels], nOutSamples * nOutChannels - ( delayNumSamples * nOutChannels ) ) ) != IVAS_ERR_OK ) if ( ( error = AudioFileWriter_write( afWriter, &pcmBuf[delayNumSamples * nOutChannels], nOutSamples * nOutChannels - ( delayNumSamples * nOutChannels ) ) ) != IVAS_ERR_OK ) Loading @@ -3323,6 +3437,9 @@ static ivas_error decodeVoIP( { { delayNumSamples -= nOutSamples; delayNumSamples -= nOutSamples; } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP } #endif /* Write ISM metadata to external file(s) */ /* Write ISM metadata to external file(s) */ if ( decodedGoodFrame && arg.outputConfig == IVAS_AUDIO_CONFIG_EXTERNAL ) if ( decodedGoodFrame && arg.outputConfig == IVAS_AUDIO_CONFIG_EXTERNAL ) Loading Loading @@ -3414,7 +3531,11 @@ static ivas_error decodeVoIP( goto cleanup; goto cleanup; } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( nSamplesFlushed && !isSplitCoded ) #else if ( nSamplesFlushed ) if ( nSamplesFlushed ) #endif { { /* Write current frame */ /* Write current frame */ if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, nSamplesFlushed * nOutChannels ) ) != IVAS_ERR_OK ) if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, nSamplesFlushed * nOutChannels ) ) != IVAS_ERR_OK ) Loading Loading @@ -3489,11 +3610,19 @@ static ivas_error decodeVoIP( *------------------------------------------------------------------------------------------*/ *------------------------------------------------------------------------------------------*/ memset( pcmBuf, 0, delayNumSamples_orig[0] * nOutChannels * sizeof( int16_t ) ); memset( pcmBuf, 0, delayNumSamples_orig[0] * nOutChannels * sizeof( int16_t ) ); #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( afWriter != NULL ) { #endif if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig[0] * nOutChannels ) ) != IVAS_ERR_OK ) if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig[0] * nOutChannels ) ) != IVAS_ERR_OK ) { { fprintf( stderr, "\nError writing output file: %s\n", ivas_error_to_string( error ) ); fprintf( stderr, "\nError writing output file: %s\n", ivas_error_to_string( error ) ); goto cleanup; goto cleanup; } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP } #endif /*------------------------------------------------------------------------------------------* /*------------------------------------------------------------------------------------------* * Printouts after decoding has finished * Printouts after decoding has finished Loading Loading @@ -3547,6 +3676,9 @@ cleanup: EVS_RTPDUMP_DEPACKER_close( &rtpdumpDepacker ); EVS_RTPDUMP_DEPACKER_close( &rtpdumpDepacker ); #endif #endif AudioFileWriter_close( &afWriter ); AudioFileWriter_close( &afWriter ); #ifdef FIX_1119_SPLIT_RENDERING_VOIP split_rend_reader_writer_close( &splitRendWriter ); #endif JbmOffsetFileWriter_close( &jbmOffsetWriter ); JbmOffsetFileWriter_close( &jbmOffsetWriter ); #ifdef SUPPORT_JBM_TRACEFILE #ifdef SUPPORT_JBM_TRACEFILE JbmTraceFileWriter_close( &jbmTraceWriter ); JbmTraceFileWriter_close( &jbmTraceWriter ); Loading apps/isar_post_rend.c +13 −0 Original line number Original line Diff line number Diff line Loading @@ -1337,6 +1337,19 @@ int main( fprintf( stderr, "\nISAR_POST_REND_FeedSplitBinauralBitstream failed: %s\n", ivas_error_to_string( error ) ); fprintf( stderr, "\nISAR_POST_REND_FeedSplitBinauralBitstream failed: %s\n", ivas_error_to_string( error ) ); goto cleanup; goto cleanup; } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP /* Set BFI if frame is empty */ int16_t frameEmpty = (int16_t) ( bitsBuffer.config.bitsWritten == 0 ); if ( frameEmpty ) { if ( ( error = ISAR_POST_REND_SetSplitRendBFI( hIsarPostRend, 1 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Error in ISAR_POST_REND_SetSplitRendBFI(): %s\n", ivas_error_to_string( error ) ); goto cleanup; } } #endif } } } } Loading lib_com/basop_util.c +2 −0 Original line number Original line Diff line number Diff line Loading @@ -987,6 +987,7 @@ Word32 div_w( Word32 L_num, Word32 L_den ) } } } } #ifndef REMOVE_BASOP_Util_Divide3232_Scale_cadence Word32 BASOP_Util_Divide3232_Scale_cadence( Word32 x, Word32 y, Word16 *s ) Word32 BASOP_Util_Divide3232_Scale_cadence( Word32 x, Word32 y, Word16 *s ) { { Word32 z; Word32 z; Loading Loading @@ -1038,6 +1039,7 @@ Word32 BASOP_Util_Divide3232_Scale_cadence( Word32 x, Word32 y, Word16 *s ) return z; return z; } } #endif Word32 div_w_newton( Word32 num, Word32 den ); Word32 div_w_newton( Word32 num, Word32 den ); /* /* Loading Loading
Workspace_msvc/lib_rend.vcxproj +3 −1 Original line number Original line Diff line number Diff line Loading @@ -138,6 +138,7 @@ </Lib> </Lib> </ItemDefinitionGroup> </ItemDefinitionGroup> <ItemGroup> <ItemGroup> <ClCompile Include="..\lib_rend\ivas_cldfb_ring_buffer.c" /> <ClCompile Include="..\lib_rend\ivas_dirac_decorr_dec_fx.c" /> <ClCompile Include="..\lib_rend\ivas_dirac_decorr_dec_fx.c" /> <ClCompile Include="..\lib_rend\ivas_dirac_dec_binaural_functions_fx.c" /> <ClCompile Include="..\lib_rend\ivas_dirac_dec_binaural_functions_fx.c" /> <ClCompile Include="..\lib_rend\ivas_dirac_onsets_dec_fx.c" /> <ClCompile Include="..\lib_rend\ivas_dirac_onsets_dec_fx.c" /> Loading Loading @@ -175,6 +176,7 @@ <ClCompile Include="..\lib_rend\ivas_rom_rend_fx.c" /> <ClCompile Include="..\lib_rend\ivas_rom_rend_fx.c" /> <ClCompile Include="..\lib_rend\ivas_shoebox_fx.c" /> <ClCompile Include="..\lib_rend\ivas_shoebox_fx.c" /> <ClCompile Include="..\lib_rend\ivas_td_decorr_fx.c" /> <ClCompile Include="..\lib_rend\ivas_td_decorr_fx.c" /> <ClCompile Include="..\lib_rend\ivas_td_ring_buffer_fx.c" /> <ClCompile Include="..\lib_rend\ivas_vbap_fx.c" /> <ClCompile Include="..\lib_rend\ivas_vbap_fx.c" /> <ClCompile Include="..\lib_rend\lib_rend_fx.c" /> <ClCompile Include="..\lib_rend\lib_rend_fx.c" /> </ItemGroup> </ItemGroup> Loading
Workspace_msvc/lib_rend.vcxproj.filters +3 −0 Original line number Original line Diff line number Diff line Loading @@ -109,6 +109,9 @@ <ClCompile Include="..\lib_rend\ivas_td_decorr_fx.c"> <ClCompile Include="..\lib_rend\ivas_td_decorr_fx.c"> <Filter>rend_c</Filter> <Filter>rend_c</Filter> </ClCompile> </ClCompile> <ClCompile Include="..\lib_rend\ivas_cldfb_ring_buffer.c"> <Filter>rend_c</Filter> </ClCompile> <ClCompile Include="..\lib_rend\ivas_vbap_fx.c"> <ClCompile Include="..\lib_rend\ivas_vbap_fx.c"> <Filter>rend_c</Filter> <Filter>rend_c</Filter> </ClCompile> </ClCompile> Loading
apps/decoder.c +149 −17 Original line number Original line Diff line number Diff line Loading @@ -166,7 +166,11 @@ typedef struct static bool parseCmdlIVAS_dec( int16_t argc, char **argv, DecArguments *arg ); static bool parseCmdlIVAS_dec( int16_t argc, char **argv, DecArguments *arg ); static void usage_dec( void ); static void usage_dec( void ); static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); #ifdef FIX_1119_SPLIT_RENDERING_VOIP static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtf, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); #else static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); #endif static ivas_error load_hrtf_from_file( IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, IVAS_DEC_HANDLE hIvasDec, const IVAS_AUDIO_CONFIG OutputConfig, const int32_t output_Fs ); static ivas_error load_hrtf_from_file( IVAS_DEC_HRTF_BINARY_WRAPPER *hHrtfBinary, IVAS_DEC_HANDLE hIvasDec, const IVAS_AUDIO_CONFIG OutputConfig, const int32_t output_Fs ); static void do_object_editing_fx( IVAS_EDITABLE_PARAMETERS *editableParameters, ObjectEditFileReader *objectEditFileReader ); static void do_object_editing_fx( IVAS_EDITABLE_PARAMETERS *editableParameters, ObjectEditFileReader *objectEditFileReader ); Loading Loading @@ -646,7 +650,11 @@ int main( if ( arg.voipMode ) if ( arg.voipMode ) { { #ifdef FIX_1119_SPLIT_RENDERING_VOIP error = decodeVoIP( arg, hBsReader, &hHrtfBinary, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, objectEditFileReader, &splitRendBits, hIvasDec, pcmBuf ); #else error = decodeVoIP( arg, hBsReader, &hHrtfBinary, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, objectEditFileReader, hIvasDec, pcmBuf ); error = decodeVoIP( arg, hBsReader, &hHrtfBinary, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, objectEditFileReader, hIvasDec, pcmBuf ); #endif } } else else { { Loading Loading @@ -1795,7 +1803,11 @@ static ivas_error initOnFirstGoodFrame( for ( int16_t i = 0; i < numInitialBadFrames; ++i ) for ( int16_t i = 0; i < numInitialBadFrames; ++i ) { { #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( isSplitRend ) #else if ( *splitRendWriter != NULL ) if ( *splitRendWriter != NULL ) #endif { { ISAR_SPLIT_REND_BITS_DATA splitRendBitsZero; ISAR_SPLIT_REND_BITS_DATA splitRendBitsZero; splitRendBitsZero.bits_buf = NULL; splitRendBitsZero.bits_buf = NULL; Loading @@ -1813,7 +1825,12 @@ static ivas_error initOnFirstGoodFrame( return error; return error; } } } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( !isSplitCoded ) #else else else #endif { { if ( *pRemainingDelayNumSamples < *numOutSamples ) if ( *pRemainingDelayNumSamples < *numOutSamples ) { { Loading Loading @@ -1851,7 +1868,11 @@ static ivas_error initOnFirstGoodFrame( for ( int16_t i = 0; i < numInitialBadFrames; ++i ) for ( int16_t i = 0; i < numInitialBadFrames; ++i ) { { #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( isSplitRend ) #else if ( *splitRendWriter != NULL ) if ( *splitRendWriter != NULL ) #endif { { ISAR_SPLIT_REND_BITS_DATA splitRendBitsZero; ISAR_SPLIT_REND_BITS_DATA splitRendBitsZero; splitRendBitsZero.bits_buf = NULL; splitRendBitsZero.bits_buf = NULL; Loading @@ -1869,7 +1890,12 @@ static ivas_error initOnFirstGoodFrame( return error; return error; } } } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( !isSplitCoded ) #else else else #endif { { if ( *pRemainingDelayNumSamples < *numOutSamples ) if ( *pRemainingDelayNumSamples < *numOutSamples ) { { Loading Loading @@ -2074,6 +2100,14 @@ static ivas_error decodeG192( return error; return error; } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( !isSplitRend ) { /* Ensure split rendering output struct is not used when not outputting to a split rendering output configuration */ splitRendBits = NULL; } #endif if ( ( error = IVAS_DEC_is_split_rendering_coded_out( hIvasDec, &isSplitCoded ) ) != IVAS_ERR_OK ) if ( ( error = IVAS_DEC_is_split_rendering_coded_out( hIvasDec, &isSplitCoded ) ) != IVAS_ERR_OK ) { { fprintf( stderr, "\nError in IVAS_DEC_is_split_rendering_coded_out, code: %d\n", error ); fprintf( stderr, "\nError in IVAS_DEC_is_split_rendering_coded_out, code: %d\n", error ); Loading Loading @@ -2335,7 +2369,11 @@ static ivas_error decodeG192( } } /* decode transport channels, do TSM and feed to renderer */ /* decode transport channels, do TSM and feed to renderer */ #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( ( error = IVAS_DEC_GetSamplesDecoder( hIvasDec, splitRendBits ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_GetSamplesDecoder( hIvasDec, isSplitRend, splitRendBits ) ) != IVAS_ERR_OK ) if ( ( error = IVAS_DEC_GetSamplesDecoder( hIvasDec, isSplitRend, splitRendBits ) ) != IVAS_ERR_OK ) #endif { { return error; return error; } } Loading Loading @@ -2781,6 +2819,9 @@ static ivas_error decodeVoIP( RotFileReader *refRotReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, Vector3PairFileReader *referenceVectorReader, ObjectEditFileReader *objectEditFileReader, ObjectEditFileReader *objectEditFileReader, #ifdef FIX_1119_SPLIT_RENDERING_VOIP ISAR_SPLIT_REND_BITS_DATA *splitRendBits, #endif IVAS_DEC_HANDLE hIvasDec, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ) int16_t *pcmBuf ) { { Loading Loading @@ -2838,6 +2879,29 @@ static ivas_error decodeVoIP( bool parametersAvailableForEditing = false; bool parametersAvailableForEditing = false; uint16_t nSamplesRendered; uint16_t nSamplesRendered; #ifdef FIX_1119_SPLIT_RENDERING_VOIP SplitFileReadWrite *splitRendWriter = NULL; int16_t isSplitRend, isSplitCoded; if ( ( error = IVAS_DEC_is_split_rendering_enabled( hIvasDec, &isSplitRend ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_is_split_rendering_enabled, code: %d\n", error ); return error; } if ( !isSplitRend ) { /* Ensure split rendering output struct is not used when not outputting to a split rendering format */ splitRendBits = NULL; } if ( ( error = IVAS_DEC_is_split_rendering_coded_out( hIvasDec, &isSplitCoded ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_is_split_rendering_coded_out, code: %d\n", error ); return error; } #endif vec_pos_update = 0; vec_pos_update = 0; if ( ( error = IVAS_DEC_GetRenderFramesizeMs( hIvasDec, &systemTimeInc_ms ) ) != IVAS_ERR_OK ) if ( ( error = IVAS_DEC_GetRenderFramesizeMs( hIvasDec, &systemTimeInc_ms ) ) != IVAS_ERR_OK ) { { Loading Loading @@ -3197,6 +3261,22 @@ static ivas_error decodeVoIP( ivasRtp.nProcPiData += numPiData; ivasRtp.nProcPiData += numPiData; } } #endif #endif #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( isSplitRend ) { #ifdef SUPPORT_JBM_TRACEFILE if ( ( error = IVAS_DEC_VoIP_GetSplitBinauralBitstream( hIvasDec, (void *) pcmBuf, splitRendBits, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, &nSamplesRendered, ¶metersAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_VoIP_GetSplitBinauralBitstream( hIvasDec, (void *) pcmBuf, splitRendBits, &bitstreamReadDone, &nSamplesRendered, ¶metersAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_VoIP_GetSplitBinauralBitstream: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } } else { #endif #ifdef SUPPORT_JBM_TRACEFILE #ifdef SUPPORT_JBM_TRACEFILE if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, &nSamplesRendered, ¶metersAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, &nSamplesRendered, ¶metersAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #else #else Loading @@ -3206,6 +3286,9 @@ static ivas_error decodeVoIP( fprintf( stderr, "\nError in IVAS_DEC_VoIP_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); fprintf( stderr, "\nError in IVAS_DEC_VoIP_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; goto cleanup; } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP } #endif if ( bitstreamReadDone == true ) if ( bitstreamReadDone == true ) { { Loading Loading @@ -3285,14 +3368,32 @@ static ivas_error decodeVoIP( /* Once good frame decoded, catch up */ /* Once good frame decoded, catch up */ if ( decodedGoodFrame ) if ( decodedGoodFrame ) { { #ifndef FIX_1119_SPLIT_RENDERING_VOIP SplitFileReadWrite *splitRendWriter = NULL; SplitFileReadWrite *splitRendWriter = NULL; if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, &nOutSamples, NULL, delayNumSamples_orig, &delayNumSamples, &delayTimeScale, #endif #ifdef IVAS_RTPDUMP if ( ( error = initOnFirstGoodFrame( hIvasDec, &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj, &srRtp, &splitRendWriter ) ) != IVAS_ERR_OK ) arg, numInitialBadFrames, &nOutSamples, #ifdef FIX_1119_SPLIT_RENDERING_VOIP &vec_pos_len, #else #else &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj, &splitRendWriter ) ) != IVAS_ERR_OK ) NULL, #endif #endif delayNumSamples_orig, &delayNumSamples, &delayTimeScale, &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj, #ifdef IVAS_RTPDUMP &srRtp, #endif &splitRendWriter ) ) != IVAS_ERR_OK ) { { goto cleanup; goto cleanup; } } Loading @@ -3310,6 +3411,19 @@ static ivas_error decodeVoIP( if ( decodedGoodFrame ) if ( decodedGoodFrame ) #endif #endif { { #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( isSplitRend ) { if ( split_rend_write_bitstream_to_file( splitRendWriter, splitRendBits->bits_buf, &splitRendBits->bits_read, &splitRendBits->bits_written ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to write to bitstream file!\n" ); goto cleanup; } } if ( !isSplitCoded ) { #endif if ( delayNumSamples < nOutSamples ) if ( delayNumSamples < nOutSamples ) { { if ( ( error = AudioFileWriter_write( afWriter, &pcmBuf[delayNumSamples * nOutChannels], nOutSamples * nOutChannels - ( delayNumSamples * nOutChannels ) ) ) != IVAS_ERR_OK ) if ( ( error = AudioFileWriter_write( afWriter, &pcmBuf[delayNumSamples * nOutChannels], nOutSamples * nOutChannels - ( delayNumSamples * nOutChannels ) ) ) != IVAS_ERR_OK ) Loading @@ -3323,6 +3437,9 @@ static ivas_error decodeVoIP( { { delayNumSamples -= nOutSamples; delayNumSamples -= nOutSamples; } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP } #endif /* Write ISM metadata to external file(s) */ /* Write ISM metadata to external file(s) */ if ( decodedGoodFrame && arg.outputConfig == IVAS_AUDIO_CONFIG_EXTERNAL ) if ( decodedGoodFrame && arg.outputConfig == IVAS_AUDIO_CONFIG_EXTERNAL ) Loading Loading @@ -3414,7 +3531,11 @@ static ivas_error decodeVoIP( goto cleanup; goto cleanup; } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( nSamplesFlushed && !isSplitCoded ) #else if ( nSamplesFlushed ) if ( nSamplesFlushed ) #endif { { /* Write current frame */ /* Write current frame */ if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, nSamplesFlushed * nOutChannels ) ) != IVAS_ERR_OK ) if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, nSamplesFlushed * nOutChannels ) ) != IVAS_ERR_OK ) Loading Loading @@ -3489,11 +3610,19 @@ static ivas_error decodeVoIP( *------------------------------------------------------------------------------------------*/ *------------------------------------------------------------------------------------------*/ memset( pcmBuf, 0, delayNumSamples_orig[0] * nOutChannels * sizeof( int16_t ) ); memset( pcmBuf, 0, delayNumSamples_orig[0] * nOutChannels * sizeof( int16_t ) ); #ifdef FIX_1119_SPLIT_RENDERING_VOIP if ( afWriter != NULL ) { #endif if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig[0] * nOutChannels ) ) != IVAS_ERR_OK ) if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig[0] * nOutChannels ) ) != IVAS_ERR_OK ) { { fprintf( stderr, "\nError writing output file: %s\n", ivas_error_to_string( error ) ); fprintf( stderr, "\nError writing output file: %s\n", ivas_error_to_string( error ) ); goto cleanup; goto cleanup; } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP } #endif /*------------------------------------------------------------------------------------------* /*------------------------------------------------------------------------------------------* * Printouts after decoding has finished * Printouts after decoding has finished Loading Loading @@ -3547,6 +3676,9 @@ cleanup: EVS_RTPDUMP_DEPACKER_close( &rtpdumpDepacker ); EVS_RTPDUMP_DEPACKER_close( &rtpdumpDepacker ); #endif #endif AudioFileWriter_close( &afWriter ); AudioFileWriter_close( &afWriter ); #ifdef FIX_1119_SPLIT_RENDERING_VOIP split_rend_reader_writer_close( &splitRendWriter ); #endif JbmOffsetFileWriter_close( &jbmOffsetWriter ); JbmOffsetFileWriter_close( &jbmOffsetWriter ); #ifdef SUPPORT_JBM_TRACEFILE #ifdef SUPPORT_JBM_TRACEFILE JbmTraceFileWriter_close( &jbmTraceWriter ); JbmTraceFileWriter_close( &jbmTraceWriter ); Loading
apps/isar_post_rend.c +13 −0 Original line number Original line Diff line number Diff line Loading @@ -1337,6 +1337,19 @@ int main( fprintf( stderr, "\nISAR_POST_REND_FeedSplitBinauralBitstream failed: %s\n", ivas_error_to_string( error ) ); fprintf( stderr, "\nISAR_POST_REND_FeedSplitBinauralBitstream failed: %s\n", ivas_error_to_string( error ) ); goto cleanup; goto cleanup; } } #ifdef FIX_1119_SPLIT_RENDERING_VOIP /* Set BFI if frame is empty */ int16_t frameEmpty = (int16_t) ( bitsBuffer.config.bitsWritten == 0 ); if ( frameEmpty ) { if ( ( error = ISAR_POST_REND_SetSplitRendBFI( hIsarPostRend, 1 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Error in ISAR_POST_REND_SetSplitRendBFI(): %s\n", ivas_error_to_string( error ) ); goto cleanup; } } #endif } } } } Loading
lib_com/basop_util.c +2 −0 Original line number Original line Diff line number Diff line Loading @@ -987,6 +987,7 @@ Word32 div_w( Word32 L_num, Word32 L_den ) } } } } #ifndef REMOVE_BASOP_Util_Divide3232_Scale_cadence Word32 BASOP_Util_Divide3232_Scale_cadence( Word32 x, Word32 y, Word16 *s ) Word32 BASOP_Util_Divide3232_Scale_cadence( Word32 x, Word32 y, Word16 *s ) { { Word32 z; Word32 z; Loading Loading @@ -1038,6 +1039,7 @@ Word32 BASOP_Util_Divide3232_Scale_cadence( Word32 x, Word32 y, Word16 *s ) return z; return z; } } #endif Word32 div_w_newton( Word32 num, Word32 den ); Word32 div_w_newton( Word32 num, Word32 den ); /* /* Loading