Commit 7991c482 authored by Jouni Paulus's avatar Jouni Paulus
Browse files

add missing switches. swap order of nested SR switches

parent 4785f4a7
Loading
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -932,15 +932,15 @@ void ivas_jbm_dec_feed_tc_to_renderer(
                    {
                        v_multc( st_ivas->hTcBuffer->tc[CPE_CHANNELS + n], OMASA_TDREND_MATCHING_GAIN, st_ivas->hTcBuffer->tc[CPE_CHANNELS + n], st_ivas->hTcBuffer->n_samples_available );
                    }
#ifdef FIX_766_OMASA_SPLIT_REND
#ifdef SPLIT_REND_WITH_HEAD_ROT
#ifdef FIX_766_OMASA_SPLIT_REND
                    if ( st_ivas->hDecoderConfig->output_config != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && st_ivas->hDecoderConfig->output_config != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
                    {
#endif
#endif
                        delay_signal( st_ivas->hTcBuffer->tc[CPE_CHANNELS + n], st_ivas->hTcBuffer->n_samples_available, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size );
#ifdef FIX_766_OMASA_SPLIT_REND
#ifdef SPLIT_REND_WITH_HEAD_ROT
#ifdef FIX_766_OMASA_SPLIT_REND
                    }
#endif
#endif
+4 −4
Original line number Diff line number Diff line
@@ -738,8 +738,8 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm(
    float data_separated_objects[MAX_NUM_OBJECTS][L_FRAME48k];
    ivas_error error;
    float *p_sepobj[MAX_NUM_OBJECTS];
#ifdef FIX_766_OMASA_SPLIT_REND
#ifdef SPLIT_REND_WITH_HEAD_ROT
#ifdef FIX_766_OMASA_SPLIT_REND
    int16_t slot_idx_start;

    slot_idx_start = st_ivas->hSpatParamRendCom->slots_rendered;
@@ -756,8 +756,8 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm(
    /* reset combined orientation access index before calling the td renderer */
    ivas_combined_orientation_set_to_start_index( st_ivas->hCombinedOrientationData );

#ifdef FIX_766_OMASA_SPLIT_REND
#ifdef SPLIT_REND_WITH_HEAD_ROT
#ifdef FIX_766_OMASA_SPLIT_REND
    if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
    {
        int16_t slot_idx, num_cldfb_bands, nchan_transport_orig, cldfb_slots;
@@ -788,7 +788,7 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm(
            {
                cldfbAnalysis_ts( &( p_rend_obj[n][num_cldfb_bands * slot_idx] ), Cldfb_RealBuffer, Cldfb_ImagBuffer, num_cldfb_bands, st_ivas->hSplitBinRend.splitrend.hCldfbHandles->cldfbAna[n] );

                /* this differs from OSBA by: no scaling by 0.5, and omit slot offset in right-hand side buffer as this is always 0 */
                /* this differs from OSBA by: no scaling by 0.5 */
                v_add( st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx], Cldfb_RealBuffer, st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx], num_cldfb_bands );
                v_add( st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx], Cldfb_ImagBuffer, st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx], num_cldfb_bands );
            }
@@ -806,8 +806,8 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm(
        {
            v_add( output_f[n], p_sepobj[n], output_f[n], *nSamplesRendered );
        }
#ifdef FIX_766_OMASA_SPLIT_REND
#ifdef SPLIT_REND_WITH_HEAD_ROT
#ifdef FIX_766_OMASA_SPLIT_REND
    }
#endif
#endif
+17 −0
Original line number Diff line number Diff line
@@ -138,9 +138,11 @@ ivas_error ivas_osba_dirac_td_binaural_jbm(
    float *p_sepobj[BINAURAL_CHANNELS];
    int16_t channel_offset;
#ifdef SPLIT_REND_WITH_HEAD_ROT
#ifdef FIX_766_OMASA_SPLIT_REND
    int16_t slot_idx_start;

    slot_idx_start = st_ivas->hSpatParamRendCom->slots_rendered;
#endif
#endif

    for ( n = 0; n < BINAURAL_CHANNELS; n++ )
@@ -160,13 +162,20 @@ ivas_error ivas_osba_dirac_td_binaural_jbm(
    if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
    {
        int16_t slot_idx, num_cldfb_bands, b, nchan_transport_orig;
#ifdef FIX_766_OMASA_SPLIT_REND
        int16_t cldfb_slots;
#else
        int16_t cldfb_slots, slot_idx_start;
#endif
        float Cldfb_RealBuffer[CLDFB_NO_CHANNELS_MAX];
        float Cldfb_ImagBuffer[CLDFB_NO_CHANNELS_MAX];

        num_cldfb_bands = st_ivas->hSplitBinRend.splitrend.hCldfbHandles->cldfbAna[0]->no_channels;
        nchan_transport_orig = st_ivas->nchan_transport;
        st_ivas->nchan_transport = st_ivas->nchan_ism;
#ifndef FIX_766_OMASA_SPLIT_REND
        slot_idx_start = st_ivas->hTcBuffer->n_samples_rendered / num_cldfb_bands;
#endif
        if ( ( error = ivas_td_binaural_renderer_sf_splitBinaural( st_ivas, output_f, *nSamplesRendered ) ) != IVAS_ERR_OK )
        {
            return error;
@@ -182,11 +191,19 @@ ivas_error ivas_osba_dirac_td_binaural_jbm(

                for ( b = 0; b < num_cldfb_bands; b++ )
                {
#ifdef FIX_766_OMASA_SPLIT_REND
                    st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx][b] =
#else
                    st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx][b] =
#endif
                        ( 0.5f * st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx_start + slot_idx][b] ) +
                        ( 0.5f * Cldfb_RealBuffer[b] );

#ifdef FIX_766_OMASA_SPLIT_REND
                    st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] =
#else
                    st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx][b] =
#endif
                        ( 0.5f * st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx_start + slot_idx][b] ) +
                        ( 0.5f * Cldfb_ImagBuffer[b] );
                }
+16 −0
Original line number Diff line number Diff line
@@ -832,11 +832,19 @@ static void ivas_dirac_dec_binaural_internal(

        for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
        {
#ifdef FIX_766_OMASA_SPLIT_REND
            for ( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe]; i++ )
            {
                mvr2r( tmp_Cldfb_out_re[ch][i], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[ch][hSpatParamRendCom->slots_rendered + i], CLDFB_NO_CHANNELS_MAX );
                mvr2r( tmp_Cldfb_out_im[ch][i], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[ch][hSpatParamRendCom->slots_rendered + i], CLDFB_NO_CHANNELS_MAX );
            }
#else
            for ( i = 0; i < CLDFB_SLOTS_PER_SUBFRAME; i++ )
            {
                mvr2r( tmp_Cldfb_out_re[ch][i], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[ch][subframe * CLDFB_SLOTS_PER_SUBFRAME + i], CLDFB_NO_CHANNELS_MAX );
                mvr2r( tmp_Cldfb_out_im[ch][i], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[ch][subframe * CLDFB_SLOTS_PER_SUBFRAME + i], CLDFB_NO_CHANNELS_MAX );
            }
#endif
        }
    }
    else
