Commit 05921c06 authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

- wrong buffer for CLDFB synthesis in 0DoF LCLD

- cldfbBufferSize not accounted for in getNumSubframesInBuffer()
- incorrect setting of -fr5 in pytest
parent e2f0ef93
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -128,7 +128,7 @@
/*#define DEBUG_AGC_ENCODER_CMD_OPTION*/        /* Ability to force enable or disable AGC behaviour in DIRAC/SPAR via command line option */
#define DEBUG_JBM_CMD_OPTION                    /* ability for telling the decoder the frontend fetch size and to not delay compensate for bad frames at the beginning */
#define VARIABLE_SPEED_DECODING                 /* variable speed decoding employing the JBM functioniality; move to DEBUGGING after build for disabled is fixed */
/*#define DISABLE_LIMITER*/
/*#define DISABLE_LIMITER*/                         /* disable the limiter to aid BE debugging */
#define DEBUG_IND_LIST_MEMORY                   /* raise assert() when ind_list[] runs out of memory */

/*Split Rendering Debug switches*/
+2 −2
Original line number Diff line number Diff line
@@ -2256,7 +2256,7 @@ void ivas_rend_CldfbMultiBinRendProcess(
    for ( sf_idx = 0; sf_idx < MAX_PARAM_SPATIAL_SUBFRAMES; sf_idx++ )
    {
#endif
        for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) /* TODO(splitrend): this looks strange */
        for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ )
        {
#ifdef API_5MS
            idx = slot_idx;
@@ -2311,7 +2311,7 @@ void ivas_rend_CldfbMultiBinRendProcess(

        for ( pose_idx = 0; pose_idx < hCldfbRend->numPoses; pose_idx++ )
        {
            for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) /* TODO(splitrend): this looks strange */
            for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ )
            {
#ifdef API_5MS
                idx = slot_idx;
+2 −0
Original line number Diff line number Diff line
@@ -1078,6 +1078,7 @@ ivas_error ivas_dec(
    if ( st_ivas->hDecoderConfig->Opt_Limiter )
#endif
    {
#ifndef DISABLE_LIMITER
        ivas_limiter_dec( st_ivas->hLimiter, p_output,
#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT
                          nchan_out_syn_output,
@@ -1085,6 +1086,7 @@ ivas_error ivas_dec(
                          nchan_out,
#endif
                          output_frame, st_ivas->BER_detect );
#endif
    }

#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT
+4 −0
Original line number Diff line number Diff line
@@ -1141,7 +1141,9 @@ ivas_error ivas_jbm_dec_render(
#endif
    {

#ifndef DISABLE_LIMITER
        ivas_limiter_dec( st_ivas->hLimiter, p_output, nchan_out, *nSamplesRendered, st_ivas->BER_detect );
#endif
    }

#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT
@@ -1320,7 +1322,9 @@ ivas_error ivas_jbm_dec_flush_renderer(
    if ( st_ivas->hDecoderConfig->Opt_Limiter )
#endif
    {
#ifndef DISABLE_LIMITER
        ivas_limiter_dec( st_ivas->hLimiter, p_output, st_ivas->hDecoderConfig->nchan_out, *nSamplesRendered, st_ivas->BER_detect );
#endif
    }

#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT
+32 −18
Original line number Diff line number Diff line
@@ -6197,12 +6197,17 @@ static ivas_error renderIsmToBinaural(
}

#ifdef API_5MS
static int16_t num_subframes_in_buffer( const IVAS_REND_AudioBuffer *buffer, int32_t sampleRate )
static int16_t getNumSubframesInBuffer( const IVAS_REND_AudioBuffer *buffer, int32_t sampleRate )
{
    int16_t cldfb2tdSampleFact;

    cldfb2tdSampleFact = buffer->config.is_cldfb ? 2 : 1;

#ifdef DEBUGGING
    assert( buffer->config.numSamplesPerChannel % ( sampleRate / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ) == 0 );
    assert( buffer->config.numSamplesPerChannel % ( sampleRate / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES * cldfb2tdSampleFact ) == 0 );
#endif
    return (int16_t) ( buffer->config.numSamplesPerChannel / ( sampleRate / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ) );

    return (int16_t) ( buffer->config.numSamplesPerChannel / ( sampleRate / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES * cldfb2tdSampleFact ) );
}
#endif

@@ -6362,7 +6367,7 @@ static ivas_error renderIsmToBinauralRoom(
                                           NULL, NULL, NULL, NULL, p_tmpRendBuffer, *ismInput->base.ctx.pOutSampleRate
#ifdef API_5MS
                                           ,
                                           num_subframes_in_buffer( &outAudio, *ismInput->base.ctx.pOutSampleRate )
                                           getNumSubframesInBuffer( &outAudio, *ismInput->base.ctx.pOutSampleRate )
#endif
#ifdef SPLIT_REND_WITH_HEAD_ROT
                                               ,
@@ -7039,7 +7044,7 @@ static ivas_error renderMcToBinaural(
                                               NULL, NULL, NULL, NULL, p_tmpRendBuffer, *mcInput->base.ctx.pOutSampleRate
#ifdef API_5MS
                                               ,
                                               num_subframes_in_buffer( &outAudio, *mcInput->base.ctx.pOutSampleRate )
                                               getNumSubframesInBuffer( &outAudio, *mcInput->base.ctx.pOutSampleRate )
#endif
#ifdef SPLIT_REND_WITH_HEAD_ROT
                                                   ,
@@ -7174,7 +7179,7 @@ static ivas_error renderMcToBinauralRoom(
                                               NULL, NULL, NULL, NULL, p_tmpRendBuffer, *mcInput->base.ctx.pOutSampleRate
#ifdef API_5MS
                                               ,
                                               num_subframes_in_buffer( &outAudio, *mcInput->base.ctx.pOutSampleRate )
                                               getNumSubframesInBuffer( &outAudio, *mcInput->base.ctx.pOutSampleRate )
#endif
#ifdef SPLIT_REND_WITH_HEAD_ROT
                                                   ,
@@ -7302,7 +7307,7 @@ static ivas_error renderMcCustomLsToBinauralRoom(
                                           p_tmpCrendBuffer, *mcInput->base.ctx.pOutSampleRate
#ifdef API_5MS
                                           ,
                                           num_subframes_in_buffer( &outAudio, *mcInput->base.ctx.pOutSampleRate )
                                           getNumSubframesInBuffer( &outAudio, *mcInput->base.ctx.pOutSampleRate )
#endif
#ifdef SPLIT_REND_WITH_HEAD_ROT
                                               ,
@@ -7580,7 +7585,7 @@ static ivas_error renderMcToSplitBinaural(
                                                   p_tmpRendBuffer,
                                                   *mcInput->base.ctx.pOutSampleRate,
#ifdef API_5MS
                                                   num_subframes_in_buffer( &mcInput->base.inputBuffer, *mcInput->base.ctx.pOutSampleRate ),
                                                   getNumSubframesInBuffer( &mcInput->base.inputBuffer, *mcInput->base.ctx.pOutSampleRate ),
#endif
                                                   pos_idx ) ) != IVAS_ERR_OK )
            {
@@ -8065,8 +8070,13 @@ static ivas_error renderSplitBinauralWithPostRot(
                for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ )
#endif
                {
#ifdef API_5MS
                    RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural_5ms[ch_idx][slot_idx];
                    ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural_5ms[ch_idx][slot_idx];
#else
                    RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural[ch_idx][slot_idx];
                    ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural[ch_idx][slot_idx];
#endif
                }

                cldfbSynthesis( RealBuffer,
@@ -8235,7 +8245,7 @@ static ivas_error renderSbaToMultiBinaural(
                                               p_tmpCrendBuffer,
                                               *sbaInput->base.ctx.pOutSampleRate,
#ifdef API_5MS
                                               num_subframes_in_buffer( &sbaInput->base.inputBuffer, *sbaInput->base.ctx.pOutSampleRate ),
                                               getNumSubframesInBuffer( &sbaInput->base.inputBuffer, *sbaInput->base.ctx.pOutSampleRate ),
#endif
                                               pos_idx ) ) != IVAS_ERR_OK )
        {
@@ -8421,7 +8431,7 @@ static ivas_error renderSbaToBinaural(
                                               NULL, NULL, NULL, NULL, p_tmpCrendBuffer, *sbaInput->base.ctx.pOutSampleRate
#ifdef API_5MS
                                               ,
                                               num_subframes_in_buffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate )
                                               getNumSubframesInBuffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate )
#endif
#ifdef SPLIT_REND_WITH_HEAD_ROT
                                                   ,
@@ -8537,7 +8547,7 @@ static ivas_error renderSbaToBinauralRoom(
                                           NULL, NULL, NULL, NULL, p_tmpCrendBuffer, *sbaInput->base.ctx.pOutSampleRate
#ifdef API_5MS
                                           ,
                                           num_subframes_in_buffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate )
                                           getNumSubframesInBuffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate )
#endif
#ifdef SPLIT_REND_WITH_HEAD_ROT
                                               ,
@@ -8824,7 +8834,7 @@ static void renderMasaToMc(
        ivas_dirac_dec_binaural( masaInput->decDummy, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer, masaInput->base.inputBuffer.config.numChannels
#ifdef API_5MS
                                 ,
                                 num_subframes_in_buffer( &outAudio, *masaInput->base.ctx.pOutSampleRate )
                                 getNumSubframesInBuffer( &outAudio, *masaInput->base.ctx.pOutSampleRate )
#endif
        );
    }
@@ -8833,7 +8843,7 @@ static void renderMasaToMc(
        ivas_dirac_dec( masaInput->decDummy, tmpBuffer, masaInput->base.inputBuffer.config.numChannels
#ifdef API_5MS
                        ,
                        num_subframes_in_buffer( &outAudio, *masaInput->base.ctx.pOutSampleRate )
                        getNumSubframesInBuffer( &outAudio, *masaInput->base.ctx.pOutSampleRate )
#endif
        );
    }
@@ -8855,7 +8865,7 @@ static void renderMasaToSba(
    ivas_dirac_dec( masaInput->decDummy, tmpBuffer, masaInput->base.inputBuffer.config.numChannels
#ifdef API_5MS
                    ,
                    num_subframes_in_buffer( &outAudio, *masaInput->base.ctx.pOutSampleRate )
                    getNumSubframesInBuffer( &outAudio, *masaInput->base.ctx.pOutSampleRate )
#endif
    );

@@ -8881,7 +8891,7 @@ static void renderMasaToBinaural(
    ivas_dirac_dec_binaural( masaInput->decDummy, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer, masaInput->base.inputBuffer.config.numChannels
#ifdef API_5MS
                             ,
                             num_subframes_in_buffer( &outAudio, *masaInput->base.ctx.pOutSampleRate )
                             getNumSubframesInBuffer( &outAudio, *masaInput->base.ctx.pOutSampleRate )
#endif
    );
#ifdef SPLIT_REND_WITH_HEAD_ROT
@@ -9525,17 +9535,21 @@ ivas_error IVAS_REND_GetSamples(

    if ( outAudio.config.is_cldfb == 0 )
    {
#ifndef DISABLE_LIMITER
#ifdef DEBUGGING
        hIvasRend->numClipping +=
#endif
            limitRendererOutput( hIvasRend->hLimiter, outAudio.data, outAudio.config.numSamplesPerChannel, IVAS_LIMITER_THRESHOLD );
#endif
    }
#else /* SPLIT_REND_WITH_HEAD_ROT */

#ifndef DISABLE_LIMITER
#ifdef DEBUGGING
    hIvasRend->numClipping +=
#endif
        limitRendererOutput( hIvasRend->hLimiter, outAudio.data, outAudio.config.numSamplesPerChannel, IVAS_LIMITER_THRESHOLD );
#endif
#endif /* SPLIT_REND_WITH_HEAD_ROT */

#ifdef SPLIT_REND_WITH_HEAD_ROT
Loading