summaryrefslogtreecommitdiff
path: root/android/media/audiopolicy/AudioMixingRule.java
diff options
context:
space:
mode:
Diffstat (limited to 'android/media/audiopolicy/AudioMixingRule.java')
-rw-r--r--android/media/audiopolicy/AudioMixingRule.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/android/media/audiopolicy/AudioMixingRule.java b/android/media/audiopolicy/AudioMixingRule.java
index 5f127421..749a45e3 100644
--- a/android/media/audiopolicy/AudioMixingRule.java
+++ b/android/media/audiopolicy/AudioMixingRule.java
@@ -135,11 +135,42 @@ public class AudioMixingRule {
}
}
+ boolean isAffectingUsage(int usage) {
+ for (AudioMixMatchCriterion criterion : mCriteria) {
+ if ((criterion.mRule & RULE_MATCH_ATTRIBUTE_USAGE) != 0
+ && criterion.mAttr != null
+ && criterion.mAttr.getUsage() == usage) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static boolean areCriteriaEquivalent(ArrayList<AudioMixMatchCriterion> cr1,
+ ArrayList<AudioMixMatchCriterion> cr2) {
+ if (cr1 == null || cr2 == null) return false;
+ if (cr1 == cr2) return true;
+ if (cr1.size() != cr2.size()) return false;
+ //TODO iterate over rules to check they contain the same criterion
+ return (cr1.hashCode() == cr2.hashCode());
+ }
+
private final int mTargetMixType;
int getTargetMixType() { return mTargetMixType; }
private final ArrayList<AudioMixMatchCriterion> mCriteria;
ArrayList<AudioMixMatchCriterion> getCriteria() { return mCriteria; }
+ /** @hide */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ final AudioMixingRule that = (AudioMixingRule) o;
+ return (this.mTargetMixType == that.mTargetMixType)
+ && (areCriteriaEquivalent(this.mCriteria, that.mCriteria));
+ }
+
@Override
public int hashCode() {
return Objects.hash(mTargetMixType, mCriteria);