summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShunkai Yao <yaoshunkai@google.com>2024-02-16 00:17:22 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2024-02-16 00:17:22 +0000
commitee981910a7e6bc930408b76d8ff8163b2eb832c8 (patch)
treee93e2918c49035f8395a57e84565ba97cbc912ac
parent8b1e2fba501037f09637d4d0bf975b744d56f31b (diff)
parent76167db6a857119b7c4746f9a92827290f81bfa2 (diff)
downloadmedia-ee981910a7e6bc930408b76d8ff8163b2eb832c8.tar.gz
Merge "Add getRange util from effect capability definition" into main am: 76167db6a8temp_319669529
Original change: https://android-review.googlesource.com/c/platform/system/media/+/2959499 Change-Id: I1c97efb388f7590f843f8eb22dd58ac71ec2227f Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--audio/include/system/audio_effects/aidl_effects_utils.h36
1 files changed, 28 insertions, 8 deletions
diff --git a/audio/include/system/audio_effects/aidl_effects_utils.h b/audio/include/system/audio_effects/aidl_effects_utils.h
index e6583a18..bf8bec70 100644
--- a/audio/include/system/audio_effects/aidl_effects_utils.h
+++ b/audio/include/system/audio_effects/aidl_effects_utils.h
@@ -49,7 +49,7 @@ static constexpr uint32_t kEventFlagDataMqUpdate = 0x1 << 1;
* so this method return true.
*/
template <typename T, typename R>
-bool inRange(const T& target, const R& ranges) {
+static inline bool inRange(const T& target, const R& ranges) {
for (const auto& r : ranges) {
if (target.getTag() == r.min.getTag() &&
target.getTag() == r.max.getTag() &&
@@ -61,16 +61,36 @@ bool inRange(const T& target, const R& ranges) {
}
template <typename Range::Tag rangeTag, typename T>
-bool inRange(const T& target, const Capability& cap) {
+static inline bool inRange(const T& target, const Capability& cap) {
if (cap.range.getTag() == rangeTag) {
- const auto& ranges = cap.range.template get<rangeTag>();
- return inRange(target, ranges);
+ const auto& ranges = cap.range.template get<rangeTag>();
+ return inRange(target, ranges);
}
return true;
}
+/**
+ * Return the range pair (as defined in aidl::android::hardware::audio::effect::Range) of a
+ * parameter.
+ */
+template <typename Range::Tag RangeTag, typename R, typename T>
+static inline std::optional<R> getRange(const Capability& cap, T tag) {
+ if (cap.range.getTag() != RangeTag) {
+ return std::nullopt;
+ }
+
+ const auto& ranges = cap.range.template get<RangeTag>();
+ for (const auto& r : ranges) {
+ if (r.min.getTag() == tag && r.max.getTag() == tag) {
+ return r;
+ }
+ }
+
+ return std::nullopt;
+}
+
template <typename T, typename R>
-bool isRangeValid(const T& tag, const R& ranges) {
+static inline bool isRangeValid(const T& tag, const R& ranges) {
for (const auto& r : ranges) {
if (tag == r.min.getTag() && tag == r.max.getTag()) {
return r.min <= r.max;
@@ -81,10 +101,10 @@ bool isRangeValid(const T& tag, const R& ranges) {
}
template <typename Range::Tag rangeTag, typename T>
-bool isRangeValid(const T& paramTag, const Capability& cap) {
+static inline bool isRangeValid(const T& paramTag, const Capability& cap) {
if (cap.range.getTag() == rangeTag) {
- const auto& ranges = cap.range.template get<rangeTag>();
- return isRangeValid(paramTag, ranges);
+ const auto& ranges = cap.range.template get<rangeTag>();
+ return isRangeValid(paramTag, ranges);
}
return true;
}