remove another duplicate

This commit is contained in:
SaschaNes
2025-08-13 00:58:54 +02:00
parent 9f87105940
commit dc8c5fa19e
6 changed files with 0 additions and 717 deletions

View File

@@ -1,6 +0,0 @@
xsd_config {
name: "audio_policy_engine_configuration",
srcs: ["audio_policy_engine_configuration.xsd"],
package_name: "audio.policy.engine.configuration",
nullability: true,
}

View File

@@ -1,302 +0,0 @@
// Signature format: 2.0
package audio.policy.engine.configuration {
public class AttributesGroup {
ctor public AttributesGroup();
method @Nullable public java.util.List<audio.policy.engine.configuration.AttributesType> getAttributes_optional();
method @Nullable public audio.policy.engine.configuration.BundleType getBundle_optional();
method @Nullable public audio.policy.engine.configuration.ContentTypeType getContentType_optional();
method @Nullable public audio.policy.engine.configuration.FlagsType getFlags_optional();
method @Nullable public audio.policy.engine.configuration.SourceType getSource_optional();
method @Nullable public audio.policy.engine.configuration.Stream getStreamType();
method @Nullable public audio.policy.engine.configuration.UsageType getUsage_optional();
method @Nullable public String getVolumeGroup();
method public void setBundle_optional(@Nullable audio.policy.engine.configuration.BundleType);
method public void setContentType_optional(@Nullable audio.policy.engine.configuration.ContentTypeType);
method public void setFlags_optional(@Nullable audio.policy.engine.configuration.FlagsType);
method public void setSource_optional(@Nullable audio.policy.engine.configuration.SourceType);
method public void setStreamType(@Nullable audio.policy.engine.configuration.Stream);
method public void setUsage_optional(@Nullable audio.policy.engine.configuration.UsageType);
method public void setVolumeGroup(@Nullable String);
}
public class AttributesRef {
ctor public AttributesRef();
method @Nullable public java.util.List<audio.policy.engine.configuration.AttributesRefType> getReference();
}
public class AttributesRefType {
ctor public AttributesRefType();
method @Nullable public audio.policy.engine.configuration.AttributesType getAttributes();
method @Nullable public String getName();
method public void setAttributes(@Nullable audio.policy.engine.configuration.AttributesType);
method public void setName(@Nullable String);
}
public class AttributesType {
ctor public AttributesType();
method @Nullable public String getAttributesRef();
method @Nullable public audio.policy.engine.configuration.BundleType getBundle();
method @Nullable public audio.policy.engine.configuration.ContentTypeType getContentType();
method @Nullable public audio.policy.engine.configuration.FlagsType getFlags();
method @Nullable public audio.policy.engine.configuration.SourceType getSource();
method @Nullable public audio.policy.engine.configuration.UsageType getUsage();
method public void setAttributesRef(@Nullable String);
method public void setBundle(@Nullable audio.policy.engine.configuration.BundleType);
method public void setContentType(@Nullable audio.policy.engine.configuration.ContentTypeType);
method public void setFlags(@Nullable audio.policy.engine.configuration.FlagsType);
method public void setSource(@Nullable audio.policy.engine.configuration.SourceType);
method public void setUsage(@Nullable audio.policy.engine.configuration.UsageType);
}
public class BundleType {
ctor public BundleType();
method @Nullable public String getKey();
method @Nullable public String getValue();
method public void setKey(@Nullable String);
method public void setValue(@Nullable String);
}
public class Configuration {
ctor public Configuration();
method @Nullable public java.util.List<audio.policy.engine.configuration.AttributesRef> getAttributesRef();
method @Nullable public java.util.List<audio.policy.engine.configuration.CriteriaType> getCriteria();
method @Nullable public java.util.List<audio.policy.engine.configuration.CriterionTypesType> getCriterion_types();
method @Nullable public java.util.List<audio.policy.engine.configuration.ProductStrategies> getProductStrategies();
method @Nullable public audio.policy.engine.configuration.Version getVersion();
method @Nullable public java.util.List<audio.policy.engine.configuration.VolumeGroupsType> getVolumeGroups();
method @Nullable public java.util.List<audio.policy.engine.configuration.VolumesType> getVolumes();
method public void setVersion(@Nullable audio.policy.engine.configuration.Version);
}
public enum ContentType {
method @NonNull public String getRawName();
enum_constant public static final audio.policy.engine.configuration.ContentType AUDIO_CONTENT_TYPE_MOVIE;
enum_constant public static final audio.policy.engine.configuration.ContentType AUDIO_CONTENT_TYPE_MUSIC;
enum_constant public static final audio.policy.engine.configuration.ContentType AUDIO_CONTENT_TYPE_SONIFICATION;
enum_constant public static final audio.policy.engine.configuration.ContentType AUDIO_CONTENT_TYPE_SPEECH;
enum_constant public static final audio.policy.engine.configuration.ContentType AUDIO_CONTENT_TYPE_UNKNOWN;
}
public class ContentTypeType {
ctor public ContentTypeType();
method @Nullable public audio.policy.engine.configuration.ContentType getValue();
method public void setValue(@Nullable audio.policy.engine.configuration.ContentType);
}
public class CriteriaType {
ctor public CriteriaType();
method @Nullable public java.util.List<audio.policy.engine.configuration.CriterionType> getCriterion();
}
public class CriterionType {
ctor public CriterionType();
method @Nullable public String getName();
method @Nullable public String getType();
method @Nullable public String get_default();
method public void setName(@Nullable String);
method public void setType(@Nullable String);
method public void set_default(@Nullable String);
}
public class CriterionTypeType {
ctor public CriterionTypeType();
method @Nullable public String getName();
method @Nullable public audio.policy.engine.configuration.PfwCriterionTypeEnum getType();
method @Nullable public audio.policy.engine.configuration.ValuesType getValues();
method public void setName(@Nullable String);
method public void setType(@Nullable audio.policy.engine.configuration.PfwCriterionTypeEnum);
method public void setValues(@Nullable audio.policy.engine.configuration.ValuesType);
}
public class CriterionTypesType {
ctor public CriterionTypesType();
method @Nullable public java.util.List<audio.policy.engine.configuration.CriterionTypeType> getCriterion_type();
}
public enum DeviceCategory {
method @NonNull public String getRawName();
enum_constant public static final audio.policy.engine.configuration.DeviceCategory DEVICE_CATEGORY_EARPIECE;
enum_constant public static final audio.policy.engine.configuration.DeviceCategory DEVICE_CATEGORY_EXT_MEDIA;
enum_constant public static final audio.policy.engine.configuration.DeviceCategory DEVICE_CATEGORY_HEADSET;
enum_constant public static final audio.policy.engine.configuration.DeviceCategory DEVICE_CATEGORY_HEARING_AID;
enum_constant public static final audio.policy.engine.configuration.DeviceCategory DEVICE_CATEGORY_SPEAKER;
}
public enum FlagType {
method @NonNull public String getRawName();
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_AUDIBILITY_ENFORCED;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_BEACON;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_BYPASS_INTERRUPTION_POLICY;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_BYPASS_MUTE;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_CAPTURE_PRIVATE;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_DEEP_BUFFER;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_HW_AV_SYNC;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_HW_HOTWORD;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_LOW_LATENCY;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_MUTE_HAPTIC;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_NONE;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_NO_MEDIA_PROJECTION;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_NO_SYSTEM_CAPTURE;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_SCO;
enum_constant public static final audio.policy.engine.configuration.FlagType AUDIO_FLAG_SECURE;
}
public class FlagsType {
ctor public FlagsType();
method @Nullable public java.util.List<audio.policy.engine.configuration.FlagType> getValue();
method public void setValue(@Nullable java.util.List<audio.policy.engine.configuration.FlagType>);
}
public enum PfwCriterionTypeEnum {
method @NonNull public String getRawName();
enum_constant public static final audio.policy.engine.configuration.PfwCriterionTypeEnum exclusive;
enum_constant public static final audio.policy.engine.configuration.PfwCriterionTypeEnum inclusive;
}
public class ProductStrategies {
ctor public ProductStrategies();
method @Nullable public java.util.List<audio.policy.engine.configuration.ProductStrategies.ProductStrategy> getProductStrategy();
}
public static class ProductStrategies.ProductStrategy {
ctor public ProductStrategies.ProductStrategy();
method @Nullable public java.util.List<audio.policy.engine.configuration.AttributesGroup> getAttributesGroup();
method @Nullable public String getName();
method public void setName(@Nullable String);
}
public enum SourceEnumType {
method @NonNull public String getRawName();
enum_constant public static final audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_CAMCORDER;
enum_constant public static final audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_DEFAULT;
enum_constant public static final audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_ECHO_REFERENCE;
enum_constant public static final audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_FM_TUNER;
enum_constant public static final audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_MIC;
enum_constant public static final audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_REMOTE_SUBMIX;
enum_constant public static final audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_UNPROCESSED;
enum_constant public static final audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_VOICE_CALL;
enum_constant public static final audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_VOICE_COMMUNICATION;
enum_constant public static final audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_VOICE_DOWNLINK;
enum_constant public static final audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_VOICE_PERFORMANCE;
enum_constant public static final audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_VOICE_RECOGNITION;
enum_constant public static final audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_VOICE_UPLINK;
}
public class SourceType {
ctor public SourceType();
method @Nullable public audio.policy.engine.configuration.SourceEnumType getValue();
method public void setValue(@Nullable audio.policy.engine.configuration.SourceEnumType);
}
public enum Stream {
method @NonNull public String getRawName();
enum_constant public static final audio.policy.engine.configuration.Stream AUDIO_STREAM_ACCESSIBILITY;
enum_constant public static final audio.policy.engine.configuration.Stream AUDIO_STREAM_ALARM;
enum_constant public static final audio.policy.engine.configuration.Stream AUDIO_STREAM_ASSISTANT;
enum_constant public static final audio.policy.engine.configuration.Stream AUDIO_STREAM_BLUETOOTH_SCO;
enum_constant public static final audio.policy.engine.configuration.Stream AUDIO_STREAM_DEFAULT;
enum_constant public static final audio.policy.engine.configuration.Stream AUDIO_STREAM_DTMF;
enum_constant public static final audio.policy.engine.configuration.Stream AUDIO_STREAM_ENFORCED_AUDIBLE;
enum_constant public static final audio.policy.engine.configuration.Stream AUDIO_STREAM_MUSIC;
enum_constant public static final audio.policy.engine.configuration.Stream AUDIO_STREAM_NOTIFICATION;
enum_constant public static final audio.policy.engine.configuration.Stream AUDIO_STREAM_RING;
enum_constant public static final audio.policy.engine.configuration.Stream AUDIO_STREAM_SYSTEM;
enum_constant public static final audio.policy.engine.configuration.Stream AUDIO_STREAM_TTS;
enum_constant public static final audio.policy.engine.configuration.Stream AUDIO_STREAM_VOICE_CALL;
}
public enum UsageEnumType {
method @NonNull public String getRawName();
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_ALARM;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_ASSISTANCE_SONIFICATION;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_ASSISTANT;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_CALL_ASSISTANT;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_GAME;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_MEDIA;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_NOTIFICATION;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_NOTIFICATION_EVENT;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_UNKNOWN;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_VIRTUAL_SOURCE;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_VOICE_COMMUNICATION;
enum_constant public static final audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING;
}
public class UsageType {
ctor public UsageType();
method @Nullable public audio.policy.engine.configuration.UsageEnumType getValue();
method public void setValue(@Nullable audio.policy.engine.configuration.UsageEnumType);
}
public class ValueType {
ctor public ValueType();
method @Nullable public String getAndroid_type();
method @Nullable public String getLiteral();
method @Nullable public long getNumerical();
method public void setAndroid_type(@Nullable String);
method public void setLiteral(@Nullable String);
method public void setNumerical(@Nullable long);
}
public class ValuesType {
ctor public ValuesType();
method @Nullable public java.util.List<audio.policy.engine.configuration.ValueType> getValue();
}
public enum Version {
method @NonNull public String getRawName();
enum_constant public static final audio.policy.engine.configuration.Version _1_0;
}
public class Volume {
ctor public Volume();
method @Nullable public audio.policy.engine.configuration.DeviceCategory getDeviceCategory();
method @Nullable public java.util.List<java.lang.String> getPoint();
method @Nullable public String getRef();
method public void setDeviceCategory(@Nullable audio.policy.engine.configuration.DeviceCategory);
method public void setRef(@Nullable String);
}
public class VolumeGroupsType {
ctor public VolumeGroupsType();
method @Nullable public java.util.List<audio.policy.engine.configuration.VolumeGroupsType.VolumeGroup> getVolumeGroup();
}
public static class VolumeGroupsType.VolumeGroup {
ctor public VolumeGroupsType.VolumeGroup();
method @Nullable public int getIndexMax();
method @Nullable public int getIndexMin();
method @Nullable public String getName();
method @Nullable public java.util.List<audio.policy.engine.configuration.Volume> getVolume();
method public void setIndexMax(@Nullable int);
method public void setIndexMin(@Nullable int);
method public void setName(@Nullable String);
}
public class VolumeRef {
ctor public VolumeRef();
method @Nullable public String getName();
method @Nullable public java.util.List<java.lang.String> getPoint();
method public void setName(@Nullable String);
}
public class VolumesType {
ctor public VolumesType();
method @Nullable public java.util.List<audio.policy.engine.configuration.VolumeRef> getReference();
}
public class XmlParser {
ctor public XmlParser();
method @Nullable public static audio.policy.engine.configuration.Configuration read(@NonNull java.io.InputStream) throws javax.xml.datatype.DatatypeConfigurationException, java.io.IOException, org.xmlpull.v1.XmlPullParserException;
method @Nullable public static String readText(@NonNull org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
method public static void skip(@NonNull org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
}
}

View File

@@ -1,408 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
SPDX-License-Identifier: BSD-3-Clause-Clear
-->
<xs:schema version="2.0"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- List the config versions supported by audio policy engine. -->
<xs:simpleType name="version">
<xs:restriction base="xs:decimal">
<xs:enumeration value="1.0"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="configuration">
<xs:complexType>
<xs:sequence>
<xs:element name="ProductStrategies" type="ProductStrategies" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="criterion_types" type="criterionTypesType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="criteria" type="criteriaType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="volumeGroups" type="volumeGroupsType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="volumes" type="volumesType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="attributesRef" type="attributesRef" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="version" type="version" use="required"/>
</xs:complexType>
<xs:key name="volumeCurveNameKey">
<xs:selector xpath="volumes/reference"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:keyref name="volumeCurveRef" refer="volumeCurveNameKey">
<xs:selector xpath="volumeGroups/volumeGroup"/>
<xs:field xpath="@ref"/>
</xs:keyref>
<xs:key name="attributesRefNameKey">
<xs:selector xpath="attributesRef/reference"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:keyref name="volumeGroupAttributesRef" refer="attributesRefNameKey">
<xs:selector xpath="volumeGroups/volumeGroup/volume"/>
<xs:field xpath="@attributesRef"/>
</xs:keyref>
<xs:keyref name="ProductStrategyAttributesRef" refer="attributesRefNameKey">
<xs:selector xpath="ProductStrategies/ProductStrategy/Attributes"/>
<xs:field xpath="@attributesRef"/>
</xs:keyref>
<xs:unique name="productStrategyNameUniqueness">
<xs:selector xpath="ProductStrategies/ProductStrategy"/>
<xs:field xpath="@name"/>
</xs:unique>
<!-- ensure validity of volume group referred in product strategy-->
<xs:key name="volumeGroupKey">
<xs:selector xpath="volumeGroups/volumeGroup/name"/>
<xs:field xpath="."/>
</xs:key>
<xs:keyref name="volumeGroupRef" refer="volumeGroupKey">
<xs:selector xpath="ProductStrategies/ProductStrategy/AttributesGroup"/>
<xs:field xpath="@volumeGroup"/>
</xs:keyref>
<xs:unique name="volumeTargetUniqueness">
<xs:selector xpath="volumeGroups/volumeGroup"/>
<xs:field xpath="@name"/>
<xs:field xpath="@deviceCategory"/>
</xs:unique>
<!-- ensure validity of criterion type referred in criterion-->
<xs:key name="criterionTypeKey">
<xs:selector xpath="criterion_types/criterion_type"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:keyref name="criterionTypeKeyRef" refer="criterionTypeKey">
<xs:selector xpath="criteria/criterion"/>
<xs:field xpath="@type"/>
</xs:keyref>
</xs:element>
<xs:complexType name="ProductStrategies">
<xs:annotation>
<xs:documentation xml:lang="en">
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="ProductStrategy" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="AttributesGroup" type="AttributesGroup" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AttributesGroup">
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="Attributes" type="AttributesType" minOccurs="1" maxOccurs="unbounded"/>
<xs:sequence>
<xs:element name="ContentType" type="ContentTypeType" minOccurs="0" maxOccurs="1"/>
<xs:element name="Usage" type="UsageType" minOccurs="1" maxOccurs="1"/>
<xs:element name="Source" type="SourceType" minOccurs="0" maxOccurs="1"/>
<xs:element name="Flags" type="FlagsType" minOccurs="0" maxOccurs="1"/>
<xs:element name="Bundle" type="BundleType" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
<xs:attribute name="streamType" type="stream" use="optional"/>
<xs:attribute name="volumeGroup" type="xs:string" use="optional"/>
</xs:complexType>
<xs:complexType name="volumeGroupsType">
<xs:sequence>
<xs:element name="volumeGroup" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:token"/>
<xs:element name="indexMin" type="xs:int" minOccurs="0" maxOccurs="1"/>
<xs:element name="indexMax" type="xs:int" minOccurs="0" maxOccurs="1"/>
<xs:element name="volume" type="volume" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="volumeAttributesUniqueness">
<xs:selector xpath="volume"/>
<xs:field xpath="deviceCategory"/>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="volumesType">
<xs:sequence>
<xs:element name="reference" type="volumeRef" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="attributesRef">
<xs:sequence>
<xs:element name="reference" type="attributesRefType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="criteriaType">
<xs:sequence>
<xs:element name="criterion" type="criterionType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="criterionType">
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="default" type="xs:string" use="optional"/>
</xs:complexType>
<xs:complexType name="criterionTypesType">
<xs:sequence>
<xs:element name="criterion_type" type="criterionTypeType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="criterionTypeType">
<xs:sequence>
<xs:element name="values" type="valuesType" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="name" type="xs:token" use="required"/>
<xs:attribute name="type" type="pfwCriterionTypeEnum" use="required"/>
</xs:complexType>
<xs:complexType name="valuesType">
<xs:sequence>
<xs:element name="value" type="valueType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="valueType">
<xs:attribute name="literal" type="xs:string" use="required"/>
<xs:attribute name="numerical" type="xs:long" use="required"/>
<xs:attribute name="android_type" type="longDecimalOrHexType" use="optional"/>
</xs:complexType>
<xs:simpleType name="longDecimalOrHexType">
<xs:union memberTypes="xs:long longHexType" />
</xs:simpleType>
<xs:simpleType name="longHexType">
<xs:restriction base="xs:string">
<xs:pattern value="0x[0-9A-Fa-f]{1,16}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="attributesRefType">
<xs:sequence>
<xs:element name="Attributes" type="AttributesType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="name" type="xs:token" use="required"/>
</xs:complexType>
<xs:complexType name="AttributesType">
<xs:sequence>
<xs:element name="ContentType" type="ContentTypeType" minOccurs="0" maxOccurs="1"/>
<xs:element name="Usage" type="UsageType" minOccurs="0" maxOccurs="1"/>
<xs:element name="Source" type="SourceType" minOccurs="0" maxOccurs="1"/>
<xs:element name="Flags" type="FlagsType" minOccurs="0" maxOccurs="1"/>
<xs:element name="Bundle" type="BundleType" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="attributesRef" type="xs:token" use="optional"/>
<!-- with xsd 1.1, it is impossible to make choice on either attributes or element...-->
</xs:complexType>
<xs:complexType name="ContentTypeType">
<xs:attribute name="value" type="contentType" use="required"/>
</xs:complexType>
<xs:complexType name="UsageType">
<xs:attribute name="value" type="usageEnumType" use="required"/>
</xs:complexType>
<xs:complexType name="SourceType">
<xs:attribute name="value" type="sourceEnumType" use="required"/>
</xs:complexType>
<xs:complexType name="FlagsType">
<xs:attribute name="value" type="flagsEnumType" use="required"/>
</xs:complexType>
<xs:complexType name="BundleType">
<xs:attribute name="key" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="volume">
<xs:annotation>
<xs:documentation xml:lang="en">
Volume section defines a volume curve for a given use case and device category.
It contains a list of points of this curve expressing the attenuation in Millibels
for a given volume index from 0 to 100.
<volume deviceCategory="DEVICE_CATEGORY_SPEAKER">
<point>0,-9600</point>
<point>100,0</point>
</volume>
It may also reference a reference/@name to avoid duplicating curves.
<volume deviceCategory="DEVICE_CATEGORY_SPEAKER" ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
<reference name="DEFAULT_MEDIA_VOLUME_CURVE">
<point>0,-9600</point>
<point>100,0</point>
</reference>
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="point" type="volumePoint" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="deviceCategory" type="deviceCategory"/>
<xs:attribute name="ref" type="xs:token" use="optional"/>
</xs:complexType>
<xs:complexType name="volumeRef">
<xs:sequence>
<xs:element name="point" type="volumePoint" minOccurs="2" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:token" use="required"/>
</xs:complexType>
<xs:simpleType name="volumePoint">
<xs:annotation>
<xs:documentation xml:lang="en">
Comma separated pair of number.
The fist one is the framework level (between 0 and 100).
The second one is the volume to send to the HAL.
The framework will interpolate volumes not specified.
Their MUST be at least 2 points specified.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="([0-9]{1,2}|100),-?[0-9]+"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="streamsCsv">
<xs:list>
<xs:simpleType>
<xs:restriction base="stream">
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<!-- Enum values of audio_stream_type_t in audio-base.h
TODO: avoid manual sync. -->
<xs:simpleType name="stream">
<xs:restriction base="xs:NMTOKEN">
<!--xs:pattern value="\c+(,\c+)*"/-->
<xs:enumeration value="AUDIO_STREAM_DEFAULT"/>
<xs:enumeration value="AUDIO_STREAM_VOICE_CALL"/>
<xs:enumeration value="AUDIO_STREAM_SYSTEM"/>
<xs:enumeration value="AUDIO_STREAM_RING"/>
<xs:enumeration value="AUDIO_STREAM_MUSIC"/>
<xs:enumeration value="AUDIO_STREAM_ALARM"/>
<xs:enumeration value="AUDIO_STREAM_NOTIFICATION"/>
<xs:enumeration value="AUDIO_STREAM_BLUETOOTH_SCO"/>
<xs:enumeration value="AUDIO_STREAM_ENFORCED_AUDIBLE"/>
<xs:enumeration value="AUDIO_STREAM_DTMF"/>
<xs:enumeration value="AUDIO_STREAM_TTS"/>
<xs:enumeration value="AUDIO_STREAM_ACCESSIBILITY"/>
<xs:enumeration value="AUDIO_STREAM_ASSISTANT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="deviceCategory">
<xs:restriction base="xs:string">
<xs:enumeration value="DEVICE_CATEGORY_HEADSET"/>
<xs:enumeration value="DEVICE_CATEGORY_SPEAKER"/>
<xs:enumeration value="DEVICE_CATEGORY_EARPIECE"/>
<xs:enumeration value="DEVICE_CATEGORY_EXT_MEDIA"/>
<xs:enumeration value="DEVICE_CATEGORY_HEARING_AID"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="contentType">
<xs:restriction base="xs:string">
<xs:enumeration value="AUDIO_CONTENT_TYPE_UNKNOWN"/>
<xs:enumeration value="AUDIO_CONTENT_TYPE_SPEECH"/>
<xs:enumeration value="AUDIO_CONTENT_TYPE_MUSIC"/>
<xs:enumeration value="AUDIO_CONTENT_TYPE_MOVIE"/>
<xs:enumeration value="AUDIO_CONTENT_TYPE_SONIFICATION"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="usageEnumType">
<xs:restriction base="xs:string">
<xs:enumeration value="AUDIO_USAGE_UNKNOWN"/>
<xs:enumeration value="AUDIO_USAGE_MEDIA"/>
<xs:enumeration value="AUDIO_USAGE_VOICE_COMMUNICATION"/>
<xs:enumeration value="AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING"/>
<xs:enumeration value="AUDIO_USAGE_ALARM"/>
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION"/>
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE"/>
<!-- Note: the following 3 values were deprecated in Android T (13) SDK -->
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST"/>
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT"/>
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED"/>
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION_EVENT"/>
<xs:enumeration value="AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY"/>
<xs:enumeration value="AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE"/>
<xs:enumeration value="AUDIO_USAGE_ASSISTANCE_SONIFICATION"/>
<xs:enumeration value="AUDIO_USAGE_GAME"/>
<xs:enumeration value="AUDIO_USAGE_VIRTUAL_SOURCE"/>
<xs:enumeration value="AUDIO_USAGE_ASSISTANT"/>
<xs:enumeration value="AUDIO_USAGE_CALL_ASSISTANT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="flagsEnumType">
<xs:list>
<xs:simpleType>
<xs:restriction base="flagType">
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<xs:simpleType name="flagType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="AUDIO_FLAG_NONE"/>
<xs:enumeration value="AUDIO_FLAG_AUDIBILITY_ENFORCED"/>
<xs:enumeration value="AUDIO_FLAG_SECURE"/>
<xs:enumeration value="AUDIO_FLAG_SCO"/>
<xs:enumeration value="AUDIO_FLAG_BEACON"/>
<xs:enumeration value="AUDIO_FLAG_HW_AV_SYNC"/>
<xs:enumeration value="AUDIO_FLAG_HW_HOTWORD"/>
<xs:enumeration value="AUDIO_FLAG_BYPASS_INTERRUPTION_POLICY"/>
<xs:enumeration value="AUDIO_FLAG_BYPASS_MUTE"/>
<xs:enumeration value="AUDIO_FLAG_LOW_LATENCY"/>
<xs:enumeration value="AUDIO_FLAG_DEEP_BUFFER"/>
<xs:enumeration value="AUDIO_FLAG_NO_MEDIA_PROJECTION"/>
<xs:enumeration value="AUDIO_FLAG_MUTE_HAPTIC"/>
<xs:enumeration value="AUDIO_FLAG_NO_SYSTEM_CAPTURE"/>
<xs:enumeration value="AUDIO_FLAG_CAPTURE_PRIVATE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="sourceEnumType">
<xs:restriction base="xs:string">
<xs:enumeration value="AUDIO_SOURCE_DEFAULT"/>
<xs:enumeration value="AUDIO_SOURCE_MIC"/>
<xs:enumeration value="AUDIO_SOURCE_VOICE_UPLINK"/>
<xs:enumeration value="AUDIO_SOURCE_VOICE_DOWNLINK"/>
<xs:enumeration value="AUDIO_SOURCE_VOICE_CALL"/>
<xs:enumeration value="AUDIO_SOURCE_CAMCORDER"/>
<xs:enumeration value="AUDIO_SOURCE_VOICE_RECOGNITION"/>
<xs:enumeration value="AUDIO_SOURCE_VOICE_COMMUNICATION"/>
<xs:enumeration value="AUDIO_SOURCE_REMOTE_SUBMIX"/>
<xs:enumeration value="AUDIO_SOURCE_UNPROCESSED"/>
<xs:enumeration value="AUDIO_SOURCE_VOICE_PERFORMANCE"/>
<xs:enumeration value="AUDIO_SOURCE_ECHO_REFERENCE"/>
<xs:enumeration value="AUDIO_SOURCE_FM_TUNER"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="pfwCriterionTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="inclusive"/>
<xs:enumeration value="exclusive"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>