<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (C) 2020 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.
-->
<audioPolicyConfiguration version="7.0" xmlns:xi="http://www.w3.org/2001/XInclude">
  <globalConfiguration speaker_drc_enabled="false" call_screen_mode_supported="true" />
  <modules>
    <!-- Primary Audio HAL -->
    <module name="primary" halVersion="2.0">
      <attachedDevices>
        <item>Speaker</item>
        <item>Speaker Safe</item>
        <item>Earpiece</item>
        <item>Built-In Mic</item>
        <item>Built-In Back Mic</item>
        <item>Telephony Tx</item>
        <item>Voice Call And Telephony Rx</item>
        <item>Echo Ref In</item>
      </attachedDevices>
      <defaultOutputDevice>Speaker</defaultOutputDevice>
      <mixPorts>
        <mixPort name="primary output" role="source"
          flags="AUDIO_OUTPUT_FLAG_PRIMARY AUDIO_OUTPUT_FLAG_FAST"
          recommendedMuteDurationMs="40">
          <profile name="" format="AUDIO_FORMAT_PCM_FLOAT"
            samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
        </mixPort>
        <mixPort name="deep buffer" role="source" flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER">
          <profile name="" format="AUDIO_FORMAT_PCM_FLOAT"
            samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
        </mixPort>
        <mixPort name="compressed offload" role="source"
          flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD AUDIO_OUTPUT_FLAG_NON_BLOCKING AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD">
          <profile name="" format="AUDIO_FORMAT_MP3"
            samplingRates="8000 16000 24000 32000 44100 48000"
            channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO" />
          <profile name="" format="AUDIO_FORMAT_AAC_LC"
            samplingRates="8000 16000 24000 32000 44100 48000"
            channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO" />
          <profile name="" format="AUDIO_FORMAT_AAC_HE_V1"
            samplingRates="8000 16000 24000 32000 44100 48000"
            channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO" />
          <profile name="" format="AUDIO_FORMAT_AAC_HE_V2"
            samplingRates="8000 16000 24000 32000 44100 48000"
            channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO" />
        </mixPort>
        <mixPort name="haptic" role="source">
          <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
            samplingRates="48000"
            channelMasks="AUDIO_CHANNEL_OUT_STEREO_HAPTIC_A" />
        </mixPort>
        <mixPort name="immersive_out" role="source" flags="AUDIO_OUTPUT_FLAG_SPATIALIZER">
          <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
            samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
        </mixPort>
        <mixPort name="incall playback" role="source"
          flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
          <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
            samplingRates="48000"
            channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
        </mixPort>
        <mixPort name="voip_rx" role="source"
          flags="AUDIO_OUTPUT_FLAG_VOIP_RX">
          <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
            samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
        </mixPort>
        <!-- <mixPort name="mmap playback" role="source"
          flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_MMAP_NOIRQ">
          <profile name="" format="AUDIO_FORMAT_PCM_FLOAT"
            samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
        </mixPort>
        <mixPort name="raw" role="source"
          flags="AUDIO_OUTPUT_FLAG_RAW AUDIO_OUTPUT_FLAG_FAST">
          <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
            samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
        </mixPort> -->

        <mixPort name="primary input" role="sink">
          <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
            samplingRates="48000"
            channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_INDEX_MASK_3" />
        </mixPort>
        <mixPort name="voip_tx" role="sink"
          flags="AUDIO_INPUT_FLAG_VOIP_TX">
          <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
            samplingRates="48000" channelMasks="AUDIO_CHANNEL_IN_MONO" />
        </mixPort>
        <mixPort name="fast input" role="sink"
          flags="AUDIO_INPUT_FLAG_RAW AUDIO_INPUT_FLAG_FAST">
          <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
            samplingRates="48000"
            channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO" />
        </mixPort>
        <mixPort name="hotword input" role="sink" flags="AUDIO_INPUT_FLAG_HW_HOTWORD">
          <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
            samplingRates="16000"
            channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO" />
        </mixPort>
        <!-- <mixPort name="mmap capture" role="sink" flags="AUDIO_INPUT_FLAG_MMAP_NOIRQ">
          <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
            samplingRates="48000"
            channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO" />
        </mixPort> -->

      </mixPorts>
      <devicePorts>
        <!-- Output devices declaration, i.e. Sink DEVICE PORT -->
        <devicePort tagName="Earpiece" type="AUDIO_DEVICE_OUT_EARPIECE" role="sink" />
        <devicePort tagName="Speaker" type="AUDIO_DEVICE_OUT_SPEAKER" role="sink" />
        <devicePort tagName="Speaker Safe" type="AUDIO_DEVICE_OUT_SPEAKER_SAFE" role="sink" />
        <devicePort tagName="Wired Headset" type="AUDIO_DEVICE_OUT_WIRED_HEADSET"
          role="sink" />
        <devicePort tagName="Wired Headphones" type="AUDIO_DEVICE_OUT_WIRED_HEADPHONE"
          role="sink" />
        <devicePort tagName="BT SCO" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO" role="sink" />
        <devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET"
          role="sink" />
        <devicePort tagName="BT SCO Car Kit" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT"
          role="sink" />
        <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink" />
        <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET"
          role="sink" />
        <devicePort tagName="Aux Digital" type="AUDIO_DEVICE_OUT_AUX_DIGITAL" role="sink" />
        <devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink" />
        <!-- Input devices declaration, i.e. Source DEVICE PORT -->
        <devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source" />
        <devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC"
          role="source" />
        <devicePort tagName="Wired Headset Mic" type="AUDIO_DEVICE_IN_WIRED_HEADSET"
          role="source" />
        <devicePort tagName="BT SCO Headset Mic"
          type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source" />
        <devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink"
          encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
          <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
            samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
        </devicePort>
        <devicePort tagName="BT A2DP Headphones"
          type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink"
          encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
          <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
            samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
        </devicePort>
        <devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER"
          role="sink"
          encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
          <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
            samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
        </devicePort>
        <devicePort tagName="BT BLE Headset" type="AUDIO_DEVICE_OUT_BLE_HEADSET" role="sink"
          encodedFormats="AUDIO_FORMAT_LC3">
          <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
            samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
        </devicePort>
        <devicePort tagName="BT BLE Speaker" type="AUDIO_DEVICE_OUT_BLE_SPEAKER" role="sink"
          encodedFormats="AUDIO_FORMAT_LC3">
          <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
            samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
        </devicePort>
        <devicePort tagName="BLE Headset Mic" type="AUDIO_DEVICE_IN_BLE_HEADSET"
          role="source">
        </devicePort>
        <devicePort tagName="USB Device In" type="AUDIO_DEVICE_IN_USB_DEVICE" role="source" />
        <devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET"
          role="source" />
        <!-- AUDIO_DEVICE_IN_VOICE_CALL and AUDIO_DEVICE_IN_TELEPHONY_RX are in the same
                value -->
        <devicePort tagName="Voice Call And Telephony Rx" type="AUDIO_DEVICE_IN_VOICE_CALL"
          role="source" />
        <devicePort tagName="Echo Ref In" type="AUDIO_DEVICE_IN_ECHO_REFERENCE"
          role="source" />
      </devicePorts>
      <!-- route declaration, i.e. list all available sources for a given sink -->
      <routes>
        <route type="mix" sink="Earpiece"
          sources="primary output,deep buffer,haptic,voip_rx,compressed offload" />
        <route type="mix" sink="Speaker"
          sources="primary output,deep buffer,haptic,voip_rx,compressed offload" />
        <route type="mix" sink="Telephony Tx" sources="incall playback" />
        <route type="mix" sink="primary input"
          sources="Built-In Mic,Built-In Back Mic" />
        <route type="mix" sink="voip_tx"
          sources="Built-In Mic,Built-In Back Mic" />
        <route type="mix" sink="fast input"
          sources="Built-In Mic,Built-In Back Mic" />
        <route type="mix" sink="hotword input" sources="Built-In Mic" />
      </routes>
    </module>
  </modules>
  <!-- End of Modules section -->
  <!-- Volume section -->
  <xi:include href="audio_policy_volumes.xml" />
  <xi:include href="default_volume_tables.xml" />
  <!-- End of Volume section -->
</audioPolicyConfiguration>
