Commit 63246d1a authored by Marek Szczerba's avatar Marek Szczerba
Browse files

Support for multiple acoustic environments plus early reflections in...

Support for multiple acoustic environments plus early reflections in text-based configuration (prototype)
parent f10e1c1c
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ typedef struct
    IVAS_VECTOR3 dimensions;       /* Room dimensions [m] */
    float pAbsCoeff[N_ABS_COEFFS]; /* Absorption coeffs table */
    IVAS_VECTOR3 *pListenerOrigin; /* Listener origin */
    uint32_t lowComplexity;        /* Low complexity mode flag */
} EarlyReflectionsConfig;
#endif

@@ -1638,12 +1639,6 @@ static ivas_error RenderConfigReader_readBinReverb(
                return error;
            }

            /* Frequency grid ID */
            if ( ( error = get_bin_count_or_index( pRenderConfigReader, &value ) ) != IVAS_ERR_OK )
            {
                return error;
            }

            for ( k = 0; k < N_ABS_COEFFS; k++ )
            {
                if ( ( error = get_bin_absorption( pRenderConfigReader, &pRenderConfigReader->pAE[n].pEarlyReflections->pAbsCoeff[k] ) ) != IVAS_ERR_OK )
@@ -1694,6 +1689,12 @@ static ivas_error RenderConfigReader_readBinReverb(
                    return error;
                }
            }

            /* Low complexity mode */
            if ( ( error = read_bin_bool( pRenderConfigReader, &pRenderConfigReader->pAE[n].pEarlyReflections->lowComplexity ) ) != IVAS_ERR_OK )
            {
                return error;
            }
        }
#endif
    }
@@ -2191,6 +2192,8 @@ ivas_error RenderConfigReader_read(
                            {
                                return IVAS_ERR_FAILED_ALLOC;
                            }
                            pRenderConfigReader->pAE[acIdx].pEarlyReflections->pListenerOrigin = NULL;
                            pRenderConfigReader->pAE[acIdx].pEarlyReflections->lowComplexity = FALSE;
                            aeHasERsize = aeHasERabs = FALSE;
                            while ( sscanf( pParams + params_idx, "%64[^=]=%[^;];", item, pValue ) == 2 )
                            {
@@ -2235,6 +2238,14 @@ ivas_error RenderConfigReader_read(
                                    pRenderConfigReader->pAE[acIdx].pEarlyReflections->pListenerOrigin->y = erTemp[1];
                                    pRenderConfigReader->pAE[acIdx].pEarlyReflections->pListenerOrigin->z = erTemp[2];
                                }
                                else if ( strcmp( item, "LOWCOMPLEXITY") )
                                {
                                    if ( read_txt_bool( pValue, &pRenderConfigReader->pAE[acIdx].pEarlyReflections->lowComplexity ) )
                                    {
                                        errorHandler( item, ERROR_VALUE_INVALID );
                                        return IVAS_ERR_INVALID_RENDER_CONFIG;
                                    }
                                }
                                else
                                {
                                    break;