From ea21d76748c357bf5a6423160397c1b4b162ba7c Mon Sep 17 00:00:00 2001 From: Ke Zhao Date: Tue, 15 Aug 2023 16:19:06 +1000 Subject: [PATCH 1/2] Fix renderer delay compensation with delays greater than 1 frame --- apps/renderer.c | 39 +++++++++++++++++++++++++++++++++++---- lib_com/options.h | 2 ++ 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/apps/renderer.c b/apps/renderer.c index 37bf0ea3d5..91de00004d 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -747,6 +747,9 @@ int main( int16_t delayNumSamples = -1; int16_t delayNumSamples_orig = 0; int16_t zeroPad = 0; +#ifdef FIX_LARGE_RENDERER_DELAY_COMP + int16_t zeroPadToWrite = 0; +#endif int32_t delayTimeScale = 0; int16_t i, numChannels; ivas_error error = IVAS_ERR_OK; @@ -1764,7 +1767,11 @@ int main( if ( audioWriter != NULL ) { #endif - if ( delayNumSamples < outBufferSize ) +#ifdef FIX_LARGE_RENDERER_DELAY_COMP + if ( delayNumSamples * num_out_channels < outBufferSize ) +#else + if ( delayNumSamples < outBufferSize ) +#endif { if ( AudioFileWriter_write( audioWriter, &outInt16Buffer[delayNumSamples * num_out_channels], outBufferSize - ( delayNumSamples * num_out_channels ) ) != IVAS_ERR_OK ) { @@ -1775,7 +1782,11 @@ int main( } else { - delayNumSamples -= (int16_t) outBufferSize; +#ifdef FIX_LARGE_RENDERER_DELAY_COMP + delayNumSamples -= (int16_t) ( outBufferSize / num_out_channels ); +#else + delayNumSamples -= (int16_t) outBufferSize; +#endif } #ifdef SPLIT_REND_WITH_HEAD_ROT } @@ -1875,12 +1886,32 @@ int main( if ( audioWriter != NULL ) { #endif - memset( outInt16Buffer, 0, zeroPad * outBuffer.config.numChannels * sizeof( int16_t ) ); - if ( ( error = AudioFileWriter_write( audioWriter, outInt16Buffer, zeroPad * outBuffer.config.numChannels ) ) != IVAS_ERR_OK ) +#ifdef FIX_LARGE_RENDERER_DELAY_COMP + for ( zeroPadToWrite = zeroPad; zeroPadToWrite > frameSize_smpls; zeroPadToWrite -= frameSize_smpls ) + { + memset( outInt16Buffer, 0, outBufferSize * sizeof( int16_t ) ); + if ( ( error = AudioFileWriter_write( audioWriter, outInt16Buffer, outBufferSize ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + exit( -1 ); + } + } + + memset( outInt16Buffer, 0, zeroPadToWrite * outBuffer.config.numChannels * sizeof( int16_t ) ); + if ( ( error = AudioFileWriter_write( audioWriter, outInt16Buffer, zeroPadToWrite * outBuffer.config.numChannels ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nOutput audio file writer error\n" ); exit( -1 ); } + zeroPadToWrite = 0; +#else + memset( outInt16Buffer, 0, zeroPad * outBuffer.config.numChannels * sizeof( int16_t ) ); + if ( ( error = AudioFileWriter_write( audioWriter, outInt16Buffer, zeroPad * outBuffer.config.numChannels ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + exit( -1 ); + } +#endif #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif diff --git a/lib_com/options.h b/lib_com/options.h index 9769123af1..fdce954393 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -172,6 +172,8 @@ #define FIX_691_OSBA_CRASH /* FhG: Fix for issue 691: Crash for OSBA Stereo out */ #define FIX_694_OMASA_EXTREME /* Nokia: fix for crash in OMASA on extreme sample */ +#define FIX_LARGE_RENDERER_DELAY_COMP /* Fix renderer delay compensation with delays greater than 1 frame */ + /* ################## End BE DEVELOPMENT switches ######################### */ -- GitLab From abf5b40a5ec04e8045a389524c283ccaa098a36b Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Tue, 15 Aug 2023 10:04:21 +0000 Subject: [PATCH 2/2] Restore options within split rendering test pipeline to avoid conflicts on checkout. --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c7f9ae025e..9a69b946bd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -623,6 +623,7 @@ split-rendering-pytest-on-merge-request: - mv IVAS_rend IVAS_rend_ref # back to source branch + - git restore lib_com/options.h # Revert changes back before checking out another branch to avoid conflicts - git checkout $source_branch_commit_sha - make clean - *enable-split-rendering -- GitLab