Commit 477a0303 authored by SCHUGM's avatar SCHUGM
Browse files

added missing slot_idx loop around copy to split rendering buffer

added missing SR code block to ivas_mc_paramupmix_dec
parent 5697ddda
Loading
Loading
Loading
Loading
Loading
+51 −6
Original line number Diff line number Diff line
@@ -353,12 +353,15 @@ void ivas_mc_paramupmix_dec(
                    }
#ifdef SPLIT_REND_WITH_HEAD_ROT
                    if ( st_ivas->splitBinRend.hCldfbDataOut != NULL )
                    {
                        for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ )
                        {
                            for ( ch = 0; ch < ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ); ch++ )
                            {
                                mvr2r( Cldfb_RealBuffer_subfr[ch][slot_idx], st_ivas->splitBinRend.hCldfbDataOut->Cldfb_RealBuffer[ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand );
                                mvr2r( Cldfb_ImagBuffer_subfr[ch][slot_idx], st_ivas->splitBinRend.hCldfbDataOut->Cldfb_ImagBuffer[ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand );
                            }
                        }
                        st_ivas->splitBinRend.hCldfbDataOut->config = st_ivas->hIntSetup.output_config;
                    }
#endif
@@ -378,6 +381,45 @@ void ivas_mc_paramupmix_dec(
                                  Cldfb_RealBuffer_subfr,
                                  Cldfb_ImagBuffer_subfr );


#ifdef SPLIT_REND_WITH_HEAD_ROT
                if ( ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ||
                     ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
                {
                    int16_t pos_idx;
                    for ( slot_idx = 0; slot_idx < JBM_CLDFB_SLOTS_IN_SUBFRAME; slot_idx++ )
                    {
                        if ( st_ivas->hIntSetup.num_lfe > 0 )
                        {
                            v_multc( Cldfb_RealBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], GAIN_LFE, Cldfb_RealBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], maxBand );
                            v_multc( Cldfb_ImagBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], GAIN_LFE, Cldfb_ImagBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], maxBand );
                        }
                    }
                    for ( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ )
                    {
                        for ( slot_idx = 0; slot_idx < JBM_CLDFB_SLOTS_IN_SUBFRAME; slot_idx++ )
                        {
                            for ( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ )
                            {
                                if ( st_ivas->hIntSetup.num_lfe > 0 )
                                {
                                    v_add( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx],
                                           Cldfb_RealBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx],
                                           Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx],
                                           maxBand );
                                    v_add( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx],
                                           Cldfb_ImagBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx],
                                           Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx],
                                           maxBand );
                                }
                                mvr2r( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->splitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand );
                                mvr2r( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->splitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand );
                            }
                        }
                    }
                }
#endif

                /* Implement CLDFB synthesis */
                for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
                {
@@ -1104,12 +1146,15 @@ static void ivas_mc_paramupmix_dec_sf(
            }
#ifdef SPLIT_REND_WITH_HEAD_ROT
            if ( st_ivas->splitBinRend.hCldfbDataOut != NULL )
            {
                for ( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->subframes_rendered]; slot_idx++ )
                {
                    for ( ch = 0; ch < ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ); ch++ )
                    {
                        mvr2r( Cldfb_RealBuffer_subfr[ch][slot_idx], st_ivas->splitBinRend.hCldfbDataOut->Cldfb_RealBuffer[ch][slot_index_start + slot_idx], maxBand );
                        mvr2r( Cldfb_ImagBuffer_subfr[ch][slot_idx], st_ivas->splitBinRend.hCldfbDataOut->Cldfb_ImagBuffer[ch][slot_index_start + slot_idx], maxBand );
                    }
                }
                st_ivas->splitBinRend.hCldfbDataOut->config = st_ivas->hIntSetup.output_config;
            }
#endif