@@ -905,11 +913,19 @@ static void ivas_dirac_dec_binaural_internal(
                /* copy from temporary buffer to the main split rendering buffer */
                for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
                {
#ifdef FIX_766_OMASA_SPLIT_REND
                    for ( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe]; i++ )
                    {
                        mvr2r( tmp_Cldfb_out_re[ch][i], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[pos_idx * BINAURAL_CHANNELS + ch][hSpatParamRendCom->slots_rendered + i], CLDFB_NO_CHANNELS_MAX );
                        mvr2r( tmp_Cldfb_out_im[ch][i], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[pos_idx * BINAURAL_CHANNELS + ch][hSpatParamRendCom->slots_rendered + i], CLDFB_NO_CHANNELS_MAX );
                    }
#else
                    for ( i = 0; i < CLDFB_SLOTS_PER_SUBFRAME; i++ )
                    {
                        mvr2r( tmp_Cldfb_out_re[ch][i], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[pos_idx * BINAURAL_CHANNELS + ch][subframe * CLDFB_SLOTS_PER_SUBFRAME + i], CLDFB_NO_CHANNELS_MAX );
                        mvr2r( tmp_Cldfb_out_im[ch][i], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[pos_idx * BINAURAL_CHANNELS + ch][subframe * CLDFB_SLOTS_PER_SUBFRAME + i], CLDFB_NO_CHANNELS_MAX );
                    }
#endif
                }

                hDiracDecBin->hDiffuseDist = NULL;