Loading media/libeffects/lvm/lib/Android.bp +4 −2 Original line number Diff line number Diff line Loading @@ -204,10 +204,12 @@ cc_library_static { "Reverb/lib", "Common/lib", ], static_libs: [ "libaudioutils", ], cppflags: [ "-DBIQUAD_OPT", "-fvisibility=hidden", "-Wall", "-Werror", ], Loading media/libeffects/lvm/lib/Reverb/src/LVREV_ApplyNewSettings.cpp +25 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,10 @@ /* Includes */ /* */ /****************************************************************************************/ #ifdef BIQUAD_OPT #include <system/audio.h> #endif #include "LVREV_Private.h" #include "Filter.h" Loading Loading @@ -71,10 +75,17 @@ LVREV_ReturnStatus_en LVREV_ApplyNewSettings(LVREV_Instance_st* pPrivate) { Omega = LVM_GetOmega(pPrivate->NewParams.HPF, pPrivate->NewParams.SampleRate); LVM_FO_HPF(Omega, &Coeffs); #ifdef BIQUAD_OPT const std::array<LVM_FLOAT, android::audio_utils::kBiquadNumCoefs> coefs = { Coeffs.A0, Coeffs.A1, 0.0, -(Coeffs.B1), 0.0}; pPrivate->pRevHPFBiquad.reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(FCC_1, coefs)); #else FO_1I_D32F32Cll_TRC_WRA_01_Init(&pPrivate->pFastCoef->HPCoefs, &pPrivate->pFastData->HPTaps, &Coeffs); LoadConst_Float(0, (LVM_FLOAT*)&pPrivate->pFastData->HPTaps, sizeof(Biquad_1I_Order1_FLOAT_Taps_t) / sizeof(LVM_FLOAT)); #endif } /* Loading @@ -99,10 +110,17 @@ LVREV_ReturnStatus_en LVREV_ApplyNewSettings(LVREV_Instance_st* pPrivate) { LVM_FO_LPF(Omega, &Coeffs); } } #ifdef BIQUAD_OPT const std::array<LVM_FLOAT, android::audio_utils::kBiquadNumCoefs> coefs = { Coeffs.A0, Coeffs.A1, 0.0, -(Coeffs.B1), 0.0}; pPrivate->pRevLPFBiquad.reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(FCC_1, coefs)); #else FO_1I_D32F32Cll_TRC_WRA_01_Init(&pPrivate->pFastCoef->LPCoefs, &pPrivate->pFastData->LPTaps, &Coeffs); LoadConst_Float(0, (LVM_FLOAT*)&pPrivate->pFastData->LPTaps, sizeof(Biquad_1I_Order1_FLOAT_Taps_t) / sizeof(LVM_FLOAT)); #endif } /* Loading Loading @@ -231,8 +249,15 @@ LVREV_ReturnStatus_en LVREV_ApplyNewSettings(LVREV_Instance_st* pPrivate) { Coeffs.A1 = 0; Coeffs.B1 = 0; } #ifdef BIQUAD_OPT const std::array<LVM_FLOAT, android::audio_utils::kBiquadNumCoefs> coefs = { Coeffs.A0, Coeffs.A1, 0.0, -(Coeffs.B1), 0.0}; pPrivate->revLPFBiquad[i].reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(FCC_1, coefs)); #else FO_1I_D32F32Cll_TRC_WRA_01_Init(&pPrivate->pFastCoef->RevLPCoefs[i], &pPrivate->pFastData->RevLPTaps[i], &Coeffs); #endif } } Loading media/libeffects/lvm/lib/Reverb/src/LVREV_ClearAudioBuffers.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -56,13 +56,24 @@ LVREV_ReturnStatus_en LVREV_ClearAudioBuffers(LVREV_Handle_t hInstance) { * Clear all filter tap data, delay-lines and other signal related data */ #ifdef BIQUAD_OPT pLVREV_Private->pRevHPFBiquad->clear(); pLVREV_Private->pRevLPFBiquad->clear(); #else LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->HPTaps, 2); LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->LPTaps, 2); #endif if ((LVM_UINT16)pLVREV_Private->InstanceParams.NumDelays == LVREV_DELAYLINES_4) { #ifdef BIQUAD_OPT for (int i = 0; i < LVREV_DELAYLINES_4; i++) { pLVREV_Private->revLPFBiquad[i]->clear(); } #else LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[3], 2); LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[2], 2); LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[1], 2); LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[0], 2); #endif LoadConst_Float(0, pLVREV_Private->pDelay_T[3], LVREV_MAX_T3_DELAY); LoadConst_Float(0, pLVREV_Private->pDelay_T[2], LVREV_MAX_T2_DELAY); Loading @@ -71,15 +82,25 @@ LVREV_ReturnStatus_en LVREV_ClearAudioBuffers(LVREV_Handle_t hInstance) { } if ((LVM_UINT16)pLVREV_Private->InstanceParams.NumDelays >= LVREV_DELAYLINES_2) { #ifdef BIQUAD_OPT for (int i = 0; i < LVREV_DELAYLINES_2; i++) { pLVREV_Private->revLPFBiquad[i]->clear(); } #else LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[1], 2); LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[0], 2); #endif LoadConst_Float(0, pLVREV_Private->pDelay_T[1], LVREV_MAX_T1_DELAY); LoadConst_Float(0, pLVREV_Private->pDelay_T[0], LVREV_MAX_T0_DELAY); } if ((LVM_UINT16)pLVREV_Private->InstanceParams.NumDelays >= LVREV_DELAYLINES_1) { #ifdef BIQUAD_OPT pLVREV_Private->revLPFBiquad[0]->clear(); #else LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[0], 2); #endif LoadConst_Float(0, pLVREV_Private->pDelay_T[0], LVREV_MAX_T0_DELAY); } return LVREV_SUCCESS; Loading media/libeffects/lvm/lib/Reverb/src/LVREV_GetInstanceHandle.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -134,9 +134,11 @@ LVREV_ReturnStatus_en LVREV_GetInstanceHandle(LVREV_Handle_t* phInstance, /* * Set the data, coefficient and temporary memory pointers */ #ifndef BIQUAD_OPT /* Fast data memory base address */ pLVREV_Private->pFastData = (LVREV_FastData_st*)InstAlloc_AddMember(&FastData, sizeof(LVREV_FastData_st)); #endif if (pInstanceParams->NumDelays == LVREV_DELAYLINES_4) { pLVREV_Private->pDelay_T[3] = (LVM_FLOAT*)InstAlloc_AddMember(&FastData, LVREV_MAX_T3_DELAY * sizeof(LVM_FLOAT)); Loading Loading @@ -194,9 +196,11 @@ LVREV_ReturnStatus_en LVREV_GetInstanceHandle(LVREV_Handle_t* phInstance, pLVREV_Private->T[3] = LVREV_MAX_T3_DELAY; pLVREV_Private->AB_Selection = 1; /* Select smoothing A to B */ #ifndef BIQUAD_OPT /* Fast coefficient memory base address */ pLVREV_Private->pFastCoef = (LVREV_FastCoef_st*)InstAlloc_AddMember(&FastCoef, sizeof(LVREV_FastCoef_st)); #endif /* General purpose scratch */ pLVREV_Private->pScratch = (LVM_FLOAT*)InstAlloc_AddMember(&Temporary, sizeof(LVM_FLOAT) * MaxBlockSize); Loading Loading @@ -308,6 +312,17 @@ LVREV_ReturnStatus_en LVREV_GetInstanceHandle(LVREV_Handle_t* phInstance, pLVREV_Private->A_DelaySize[3] = LVREV_MAX_AP3_DELAY; pLVREV_Private->B_DelaySize[3] = LVREV_MAX_AP3_DELAY; #ifdef BIQUAD_OPT pLVREV_Private->pRevHPFBiquad.reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(LVM_MAX_CHANNELS)); pLVREV_Private->pRevLPFBiquad.reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(LVM_MAX_CHANNELS)); for (int i = 0; i < LVREV_DELAYLINES_4; i++) { pLVREV_Private->revLPFBiquad[i].reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(LVM_MAX_CHANNELS)); } #endif LVREV_ClearAudioBuffers(*phInstance); return LVREV_SUCCESS; Loading media/libeffects/lvm/lib/Reverb/src/LVREV_GetMemoryTable.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -139,7 +139,9 @@ LVREV_ReturnStatus_en LVREV_GetMemoryTable(LVREV_Handle_t hInstance, /* * Persistent fast data memory */ #ifndef BIQUAD_OPT InstAlloc_AddMember(&FastData, sizeof(LVREV_FastData_st)); #endif if (pInstanceParams->NumDelays == LVREV_DELAYLINES_4) { InstAlloc_AddMember(&FastData, LVREV_MAX_T3_DELAY * sizeof(LVM_FLOAT)); InstAlloc_AddMember(&FastData, LVREV_MAX_T2_DELAY * sizeof(LVM_FLOAT)); Loading @@ -163,7 +165,9 @@ LVREV_ReturnStatus_en LVREV_GetMemoryTable(LVREV_Handle_t hInstance, /* * Persistent fast coefficient memory */ #ifndef BIQUAD_OPT InstAlloc_AddMember(&FastCoef, sizeof(LVREV_FastCoef_st)); #endif pMemoryTable->Region[LVM_PERSISTENT_FAST_COEF].Size = InstAlloc_GetTotal(&FastCoef); pMemoryTable->Region[LVM_PERSISTENT_FAST_COEF].Type = LVM_PERSISTENT_FAST_COEF; pMemoryTable->Region[LVM_PERSISTENT_FAST_COEF].pBaseAddress = LVM_NULL; Loading Loading
media/libeffects/lvm/lib/Android.bp +4 −2 Original line number Diff line number Diff line Loading @@ -204,10 +204,12 @@ cc_library_static { "Reverb/lib", "Common/lib", ], static_libs: [ "libaudioutils", ], cppflags: [ "-DBIQUAD_OPT", "-fvisibility=hidden", "-Wall", "-Werror", ], Loading
media/libeffects/lvm/lib/Reverb/src/LVREV_ApplyNewSettings.cpp +25 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,10 @@ /* Includes */ /* */ /****************************************************************************************/ #ifdef BIQUAD_OPT #include <system/audio.h> #endif #include "LVREV_Private.h" #include "Filter.h" Loading Loading @@ -71,10 +75,17 @@ LVREV_ReturnStatus_en LVREV_ApplyNewSettings(LVREV_Instance_st* pPrivate) { Omega = LVM_GetOmega(pPrivate->NewParams.HPF, pPrivate->NewParams.SampleRate); LVM_FO_HPF(Omega, &Coeffs); #ifdef BIQUAD_OPT const std::array<LVM_FLOAT, android::audio_utils::kBiquadNumCoefs> coefs = { Coeffs.A0, Coeffs.A1, 0.0, -(Coeffs.B1), 0.0}; pPrivate->pRevHPFBiquad.reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(FCC_1, coefs)); #else FO_1I_D32F32Cll_TRC_WRA_01_Init(&pPrivate->pFastCoef->HPCoefs, &pPrivate->pFastData->HPTaps, &Coeffs); LoadConst_Float(0, (LVM_FLOAT*)&pPrivate->pFastData->HPTaps, sizeof(Biquad_1I_Order1_FLOAT_Taps_t) / sizeof(LVM_FLOAT)); #endif } /* Loading @@ -99,10 +110,17 @@ LVREV_ReturnStatus_en LVREV_ApplyNewSettings(LVREV_Instance_st* pPrivate) { LVM_FO_LPF(Omega, &Coeffs); } } #ifdef BIQUAD_OPT const std::array<LVM_FLOAT, android::audio_utils::kBiquadNumCoefs> coefs = { Coeffs.A0, Coeffs.A1, 0.0, -(Coeffs.B1), 0.0}; pPrivate->pRevLPFBiquad.reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(FCC_1, coefs)); #else FO_1I_D32F32Cll_TRC_WRA_01_Init(&pPrivate->pFastCoef->LPCoefs, &pPrivate->pFastData->LPTaps, &Coeffs); LoadConst_Float(0, (LVM_FLOAT*)&pPrivate->pFastData->LPTaps, sizeof(Biquad_1I_Order1_FLOAT_Taps_t) / sizeof(LVM_FLOAT)); #endif } /* Loading Loading @@ -231,8 +249,15 @@ LVREV_ReturnStatus_en LVREV_ApplyNewSettings(LVREV_Instance_st* pPrivate) { Coeffs.A1 = 0; Coeffs.B1 = 0; } #ifdef BIQUAD_OPT const std::array<LVM_FLOAT, android::audio_utils::kBiquadNumCoefs> coefs = { Coeffs.A0, Coeffs.A1, 0.0, -(Coeffs.B1), 0.0}; pPrivate->revLPFBiquad[i].reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(FCC_1, coefs)); #else FO_1I_D32F32Cll_TRC_WRA_01_Init(&pPrivate->pFastCoef->RevLPCoefs[i], &pPrivate->pFastData->RevLPTaps[i], &Coeffs); #endif } } Loading
media/libeffects/lvm/lib/Reverb/src/LVREV_ClearAudioBuffers.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -56,13 +56,24 @@ LVREV_ReturnStatus_en LVREV_ClearAudioBuffers(LVREV_Handle_t hInstance) { * Clear all filter tap data, delay-lines and other signal related data */ #ifdef BIQUAD_OPT pLVREV_Private->pRevHPFBiquad->clear(); pLVREV_Private->pRevLPFBiquad->clear(); #else LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->HPTaps, 2); LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->LPTaps, 2); #endif if ((LVM_UINT16)pLVREV_Private->InstanceParams.NumDelays == LVREV_DELAYLINES_4) { #ifdef BIQUAD_OPT for (int i = 0; i < LVREV_DELAYLINES_4; i++) { pLVREV_Private->revLPFBiquad[i]->clear(); } #else LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[3], 2); LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[2], 2); LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[1], 2); LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[0], 2); #endif LoadConst_Float(0, pLVREV_Private->pDelay_T[3], LVREV_MAX_T3_DELAY); LoadConst_Float(0, pLVREV_Private->pDelay_T[2], LVREV_MAX_T2_DELAY); Loading @@ -71,15 +82,25 @@ LVREV_ReturnStatus_en LVREV_ClearAudioBuffers(LVREV_Handle_t hInstance) { } if ((LVM_UINT16)pLVREV_Private->InstanceParams.NumDelays >= LVREV_DELAYLINES_2) { #ifdef BIQUAD_OPT for (int i = 0; i < LVREV_DELAYLINES_2; i++) { pLVREV_Private->revLPFBiquad[i]->clear(); } #else LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[1], 2); LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[0], 2); #endif LoadConst_Float(0, pLVREV_Private->pDelay_T[1], LVREV_MAX_T1_DELAY); LoadConst_Float(0, pLVREV_Private->pDelay_T[0], LVREV_MAX_T0_DELAY); } if ((LVM_UINT16)pLVREV_Private->InstanceParams.NumDelays >= LVREV_DELAYLINES_1) { #ifdef BIQUAD_OPT pLVREV_Private->revLPFBiquad[0]->clear(); #else LoadConst_Float(0, (LVM_FLOAT*)&pLVREV_Private->pFastData->RevLPTaps[0], 2); #endif LoadConst_Float(0, pLVREV_Private->pDelay_T[0], LVREV_MAX_T0_DELAY); } return LVREV_SUCCESS; Loading
media/libeffects/lvm/lib/Reverb/src/LVREV_GetInstanceHandle.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -134,9 +134,11 @@ LVREV_ReturnStatus_en LVREV_GetInstanceHandle(LVREV_Handle_t* phInstance, /* * Set the data, coefficient and temporary memory pointers */ #ifndef BIQUAD_OPT /* Fast data memory base address */ pLVREV_Private->pFastData = (LVREV_FastData_st*)InstAlloc_AddMember(&FastData, sizeof(LVREV_FastData_st)); #endif if (pInstanceParams->NumDelays == LVREV_DELAYLINES_4) { pLVREV_Private->pDelay_T[3] = (LVM_FLOAT*)InstAlloc_AddMember(&FastData, LVREV_MAX_T3_DELAY * sizeof(LVM_FLOAT)); Loading Loading @@ -194,9 +196,11 @@ LVREV_ReturnStatus_en LVREV_GetInstanceHandle(LVREV_Handle_t* phInstance, pLVREV_Private->T[3] = LVREV_MAX_T3_DELAY; pLVREV_Private->AB_Selection = 1; /* Select smoothing A to B */ #ifndef BIQUAD_OPT /* Fast coefficient memory base address */ pLVREV_Private->pFastCoef = (LVREV_FastCoef_st*)InstAlloc_AddMember(&FastCoef, sizeof(LVREV_FastCoef_st)); #endif /* General purpose scratch */ pLVREV_Private->pScratch = (LVM_FLOAT*)InstAlloc_AddMember(&Temporary, sizeof(LVM_FLOAT) * MaxBlockSize); Loading Loading @@ -308,6 +312,17 @@ LVREV_ReturnStatus_en LVREV_GetInstanceHandle(LVREV_Handle_t* phInstance, pLVREV_Private->A_DelaySize[3] = LVREV_MAX_AP3_DELAY; pLVREV_Private->B_DelaySize[3] = LVREV_MAX_AP3_DELAY; #ifdef BIQUAD_OPT pLVREV_Private->pRevHPFBiquad.reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(LVM_MAX_CHANNELS)); pLVREV_Private->pRevLPFBiquad.reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(LVM_MAX_CHANNELS)); for (int i = 0; i < LVREV_DELAYLINES_4; i++) { pLVREV_Private->revLPFBiquad[i].reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(LVM_MAX_CHANNELS)); } #endif LVREV_ClearAudioBuffers(*phInstance); return LVREV_SUCCESS; Loading
media/libeffects/lvm/lib/Reverb/src/LVREV_GetMemoryTable.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -139,7 +139,9 @@ LVREV_ReturnStatus_en LVREV_GetMemoryTable(LVREV_Handle_t hInstance, /* * Persistent fast data memory */ #ifndef BIQUAD_OPT InstAlloc_AddMember(&FastData, sizeof(LVREV_FastData_st)); #endif if (pInstanceParams->NumDelays == LVREV_DELAYLINES_4) { InstAlloc_AddMember(&FastData, LVREV_MAX_T3_DELAY * sizeof(LVM_FLOAT)); InstAlloc_AddMember(&FastData, LVREV_MAX_T2_DELAY * sizeof(LVM_FLOAT)); Loading @@ -163,7 +165,9 @@ LVREV_ReturnStatus_en LVREV_GetMemoryTable(LVREV_Handle_t hInstance, /* * Persistent fast coefficient memory */ #ifndef BIQUAD_OPT InstAlloc_AddMember(&FastCoef, sizeof(LVREV_FastCoef_st)); #endif pMemoryTable->Region[LVM_PERSISTENT_FAST_COEF].Size = InstAlloc_GetTotal(&FastCoef); pMemoryTable->Region[LVM_PERSISTENT_FAST_COEF].Type = LVM_PERSISTENT_FAST_COEF; pMemoryTable->Region[LVM_PERSISTENT_FAST_COEF].pBaseAddress = LVM_NULL; Loading