Commit 64f05971 authored by Tapani Pihlajakuja's avatar Tapani Pihlajakuja
Browse files

Merge branch '687-incorrect-metadata-read-index-in-omasa-ls-and-sh-rendering' into 'main'

[non-BE] Resolve "Incorrect metadata read index in OMASA LS and SH rendering"

See merge request !936
parents 72dc4077 c2bfe407
Loading
Loading
Loading
Loading
Loading
+12 −14
Original line number Diff line number Diff line
@@ -1889,7 +1889,6 @@ void ivas_dirac_dec_compute_directional_responses(
                    }

#ifdef MASA_AND_OBJECTS
                    // Todo OMASA JBM: Here we probably need to use md_idx for meta access
                    if ( hSpatParamRendCom->numIsmDirections > 0 )
                    {
                        int16_t dir;
@@ -1908,25 +1907,25 @@ void ivas_dirac_dec_compute_directional_responses(
                            }
                            else
                            {
                                ivas_dirac_dec_get_response( hMasaIsm->azimuth_ism[dir][hSpatParamRendCom->dirac_read_idx], hMasaIsm->elevation_ism[dir][hSpatParamRendCom->dirac_read_idx], direct_response_temp, hDirACRend->hOutSetup.ambisonics_order );
                                ivas_dirac_dec_get_response( hMasaIsm->azimuth_ism[dir][md_idx], hMasaIsm->elevation_ism[dir][md_idx], direct_response_temp, hDirACRend->hOutSetup.ambisonics_order );
                            }

                            for ( l = 0; l < num_channels_dir; l++ )
                            {
                                direct_response_ism[l] += direct_response_temp[l] * hMasaIsm->energy_ratio_ism[dir][hSpatParamRendCom->dirac_read_idx][k];
                                direct_response_ism[l] += direct_response_temp[l] * hMasaIsm->energy_ratio_ism[dir][md_idx][k];
                            }
                        }

                        masaDirect = hSpatParamRendCom->energy_ratio1[hSpatParamRendCom->dirac_read_idx][k] + EPSILON;
                        masaDirect = hSpatParamRendCom->energy_ratio1[md_idx][k] + EPSILON;
                        if ( hSpatParamRendCom->numParametricDirections == 2 )
                        {
                            masaDirect += hSpatParamRendCom->energy_ratio2[hSpatParamRendCom->dirac_read_idx][k];
                            masaDirect += hSpatParamRendCom->energy_ratio2[md_idx][k];
                        }

                        ismDirect = hMasaIsm->energy_ratio_ism[0][hSpatParamRendCom->dirac_read_idx][k];
                        ismDirect = hMasaIsm->energy_ratio_ism[0][md_idx][k];
                        for ( dir = 1; dir < hSpatParamRendCom->numIsmDirections; dir++ )
                        {
                            ismDirect += hMasaIsm->energy_ratio_ism[dir][hSpatParamRendCom->dirac_read_idx][k];
                            ismDirect += hMasaIsm->energy_ratio_ism[dir][md_idx][k];
                        }

                        totalDirect = masaDirect + ismDirect;
@@ -2006,7 +2005,6 @@ void ivas_dirac_dec_compute_directional_responses(
                }

#ifdef MASA_AND_OBJECTS
                // Todo OMASA JBM: Here we also probably need md_idx
                if ( hSpatParamRendCom->numIsmDirections > 0 )
                {
                    int16_t dir;
@@ -2025,26 +2023,26 @@ void ivas_dirac_dec_compute_directional_responses(
                        }
                        else
                        {
                            vbap_determine_gains( hVBAPdata, direct_response_temp, hMasaIsm->azimuth_ism[dir][hSpatParamRendCom->dirac_read_idx], hMasaIsm->elevation_ism[dir][hSpatParamRendCom->dirac_read_idx], 1 );
                            vbap_determine_gains( hVBAPdata, direct_response_temp, hMasaIsm->azimuth_ism[dir][md_idx], hMasaIsm->elevation_ism[dir][md_idx], 1 );
                        }

                        for ( l = 0; l < num_channels_dir; l++ )
                        {
                            direct_response_ism[l] += direct_response_temp[l] * hMasaIsm->energy_ratio_ism[dir][hSpatParamRendCom->dirac_read_idx][k];
                            direct_response_ism[l] += direct_response_temp[l] * hMasaIsm->energy_ratio_ism[dir][md_idx][k];
                        }
                    }
                    normalizePanningGains( direct_response_ism, num_channels_dir );

                    masaDirect = hSpatParamRendCom->energy_ratio1[hSpatParamRendCom->dirac_read_idx][k] + EPSILON;
                    masaDirect = hSpatParamRendCom->energy_ratio1[md_idx][k] + EPSILON;
                    if ( hSpatParamRendCom->numParametricDirections == 2 )
                    {
                        masaDirect += hSpatParamRendCom->energy_ratio2[hSpatParamRendCom->dirac_read_idx][k];
                        masaDirect += hSpatParamRendCom->energy_ratio2[md_idx][k];
                    }

                    ismDirect = hMasaIsm->energy_ratio_ism[0][hSpatParamRendCom->dirac_read_idx][k];
                    ismDirect = hMasaIsm->energy_ratio_ism[0][md_idx][k];
                    for ( dir = 1; dir < hSpatParamRendCom->numIsmDirections; dir++ )
                    {
                        ismDirect += hMasaIsm->energy_ratio_ism[dir][hSpatParamRendCom->dirac_read_idx][k];
                        ismDirect += hMasaIsm->energy_ratio_ism[dir][md_idx][k];
                    }

                    totalDirect = masaDirect + ismDirect;