1eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#
2eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# Template audio policy configuration file
3eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#
4eb108a4622825688b02d7afc981014d149913cd8Eric Laurent
5eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# Global configuration section:
6eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# - before audio HAL version 3.0:
7eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   lists input and output devices always present on the device
8eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   as well as the output device selected by default.
9eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   Devices are designated by a string that corresponds to the enum in audio.h
10eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#
11eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#  global_configuration {
12eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#    attached_output_devices AUDIO_DEVICE_OUT_SPEAKER
13eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#    default_output_device AUDIO_DEVICE_OUT_SPEAKER
14eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#    attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX
15eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#  }
16eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#
17eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# - after and including audio HAL 3.0 the global_configuration section is included in each
18eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   hardware module section.
19eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   it also includes the audio HAL version of this hw module:
20eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#  global_configuration {
21eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#    ...
22eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#     audio_hal_version <major.minor>  # audio HAL version in e.g. 3.0
23eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#  }
24eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   other attributes (attached devices, default device) have to be included in the
25eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   global_configuration section of each hardware module
26eb108a4622825688b02d7afc981014d149913cd8Eric Laurent
27eb108a4622825688b02d7afc981014d149913cd8Eric Laurent
28eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# audio hardware module section: contains descriptors for all audio hw modules present on the
29eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# device. Each hw module node is named after the corresponding hw module library base name.
30eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# For instance, "primary" corresponds to audio.primary.<device>.so.
31eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# The "primary" module is mandatory and must include at least one output with
32eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# AUDIO_OUTPUT_FLAG_PRIMARY flag.
33eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# Each module descriptor contains one or more output profile descriptors and zero or more
34eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# input profile descriptors. Each profile lists all the parameters supported by a given output
35eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# or input stream category.
36eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# The "channel_masks", "formats", "devices" and "flags" are specified using strings corresponding
37eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# to enums in audio.h and audio_policy.h. They are concatenated by use of "|" without space or "\n".
38eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#
39eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# For audio HAL version posterior to 3.0 the following sections or sub sections can be present in
40eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# a hw module section:
41eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# - A "global_configuration" section: see above
42eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# - Optionally a "devices" section:
43eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   This section contains descriptors for audio devices with attributes like an address or a
44eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   gain controller. The syntax for the devices section and device descriptor is as follows:
45eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#    devices {
46eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#      <device name> {              # <device name>: any string without space
47eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#        type <device type>         # <device type> e.g. AUDIO_DEVICE_OUT_SPEAKER
48eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#        address <address>          # optional: device address, char string less than 64 in length
49eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#      }
50eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#    }
51eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# - one or more "gains" sections can be present in a device descriptor section.
52eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   If present, they describe the capabilities of gain controllers attached to this input or
53eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   output device. e.g. :
54eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   <device name> {                  # <device name>: any string without space
55eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#     type <device type>             # <device type> e.g. AUDIO_DEVICE_OUT_SPEAKER
56eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#     address <address>              # optional: device address, char string less than 64 in length
57eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#     gains {
58eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#       <gain name> {
59eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#         mode <gain modes supported>              # e.g. AUDIO_GAIN_MODE_CHANNELS
60eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#         channel_mask <controlled channels>       # needed if mode AUDIO_GAIN_MODE_CHANNELS
61eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#         min_value_mB <min value in millibel>
62eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#         max_value_mB <max value in millibel>
63eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#         default_value_mB <default value in millibel>
64eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#         step_value_mB <step value in millibel>
65eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#         min_ramp_ms <min duration in ms>         # needed if mode AUDIO_GAIN_MODE_RAMP
66eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#         max_ramp_ms <max duration ms>            # needed if mode AUDIO_GAIN_MODE_RAMP
67eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#       }
68eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#     }
69eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   }
70eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# - when a device descriptor is present, output and input profiles can refer to this device by
71eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# its name in their "devices" section instead of specifying a device type. e.g. :
72eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   outputs {
73eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#     primary {
74eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#       sampling_rates 44100
75eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#       channel_masks AUDIO_CHANNEL_OUT_STEREO
76eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#       formats AUDIO_FORMAT_PCM_16_BIT
77eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#       devices <device name>
78eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#       flags AUDIO_OUTPUT_FLAG_PRIMARY
79eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#     }
80eb108a4622825688b02d7afc981014d149913cd8Eric Laurent#   }
81eb108a4622825688b02d7afc981014d149913cd8Eric Laurent# sample audio_policy.conf file below
82eb108a4622825688b02d7afc981014d149913cd8Eric Laurent
83eb108a4622825688b02d7afc981014d149913cd8Eric Laurentaudio_hw_modules {
84eb108a4622825688b02d7afc981014d149913cd8Eric Laurent  primary {
85eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    global_configuration {
86eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      attached_output_devices AUDIO_DEVICE_OUT_SPEAKER
87eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      default_output_device AUDIO_DEVICE_OUT_SPEAKER
88eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC
89eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      audio_hal_version 3.0
90eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    }
91eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    devices {
92eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      speaker {
93eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        type AUDIO_DEVICE_OUT_SPEAKER
94eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        gains {
95eb108a4622825688b02d7afc981014d149913cd8Eric Laurent          gain_1 {
96eb108a4622825688b02d7afc981014d149913cd8Eric Laurent            mode AUDIO_GAIN_MODE_JOINT
97eb108a4622825688b02d7afc981014d149913cd8Eric Laurent            min_value_mB -8400
98eb108a4622825688b02d7afc981014d149913cd8Eric Laurent            max_value_mB 4000
99eb108a4622825688b02d7afc981014d149913cd8Eric Laurent            default_value_mB 0
100eb108a4622825688b02d7afc981014d149913cd8Eric Laurent            step_value_mB 100
101eb108a4622825688b02d7afc981014d149913cd8Eric Laurent          }
102eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        }
103eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      }
104eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    }
105eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    outputs {
106eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      primary {
107eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        sampling_rates 48000
108eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        channel_masks AUDIO_CHANNEL_OUT_STEREO
109eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        formats AUDIO_FORMAT_PCM_16_BIT
110eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        devices speaker
111eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        flags AUDIO_OUTPUT_FLAG_PRIMARY
112eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      }
113eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    }
114eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    inputs {
115eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      primary {
116eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        sampling_rates 8000|16000
117eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        channel_masks AUDIO_CHANNEL_IN_MONO
118eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        formats AUDIO_FORMAT_PCM_16_BIT
119eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        devices AUDIO_DEVICE_IN_BUILTIN_MIC
120eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      }
121eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    }
122eb108a4622825688b02d7afc981014d149913cd8Eric Laurent  }
123eb108a4622825688b02d7afc981014d149913cd8Eric Laurent  r_submix {
124eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    global_configuration {
125eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      attached_input_devices AUDIO_DEVICE_IN_REMOTE_SUBMIX
126eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      audio_hal_version 2.0
127eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    }
128eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    outputs {
129eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      submix {
130eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        sampling_rates 48000
131eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        channel_masks AUDIO_CHANNEL_OUT_STEREO
132eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        formats AUDIO_FORMAT_PCM_16_BIT
133eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        devices AUDIO_DEVICE_OUT_REMOTE_SUBMIX
134eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      }
135eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    }
136eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    inputs {
137eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      submix {
138eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        sampling_rates 48000
139eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        channel_masks AUDIO_CHANNEL_IN_STEREO
140eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        formats AUDIO_FORMAT_PCM_16_BIT
141eb108a4622825688b02d7afc981014d149913cd8Eric Laurent        devices AUDIO_DEVICE_IN_REMOTE_SUBMIX
142eb108a4622825688b02d7afc981014d149913cd8Eric Laurent      }
143eb108a4622825688b02d7afc981014d149913cd8Eric Laurent    }
144eb108a4622825688b02d7afc981014d149913cd8Eric Laurent  }
145eb108a4622825688b02d7afc981014d149913cd8Eric Laurent}
146