Commit 775d29c2 authored by TYAGIRIS's avatar TYAGIRIS
Browse files

JBM fix in MC param upmix path in SR mode

parent a0493696
Loading
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -1496,6 +1496,33 @@ void ivas_binaural_cldfb_sf(
                    idx_in++;
                }
            }
#ifdef SPLIT_REND_WITH_HEAD_ROT
            /*LFE handling for split rendering cases*/
            if ( ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ||
                 ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
            {
                for ( idx_lfe = 0; idx_lfe < st_ivas->hIntSetup.num_lfe; idx_lfe++ )
                {
                    ch = st_ivas->hIntSetup.index_lfe[idx_lfe];
                    cldfbAnalysis_ts( &( output_f[ch][maxBand * index_slot] ),
                                      Cldfb_RealBuffer[idx_in][slot_idx],
                                      Cldfb_ImagBuffer[idx_in][slot_idx],
                                      maxBand, st_ivas->cldfbAnaDec[idx_in] );
                    idx_in++;
                }
#ifdef SPLIT_REND_WITH_HEAD_ROT
                if ( st_ivas->splitBinRend.hCldfbDataOut != NULL )
                {
                    for ( ch = 0; ch < ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ); ch++ )
                    {
                        mvr2r( Cldfb_RealBuffer[ch][slot_idx], st_ivas->splitBinRend.hCldfbDataOut->Cldfb_RealBuffer[ch][slot_index_start + slot_idx], maxBand );
                        mvr2r( Cldfb_ImagBuffer[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
            }
#endif
        }

        /* Implement binaural rendering */
+17 −4
Original line number Diff line number Diff line
@@ -926,6 +926,11 @@ ivas_error ivas_jbm_dec_render(
            ivas_mc_paramupmix_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_tc, p_output );

            /* HP filtering */
#ifdef SPLIT_REND_WITH_HEAD_ROT
            /*no HPF when rendering is already done*/
            if ( st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV && st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV_ROOM )
#endif
            {
                for ( n = 0; n < st_ivas->nchan_transport; n++ )
                {
                    if ( n != LFE_CHANNEL )
@@ -933,6 +938,7 @@ ivas_error ivas_jbm_dec_render(
                        hp20( p_output[n], *nSamplesRendered, st_ivas->mem_hp20_out[n], output_Fs );
                    }
                }
            }

            if ( st_ivas->transport_config != st_ivas->intern_config && ( st_ivas->intern_config == AUDIO_CONFIG_FOA || st_ivas->intern_config == AUDIO_CONFIG_HOA2 || st_ivas->intern_config == AUDIO_CONFIG_HOA3 ) )
            {
@@ -942,8 +948,15 @@ ivas_error ivas_jbm_dec_render(
            /* Rendering */
            if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM )
            {
#ifdef SPLIT_REND_WITH_HEAD_ROT
                /*handled in CLDFB domain already*/
                if ( ( st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) &&
                     ( st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
#endif
                {
                    ivas_binaural_add_LFE( st_ivas, *nSamplesRendered, p_output, p_output );
                }
            }
            else if ( st_ivas->renderer_type == RENDERER_MC )
            {
                ivas_ls_setup_conversion( st_ivas, MC_PARAMUPMIX_MAX_INPUT_CHANS, *nSamplesRendered, p_output, p_output );