summaryrefslogtreecommitdiff
path: root/audio/aidl/default/visualizer/VisualizerSw.cpp
diff options
context:
space:
mode:
authorShunkai Yao <yaoshunkai@google.com>2023-02-13 17:40:37 +0000
committerShunkai Yao <yaoshunkai@google.com>2023-02-14 20:39:22 +0000
commit8781102d747d597e93e8d504e39c50eb88e635a0 (patch)
tree01d7cc1f55ac93dedd505945dac2b95c6086afde /audio/aidl/default/visualizer/VisualizerSw.cpp
parent376dbd96d3fce7e4dd0856fd76bc8aca65c9a345 (diff)
Effect AIDL: Refactor effect capability with Range implementation
Bug: 258124419 Test: atest --test-mapping hardware/interfaces/audio/aidl/vts:presubmit Change-Id: Ie76270e91471a30f7dda1883c510cd318745855f
Diffstat (limited to 'audio/aidl/default/visualizer/VisualizerSw.cpp')
-rw-r--r--audio/aidl/default/visualizer/VisualizerSw.cpp99
1 files changed, 27 insertions, 72 deletions
diff --git a/audio/aidl/default/visualizer/VisualizerSw.cpp b/audio/aidl/default/visualizer/VisualizerSw.cpp
index 614988c44e..deb3204a06 100644
--- a/audio/aidl/default/visualizer/VisualizerSw.cpp
+++ b/audio/aidl/default/visualizer/VisualizerSw.cpp
@@ -55,12 +55,15 @@ extern "C" binder_exception_t queryEffect(const AudioUuid* in_impl_uuid, Descrip
namespace aidl::android::hardware::audio::effect {
const std::string VisualizerSw::kEffectName = "VisualizerSw";
+
/* capabilities */
-const Visualizer::CaptureSamplesRange VisualizerSwContext::kCaptureSamplesRange = {
- VisualizerSwContext::kMinCaptureSize, VisualizerSwContext::kMaxCaptureSize};
-const Visualizer::Capability VisualizerSw::kCapability = {
- .maxLatencyMs = VisualizerSwContext::kMaxLatencyMs,
- .captureSampleRange = VisualizerSwContext::kCaptureSamplesRange};
+const std::vector<Range::VisualizerRange> VisualizerSw::kRanges = {
+ MAKE_RANGE(Visualizer, latencyMs, 0, VisualizerSwContext::kMaxLatencyMs),
+ MAKE_RANGE(Visualizer, captureSamples, VisualizerSwContext::kMinCaptureSize,
+ VisualizerSwContext::kMaxCaptureSize)};
+
+const Capability VisualizerSw::kCapability = {
+ .range = Range::make<Range::visualizer>(VisualizerSw::kRanges)};
const Descriptor VisualizerSw::kDescriptor = {
.common = {.id = {.type = kVisualizerTypeUUID,
@@ -71,7 +74,7 @@ const Descriptor VisualizerSw::kDescriptor = {
.volume = Flags::Volume::CTRL},
.name = VisualizerSw::kEffectName,
.implementor = "The Android Open Source Project"},
- .capability = Capability::make<Capability::visualizer>(VisualizerSw::kCapability)};
+ .capability = VisualizerSw::kCapability};
ndk::ScopedAStatus VisualizerSw::getDescriptor(Descriptor* _aidl_return) {
LOG(DEBUG) << __func__ << kDescriptor.toString();
@@ -84,34 +87,33 @@ ndk::ScopedAStatus VisualizerSw::setParameterSpecific(const Parameter::Specific&
"EffectNotSupported");
auto& vsParam = specific.get<Parameter::Specific::visualizer>();
+ RETURN_IF(!inRange(vsParam, kRanges), EX_ILLEGAL_ARGUMENT, "outOfRange");
auto tag = vsParam.getTag();
switch (tag) {
case Visualizer::captureSamples: {
RETURN_IF(mContext->setVsCaptureSize(vsParam.get<Visualizer::captureSamples>()) !=
RetCode::SUCCESS,
- EX_ILLEGAL_ARGUMENT, "captureSizeNotSupported");
+ EX_ILLEGAL_ARGUMENT, "setCaptureSizeFailed");
return ndk::ScopedAStatus::ok();
}
case Visualizer::scalingMode: {
RETURN_IF(mContext->setVsScalingMode(vsParam.get<Visualizer::scalingMode>()) !=
RetCode::SUCCESS,
- EX_ILLEGAL_ARGUMENT, "scalingModeNotSupported");
+ EX_ILLEGAL_ARGUMENT, "setScalingModeFailed");
return ndk::ScopedAStatus::ok();
}
case Visualizer::measurementMode: {
RETURN_IF(mContext->setVsMeasurementMode(vsParam.get<Visualizer::measurementMode>()) !=
RetCode::SUCCESS,
- EX_ILLEGAL_ARGUMENT, "measurementModeNotSupported");
+ EX_ILLEGAL_ARGUMENT, "setMeasurementModeFailed");
return ndk::ScopedAStatus::ok();
}
- case Visualizer::setOnlyParameters: {
- return setSetOnlyParameterVisualizer(vsParam.get<Visualizer::setOnlyParameters>());
- }
- case Visualizer::getOnlyParameters: {
- LOG(ERROR) << __func__ << " unsupported settable getOnlyParam";
- return ndk::ScopedAStatus::fromExceptionCodeWithMessage(
- EX_ILLEGAL_ARGUMENT, "SetofGetOnlyParamsNotSupported");
+ case Visualizer::latencyMs: {
+ RETURN_IF(mContext->setVsLatency(vsParam.get<Visualizer::latencyMs>()) !=
+ RetCode::SUCCESS,
+ EX_ILLEGAL_ARGUMENT, "setLatencyFailed");
+ return ndk::ScopedAStatus::ok();
}
default: {
LOG(ERROR) << __func__ << " unsupported tag: " << toString(tag);
@@ -121,18 +123,6 @@ ndk::ScopedAStatus VisualizerSw::setParameterSpecific(const Parameter::Specific&
}
}
-ndk::ScopedAStatus VisualizerSw::setSetOnlyParameterVisualizer(
- Visualizer::SetOnlyParameters setOnlyParam) {
- auto tag = setOnlyParam.getTag();
- RETURN_IF(Visualizer::SetOnlyParameters::latencyMs != tag, EX_ILLEGAL_ARGUMENT,
- "SetOnlyParametersTagNotSupported");
- RETURN_IF(
- mContext->setVsLatency(setOnlyParam.get<Visualizer::SetOnlyParameters::latencyMs>()) !=
- RetCode::SUCCESS,
- EX_ILLEGAL_ARGUMENT, "latencyNotSupported");
- return ndk::ScopedAStatus::ok();
-}
-
ndk::ScopedAStatus VisualizerSw::getParameterSpecific(const Parameter::Id& id,
Parameter::Specific* specific) {
auto tag = id.getTag();
@@ -142,14 +132,6 @@ ndk::ScopedAStatus VisualizerSw::getParameterSpecific(const Parameter::Id& id,
switch (vsIdTag) {
case Visualizer::Id::commonTag:
return getParameterVisualizer(vsId.get<Visualizer::Id::commonTag>(), specific);
- case Visualizer::Id::getOnlyParamTag:
- return getGetOnlyParameterVisualizer(vsId.get<Visualizer::Id::getOnlyParamTag>(),
- specific);
- case Visualizer::Id::setOnlyParamTag: {
- LOG(ERROR) << __func__ << " unsupported gettable setOnlyParam";
- return ndk::ScopedAStatus::fromExceptionCodeWithMessage(
- EX_ILLEGAL_ARGUMENT, "GetofSetOnlyParamsNotSupported");
- }
default:
LOG(ERROR) << __func__ << " unsupported tag: " << toString(tag);
return ndk::ScopedAStatus::fromExceptionCodeWithMessage(EX_ILLEGAL_ARGUMENT,
@@ -174,38 +156,24 @@ ndk::ScopedAStatus VisualizerSw::getParameterVisualizer(const Visualizer::Tag& t
vsParam.set<Visualizer::measurementMode>(mContext->getVsMeasurementMode());
break;
}
- default: {
- LOG(ERROR) << __func__ << " unsupported tag: " << toString(tag);
- return ndk::ScopedAStatus::fromExceptionCodeWithMessage(EX_ILLEGAL_ARGUMENT,
- "VisualizerTagNotSupported");
+ case Visualizer::measurement: {
+ vsParam.set<Visualizer::measurement>(mContext->getVsMeasurement());
+ break;
}
- }
- specific->set<Parameter::Specific::visualizer>(vsParam);
- return ndk::ScopedAStatus::ok();
-}
-
-ndk::ScopedAStatus VisualizerSw::getGetOnlyParameterVisualizer(
- const Visualizer::GetOnlyParameters::Tag& tag, Parameter::Specific* specific) {
- Visualizer::GetOnlyParameters getOnlyParam;
- switch (tag) {
- case Visualizer::GetOnlyParameters::measurement: {
- getOnlyParam.set<Visualizer::GetOnlyParameters::measurement>(
- mContext->getVsMeasurement());
+ case Visualizer::captureSampleBuffer: {
+ vsParam.set<Visualizer::captureSampleBuffer>(mContext->getVsCaptureSampleBuffer());
break;
}
- case Visualizer::GetOnlyParameters::captureSampleBuffer: {
- getOnlyParam.set<Visualizer::GetOnlyParameters::captureSampleBuffer>(
- mContext->getVsCaptureSampleBuffer());
+ case Visualizer::latencyMs: {
+ vsParam.set<Visualizer::latencyMs>(mContext->getVsLatency());
break;
}
default: {
LOG(ERROR) << __func__ << " unsupported tag: " << toString(tag);
- return ndk::ScopedAStatus::fromExceptionCodeWithMessage(
- EX_ILLEGAL_ARGUMENT, "GetOnlyParameterTagNotSupported");
+ return ndk::ScopedAStatus::fromExceptionCodeWithMessage(EX_ILLEGAL_ARGUMENT,
+ "VisualizerTagNotSupported");
}
}
- Visualizer vsParam;
- vsParam.set<Visualizer::getOnlyParameters>(getOnlyParam);
specific->set<Parameter::Specific::visualizer>(vsParam);
return ndk::ScopedAStatus::ok();
}
@@ -242,34 +210,21 @@ IEffect::Status VisualizerSw::effectProcessImpl(float* in, float* out, int sampl
}
RetCode VisualizerSwContext::setVsCaptureSize(int captureSize) {
- if (captureSize < VisualizerSw::kCapability.captureSampleRange.min ||
- captureSize > VisualizerSw::kCapability.captureSampleRange.max) {
- LOG(ERROR) << __func__ << " invalid captureSize " << captureSize;
- return RetCode::ERROR_ILLEGAL_PARAMETER;
- }
- // TODO : Add implementation to apply new captureSize
mCaptureSize = captureSize;
return RetCode::SUCCESS;
}
RetCode VisualizerSwContext::setVsScalingMode(Visualizer::ScalingMode scalingMode) {
- // TODO : Add implementation to apply new scalingMode
mScalingMode = scalingMode;
return RetCode::SUCCESS;
}
RetCode VisualizerSwContext::setVsMeasurementMode(Visualizer::MeasurementMode measurementMode) {
- // TODO : Add implementation to apply new measurementMode
mMeasurementMode = measurementMode;
return RetCode::SUCCESS;
}
RetCode VisualizerSwContext::setVsLatency(int latency) {
- if (latency < 0 || latency > VisualizerSw::kCapability.maxLatencyMs) {
- LOG(ERROR) << __func__ << " invalid latency " << latency;
- return RetCode::ERROR_ILLEGAL_PARAMETER;
- }
- // TODO : Add implementation to modify latency
mLatency = latency;
return RetCode::SUCCESS;
}