Commit 12934411 authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

Merge branch...

Merge branch '1621_basop_parammc_and_paramupmix_binaural_room_reverb_with_head_rotation_energy_not_correct' into 'main-pc'

port MR 1382 into main-pc

See merge request !1757
parents b4db484f 6c839de7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -126,6 +126,7 @@
#define NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER                  /* FhG: issues #1012, 1013: JBM flush function uses wrong output buffer */
#define FIX_998_UNUSED_FUNCTION                         /* FhG: issue 998: delete unused funtion ivas_dirac_dec_get_response_split_order */ 
#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 BASOP porting switches ############################ */

+49 −16
Original line number Diff line number Diff line
@@ -1015,6 +1015,31 @@ static void ivas_binaural_obtain_DMX_fx(
            set32_fx( outRealRightPtr_fx, 0, CLDFB_NO_CHANNELS_MAX );
            set32_fx( outImagRightPtr_fx, 0, CLDFB_NO_CHANNELS_MAX );

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

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

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

                FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ )
                {
                    outRealLeftPtr_fx[bandIdx] = L_add( inRealPtr_W[bandIdx], inRealPtr_Y[bandIdx] );
                    outImagLeftPtr_fx[bandIdx] = L_add( inImagPtr_W[bandIdx], inImagPtr_Y[bandIdx] );

                    outRealRightPtr_fx[bandIdx] = L_sub( inRealPtr_W[bandIdx], inRealPtr_Y[bandIdx] );
                    outImagRightPtr_fx[bandIdx] = L_sub( inImagPtr_W[bandIdx], inImagPtr_Y[bandIdx] );
                }
            }
            else
#endif
            {
                FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ )
                {
                    Word32 foa_const_fx = L_shl( hBinRenderer->hReverb->foa_enc_fx[chIdx][1], 1 ); // Q30
@@ -1041,6 +1066,7 @@ static void ivas_binaural_obtain_DMX_fx(
                }
            }
        }
    }

    return;
}
@@ -1368,8 +1394,15 @@ ivas_error ivas_binRenderer_open_fx(
    {
        test();
        test();
        /* NOTE to future self by @kiene: this should have been changed by NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM, but the BASOP repo code is not at that point yet, so not change needed here */
#ifdef NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM
        IF( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 )
#else
#ifdef NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING
        IF( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 && NE_16( hBinRenderer->nInChannels, HOA3_CHANNELS ) )
#else
        IF( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 )
#endif
#endif
        {
            FOR( k = 0; k < 11; k++ )
            {