<?xml version="1.0" encoding="UTF-8"?>
<audio_effects_conf version="2.0" xmlns="http://schemas.android.com/audio/audio_effects_conf/v2_0">
    <!-- List of effect libraries to load.
         Each library element must contain a "name" attribute and a "path" attribute giving the
         name of a library .so file in /vendor/lib/soundfx on the target

         If offloadable effects are present, the AOSP library libeffectproxy.so must be listed as
         well as one library for the SW implementation and one library for the DSP implementation:
         <library name="proxy" path="libeffectproxy.so"/>
         <library name="some_fx_sw" path="lib_some_fx_sw.so"/>
         <library name="some_fx_hw" path="lib_some_fx_hw.so"/>

         If the audio HAL implements support for AOSP software audio pre-processing effects,
         the following library must be added:
         <library name="pre_processing" path="libaudiopreprocessing.so"/>
    -->
    <libraries>
        <library name="bundle" path="libbundlewrapper.so"/>
        <library name="reverb" path="libreverbwrapper.so"/>
        <library name="visualizer" path="libvisualizer.so"/>
        <library name="downmix" path="libdownmix.so"/>
        <library name="loudness_enhancer" path="libldnhncr.so"/>
        <library name="dynamics_processing" path="libdynproc.so"/>
        <library name="pre_processing" path="libaudiopreprocessing.so" />
    </libraries>

    <!-- list of effects to load.
         Each "effect" element must contain a "name", "library" and a "uuid" attribute.
         The value of the "library" element must correspond to the name of one library element in
         the "libraries" element.
         The "name" attribute is indicative, only the value of the "uuid" attribute designates
         the effect.
         The uuid is the implementation specific UUID as specified by the effect vendor. This is not
         the generic effect type UUID.

         Offloadable effects are described by an "effectProxy" element which contains one "libsw"
         element containing the "uuid" and "library" for the SW implementation and one "libhw"
         element containing the "uuid" and "library" for the DSP implementation.
         The "uuid" value for the "effectProxy" element must be unique and will override the default
         uuid in the AOSP proxy effect implementation.

         If the audio HAL implements support for AOSP software audio pre-processing effects,
         the following effects can be added:
         <effect name="agc" library="pre_processing" uuid="aa8130e0-66fc-11e0-bad0-0002a5d5c51b"/>
         <effect name="aec" library="pre_processing" uuid="bb392ec0-8d4d-11e0-a896-0002a5d5c51b"/>
         <effect name="ns" library="pre_processing" uuid="c06c8400-8e06-11e0-9cb6-0002a5d5c51b"/>
    -->

    <effects>
        <effect name="bassboost" library="bundle" uuid="8631f300-72e2-11df-b57e-0002a5d5c51b"/>
        <effect name="virtualizer" library="bundle" uuid="1d4033c0-8557-11df-9f2d-0002a5d5c51b"/>
        <effect name="equalizer" library="bundle" uuid="ce772f20-847d-11df-bb17-0002a5d5c51b"/>
        <effect name="volume" library="bundle" uuid="119341a0-8469-11df-81f9-0002a5d5c51b"/>
        <effect name="reverb_env_aux" library="reverb" uuid="4a387fc0-8ab3-11df-8bad-0002a5d5c51b"/>
        <effect name="reverb_env_ins" library="reverb" uuid="c7a511a0-a3bb-11df-860e-0002a5d5c51b"/>
        <effect name="reverb_pre_aux" library="reverb" uuid="f29a1400-a3bb-11df-8ddc-0002a5d5c51b"/>
        <effect name="reverb_pre_ins" library="reverb" uuid="172cdf00-a3bc-11df-a72f-0002a5d5c51b"/>
        <effect name="visualizer" library="visualizer" uuid="d069d9e0-8329-11df-9168-0002a5d5c51b"/>
        <effect name="downmix" library="downmix" uuid="93f04452-e4fe-41cc-91f9-e475b6d1d69f"/>
        <effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/>
        <effect name="dynamics_processing" library="dynamics_processing" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
        <effect name="agc" library="pre_processing" uuid="aa8130e0-66fc-11e0-bad0-0002a5d5c51b"/>
        <effect name="aec" library="pre_processing" uuid="bb392ec0-8d4d-11e0-a896-0002a5d5c51b"/>
        <effect name="ns" library="pre_processing" uuid="c06c8400-8e06-11e0-9cb6-0002a5d5c51b"/>
    </effects>

    <!-- Audio pre processor configurations.
         The pre processor configuration is described in a "preprocess" element and consists in a
         list of elements each describing pre processor settings for a given use case or "stream".
         Each stream element has a "type" attribute corresponding to the input source used.
         Valid types are:
              "mic", "camcorder", "voice_recognition", "voice_communication"
         Each "stream" element contains a list of "apply" elements indicating one effect to apply.
         The effect to apply is designated by its name in the "effects" elements.

        <preprocess>
            <stream type="voice_communication">
                <apply effect="aec"/>
                <apply effect="ns"/>
            </stream>
        </preprocess>
    -->

    <preprocess>
        <stream type="voice_communication">
            <apply effect="aec"/>
            <apply effect="ns"/>
        </stream>
    </preprocess>

    <!-- Audio post processor configurations.
         The post processor configuration is described in a "postprocess" element and consists in a
         list of elements each describing post processor settings for a given use case or "stream".
         Each stream element has a "type" attribute corresponding to the stream type used.
         Valid types are:
              "music", "ring", "alarm", "notification", "voice_call"
         Each "stream" element contains a list of "apply" elements indicating one effect to apply.
         The effect to apply is designated by its name in the "effects" elements.

        <postprocess>
            <stream type="music">
                <apply effect="music_post_proc"/>
            </stream>
            <stream type="voice_call">
                <apply effect="voice_post_proc"/>
            </stream>
            <stream type="notification">
                <apply effect="notification_post_proc"/>
            </stream>
        </postprocess>
    -->

     <!-- Device pre/post processor configurations.
          The device pre/post processor configuration is described in a deviceEffects element and
          consists in a list of elements each describing pre/post proecessor settings for a given
          device or "devicePort".
          Each devicePort element has a "type" attribute corresponding to the device type (e.g.
          speaker, bus), an "address" attribute corresponding to the device address and contains a
          list of "apply" elements indicating one effect to apply.
          If the device is a source, only pre processing effects are expected, if the
          device is a sink, only post processing effects are expected.
          The effect to apply is designated by its name in the "effects" elements.
          The effect will be enabled by default and the audio framework will automatically add
          and activate the effect if the given port is involved in an audio patch.
          If the patch is "HW", the effect must be HW accelerated.

        <deviceEffects>
            <devicePort type="AUDIO_DEVICE_OUT_BUS" address="BUS00_USAGE_MAIN">
                <apply effect="equalizer"/>
            </devicePort>
            <devicePort type="AUDIO_DEVICE_OUT_BUS" address="BUS04_USAGE_VOICE">
                <apply effect="volume"/>
            </devicePort>
            <devicePort type="AUDIO_DEVICE_IN_BUILTIN_MIC" address="bottom">
                <apply effect="agc"/>
            </devicePort>
        </deviceEffects>
    -->

</audio_effects_conf>
