EnvironmentalReverb: Add AIDL placeholder implementation and its unit test
Bug: 258124419
Test: atest VtsHalEnvironmentalReverbTargetTest
Change-Id: I4bb3ef907be726fbfbcd905db9c304b8ac42ecdd
diff --git a/audio/aidl/default/envReverb/EnvReverbSw.h b/audio/aidl/default/envReverb/EnvReverbSw.h
index b8761a6..f521215 100644
--- a/audio/aidl/default/envReverb/EnvReverbSw.h
+++ b/audio/aidl/default/envReverb/EnvReverbSw.h
@@ -32,7 +32,120 @@
: EffectContext(statusDepth, common) {
LOG(DEBUG) << __func__;
}
- // TODO: add specific context here
+
+ RetCode setErRoomLevel(int roomLevel) {
+ if (roomLevel < EnvironmentalReverb::MIN_ROOM_LEVEL_MB ||
+ roomLevel > EnvironmentalReverb::MAX_ROOM_LEVEL_MB) {
+ LOG(ERROR) << __func__ << " invalid roomLevel: " << roomLevel;
+ return RetCode::ERROR_ILLEGAL_PARAMETER;
+ }
+ // TODO : Add implementation to apply new room level
+ mRoomLevel = roomLevel;
+ return RetCode::SUCCESS;
+ }
+ int getErRoomLevel() const { return mRoomLevel; }
+
+ RetCode setErRoomHfLevel(int roomHfLevel) {
+ if (roomHfLevel < EnvironmentalReverb::MIN_ROOM_HF_LEVEL_MB ||
+ roomHfLevel > EnvironmentalReverb::MAX_ROOM_HF_LEVEL_MB) {
+ LOG(ERROR) << __func__ << " invalid roomHfLevel: " << roomHfLevel;
+ return RetCode::ERROR_ILLEGAL_PARAMETER;
+ }
+ // TODO : Add implementation to apply new room HF level
+ mRoomHfLevel = roomHfLevel;
+ return RetCode::SUCCESS;
+ }
+ int getErRoomHfLevel() const { return mRoomHfLevel; }
+
+ RetCode setErDecayTime(int decayTime) {
+ if (decayTime < EnvironmentalReverb::MIN_DECAY_TIME_MS ||
+ decayTime > EnvironmentalReverb::MAX_DECAY_TIME_MS) {
+ LOG(ERROR) << __func__ << " invalid decayTime: " << decayTime;
+ return RetCode::ERROR_ILLEGAL_PARAMETER;
+ }
+ // TODO : Add implementation to apply new decay time
+ mDecayTime = decayTime;
+ return RetCode::SUCCESS;
+ }
+ int getErDecayTime() const { return mDecayTime; }
+
+ RetCode setErDecayHfRatio(int decayHfRatio) {
+ if (decayHfRatio < EnvironmentalReverb::MIN_DECAY_HF_RATIO_PM ||
+ decayHfRatio > EnvironmentalReverb::MAX_DECAY_HF_RATIO_PM) {
+ LOG(ERROR) << __func__ << " invalid decayHfRatio: " << decayHfRatio;
+ return RetCode::ERROR_ILLEGAL_PARAMETER;
+ }
+ // TODO : Add implementation to apply new decay HF ratio
+ mDecayHfRatio = decayHfRatio;
+ return RetCode::SUCCESS;
+ }
+ int getErDecayHfRatio() const { return mDecayHfRatio; }
+
+ RetCode setErLevel(int level) {
+ if (level < EnvironmentalReverb::MIN_LEVEL_MB ||
+ level > EnvironmentalReverb::MAX_LEVEL_MB) {
+ LOG(ERROR) << __func__ << " invalid level: " << level;
+ return RetCode::ERROR_ILLEGAL_PARAMETER;
+ }
+ // TODO : Add implementation to apply new level
+ mLevel = level;
+ return RetCode::SUCCESS;
+ }
+ int getErLevel() const { return mLevel; }
+
+ RetCode setErDelay(int delay) {
+ if (delay < EnvironmentalReverb::MIN_DELAY_MS ||
+ delay > EnvironmentalReverb::MAX_DELAY_MS) {
+ LOG(ERROR) << __func__ << " invalid delay: " << delay;
+ return RetCode::ERROR_ILLEGAL_PARAMETER;
+ }
+ // TODO : Add implementation to apply new delay
+ mDelay = delay;
+ return RetCode::SUCCESS;
+ }
+ int getErDelay() const { return mDelay; }
+
+ RetCode setErDiffusion(int diffusion) {
+ if (diffusion < EnvironmentalReverb::MIN_DIFFUSION_PM ||
+ diffusion > EnvironmentalReverb::MAX_DIFFUSION_PM) {
+ LOG(ERROR) << __func__ << " invalid diffusion: " << diffusion;
+ return RetCode::ERROR_ILLEGAL_PARAMETER;
+ }
+ // TODO : Add implementation to apply new diffusion
+ mDiffusion = diffusion;
+ return RetCode::SUCCESS;
+ }
+ int getErDiffusion() const { return mDiffusion; }
+
+ RetCode setErDensity(int density) {
+ if (density < EnvironmentalReverb::MIN_DENSITY_PM ||
+ density > EnvironmentalReverb::MAX_DENSITY_PM) {
+ LOG(ERROR) << __func__ << " invalid density: " << density;
+ return RetCode::ERROR_ILLEGAL_PARAMETER;
+ }
+ // TODO : Add implementation to apply new density
+ mDensity = density;
+ return RetCode::SUCCESS;
+ }
+ int getErDensity() const { return mDensity; }
+
+ RetCode setErBypass(bool bypass) {
+ // TODO : Add implementation to apply new bypass
+ mBypass = bypass;
+ return RetCode::SUCCESS;
+ }
+ bool getErBypass() const { return mBypass; }
+
+ private:
+ int mRoomLevel = EnvironmentalReverb::MIN_ROOM_LEVEL_MB; // Default room level
+ int mRoomHfLevel = EnvironmentalReverb::MAX_ROOM_HF_LEVEL_MB; // Default room hf level
+ int mDecayTime = 1000; // Default decay time
+ int mDecayHfRatio = 500; // Default decay hf ratio
+ int mLevel = EnvironmentalReverb::MIN_LEVEL_MB; // Default level
+ int mDelay = 40; // Default delay
+ int mDiffusion = EnvironmentalReverb::MAX_DIFFUSION_PM; // Default diffusion
+ int mDensity = EnvironmentalReverb::MAX_DENSITY_PM; // Default density
+ bool mBypass = false; // Default bypass
};
class EnvReverbSw final : public EffectImpl {
@@ -60,7 +173,7 @@
private:
std::shared_ptr<EnvReverbSwContext> mContext;
- /* parameters */
- EnvironmentalReverb mSpecificParam;
+ ndk::ScopedAStatus getParameterEnvironmentalReverb(const EnvironmentalReverb::Tag& tag,
+ Parameter::Specific* specific);
};
} // namespace aidl::android::hardware::audio::effect