mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 22:04:26 +00:00
Add audio stream and usage for virtual assistant
New stream type: AUDIO_STREAM_ASSISTANT This is intended to be used by a virtual assistant like Google Assistant, Bixby, etc. The audio stream has own volume alias and the volume does not change by volume changes of other streams. Bug: 123745215 Test: make Change-Id: I3696d8fba32070954cc6a330574af8507fea7a74
This commit is contained in:
committed by
Mikhail Naganov
parent
2a34cdb7ce
commit
3bc7741e91
@@ -361,6 +361,7 @@ package audio.policy.configuration.V6_0 {
|
||||
method public String getRawName();
|
||||
enum_constant public static final audio.policy.configuration.V6_0.Stream AUDIO_STREAM_ACCESSIBILITY;
|
||||
enum_constant public static final audio.policy.configuration.V6_0.Stream AUDIO_STREAM_ALARM;
|
||||
enum_constant public static final audio.policy.configuration.V6_0.Stream AUDIO_STREAM_ASSISTANT;
|
||||
enum_constant public static final audio.policy.configuration.V6_0.Stream AUDIO_STREAM_BLUETOOTH_SCO;
|
||||
enum_constant public static final audio.policy.configuration.V6_0.Stream AUDIO_STREAM_DTMF;
|
||||
enum_constant public static final audio.policy.configuration.V6_0.Stream AUDIO_STREAM_ENFORCED_AUDIBLE;
|
||||
|
||||
@@ -551,6 +551,7 @@
|
||||
<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:enumeration value="AUDIO_STREAM_REROUTING"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_PATCH"/>
|
||||
</xs:restriction>
|
||||
|
||||
@@ -106,6 +106,7 @@ enum AudioStreamType : int32_t {
|
||||
TTS = 9, // Transmitted Through Speaker. Plays over speaker
|
||||
// only, silent on other devices
|
||||
ACCESSIBILITY = 10, // For accessibility talk back prompts
|
||||
ASSISTANT = 11, // For virtual assistant service
|
||||
};
|
||||
|
||||
@export(name="audio_source_t", value_prefix="AUDIO_SOURCE_")
|
||||
|
||||
@@ -82,6 +82,7 @@ package audio.effects.V6_0 {
|
||||
public enum StreamOutputType {
|
||||
method public String getRawName();
|
||||
enum_constant public static final audio.effects.V6_0.StreamOutputType alarm;
|
||||
enum_constant public static final audio.effects.V6_0.StreamOutputType assistant;
|
||||
enum_constant public static final audio.effects.V6_0.StreamOutputType bluetooth_sco;
|
||||
enum_constant public static final audio.effects.V6_0.StreamOutputType dtmf;
|
||||
enum_constant public static final audio.effects.V6_0.StreamOutputType enforced_audible;
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../2.0/xml/audio_effects_conf.xsd
|
||||
230
audio/effect/6.0/xml/audio_effects_conf.xsd
Normal file
230
audio/effect/6.0/xml/audio_effects_conf.xsd
Normal file
@@ -0,0 +1,230 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2017 The Android Open Source Project
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="http://schemas.android.com/audio/audio_effects_conf/v2_0"
|
||||
xmlns:aec="http://schemas.android.com/audio/audio_effects_conf/v2_0"
|
||||
elementFormDefault="qualified">
|
||||
<!-- Simple types -->
|
||||
<xs:simpleType name="versionType">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:enumeration value="2.0"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="uuidType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="streamInputType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="mic"/>
|
||||
<xs:enumeration value="voice_uplink"/>
|
||||
<xs:enumeration value="voice_downlink"/>
|
||||
<xs:enumeration value="voice_call"/>
|
||||
<xs:enumeration value="camcorder"/>
|
||||
<xs:enumeration value="voice_recognition"/>
|
||||
<xs:enumeration value="voice_communication"/>
|
||||
<xs:enumeration value="unprocessed"/>
|
||||
<xs:enumeration value="voice_performance"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="streamOutputType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="voice_call"/>
|
||||
<xs:enumeration value="system"/>
|
||||
<xs:enumeration value="ring"/>
|
||||
<xs:enumeration value="music"/>
|
||||
<xs:enumeration value="alarm"/>
|
||||
<xs:enumeration value="notification"/>
|
||||
<xs:enumeration value="bluetooth_sco"/>
|
||||
<xs:enumeration value="enforced_audible"/>
|
||||
<xs:enumeration value="dtmf"/>
|
||||
<xs:enumeration value="tts"/>
|
||||
<xs:enumeration value="assistant"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="relativePathType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[^/].*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- Complex types -->
|
||||
<xs:complexType name="librariesType">
|
||||
<xs:annotation>
|
||||
<xs:documentation xml:lang="en">
|
||||
List of effect libraries to load. Each library element must have "name" and
|
||||
"path" attributes. The latter is giving the path of the library .so file
|
||||
relative to the standard effect folders: /(vendor|odm|system)/lib(64)?/soundfx/
|
||||
Example for a library in "/vendor/lib/soundfx/lib.so":
|
||||
<library name="name" path="lib.so"/>
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:sequence>
|
||||
<xs:element name="library" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="xs:string" use="required"/>
|
||||
<xs:attribute name="path" type="aec:relativePathType" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="effectImplType">
|
||||
<xs:attribute name="library" type="xs:string" use="required"/>
|
||||
<xs:attribute name="uuid" type="aec:uuidType" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="effectType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="aec:effectImplType">
|
||||
<xs:attribute name="name" type="xs:string" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="effectProxyType">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="aec:effectType">
|
||||
<xs:sequence>
|
||||
<xs:element name="libsw" type="aec:effectImplType"/>
|
||||
<xs:element name="libhw" type="aec:effectImplType"/>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="effectsType">
|
||||
<xs:annotation>
|
||||
<xs:documentation xml:lang="en">
|
||||
List of effects to load. Each effect element must contain "name",
|
||||
"library", and "uuid" attrs. The value of the "library" attr must
|
||||
correspond to the name of a "library" element. The name of the effect
|
||||
element is indicative, only the value of the "uuid" element designates
|
||||
the effect for the audio framework. The uuid is the implementation
|
||||
specific UUID as specified by the effect vendor. This is not the generic
|
||||
effect type UUID.
|
||||
For effect proxy implementations, SW and HW implemetations of the effect
|
||||
can be specified.
|
||||
Example:
|
||||
<effect name="name" library="lib" uuid="uuuu"/>
|
||||
<effectProxy name="proxied" library="proxy" uuid="xxxx">
|
||||
<libsw library="sw_bundle" uuid="yyyy"/>
|
||||
<libhw library="offload_bundle" uuid="zzzz"/>
|
||||
</effectProxy>
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:element name="effect" type="aec:effectType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="effectProxy" type="aec:effectProxyType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="streamProcessingType">
|
||||
<xs:sequence>
|
||||
<xs:element name="apply" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="effect" type="xs:string" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="streamPreprocessType">
|
||||
<xs:annotation>
|
||||
<xs:documentation xml:lang="en">
|
||||
Audio preprocessing configuration. The processing configuration consists
|
||||
of a list of elements each describing processing settings for a given
|
||||
input stream. Valid input stream types are listed in "streamInputType".
|
||||
Each stream element contains a list of "apply" elements. The value of the
|
||||
"effect" attr must correspond to the name of an "effect" element.
|
||||
Example:
|
||||
<stream type="voice_communication">
|
||||
<apply effect="effect1"/>
|
||||
<apply effect="effect2"/>
|
||||
</stream>
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="aec:streamProcessingType">
|
||||
<xs:attribute name="type" type="aec:streamInputType" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="streamPostprocessType">
|
||||
<xs:annotation>
|
||||
<xs:documentation xml:lang="en">
|
||||
Audio postprocessing configuration. The processing configuration consists
|
||||
of a list of elements each describing processing settings for a given
|
||||
output stream. Valid output stream types are listed in "streamOutputType".
|
||||
Each stream element contains a list of "apply" elements. The value of the
|
||||
"effect" attr must correspond to the name of an "effect" element.
|
||||
Example:
|
||||
<stream type="music">
|
||||
<apply effect="effect1"/>
|
||||
</stream>
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="aec:streamProcessingType">
|
||||
<xs:attribute name="type" type="aec:streamOutputType" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<!-- Root element -->
|
||||
<xs:element name="audio_effects_conf">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="libraries" type="aec:librariesType"/>
|
||||
<xs:element name="effects" type="aec:effectsType"/>
|
||||
<xs:element name="postprocess" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="stream" type="aec:streamPostprocessType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="preprocess" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="stream" type="aec:streamPreprocessType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="version" type="aec:versionType" use="required"/>
|
||||
</xs:complexType>
|
||||
<!-- Keys and references -->
|
||||
<xs:key name="libraryName">
|
||||
<xs:selector xpath="aec:libraries/aec:library"/>
|
||||
<xs:field xpath="@name"/>
|
||||
</xs:key>
|
||||
<xs:keyref name="libraryNameRef1" refer="aec:libraryName">
|
||||
<xs:selector xpath="aec:effects/aec:effect"/>
|
||||
<xs:field xpath="@library"/>
|
||||
</xs:keyref>
|
||||
<xs:keyref name="libraryNameRef2" refer="aec:libraryName">
|
||||
<xs:selector xpath="aec:effects/aec:effect/aec:libsw"/>
|
||||
<xs:field xpath="@library"/>
|
||||
</xs:keyref>
|
||||
<xs:keyref name="libraryNameRef3" refer="aec:libraryName">
|
||||
<xs:selector xpath="aec:effects/aec:effect/aec:libhw"/>
|
||||
<xs:field xpath="@library"/>
|
||||
</xs:keyref>
|
||||
<xs:key name="effectName">
|
||||
<xs:selector xpath="aec:effects/aec:effect|aec:effects/aec:effectProxy"/>
|
||||
<xs:field xpath="@name"/>
|
||||
</xs:key>
|
||||
<xs:keyref name="effectNamePreRef" refer="aec:effectName">
|
||||
<xs:selector xpath="aec:preprocess/aec:stream/aec:apply"/>
|
||||
<xs:field xpath="@effect"/>
|
||||
</xs:keyref>
|
||||
<xs:keyref name="effectNamePostRef" refer="aec:effectName">
|
||||
<xs:selector xpath="aec:postprocess/aec:stream/aec:apply"/>
|
||||
<xs:field xpath="@effect"/>
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
@@ -605,7 +605,7 @@ fd1f1b29f26b42e886220f04a08086c00e5ade9d7b53f095438e578ab9d42a93 android.hardwar
|
||||
2df5d5866b37776f25079c0e54b54350a2abe4e025a59c9e02a7d3abe8ca00e8 android.hardware.audio@6.0::IStreamIn
|
||||
78e4138cc8307c11fc777c3bd376e581ba4ba48196b05ca1d7cdfa515c87b48a android.hardware.audio@6.0::IStreamOut
|
||||
997fdaad7a9d17ee7e01feb7031a753e2365e72ad30b11d950e9183fabdf3844 android.hardware.audio@6.0::IStreamOutCallback
|
||||
1349686814402fa10f711cc5763bc629aafc64a5f5843b4b21b8cd86ffb923e6 android.hardware.audio.common@6.0::types
|
||||
8c4232772efeb9905b4c287723e0ee8b2c4bf5ba11728d051171b070e3d79144 android.hardware.audio.common@6.0::types
|
||||
817930d58412d662cb45e641c50cb62c727e4a3e3ffe7029a53cad9677b97d58 android.hardware.audio.effect@6.0::types
|
||||
525bec6b44f1103869c269a128d51b8dccd73af5340ba863c8886c68357c7faf android.hardware.audio.effect@6.0::IAcousticEchoCancelerEffect
|
||||
8d76bbe3719d051a8e9a1dcf9244f37f5b0a491feb249fa48391edf7cb4f3131 android.hardware.audio.effect@6.0::IAutomaticGainControlEffect
|
||||
|
||||
Reference in New Issue
Block a user