Loading media/libeffects/lvm/wrapper/Aidl/BundleContext.cpp +54 −32 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #define LOG_TAG "BundleContext" #include <android-base/logging.h> #include <audio_utils/power.h> #include <media/AidlConversionCppNdk.h> #include <Utils.h> #include "BundleContext.h" Loading @@ -36,9 +37,10 @@ BundleContext::BundleContext(int statusDepth, const Parameter::Common& common, const lvm::BundleEffectType& type) : EffectContext(statusDepth, common), mType(type) { LOG(DEBUG) << __func__ << type; int channelCount = ::aidl::android::hardware::audio::common::getChannelCount( int inputChannelCount = ::aidl::android::hardware::audio::common::getChannelCount( common.input.base.channelMask); mSamplesPerSecond = common.input.base.sampleRate * channelCount; mSamplesPerSecond = common.input.base.sampleRate * inputChannelCount; } BundleContext::~BundleContext() { Loading @@ -50,9 +52,15 @@ RetCode BundleContext::init() { std::lock_guard lg(mMutex); // init with pre-defined preset NORMAL for (std::size_t i = 0; i < lvm::MAX_NUM_BANDS; i++) { mBandGainMdB[i] = lvm::kSoftPresets[0 /* normal */][i] * 100; mBandGainmB[i] = lvm::kSoftPresets[0 /* normal */][i] * 100; } // Initialise control params LVM_ControlParams_t controlParams; RetCode retStatus = initControlParameter(controlParams); RETURN_VALUE_IF(retStatus != RetCode::SUCCESS, RetCode::ERROR_ILLEGAL_PARAMETER, " UnsupportedParams"); // allocate lvm instance LVM_ReturnStatus_en status; LVM_InstParams_t params = {.BufferMode = LVM_UNMANAGED_BUFFERS, Loading @@ -63,8 +71,6 @@ RetCode BundleContext::init() { GOTO_IF_LVM_ERROR(status, deinit, "LVM_GetInstanceHandleFailed"); // set control LVM_ControlParams_t controlParams; initControlParameter(controlParams); status = LVM_SetControlParameters(mInstance, &controlParams); GOTO_IF_LVM_ERROR(status, deinit, "LVM_SetControlParametersFailed"); Loading Loading @@ -227,8 +233,8 @@ RetCode BundleContext::limitLevel() { bool viEnabled = params.VirtualizerOperatingMode == LVM_MODE_ON; if (eqEnabled) { for (size_t i = 0; i < lvm::MAX_NUM_BANDS; i++) { float bandFactor = mBandGainMdB[i] / 1500.0; for (unsigned int i = 0; i < lvm::MAX_NUM_BANDS; i++) { float bandFactor = mBandGainmB[i] / 1500.0; float bandCoefficient = lvm::kBandEnergyCoefficient[i]; float bandEnergy = bandFactor * bandCoefficient * bandCoefficient; if (bandEnergy > 0) energyContribution += bandEnergy; Loading @@ -236,9 +242,9 @@ RetCode BundleContext::limitLevel() { // cross EQ coefficients float bandFactorSum = 0; for (size_t i = 0; i < lvm::MAX_NUM_BANDS - 1; i++) { float bandFactor1 = mBandGainMdB[i] / 1500.0; float bandFactor2 = mBandGainMdB[i + 1] / 1500.0; for (unsigned int i = 0; i < lvm::MAX_NUM_BANDS - 1; i++) { float bandFactor1 = mBandGainmB[i] / 1500.0; float bandFactor2 = mBandGainmB[i + 1] / 1500.0; if (bandFactor1 > 0 && bandFactor2 > 0) { float crossEnergy = Loading @@ -259,8 +265,8 @@ RetCode BundleContext::limitLevel() { energyContribution += boostFactor * boostCoefficient * boostCoefficient; if (eqEnabled) { for (size_t i = 0; i < lvm::MAX_NUM_BANDS; i++) { float bandFactor = mBandGainMdB[i] / 1500.0; for (unsigned int i = 0; i < lvm::MAX_NUM_BANDS; i++) { float bandFactor = mBandGainmB[i] / 1500.0; float bandCrossCoefficient = lvm::kBassBoostEnergyCrossCoefficient[i]; float bandEnergy = boostFactor * bandFactor * bandCrossCoefficient; if (bandEnergy > 0) energyBassBoost += bandEnergy; Loading Loading @@ -312,7 +318,9 @@ bool BundleContext::isDeviceSupportedBassBoost( device != AudioDeviceDescription{AudioDeviceType::OUT_CARKIT, AudioDeviceDescription::CONNECTION_BT_SCO} && device != AudioDeviceDescription{AudioDeviceType::OUT_SPEAKER, AudioDeviceDescription::CONNECTION_BT_A2DP}) { AudioDeviceDescription::CONNECTION_BT_A2DP} && device != AudioDeviceDescription{AudioDeviceType::OUT_SUBMIX, AudioDeviceDescription::CONNECTION_VIRTUAL}) { return false; } } Loading @@ -329,7 +337,9 @@ bool BundleContext::isDeviceSupportedVirtualizer( device != AudioDeviceDescription{AudioDeviceType::OUT_HEADPHONE, AudioDeviceDescription::CONNECTION_BT_A2DP} && device != AudioDeviceDescription{AudioDeviceType::OUT_HEADSET, AudioDeviceDescription::CONNECTION_USB}) { AudioDeviceDescription::CONNECTION_USB} && device != AudioDeviceDescription{AudioDeviceType::OUT_SUBMIX, AudioDeviceDescription::CONNECTION_VIRTUAL}) { return false; } } Loading Loading @@ -469,6 +479,7 @@ RetCode BundleContext::setEqualizerPreset(const std::size_t presetIdx) { RetCode BundleContext::setEqualizerBandLevels(const std::vector<Equalizer::BandLevel>& bandLevels) { RETURN_VALUE_IF(bandLevels.size() > lvm::MAX_NUM_BANDS || bandLevels.empty(), RetCode::ERROR_ILLEGAL_PARAMETER, "sizeExceedMax"); RetCode ret = updateControlParameter(bandLevels); if (RetCode::SUCCESS == ret) { mCurPresetIdx = lvm::PRESET_CUSTOM; Loading @@ -483,15 +494,13 @@ std::vector<Equalizer::BandLevel> BundleContext::getEqualizerBandLevels() const std::vector<Equalizer::BandLevel> bandLevels; bandLevels.reserve(lvm::MAX_NUM_BANDS); for (std::size_t i = 0; i < lvm::MAX_NUM_BANDS; i++) { bandLevels.emplace_back( Equalizer::BandLevel{static_cast<int32_t>(i), mBandGainMdB[i]}); bandLevels.emplace_back(Equalizer::BandLevel{static_cast<int32_t>(i), mBandGainmB[i]}); } return bandLevels; } std::vector<int32_t> BundleContext::getEqualizerCenterFreqs() { std::vector<int32_t> freqs; LVM_ControlParams_t params; { std::lock_guard lg(mMutex); Loading @@ -518,7 +527,7 @@ RetCode BundleContext::updateControlParameter(const std::vector<Equalizer::BandL RETURN_VALUE_IF(!isBandLevelIndexInRange(bandLevels), RetCode::ERROR_ILLEGAL_PARAMETER, "indexOutOfRange"); std::array<int, lvm::MAX_NUM_BANDS> tempLevel(mBandGainMdB); std::array<int, lvm::MAX_NUM_BANDS> tempLevel(mBandGainmB); for (const auto& it : bandLevels) { tempLevel[it.index] = it.levelMb; } Loading @@ -539,8 +548,8 @@ RetCode BundleContext::updateControlParameter(const std::vector<Equalizer::BandL RETURN_VALUE_IF(LVM_SUCCESS != LVM_SetControlParameters(mInstance, ¶ms), RetCode::ERROR_EFFECT_LIB_ERROR, " setControlParamFailed"); } mBandGainMdB = tempLevel; LOG(DEBUG) << __func__ << " update bandGain to " << ::android::internal::ToString(mBandGainMdB) mBandGainmB = tempLevel; LOG(DEBUG) << __func__ << " update bandGain to " << ::android::internal::ToString(mBandGainmB) << "mdB"; return RetCode::SUCCESS; Loading Loading @@ -618,11 +627,30 @@ RetCode BundleContext::setForcedDevice( return RetCode::SUCCESS; } void BundleContext::initControlParameter(LVM_ControlParams_t& params) const { RetCode BundleContext::initControlParameter(LVM_ControlParams_t& params) const { int outputChannelCount = ::aidl::android::hardware::audio::common::getChannelCount( mCommon.output.base.channelMask); auto outputChannelMaskConv = aidl2legacy_AudioChannelLayout_audio_channel_mask_t( mCommon.output.base.channelMask, /*isInput*/ false); RETURN_VALUE_IF(!outputChannelMaskConv.ok(), RetCode::ERROR_ILLEGAL_PARAMETER, " outputChannelMaskNotValid"); params.NrChannels = outputChannelCount; params.ChMask = outputChannelMaskConv.value(); params.SampleRate = lvmFsForSampleRate(mCommon.input.base.sampleRate); int inputChannelCount = ::aidl::android::hardware::audio::common::getChannelCount( mCommon.input.base.channelMask); if (inputChannelCount == 1) { params.SourceFormat = LVM_MONO; } else if (inputChannelCount == 2) { params.SourceFormat = LVM_STEREO; } else if (inputChannelCount > 2 && inputChannelCount <= LVM_MAX_CHANNELS) { params.SourceFormat = LVM_MULTICHANNEL; } /* General parameters */ params.OperatingMode = LVM_MODE_ON; params.SampleRate = LVM_FS_44100; params.SourceFormat = LVM_STEREO; params.SpeakerType = LVM_HEADPHONES; /* Concert Sound parameters */ Loading Loading @@ -657,13 +685,7 @@ void BundleContext::initControlParameter(LVM_ControlParams_t& params) const { params.PSA_Enable = LVM_PSA_OFF; params.PSA_PeakDecayRate = LVM_PSA_SPEED_MEDIUM; /* TE Control parameters */ params.TE_OperatingMode = LVM_TE_OFF; params.TE_EffectLevel = 0; params.NrChannels = audio_channel_count_from_out_mask(AUDIO_CHANNEL_OUT_STEREO); params.ChMask = AUDIO_CHANNEL_OUT_STEREO; params.SourceFormat = LVM_STEREO; return RetCode::SUCCESS; } void BundleContext::initHeadroomParameter(LVM_HeadroomParams_t& params) const { Loading Loading @@ -832,13 +854,13 @@ IEffect::Status BundleContext::lvmProcess(float* in, float* out, int samples) { LOG(DEBUG) << "Effect_process() processing last frame"; } mNumberEffectsCalled = 0; LVM_UINT16 frames = samples * sizeof(float) / frameSize; float* outTmp = (accumulate ? getWorkBuffer() : out); /* Process the samples */ LVM_ReturnStatus_en lvmStatus; { std::lock_guard lg(mMutex); lvmStatus = LVM_Process(mInstance, in, outTmp, frames, 0); lvmStatus = LVM_Process(mInstance, in, outTmp, inputFrameCount, 0); if (lvmStatus != LVM_SUCCESS) { LOG(ERROR) << __func__ << lvmStatus; return {EX_UNSUPPORTED_OPERATION, 0, 0}; Loading media/libeffects/lvm/wrapper/Aidl/BundleContext.h +2 −13 Original line number Diff line number Diff line Loading @@ -41,15 +41,6 @@ class BundleContext final : public EffectContext { RetCode disable(); RetCode disableOperatingMode(); void setSampleRate(const int sampleRate) { mSampleRate = sampleRate; } int getSampleRate() const { return mSampleRate; } void setChannelMask(const aidl::android::media::audio::common::AudioChannelLayout& chMask) { mChMask = chMask; } aidl::android::media::audio::common::AudioChannelLayout getChannelMask() const { return mChMask; } bool isDeviceSupportedBassBoost( const std::vector<aidl::android::media::audio::common::AudioDeviceDescription>& devices); Loading Loading @@ -105,9 +96,7 @@ class BundleContext final : public EffectContext { LVM_Handle_t mInstance GUARDED_BY(mMutex); aidl::android::media::audio::common::AudioDeviceDescription mVirtualizerForcedDevice; aidl::android::media::audio::common::AudioChannelLayout mChMask; int mSampleRate = LVM_FS_44100; int mSamplesPerSecond = 0; int mSamplesToExitCountEq = 0; int mSamplesToExitCountBb = 0; Loading @@ -129,7 +118,7 @@ class BundleContext final : public EffectContext { int mBassStrengthSaved = 0; // Equalizer int mCurPresetIdx = lvm::PRESET_CUSTOM; /* Current preset being used */ std::array<int, lvm::MAX_NUM_BANDS> mBandGainMdB; /* band gain in millibels */ std::array<int, lvm::MAX_NUM_BANDS> mBandGainmB; /* band gain in millibels */ // Virtualizer int mVirtStrengthSaved = 0; /* Conversion between Get/Set */ bool mVirtualizerTempDisabled = false; Loading @@ -139,7 +128,7 @@ class BundleContext final : public EffectContext { float mVolume = 0; bool mMuteEnabled = false; /* Must store as mute = -96dB level */ void initControlParameter(LVM_ControlParams_t& params) const; RetCode initControlParameter(LVM_ControlParams_t& params) const; void initHeadroomParameter(LVM_HeadroomParams_t& params) const; RetCode limitLevel(); static float VolToDb(float vol); Loading media/libeffects/lvm/wrapper/Android.bp +5 −0 Original line number Diff line number Diff line Loading @@ -118,10 +118,15 @@ cc_library_shared { "libhardware_headers", ], shared_libs: [ "libaudio_aidl_conversion_common_ndk", "libaudioutils", "libbinder", "liblog", "libstagefright_foundation", ], cflags: [ "-Wthread-safety", "-DBACKEND_NDK", ], relative_install_path: "soundfx", visibility: [ Loading Loading
media/libeffects/lvm/wrapper/Aidl/BundleContext.cpp +54 −32 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #define LOG_TAG "BundleContext" #include <android-base/logging.h> #include <audio_utils/power.h> #include <media/AidlConversionCppNdk.h> #include <Utils.h> #include "BundleContext.h" Loading @@ -36,9 +37,10 @@ BundleContext::BundleContext(int statusDepth, const Parameter::Common& common, const lvm::BundleEffectType& type) : EffectContext(statusDepth, common), mType(type) { LOG(DEBUG) << __func__ << type; int channelCount = ::aidl::android::hardware::audio::common::getChannelCount( int inputChannelCount = ::aidl::android::hardware::audio::common::getChannelCount( common.input.base.channelMask); mSamplesPerSecond = common.input.base.sampleRate * channelCount; mSamplesPerSecond = common.input.base.sampleRate * inputChannelCount; } BundleContext::~BundleContext() { Loading @@ -50,9 +52,15 @@ RetCode BundleContext::init() { std::lock_guard lg(mMutex); // init with pre-defined preset NORMAL for (std::size_t i = 0; i < lvm::MAX_NUM_BANDS; i++) { mBandGainMdB[i] = lvm::kSoftPresets[0 /* normal */][i] * 100; mBandGainmB[i] = lvm::kSoftPresets[0 /* normal */][i] * 100; } // Initialise control params LVM_ControlParams_t controlParams; RetCode retStatus = initControlParameter(controlParams); RETURN_VALUE_IF(retStatus != RetCode::SUCCESS, RetCode::ERROR_ILLEGAL_PARAMETER, " UnsupportedParams"); // allocate lvm instance LVM_ReturnStatus_en status; LVM_InstParams_t params = {.BufferMode = LVM_UNMANAGED_BUFFERS, Loading @@ -63,8 +71,6 @@ RetCode BundleContext::init() { GOTO_IF_LVM_ERROR(status, deinit, "LVM_GetInstanceHandleFailed"); // set control LVM_ControlParams_t controlParams; initControlParameter(controlParams); status = LVM_SetControlParameters(mInstance, &controlParams); GOTO_IF_LVM_ERROR(status, deinit, "LVM_SetControlParametersFailed"); Loading Loading @@ -227,8 +233,8 @@ RetCode BundleContext::limitLevel() { bool viEnabled = params.VirtualizerOperatingMode == LVM_MODE_ON; if (eqEnabled) { for (size_t i = 0; i < lvm::MAX_NUM_BANDS; i++) { float bandFactor = mBandGainMdB[i] / 1500.0; for (unsigned int i = 0; i < lvm::MAX_NUM_BANDS; i++) { float bandFactor = mBandGainmB[i] / 1500.0; float bandCoefficient = lvm::kBandEnergyCoefficient[i]; float bandEnergy = bandFactor * bandCoefficient * bandCoefficient; if (bandEnergy > 0) energyContribution += bandEnergy; Loading @@ -236,9 +242,9 @@ RetCode BundleContext::limitLevel() { // cross EQ coefficients float bandFactorSum = 0; for (size_t i = 0; i < lvm::MAX_NUM_BANDS - 1; i++) { float bandFactor1 = mBandGainMdB[i] / 1500.0; float bandFactor2 = mBandGainMdB[i + 1] / 1500.0; for (unsigned int i = 0; i < lvm::MAX_NUM_BANDS - 1; i++) { float bandFactor1 = mBandGainmB[i] / 1500.0; float bandFactor2 = mBandGainmB[i + 1] / 1500.0; if (bandFactor1 > 0 && bandFactor2 > 0) { float crossEnergy = Loading @@ -259,8 +265,8 @@ RetCode BundleContext::limitLevel() { energyContribution += boostFactor * boostCoefficient * boostCoefficient; if (eqEnabled) { for (size_t i = 0; i < lvm::MAX_NUM_BANDS; i++) { float bandFactor = mBandGainMdB[i] / 1500.0; for (unsigned int i = 0; i < lvm::MAX_NUM_BANDS; i++) { float bandFactor = mBandGainmB[i] / 1500.0; float bandCrossCoefficient = lvm::kBassBoostEnergyCrossCoefficient[i]; float bandEnergy = boostFactor * bandFactor * bandCrossCoefficient; if (bandEnergy > 0) energyBassBoost += bandEnergy; Loading Loading @@ -312,7 +318,9 @@ bool BundleContext::isDeviceSupportedBassBoost( device != AudioDeviceDescription{AudioDeviceType::OUT_CARKIT, AudioDeviceDescription::CONNECTION_BT_SCO} && device != AudioDeviceDescription{AudioDeviceType::OUT_SPEAKER, AudioDeviceDescription::CONNECTION_BT_A2DP}) { AudioDeviceDescription::CONNECTION_BT_A2DP} && device != AudioDeviceDescription{AudioDeviceType::OUT_SUBMIX, AudioDeviceDescription::CONNECTION_VIRTUAL}) { return false; } } Loading @@ -329,7 +337,9 @@ bool BundleContext::isDeviceSupportedVirtualizer( device != AudioDeviceDescription{AudioDeviceType::OUT_HEADPHONE, AudioDeviceDescription::CONNECTION_BT_A2DP} && device != AudioDeviceDescription{AudioDeviceType::OUT_HEADSET, AudioDeviceDescription::CONNECTION_USB}) { AudioDeviceDescription::CONNECTION_USB} && device != AudioDeviceDescription{AudioDeviceType::OUT_SUBMIX, AudioDeviceDescription::CONNECTION_VIRTUAL}) { return false; } } Loading Loading @@ -469,6 +479,7 @@ RetCode BundleContext::setEqualizerPreset(const std::size_t presetIdx) { RetCode BundleContext::setEqualizerBandLevels(const std::vector<Equalizer::BandLevel>& bandLevels) { RETURN_VALUE_IF(bandLevels.size() > lvm::MAX_NUM_BANDS || bandLevels.empty(), RetCode::ERROR_ILLEGAL_PARAMETER, "sizeExceedMax"); RetCode ret = updateControlParameter(bandLevels); if (RetCode::SUCCESS == ret) { mCurPresetIdx = lvm::PRESET_CUSTOM; Loading @@ -483,15 +494,13 @@ std::vector<Equalizer::BandLevel> BundleContext::getEqualizerBandLevels() const std::vector<Equalizer::BandLevel> bandLevels; bandLevels.reserve(lvm::MAX_NUM_BANDS); for (std::size_t i = 0; i < lvm::MAX_NUM_BANDS; i++) { bandLevels.emplace_back( Equalizer::BandLevel{static_cast<int32_t>(i), mBandGainMdB[i]}); bandLevels.emplace_back(Equalizer::BandLevel{static_cast<int32_t>(i), mBandGainmB[i]}); } return bandLevels; } std::vector<int32_t> BundleContext::getEqualizerCenterFreqs() { std::vector<int32_t> freqs; LVM_ControlParams_t params; { std::lock_guard lg(mMutex); Loading @@ -518,7 +527,7 @@ RetCode BundleContext::updateControlParameter(const std::vector<Equalizer::BandL RETURN_VALUE_IF(!isBandLevelIndexInRange(bandLevels), RetCode::ERROR_ILLEGAL_PARAMETER, "indexOutOfRange"); std::array<int, lvm::MAX_NUM_BANDS> tempLevel(mBandGainMdB); std::array<int, lvm::MAX_NUM_BANDS> tempLevel(mBandGainmB); for (const auto& it : bandLevels) { tempLevel[it.index] = it.levelMb; } Loading @@ -539,8 +548,8 @@ RetCode BundleContext::updateControlParameter(const std::vector<Equalizer::BandL RETURN_VALUE_IF(LVM_SUCCESS != LVM_SetControlParameters(mInstance, ¶ms), RetCode::ERROR_EFFECT_LIB_ERROR, " setControlParamFailed"); } mBandGainMdB = tempLevel; LOG(DEBUG) << __func__ << " update bandGain to " << ::android::internal::ToString(mBandGainMdB) mBandGainmB = tempLevel; LOG(DEBUG) << __func__ << " update bandGain to " << ::android::internal::ToString(mBandGainmB) << "mdB"; return RetCode::SUCCESS; Loading Loading @@ -618,11 +627,30 @@ RetCode BundleContext::setForcedDevice( return RetCode::SUCCESS; } void BundleContext::initControlParameter(LVM_ControlParams_t& params) const { RetCode BundleContext::initControlParameter(LVM_ControlParams_t& params) const { int outputChannelCount = ::aidl::android::hardware::audio::common::getChannelCount( mCommon.output.base.channelMask); auto outputChannelMaskConv = aidl2legacy_AudioChannelLayout_audio_channel_mask_t( mCommon.output.base.channelMask, /*isInput*/ false); RETURN_VALUE_IF(!outputChannelMaskConv.ok(), RetCode::ERROR_ILLEGAL_PARAMETER, " outputChannelMaskNotValid"); params.NrChannels = outputChannelCount; params.ChMask = outputChannelMaskConv.value(); params.SampleRate = lvmFsForSampleRate(mCommon.input.base.sampleRate); int inputChannelCount = ::aidl::android::hardware::audio::common::getChannelCount( mCommon.input.base.channelMask); if (inputChannelCount == 1) { params.SourceFormat = LVM_MONO; } else if (inputChannelCount == 2) { params.SourceFormat = LVM_STEREO; } else if (inputChannelCount > 2 && inputChannelCount <= LVM_MAX_CHANNELS) { params.SourceFormat = LVM_MULTICHANNEL; } /* General parameters */ params.OperatingMode = LVM_MODE_ON; params.SampleRate = LVM_FS_44100; params.SourceFormat = LVM_STEREO; params.SpeakerType = LVM_HEADPHONES; /* Concert Sound parameters */ Loading Loading @@ -657,13 +685,7 @@ void BundleContext::initControlParameter(LVM_ControlParams_t& params) const { params.PSA_Enable = LVM_PSA_OFF; params.PSA_PeakDecayRate = LVM_PSA_SPEED_MEDIUM; /* TE Control parameters */ params.TE_OperatingMode = LVM_TE_OFF; params.TE_EffectLevel = 0; params.NrChannels = audio_channel_count_from_out_mask(AUDIO_CHANNEL_OUT_STEREO); params.ChMask = AUDIO_CHANNEL_OUT_STEREO; params.SourceFormat = LVM_STEREO; return RetCode::SUCCESS; } void BundleContext::initHeadroomParameter(LVM_HeadroomParams_t& params) const { Loading Loading @@ -832,13 +854,13 @@ IEffect::Status BundleContext::lvmProcess(float* in, float* out, int samples) { LOG(DEBUG) << "Effect_process() processing last frame"; } mNumberEffectsCalled = 0; LVM_UINT16 frames = samples * sizeof(float) / frameSize; float* outTmp = (accumulate ? getWorkBuffer() : out); /* Process the samples */ LVM_ReturnStatus_en lvmStatus; { std::lock_guard lg(mMutex); lvmStatus = LVM_Process(mInstance, in, outTmp, frames, 0); lvmStatus = LVM_Process(mInstance, in, outTmp, inputFrameCount, 0); if (lvmStatus != LVM_SUCCESS) { LOG(ERROR) << __func__ << lvmStatus; return {EX_UNSUPPORTED_OPERATION, 0, 0}; Loading
media/libeffects/lvm/wrapper/Aidl/BundleContext.h +2 −13 Original line number Diff line number Diff line Loading @@ -41,15 +41,6 @@ class BundleContext final : public EffectContext { RetCode disable(); RetCode disableOperatingMode(); void setSampleRate(const int sampleRate) { mSampleRate = sampleRate; } int getSampleRate() const { return mSampleRate; } void setChannelMask(const aidl::android::media::audio::common::AudioChannelLayout& chMask) { mChMask = chMask; } aidl::android::media::audio::common::AudioChannelLayout getChannelMask() const { return mChMask; } bool isDeviceSupportedBassBoost( const std::vector<aidl::android::media::audio::common::AudioDeviceDescription>& devices); Loading Loading @@ -105,9 +96,7 @@ class BundleContext final : public EffectContext { LVM_Handle_t mInstance GUARDED_BY(mMutex); aidl::android::media::audio::common::AudioDeviceDescription mVirtualizerForcedDevice; aidl::android::media::audio::common::AudioChannelLayout mChMask; int mSampleRate = LVM_FS_44100; int mSamplesPerSecond = 0; int mSamplesToExitCountEq = 0; int mSamplesToExitCountBb = 0; Loading @@ -129,7 +118,7 @@ class BundleContext final : public EffectContext { int mBassStrengthSaved = 0; // Equalizer int mCurPresetIdx = lvm::PRESET_CUSTOM; /* Current preset being used */ std::array<int, lvm::MAX_NUM_BANDS> mBandGainMdB; /* band gain in millibels */ std::array<int, lvm::MAX_NUM_BANDS> mBandGainmB; /* band gain in millibels */ // Virtualizer int mVirtStrengthSaved = 0; /* Conversion between Get/Set */ bool mVirtualizerTempDisabled = false; Loading @@ -139,7 +128,7 @@ class BundleContext final : public EffectContext { float mVolume = 0; bool mMuteEnabled = false; /* Must store as mute = -96dB level */ void initControlParameter(LVM_ControlParams_t& params) const; RetCode initControlParameter(LVM_ControlParams_t& params) const; void initHeadroomParameter(LVM_HeadroomParams_t& params) const; RetCode limitLevel(); static float VolToDb(float vol); Loading
media/libeffects/lvm/wrapper/Android.bp +5 −0 Original line number Diff line number Diff line Loading @@ -118,10 +118,15 @@ cc_library_shared { "libhardware_headers", ], shared_libs: [ "libaudio_aidl_conversion_common_ndk", "libaudioutils", "libbinder", "liblog", "libstagefright_foundation", ], cflags: [ "-Wthread-safety", "-DBACKEND_NDK", ], relative_install_path: "soundfx", visibility: [ Loading