Commit d71339e0 authored by norvell's avatar norvell
Browse files

Merge branch '2005_ref_Port_2240_rend_config_error' into 'ivas-float-update'



[Non-BE][Rend Non-BE][Split Non-BE]Port MR2240 - Renderer configuration error in IVAS_dec and IVAS_rend - float update

See merge request !2217

(cherry picked from commit a6dfe7ea)

decd9f65 Add NONBE_1377_REND_DIRATT_CONF to address Issue 1377: Error in directivity...
7b53196e Fix under NONBE_1377_REND_DIRATT_CONF
3fe02a56 Add parenthesis to resolve warning
24ff31c3 Clang format
3ddbba0a Add id in renderer configuration struct
9397a3bb Change to object id within inputIsm structs
89954745 Cleanup

Co-authored-by: default avatarnorvell <erik.norvell@ericsson.com>
parent 7d06ba09
Loading
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1189,6 +1189,9 @@ int main(
    {
        masaIds[i] = 0u;
    }
#ifdef NONBE_1377_REND_DIRATT_CONF
    IVAS_REND_SetObjectIDs( hIvasRend );
#endif

    for ( i = 0; i < args.inConfig.numMultiChannelBuses; ++i )
    {
+1 −0
Original line number Diff line number Diff line
@@ -161,6 +161,7 @@
#define FIX_1113_CLDFB_REND_IN_ISAR                     /* issue 1113: fix the use of CLDFB renderer in split-rendering at the external renderer */
#define NONBE_1328_FIX_NON_LINEARITY                    /* VA: Fix possible issue when computing bwe_exc_extended and previous frame were almost 0  */
#define NONBE_FIX_1376_MDCT_CONCEALMENT                 /* FhG: fix concealment artifact in MDCT Stereo with DTX, in case transition frame gets lost */
#define NONBE_1377_REND_DIRATT_CONF                     /* Eri: Issue 1377: Error in directivity attenuation configuration for both IVAS_dec and IVAS_rend */

/* #################### End BASOP porting switches ############################ */

+16 −1
Original line number Diff line number Diff line
@@ -518,13 +518,16 @@ ivas_error TDREND_Update_object_positions(
    const ISM_METADATA_HANDLE *hIsmMetaData            /* i  : Input metadata for ISM objects   */
)
{
#ifndef NONBE_1377_REND_DIRATT_CONF
    TDREND_DirAtten_t *DirAtten_p;
#endif
    int16_t nS;
    float Pos[3];
    float Dir[3];
    ivas_error error;

#ifndef NONBE_1377_REND_DIRATT_CONF
    DirAtten_p = hBinRendererTd->DirAtten_p;
#endif

    /* For each source, write the frame data to the source object*/
    for ( nS = 0; nS < num_src; nS++ )
@@ -541,10 +544,12 @@ ivas_error TDREND_Update_object_positions(
                return error;
            }

#ifndef NONBE_1377_REND_DIRATT_CONF
            if ( ( error = TDREND_MIX_SRC_SetDirAtten( hBinRendererTd, nS, DirAtten_p ) ) != IVAS_ERR_OK )
            {
                return error;
            }
#endif

            if ( hIsmMetaData[nS]->non_diegetic_flag )
            {
@@ -654,7 +659,13 @@ ivas_error ivas_td_binaural_open_ext(
    AUDIO_CONFIG inConfig,
    RENDER_CONFIG_DATA *hRendCfg, /* i  : Renderer configuration */
    LSSETUP_CUSTOM_STRUCT *customLsInput,
#ifdef NONBE_1377_REND_DIRATT_CONF
    const int32_t outFs,    /* i: output sampling rate */
    const int16_t object_id /* i: Object ID */
)
#else
    const int32_t outFs )
#endif
{
    int16_t nchan_transport;
    AUDIO_CONFIG transport_config;
@@ -691,7 +702,11 @@ ivas_error ivas_td_binaural_open_ext(

    if ( NULL != hRendCfg )
    {
#ifdef NONBE_1377_REND_DIRATT_CONF
        directivity = hRendCfg->directivity + 3 * object_id;
#else
        directivity = hRendCfg->directivity;
#endif
        distAtt = hRendCfg->distAtt;
    }

+5 −0
Original line number Diff line number Diff line
@@ -641,7 +641,12 @@ ivas_error ivas_td_binaural_open_ext(
    const AUDIO_CONFIG inConfig,
    RENDER_CONFIG_DATA *hRendCfg,                               /* i  : Renderer configuration                  */
    LSSETUP_CUSTOM_STRUCT *customLsInput,
#ifdef NONBE_1377_REND_DIRATT_CONF
    const int32_t output_Fs,                                    /* i: output sampling rate                      */
    const int16_t object_id                                     /* i: Object ID                                 */
#else
    const int32_t output_Fs 
#endif
);

void ivas_td_binaural_close(
+51 −0
Original line number Diff line number Diff line
@@ -119,6 +119,9 @@ typedef struct
    float nonDiegeticPanGain;
    OMASA_ANA_HANDLE hOMasa;
    uint16_t total_num_objects;
#ifdef NONBE_1377_REND_DIRATT_CONF
    int16_t object_id;
#endif
    float ism_metadata_delay_ms;
} input_ism;

@@ -1326,7 +1329,11 @@ static ivas_error setRendInputActiveIsm(

    if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL || outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
    {
#ifdef NONBE_1377_REND_DIRATT_CONF
        if ( ( error = ivas_td_binaural_open_ext( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, inputIsm->object_id ) ) != IVAS_ERR_OK )
#else
        if ( ( error = ivas_td_binaural_open_ext( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK )
#endif
        {
            return error;
        }
@@ -1334,7 +1341,11 @@ static ivas_error setRendInputActiveIsm(
        /* Open TD renderer wrappers */
        for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i )
        {
#ifdef NONBE_1377_REND_DIRATT_CONF
            if ( ( error = ivas_td_binaural_open_ext( &inputIsm->splitTdRendWrappers[i], inConfig, hRendCfg, NULL, *inputIsm->base.ctx.pOutSampleRate, inputIsm->object_id ) ) != IVAS_ERR_OK )
#else
            if ( ( error = ivas_td_binaural_open_ext( &inputIsm->splitTdRendWrappers[i], inConfig, hRendCfg, NULL, *inputIsm->base.ctx.pOutSampleRate ) ) != IVAS_ERR_OK )
#endif
            {
                return error;
            }
@@ -1352,7 +1363,11 @@ static ivas_error setRendInputActiveIsm(
    }
    else
    {
#ifdef NONBE_1377_REND_DIRATT_CONF
        if ( ( error = ivas_td_binaural_open_ext( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, inputIsm->object_id ) ) != IVAS_ERR_OK )
#else
        if ( ( error = ivas_td_binaural_open_ext( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK )
#endif
        {
            return error;
        }
@@ -2107,7 +2122,11 @@ static ivas_error initMcBinauralRendering(

    if ( useTDRend && inputMc->tdRendWrapper.hBinRendererTd == NULL )
    {
#ifdef NONBE_1377_REND_DIRATT_CONF
        if ( ( error = ivas_td_binaural_open_ext( &inputMc->tdRendWrapper, inConfig, hRendCfg, &inputMc->customLsInput, outSampleRate, 0 ) ) != IVAS_ERR_OK )
#else
        if ( ( error = ivas_td_binaural_open_ext( &inputMc->tdRendWrapper, inConfig, hRendCfg, &inputMc->customLsInput, outSampleRate ) ) != IVAS_ERR_OK )
#endif
        {
            return error;
        }
@@ -2117,7 +2136,11 @@ static ivas_error initMcBinauralRendering(
            /* Open TD renderer wrappers */
            for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i )
            {
#ifdef NONBE_1377_REND_DIRATT_CONF
                if ( ( error = ivas_td_binaural_open_ext( &inputMc->splitTdRendWrappers[i], inConfig, hRendCfg, &inputMc->customLsInput, outSampleRate, 0 ) ) != IVAS_ERR_OK )
#else
                if ( ( error = ivas_td_binaural_open_ext( &inputMc->splitTdRendWrappers[i], inConfig, hRendCfg, &inputMc->customLsInput, outSampleRate ) ) != IVAS_ERR_OK )
#endif
                {
                    return error;
                }
@@ -3595,6 +3618,34 @@ ivas_error IVAS_REND_ConfigureCustomInputLoudspeakerLayout(
    return IVAS_ERR_OK;
}

#ifdef NONBE_1377_REND_DIRATT_CONF
/*-------------------------------------------------------------------*
 * IVAS_REND_SetObjectIDs()
 *
 *
 *-------------------------------------------------------------------*/

ivas_error IVAS_REND_SetObjectIDs(
    IVAS_REND_HANDLE hIvasRend /* i/o: Renderer handle            */
)
{
    int16_t i;

    /* Validate function arguments */
    if ( hIvasRend == NULL )
    {
        return IVAS_ERR_UNEXPECTED_NULL_POINTER;
    }

    for ( i = 0; i < RENDERER_MAX_ISM_INPUTS; i++ )
    {
        hIvasRend->inputsIsm[i].object_id = i;
    }

    return IVAS_ERR_OK;
}
#endif


/*-------------------------------------------------------------------*
 * IVAS_REND_SetInputGain()
Loading