Commit cb7555b5 authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

Merge branch...

Merge branch '987-parammc-and-paramupmix-binaural-room-reverb-with-head-rotation-energy-not-correct' into 'main'

Resolve "ParamMC and ParamUpmix binaural room reverb with head rotation energy not correct"[non BE][split non BE]

See merge request !1382
parents 224a8269 61489d8f
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -168,6 +168,8 @@
#define NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER                  /* FhG: issues #1012, 1013: JBM flush function uses wrong output buffer */
#define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS                  /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */
#define NONBE_FIX_1014_1015_1016_OSBA_JBM_STEREO              /* FhG: issues #1014, #1015, #1016: fix tc buffer info update in the discrete ism renderer */
#define NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING       /* FhG: issue 987: solution b: downmix HOA3 to stereo a input for the reverberator */

/* ##################### End NON-BE switches ########################### */

/* ################## End DEVELOPMENT switches ######################### */
+38 −8
Original line number Diff line number Diff line
@@ -952,6 +952,31 @@ static void ivas_binaural_obtain_DMX(
            set_zero( outRealRightPtr, CLDFB_NO_CHANNELS_MAX );
            set_zero( outImagRightPtr, CLDFB_NO_CHANNELS_MAX );

#ifdef NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING
            /*Ambisonics input requires different processing*/
            if ( hBinRenderer->nInChannels == 16 )
            {
                float *inRealPtr_W, *inImagPtr_W;
                float *inRealPtr_Y, *inImagPtr_Y;

                inRealPtr_W = (float *) &( RealBuffer[0][k][0] );
                inImagPtr_W = (float *) &( ImagBuffer[0][k][0] );

                inRealPtr_Y = (float *) &( RealBuffer[1][k][0] );
                inImagPtr_Y = (float *) &( ImagBuffer[1][k][0] );

                for ( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
                {
                    outRealLeftPtr[bandIdx] = inRealPtr_W[bandIdx] + inRealPtr_Y[bandIdx];
                    outImagLeftPtr[bandIdx] = inImagPtr_W[bandIdx] + inImagPtr_Y[bandIdx];

                    outRealRightPtr[bandIdx] = inRealPtr_W[bandIdx] - inRealPtr_Y[bandIdx];
                    outImagRightPtr[bandIdx] = inImagPtr_W[bandIdx] - inImagPtr_Y[bandIdx];
                }
            }
            else
#endif
            {
                for ( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
                {
                    float foa_const = hBinRenderer->hReverb->foa_enc[chIdx][1];
@@ -970,6 +995,7 @@ static void ivas_binaural_obtain_DMX(
                }
            }
        }
    }

    return;
}
@@ -1254,7 +1280,11 @@ ivas_error ivas_binRenderer_open(

    if ( hBinRenderer->hReverb != NULL )
    {
#ifdef NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING
        if ( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 && hBinRenderer->nInChannels != 16 )
#else
        if ( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 )
#endif
        {
            for ( k = 0; k < 11; k++ )
            {