Loading media/libeffects/lvm/lib/Android.bp +4 −1 Original line number Diff line number Diff line Loading @@ -131,12 +131,15 @@ cc_library_static { shared_libs: [ "liblog", ], static_libs: [ "libaudioutils", ], header_libs: [ "libhardware_headers", ], cppflags: [ "-DBIQUAD_OPT", "-fvisibility=hidden", "-Wall", "-Werror", ], Loading media/libeffects/lvm/lib/Bass/src/LVDBE_Control.cpp +20 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,9 @@ /* */ /****************************************************************************************/ #ifdef BIQUAD_OPT #include <audio_utils/BiquadFilter.h> #endif #include "LVDBE.h" #include "LVDBE_Private.h" #include "VectorArithmetic.h" Loading Loading @@ -107,12 +110,20 @@ void LVDBE_SetFilters(LVDBE_Instance_t* pInstance, LVDBE_Params_t* pParams) { /* * Setup the high pass filter */ #ifdef BIQUAD_OPT std::array<LVM_FLOAT, android::audio_utils::kBiquadNumCoefs> coefs = { LVDBE_HPF_Table[Offset].A0, LVDBE_HPF_Table[Offset].A1, LVDBE_HPF_Table[Offset].A2, -(LVDBE_HPF_Table[Offset].B1), -(LVDBE_HPF_Table[Offset].B2)}; pInstance->pBqInstance ->setCoefficients<std::array<LVM_FLOAT, android::audio_utils::kBiquadNumCoefs>>(coefs); #else LoadConst_Float(0, /* Clear the history, value 0 */ (LVM_FLOAT*)&pInstance->pData->HPFTaps, /* Destination */ sizeof(pInstance->pData->HPFTaps) / sizeof(LVM_FLOAT)); /* Number of words */ BQ_2I_D32F32Cll_TRC_WRA_01_Init(&pInstance->pCoef->HPFInstance, /* Initialise the filter */ &pInstance->pData->HPFTaps, (BQ_FLOAT_Coefs_t*)&LVDBE_HPF_Table[Offset]); #endif /* * Setup the band pass filter Loading Loading @@ -275,6 +286,15 @@ LVDBE_ReturnStatus_en LVDBE_Control(LVDBE_Handle_t hInstance, LVDBE_Params_t* pP LVDBE_Instance_t* pInstance = (LVDBE_Instance_t*)hInstance; LVMixer3_2St_FLOAT_st* pBypassMixer_Instance = &pInstance->pData->BypassMixer; #ifdef BIQUAD_OPT /* * Create biquad instance */ pInstance->pBqInstance.reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(pParams->NrChannels)); pInstance->pBqInstance->clear(); #endif /* * Update the filters */ Loading media/libeffects/lvm/lib/Bass/src/LVDBE_Init.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,14 @@ LVDBE_ReturnStatus_en LVDBE_Init(LVDBE_Handle_t* phInstance, LVDBE_Capabilities_ return LVDBE_NULLADDRESS; } #ifdef BIQUAD_OPT /* * Create biquad instance */ pInstance->pBqInstance.reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(LVM_MAX_CHANNELS)); #endif /* * Initialise the filters */ Loading media/libeffects/lvm/lib/Bass/src/LVDBE_Private.h +11 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,9 @@ /* */ /****************************************************************************************/ #ifdef BIQUAD_OPT #include <audio_utils/BiquadFilter.h> #endif #include "LVDBE.h" /* Calling or Application layer definitions */ #include "BIQUAD.h" #include "LVC_Mixer.h" Loading Loading @@ -63,7 +66,9 @@ typedef struct { AGC_MIX_VOL_2St1Mon_FLOAT_t AGCInstance; /* AGC instance parameters */ /* Process variables */ #ifndef BIQUAD_OPT Biquad_2I_Order2_FLOAT_Taps_t HPFTaps; /* High pass filter taps */ #endif Biquad_1I_Order2_FLOAT_Taps_t BPFTaps; /* Band pass filter taps */ LVMixer3_1St_FLOAT_st BypassVolume; /* Bypass volume scaler */ LVMixer3_2St_FLOAT_st BypassMixer; /* Bypass Mixer for Click Removal */ Loading @@ -73,7 +78,9 @@ typedef struct { /* Coefs structure */ typedef struct { /* Process variables */ #ifndef BIQUAD_OPT Biquad_FLOAT_Instance_t HPFInstance; /* High pass filter instance */ #endif Biquad_FLOAT_Instance_t BPFInstance; /* Band pass filter instance */ } LVDBE_Coef_FLOAT_t; /* Instance structure */ Loading @@ -86,6 +93,10 @@ typedef struct { LVDBE_Data_FLOAT_t* pData; /* Instance data */ LVDBE_Coef_FLOAT_t* pCoef; /* Instance coefficients */ void* pScratch; /* scratch pointer */ #ifdef BIQUAD_OPT std::unique_ptr<android::audio_utils::BiquadFilter<LVM_FLOAT>> pBqInstance; /* Biquad filter instance */ #endif } LVDBE_Instance_t; /****************************************************************************************/ Loading media/libeffects/lvm/lib/Bass/src/LVDBE_Process.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,9 @@ /* Includes */ /* */ /****************************************************************************************/ #ifdef BIQUAD_OPT #include <audio_utils/BiquadFilter.h> #endif #include <string.h> // memset #include "LVDBE.h" Loading Loading @@ -125,10 +128,14 @@ LVDBE_ReturnStatus_en LVDBE_Process( * Apply the high pass filter if selected */ if (pInstance->Params.HPFSelect == LVDBE_HPF_ON) { #ifdef BIQUAD_OPT pInstance->pBqInstance->process(pScratch, pScratch, NrFrames); #else BQ_MC_D32F32C30_TRC_WRA_01(&pInstance->pCoef->HPFInstance, /* Filter instance */ pScratch, /* Source */ pScratch, /* Destination */ (LVM_INT16)NrFrames, (LVM_INT16)NrChannels); #endif } /* Loading Loading
media/libeffects/lvm/lib/Android.bp +4 −1 Original line number Diff line number Diff line Loading @@ -131,12 +131,15 @@ cc_library_static { shared_libs: [ "liblog", ], static_libs: [ "libaudioutils", ], header_libs: [ "libhardware_headers", ], cppflags: [ "-DBIQUAD_OPT", "-fvisibility=hidden", "-Wall", "-Werror", ], Loading
media/libeffects/lvm/lib/Bass/src/LVDBE_Control.cpp +20 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,9 @@ /* */ /****************************************************************************************/ #ifdef BIQUAD_OPT #include <audio_utils/BiquadFilter.h> #endif #include "LVDBE.h" #include "LVDBE_Private.h" #include "VectorArithmetic.h" Loading Loading @@ -107,12 +110,20 @@ void LVDBE_SetFilters(LVDBE_Instance_t* pInstance, LVDBE_Params_t* pParams) { /* * Setup the high pass filter */ #ifdef BIQUAD_OPT std::array<LVM_FLOAT, android::audio_utils::kBiquadNumCoefs> coefs = { LVDBE_HPF_Table[Offset].A0, LVDBE_HPF_Table[Offset].A1, LVDBE_HPF_Table[Offset].A2, -(LVDBE_HPF_Table[Offset].B1), -(LVDBE_HPF_Table[Offset].B2)}; pInstance->pBqInstance ->setCoefficients<std::array<LVM_FLOAT, android::audio_utils::kBiquadNumCoefs>>(coefs); #else LoadConst_Float(0, /* Clear the history, value 0 */ (LVM_FLOAT*)&pInstance->pData->HPFTaps, /* Destination */ sizeof(pInstance->pData->HPFTaps) / sizeof(LVM_FLOAT)); /* Number of words */ BQ_2I_D32F32Cll_TRC_WRA_01_Init(&pInstance->pCoef->HPFInstance, /* Initialise the filter */ &pInstance->pData->HPFTaps, (BQ_FLOAT_Coefs_t*)&LVDBE_HPF_Table[Offset]); #endif /* * Setup the band pass filter Loading Loading @@ -275,6 +286,15 @@ LVDBE_ReturnStatus_en LVDBE_Control(LVDBE_Handle_t hInstance, LVDBE_Params_t* pP LVDBE_Instance_t* pInstance = (LVDBE_Instance_t*)hInstance; LVMixer3_2St_FLOAT_st* pBypassMixer_Instance = &pInstance->pData->BypassMixer; #ifdef BIQUAD_OPT /* * Create biquad instance */ pInstance->pBqInstance.reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(pParams->NrChannels)); pInstance->pBqInstance->clear(); #endif /* * Update the filters */ Loading
media/libeffects/lvm/lib/Bass/src/LVDBE_Init.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,14 @@ LVDBE_ReturnStatus_en LVDBE_Init(LVDBE_Handle_t* phInstance, LVDBE_Capabilities_ return LVDBE_NULLADDRESS; } #ifdef BIQUAD_OPT /* * Create biquad instance */ pInstance->pBqInstance.reset( new android::audio_utils::BiquadFilter<LVM_FLOAT>(LVM_MAX_CHANNELS)); #endif /* * Initialise the filters */ Loading
media/libeffects/lvm/lib/Bass/src/LVDBE_Private.h +11 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,9 @@ /* */ /****************************************************************************************/ #ifdef BIQUAD_OPT #include <audio_utils/BiquadFilter.h> #endif #include "LVDBE.h" /* Calling or Application layer definitions */ #include "BIQUAD.h" #include "LVC_Mixer.h" Loading Loading @@ -63,7 +66,9 @@ typedef struct { AGC_MIX_VOL_2St1Mon_FLOAT_t AGCInstance; /* AGC instance parameters */ /* Process variables */ #ifndef BIQUAD_OPT Biquad_2I_Order2_FLOAT_Taps_t HPFTaps; /* High pass filter taps */ #endif Biquad_1I_Order2_FLOAT_Taps_t BPFTaps; /* Band pass filter taps */ LVMixer3_1St_FLOAT_st BypassVolume; /* Bypass volume scaler */ LVMixer3_2St_FLOAT_st BypassMixer; /* Bypass Mixer for Click Removal */ Loading @@ -73,7 +78,9 @@ typedef struct { /* Coefs structure */ typedef struct { /* Process variables */ #ifndef BIQUAD_OPT Biquad_FLOAT_Instance_t HPFInstance; /* High pass filter instance */ #endif Biquad_FLOAT_Instance_t BPFInstance; /* Band pass filter instance */ } LVDBE_Coef_FLOAT_t; /* Instance structure */ Loading @@ -86,6 +93,10 @@ typedef struct { LVDBE_Data_FLOAT_t* pData; /* Instance data */ LVDBE_Coef_FLOAT_t* pCoef; /* Instance coefficients */ void* pScratch; /* scratch pointer */ #ifdef BIQUAD_OPT std::unique_ptr<android::audio_utils::BiquadFilter<LVM_FLOAT>> pBqInstance; /* Biquad filter instance */ #endif } LVDBE_Instance_t; /****************************************************************************************/ Loading
media/libeffects/lvm/lib/Bass/src/LVDBE_Process.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,9 @@ /* Includes */ /* */ /****************************************************************************************/ #ifdef BIQUAD_OPT #include <audio_utils/BiquadFilter.h> #endif #include <string.h> // memset #include "LVDBE.h" Loading Loading @@ -125,10 +128,14 @@ LVDBE_ReturnStatus_en LVDBE_Process( * Apply the high pass filter if selected */ if (pInstance->Params.HPFSelect == LVDBE_HPF_ON) { #ifdef BIQUAD_OPT pInstance->pBqInstance->process(pScratch, pScratch, NrFrames); #else BQ_MC_D32F32C30_TRC_WRA_01(&pInstance->pCoef->HPFInstance, /* Filter instance */ pScratch, /* Source */ pScratch, /* Destination */ (LVM_INT16)NrFrames, (LVM_INT16)NrChannels); #endif } /* Loading