# List of effect libraries to load. Each library element must contain a "path" element
# giving the full path of the library .so file.
#    libraries {
#        <lib name> {
#          path <lib path>
#        }
#    }
libraries {
  bundle {
    path /vendor/lib/soundfx/libbundlewrapper.so
  }
  reverb {
    path /vendor/lib/soundfx/libreverbwrapper.so
  }
  qcbassboost {
    path /vendor/lib/soundfx/libqcbassboost.so
  }
  qcvirt {
    path /vendor/lib/soundfx/libqcvirt.so
  }
  qcreverb {
    path /vendor/lib/soundfx/libqcreverb.so
  }
  visualizer_sw {
    path /vendor/lib/soundfx/libvisualizer.so
  }
  visualizer_hw {
    path /vendor/lib/soundfx/libqcomvisualizer.so
  }
  downmix {
    path /vendor/lib/soundfx/libdownmix.so
  }
  loudness_enhancer {
    path /vendor/lib/soundfx/libldnhncr.so
  }
  dynamics_processing {
    path /vendor/lib/soundfx/libdynproc.so
  }
  proxy {
    path /vendor/lib/soundfx/libeffectproxy.so
  }
  offload_bundle {
    path /vendor/lib/soundfx/libqcompostprocbundle.so
  }
  audio_pre_processing {
    path /vendor/lib/soundfx/libqcomvoiceprocessing.so
  }
  volume_listener {
    path /vendor/lib/soundfx/libvolumelistener.so
  }
  audiosphere {
    path /vendor/lib/soundfx/libasphere.so
  }
}

# Default pre-processing library. Add to audio_effect.conf "libraries" section if
# audio HAL implements support for default software audio pre-processing effects
#
#  pre_processing {
#    path /vendor/lib/soundfx/libaudiopreprocessing.so
#  }

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

effects {

# additions for the proxy implementation
# Proxy implementation
  #effectname {
    #library proxy
    #uuid  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

    # SW implemetation of the effect. Added as a node under the proxy to
    # indicate this as a sub effect.
      #libsw {
         #library libSW
         #uuid  yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
      #} End of SW effect

    # HW implementation of the effect. Added as a node under the proxy to
    # indicate this as a sub effect.
      #libhw {
         #library libHW
         #uuid  zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
      #}End of HW effect
  #} End of effect proxy

  bassboost {
    library proxy
    uuid 14804144-a5ee-4d24-aa88-0002a5d5c51b

    libsw {
      library qcbassboost
      uuid 23aca180-44bd-11e2-bcfd-0800200c9a66
    }

    libhw {
      library offload_bundle
      uuid 2c4a8c24-1581-487f-94f6-0002a5d5c51b
    }
  }
  virtualizer {
    library proxy
    uuid d3467faa-acc7-4d34-acaf-0002a5d5c51b

    libsw {
      library qcvirt
      uuid e6c98a16-22a3-11e2-b87b-f23c91aec05e
    }

    libhw {
      library offload_bundle
      uuid 509a4498-561a-4bea-b3b1-0002a5d5c51b
    }
  }
  equalizer {
    library proxy
    uuid c8e70ecd-48ca-456e-8a4f-0002a5d5c51b

    libsw {
      library bundle
      uuid ce772f20-847d-11df-bb17-0002a5d5c51b
    }

    libhw {
      library offload_bundle
      uuid a0dac280-401c-11e3-9379-0002a5d5c51b
    }
  }
  volume {
    library bundle
    uuid 119341a0-8469-11df-81f9-0002a5d5c51b
  }
  reverb_env_aux {
    library proxy
    uuid 48404ac9-d202-4ccc-bf84-0002a5d5c51b

    libsw {
      library qcreverb
      uuid a8c1e5f3-293d-43cd-95ec-d5e26c02e217
    }

    libhw {
      library offload_bundle
      uuid 79a18026-18fd-4185-8233-0002a5d5c51b
    }
  }
  reverb_env_ins {
    library proxy
    uuid b707403a-a1c1-4291-9573-0002a5d5c51b

    libsw {
      library qcreverb
      uuid 791fff8b-8129-4655-83a4-59bc61034c3a
    }

    libhw {
      library offload_bundle
      uuid eb64ea04-973b-43d2-8f5e-0002a5d5c51b
    }
  }
  reverb_pre_aux {
    library proxy
    uuid 1b78f587-6d1c-422e-8b84-0002a5d5c51b

    libsw {
      library qcreverb
      uuid 53ef1db5-c0c0-445b-b060-e34d20ebb70a
    }

    libhw {
      library offload_bundle
      uuid 6987be09-b142-4b41-9056-0002a5d5c51b
    }
  }
  reverb_pre_ins {
    library proxy
    uuid f3e178d2-ebcb-408e-8357-0002a5d5c51b

    libsw {
      library qcreverb
      uuid b08a0e38-22a5-11e2-b87b-f23c91aec05e
    }

    libhw {
      library offload_bundle
      uuid aa2bebf6-47cf-4613-9bca-0002a5d5c51b
    }
  }
  visualizer {
    library proxy
    uuid 1d0a1a53-7d5d-48f2-8e71-27fbd10d842c

    libsw {
      library visualizer_sw
      uuid  d069d9e0-8329-11df-9168-0002a5d5c51b
    }

    libhw {
      library visualizer_hw
      uuid 7a8044a0-1a71-11e3-a184-0002a5d5c51b
    }
  }
  downmix {
    library downmix
    uuid 93f04452-e4fe-41cc-91f9-e475b6d1d69f
  }
  hw_acc {
    library offload_bundle
    uuid 7d1580bd-297f-4683-9239-e475b6d1d69f
  }
  loudness_enhancer {
    library loudness_enhancer
    uuid fa415329-2034-4bea-b5dc-5b381c8d1e2c
  }
  dynamics_processing {
    library dynamics_processing
    uuid e0e6539b-1781-7261-676f-6d7573696340
  }
  aec {
    library audio_pre_processing
    uuid 0f8d0d2a-59e5-45fe-b6e4-248c8a799109
  }
  ns {
    library audio_pre_processing
    uuid 1d97bb0b-9e2f-4403-9ae3-58c2554306f8
  }
  music_helper {
    library volume_listener
    uuid 08b8b058-0590-11e5-ac71-0025b32654a0
  }
  ring_helper {
    library volume_listener
    uuid 0956df94-0590-11e5-bdbe-0025b32654a0
  }
  alarm_helper {
    library volume_listener
    uuid 09f303e2-0590-11e5-8fdb-0025b32654a0
  }
  # voice_helper is called when stream type is voice_call in VoIP usecase
  voice_helper {
    library volume_listener
    uuid 0ace5c08-0590-11e5-ae9e-0025b32654a0
  }
  notification_helper {
    library volume_listener
    uuid 0b776dde-0590-11e5-81ba-0025b32654a0
  }
  audiosphere {
    library audiosphere
    uuid 184e62ab-2d19-4364-9d1b-c0a40733866c
  }
}

