From c868709c41f3a7cb0fddcf80169e9fa863f2042b Mon Sep 17 00:00:00 2001 From: Jouni Paulus Date: Mon, 13 Mar 2023 12:33:36 +0100 Subject: [PATCH 1/2] issue 371: when delay compensation is disabled, the reporting print-out has a division-by-zero since a required variable is not properly assigned --- apps/decoder.c | 16 ++++++++++++++++ lib_com/options.h | 1 + 2 files changed, 17 insertions(+) diff --git a/apps/decoder.c b/apps/decoder.c index af9a847aab..aee3759a21 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -1181,6 +1181,21 @@ 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 ) ); + return error; + } + 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 ) @@ -1197,6 +1212,7 @@ static ivas_error initOnFirstGoodFrame( *pFullDelayNumSamples = 0; #endif } +#endif #ifdef BINAURALIZATION_DELAY_REPORT *pRemainingDelayNumSamples = pFullDelayNumSamples[0]; #else diff --git a/lib_com/options.h b/lib_com/options.h index 5fd4b3d2a6..758913fc97 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -168,6 +168,7 @@ #define ISM_HIGHEST_BITRATE /* VA: Issue 284: Update highest bitrate limit in ISM format */ #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_371_DELAY_REPORT /* Issue 371: div. by zero with -no_delay_cmp */ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ -- GitLab From 41fa578372d92b704ebc5656743d8a1f0da9177f Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 20 Mar 2023 12:11:04 +0100 Subject: [PATCH 2/2] updates within FIX_371_DELAY_REPORT --- apps/decoder.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/decoder.c b/apps/decoder.c index aee3759a21..52fae6ca4e 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -1187,6 +1187,7 @@ static ivas_error initOnFirstGoodFrame( fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) ); return error; } + if ( !arg.delayCompensationEnabled ) { #ifdef BINAURALIZATION_DELAY_REPORT @@ -1644,7 +1645,11 @@ static ivas_error decodeG192( 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 ); @@ -2145,7 +2150,11 @@ static ivas_error decodeVoIP( 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 ); -- GitLab