[AIDL CTS] pass EnvReverb implementation cts

Bug: 270158223
Test: atest android.media.audio.cts.EnvReverbTest
Change-Id: Ie7fcc2d65a8daaef5d7a76cc6ca3ec6e13d4b547
This commit is contained in:
Shunkai Yao
2023-02-21 18:02:10 +00:00
parent 5283f81f64
commit 2ddafc227b
4 changed files with 48 additions and 1 deletions

View File

@@ -39,6 +39,8 @@ union EnvironmentalReverb {
int roomHfLevelMb;
int decayTimeMs;
int decayHfRatioPm;
int reflectionsLevelMb;
int reflectionsDelayMs;
int levelMb;
int delayMs;
int diffusionPm;

View File

@@ -58,6 +58,14 @@ union EnvironmentalReverb {
* HF decay ratio in permilles.
*/
int decayHfRatioPm;
/**
* Reverb reflections level in millibels.
*/
int reflectionsLevelMb;
/**
* Reverb reflections delay in milliseconds.
*/
int reflectionsDelayMs;
/**
* Reverb level in millibels.
*/

View File

@@ -66,6 +66,8 @@ const std::vector<Range::EnvironmentalReverbRange> EnvReverbSw::kRanges = {
MAKE_RANGE(EnvironmentalReverb, roomHfLevelMb, -4000, 0),
MAKE_RANGE(EnvironmentalReverb, decayTimeMs, 0, 7000),
MAKE_RANGE(EnvironmentalReverb, decayHfRatioPm, 100, 2000),
MAKE_RANGE(EnvironmentalReverb, reflectionsLevelMb, -6000, 0),
MAKE_RANGE(EnvironmentalReverb, reflectionsDelayMs, 0, 65),
MAKE_RANGE(EnvironmentalReverb, levelMb, -6000, 0),
MAKE_RANGE(EnvironmentalReverb, delayMs, 0, 65),
MAKE_RANGE(EnvironmentalReverb, diffusionPm, 0, 1000),
@@ -125,6 +127,20 @@ ndk::ScopedAStatus EnvReverbSw::setParameterSpecific(const Parameter::Specific&
EX_ILLEGAL_ARGUMENT, "setDecayHfRatioFailed");
return ndk::ScopedAStatus::ok();
}
case EnvironmentalReverb::reflectionsLevelMb: {
RETURN_IF(mContext->setErReflectionsLevel(
erParam.get<EnvironmentalReverb::reflectionsLevelMb>()) !=
RetCode::SUCCESS,
EX_ILLEGAL_ARGUMENT, "setReflectionsLevelFailed");
return ndk::ScopedAStatus::ok();
}
case EnvironmentalReverb::reflectionsDelayMs: {
RETURN_IF(mContext->setErReflectionsDelay(
erParam.get<EnvironmentalReverb::reflectionsDelayMs>()) !=
RetCode::SUCCESS,
EX_ILLEGAL_ARGUMENT, "setReflectionsDelayFailed");
return ndk::ScopedAStatus::ok();
}
case EnvironmentalReverb::levelMb: {
RETURN_IF(mContext->setErLevel(erParam.get<EnvironmentalReverb::levelMb>()) !=
RetCode::SUCCESS,
@@ -201,6 +217,14 @@ ndk::ScopedAStatus EnvReverbSw::getParameterEnvironmentalReverb(const Environmen
erParam.set<EnvironmentalReverb::decayHfRatioPm>(mContext->getErDecayHfRatio());
break;
}
case EnvironmentalReverb::reflectionsLevelMb: {
erParam.set<EnvironmentalReverb::reflectionsLevelMb>(mContext->getErReflectionsLevel());
break;
}
case EnvironmentalReverb::reflectionsDelayMs: {
erParam.set<EnvironmentalReverb::reflectionsDelayMs>(mContext->getErReflectionsDelay());
break;
}
case EnvironmentalReverb::levelMb: {
erParam.set<EnvironmentalReverb::levelMb>(mContext->getErLevel());
break;

View File

@@ -58,12 +58,23 @@ class EnvReverbSwContext final : public EffectContext {
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; }
RetCode setErReflectionsDelay(int delay) {
mReflectionsDelayMs = delay;
return RetCode::SUCCESS;
}
bool getErReflectionsDelay() const { return mReflectionsDelayMs; }
RetCode setErReflectionsLevel(int level) {
mReflectionsLevelMb = level;
return RetCode::SUCCESS;
}
bool getErReflectionsLevel() const { return mReflectionsLevelMb; }
private:
int mRoomLevel = -6000; // Default room level
int mRoomHfLevel = 0; // Default room hf level
@@ -71,6 +82,8 @@ class EnvReverbSwContext final : public EffectContext {
int mDecayHfRatio = 500; // Default decay hf ratio
int mLevel = -6000; // Default level
int mDelay = 40; // Default delay
int mReflectionsLevelMb = 0;
int mReflectionsDelayMs = 0;
int mDiffusion = 1000; // Default diffusion
int mDensity = 1000; // Default density
bool mBypass = false; // Default bypass