# additional effect from vendor
# UUID generated using version 1

output_session_processing {
    music {
        music_helper {
        }
    }
    ring {
        ring_helper {
        }
    }
    alarm {
        alarm_helper {
        }
    }
    # stream type voice_call is used for VoIP call
    voice_call {
        voice_helper {
        }
    }
    notification {
        notification_helper {
        }
    }
}

# Added aec, ns effects for voice_communication, which are supported by the board

pre_processing {
  voice_communication {
    aec {
    }
    ns  {
    }
  }
}

# Default pre-processing effects. Add to audio_effect.conf "effects" section if
# audio HAL implements support for them.
#
#  agc {
#    library pre_processing
#    uuid aa8130e0-66fc-11e0-bad0-0002a5d5c51b
#  }
#  aec {
#    library pre_processing
#    uuid bb392ec0-8d4d-11e0-a896-0002a5d5c51b
#  }
#  ns {
#    library pre_processing
#    uuid c06c8400-8e06-11e0-9cb6-0002a5d5c51b
#  }

# Audio preprocessor configurations.
# The pre processor configuration consists in a list of elements each describing
# pre processor settings for a given input source. Valid input source names are:
# "mic", "camcorder", "voice_recognition", "voice_communication"
# Each input source element contains a list of effects elements. The name of the effect
# element must be the name of one of the effects in the "effects" list of the file.
# Each effect element may optionally contain a list of parameters and their
# default value to apply when the pre processor effect is created.
# A parameter is defined by a "param" element and a "value" element. Each of these elements
# consists in one or more elements specifying a type followed by a value.
# The types defined are: "int", "short", "float", "bool" and "string"
# When both "param" and "value" are a single int, a simple form is allowed where just
# the param and value pair is present in the parameter description
#    pre_processing {
#        <input source name> {
#            <fx name> {
#                <param 1 name> {
#                    param {
#                        int|short|float|bool|string <value>
#                        [ int|short|float|bool|string <value> ]
#                        ...
#                    }
#                    value {
#                        int|short|float|bool|string <value>
#                        [ int|short|float|bool|string <value> ]
#                        ...
#                    }
#                }
#                <param 2 name > {<param> <value>}
#                ...
#            }
#            ...
#        }
#        ...
#    }

#
# TODO: add default audio pre processor configurations after debug and tuning phase
#
