Commit a59e223c authored by Ke Zhao's avatar Ke Zhao
Browse files

Merge branch 'fix-large-renderer-delay-comp-2' into 'main'

Fix renderer delay compensation with delays greater than 1 frame (2)

See merge request !975
parents cefdba2e abf5b40a
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+35 −4
Original line number Diff line number Diff line
@@ -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
#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
            {
#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
#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
+2 −0
Original line number Diff line number Diff line
@@ -171,6 +171,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 ######################### */