diff options
author | Shunkai Yao <yaoshunkai@google.com> | 2024-02-16 00:17:22 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2024-02-16 00:17:22 +0000 |
commit | ee981910a7e6bc930408b76d8ff8163b2eb832c8 (patch) | |
tree | e93e2918c49035f8395a57e84565ba97cbc912ac | |
parent | 8b1e2fba501037f09637d4d0bf975b744d56f31b (diff) | |
parent | 76167db6a857119b7c4746f9a92827290f81bfa2 (diff) | |
download | media-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.h | 36 |
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; } |