diff options
Diffstat (limited to 'android/media/audiopolicy/AudioMixingRule.java')
-rw-r--r-- | android/media/audiopolicy/AudioMixingRule.java | 31 |
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); |