• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="UTF-8"?>
2<audio_effects_conf version="2.0" xmlns="http://schemas.android.com/audio/audio_effects_conf/v2_0">
3    <!-- Overview.
4         This example config file was copy from existing one: frameworks/av/media/libeffects/data/
5         audio_effects.xml, with effect library names updated to AIDL libraries we currently have.
6
7         All "library" attributes in "effect" element must must match a "library" element with the
8         same value of the "name" attribute.
9         All "effect" attributes in "preprocess" and "postprocess" element must match an "effect"
10         element with the same value of the "name" attribute.
11
12         AIDL EffectFactory are relying on the "name" attribute in "effect" element to identify the
13         effect type, so it's necessary to have the mapping from name to effect type UUID. Make
14         sure to either use existing effect name as key of
15         ::android::hardware::audio::effect::kUuidNameTypeMap, or add a new {name, typeUUID} map
16         item to the kUuidNameTypeMap.
17
18         Existing audio_effects.xml should working without any change as long as:
19         1. "path" attribute of "library" element matches with the actual effect library name.
20         2. "name" attribute of "effect" and "effectProxy" element correctly added as key of
21            kUuidNameTypeMap, with value matches Identity.type in Descriptor.aidl.
22         3. "uuid" attribute of "effect" element matches Identity.uuid in Descriptor.aidl.
23         4. "uuid" attribute of "effectProxy" element matches Identity.proxy in Descriptor.aidl.
24    -->
25
26    <!-- List of effect libraries to load.
27         Each library element must contain a "name" attribute and a "path" attribute giving the
28         name of a library .so file on the target device.
29    -->
30    <libraries>
31        <library name="aecsw" path="libaecsw.so"/>
32        <library name="agc1sw" path="libagc1sw.so"/>
33        <library name="agc2sw" path="libagc2sw.so"/>
34        <library name="bassboostsw" path="libbassboostsw.so"/>
35        <library name="bundle" path="libbundleaidl.so"/>
36        <library name="downmix" path="libdownmixaidl.so"/>
37        <library name="dynamics_processing" path="libdynamicsprocessingaidl.so"/>
38        <library name="equalizersw" path="libequalizersw.so"/>
39        <library name="haptic_generator" path="libhapticgeneratoraidl.so"/>
40        <library name="loudness_enhancer" path="libloudnessenhanceraidl.so"/>
41        <library name="nssw" path="libnssw.so"/>
42        <library name="env_reverbsw" path="libenvreverbsw.so"/>
43        <library name="pre_processing" path="libpreprocessingaidl.so"/>
44        <library name="preset_reverbsw" path="libpresetreverbsw.so"/>
45        <library name="reverb" path="libreverbaidl.so"/>
46        <library name="virtualizersw" path="libvirtualizersw.so"/>
47        <library name="visualizer" path="libvisualizeraidl.so"/>
48        <library name="volumesw" path="libvolumesw.so"/>
49        <library name="extensioneffect" path="libextensioneffect.so"/>
50    </libraries>
51
52    <!-- list of effects to load.
53         Each "effect" element must contain a "name", "library" and a "uuid" attribute, an optional
54         "type" attribute can be used to add any customized effect type.
55         The value of the "library" attribute must correspond to the name of one library element in
56         the "libraries" element.
57         The "name" attribute used to specific effect type, and should be mapping to a key of
58         aidl::android::hardware::audio::effect::kUuidNameTypeMap.
59         The "uuid" attribute is the implementation specific UUID as specified by the effect vendor.
60
61         Effect proxy can be supported with "effectProxy" element, each sub-element should contain
62         "library" and "uuid" attribute, all other attributes were ignored. Framework side use
63         result of IFactory.queryEffects() to decide which effect implementation should be part of
64         proxy and which not.
65
66         Only "name", "library", "uuid", and "type" attributes in "effects" element are meaningful
67          and parsed out by EffectConfig class, all other attributes are ignored.
68         Only "name" and "uuid" attributes in "effectProxy" element are meaningful and parsed out
69         by EffectConfig class, all other attributes are ignored.
70    -->
71
72    <effects>
73        <effect name="automatic_gain_control_v2" library="pre_processing" uuid="89f38e65-d4d2-4d64-ad0e-2b3e799ea886"/>
74        <effectProxy name="bassboost" uuid="14804144-a5ee-4d24-aa88-0002a5d5c51b">
75            <libsw library="bassboostsw" uuid="fa8181f2-588b-11ed-9b6a-0242ac120002"/>
76            <libsw library="bundle" uuid="8631f300-72e2-11df-b57e-0002a5d5c51b"/>
77        </effectProxy>
78        <effect name="downmix" library="downmix" uuid="93f04452-e4fe-41cc-91f9-e475b6d1d69f"/>
79        <effect name="dynamics_processing" library="dynamics_processing" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
80        <effect name="haptic_generator" library="haptic_generator" uuid="97c4acd1-8b82-4f2f-832e-c2fe5d7a9931"/>
81        <effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/>
82        <effect name="env_reverb" library="env_reverbsw" uuid="fa819886-588b-11ed-9b6a-0242ac120002"/>
83        <effect name="preset_reverb" library="preset_reverbsw" uuid="fa8199c6-588b-11ed-9b6a-0242ac120002"/>
84        <effect name="reverb_env_aux" library="reverb" uuid="4a387fc0-8ab3-11df-8bad-0002a5d5c51b"/>
85        <effect name="reverb_env_ins" library="reverb" uuid="c7a511a0-a3bb-11df-860e-0002a5d5c51b"/>
86        <effect name="reverb_pre_aux" library="reverb" uuid="f29a1400-a3bb-11df-8ddc-0002a5d5c51b"/>
87        <effect name="reverb_pre_ins" library="reverb" uuid="172cdf00-a3bc-11df-a72f-0002a5d5c51b"/>
88        <effectProxy name="virtualizer" uuid="d3467faa-acc7-4d34-acaf-0002a5d5c51b">
89            <libsw library="virtualizersw" uuid="fa819d86-588b-11ed-9b6a-0242ac120002"/>
90            <libsw library="bundle" uuid="1d4033c0-8557-11df-9f2d-0002a5d5c51b"/>
91        </effectProxy>
92        <effect name="visualizer" library="visualizer" uuid="d069d9e0-8329-11df-9168-0002a5d5c51b"/>
93        <effect name="volume" library="bundle" uuid="119341a0-8469-11df-81f9-0002a5d5c51b"/>
94        <effectProxy name="equalizer" uuid="c8e70ecd-48ca-456e-8a4f-0002a5d5c51b">
95            <libsw library="equalizersw" uuid="0bed4300-847d-11df-bb17-0002a5d5c51b"/>
96            <libsw library="bundle" uuid="ce772f20-847d-11df-bb17-0002a5d5c51b"/>
97        </effectProxy>
98        <effect name="extension_effect" library="extensioneffect" uuid="fa81dd00-588b-11ed-9b6a-0242ac120002" type="fa81de0e-588b-11ed-9b6a-0242ac120002"/>
99        <effect name="acoustic_echo_canceler" library="aecsw" uuid="bb392ec0-8d4d-11e0-a896-0002a5d5c51b"/>
100        <effect name="noise_suppression" library="nssw" uuid="c06c8400-8e06-11e0-9cb6-0002a5d5c51b"/>
101    </effects>
102
103    <preprocess>
104        <stream type="voice_communication">
105            <apply effect="acoustic_echo_canceler"/>
106            <apply effect="noise_suppression"/>
107        </stream>
108    </preprocess>
109
110    <!-- Audio pre processor configurations.
111         The pre processor configuration is described in a "preprocess" element and consists in a
112         list of elements each describing pre processor settings for a given use case or "stream".
113         Each stream element has a "type" attribute corresponding to the input source used.
114         Valid types are these defined in system/hardware/interfaces/media/aidl/android/media/audio/
115         common/AudioSource.aidl.
116         Each "stream" element contains a list of "apply" elements indicating one effect to apply.
117         The effect to apply is designated by its name in the "effects" elements.
118         If there are more than one effect apply to one stream, the audio framework will apply them
119         in the same equence as they listed in "stream" element.
120
121        <preprocess>
122            <stream type="voice_communication">
123                <apply effect="aec"/>
124                <apply effect="ns"/>
125            </stream>
126        </preprocess>
127    -->
128
129    <!-- Audio post processor configurations.
130         The post processor configuration is described in a "postprocess" element and consists in a
131         list of elements each describing post processor settings for a given use case or "stream".
132         Each stream element has a "type" attribute corresponding to the stream type used.
133         Valid types are these defined in system/hardware/interfaces/media/aidl/android/media/audio/
134         common/AudioStreamType.aidl.
135         Each "stream" element contains a list of "apply" elements indicating one effect to apply.
136         The effect to apply is designated by its name in the "effects" elements.
137         If there are more than one effect apply to one stream, the audio framework will apply them
138         in the same equence as they listed in "stream" element.
139
140        <postprocess>
141            <stream type="music">
142                <apply effect="music_post_proc"/>
143            </stream>
144            <stream type="voice_call">
145                <apply effect="voice_post_proc"/>
146            </stream>
147            <stream type="notification">
148                <apply effect="notification_post_proc"/>
149            </stream>
150        </postprocess>
151    -->
152
153</audio_effects_conf>
154