xref: /aosp_15_r20/frameworks/av/services/audiopolicy/engine/common/src/EngineDefaultConfig.h (revision ec779b8e0859a360c3d303172224686826e6e0e1)
1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #pragma once
18 
19 #include <EngineConfig.h>
20 
21 #include <media/AudioProductStrategy.h>
22 #include <policy.h>
23 #include <system/audio.h>
24 
25 namespace android {
26 
27 /**
28  * @brief AudioProductStrategies hard coded array of strategies to fill new engine API contract.
29  */
30 const engineConfig::ProductStrategies gOrderedStrategies = {
31     {"STRATEGY_PHONE", STRATEGY_PHONE,
32      {
33          {AUDIO_STREAM_VOICE_CALL, "AUDIO_STREAM_VOICE_CALL",
34           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_VOICE_COMMUNICATION, AUDIO_SOURCE_DEFAULT,
35             AUDIO_FLAG_NONE, ""}},
36          },
37          {AUDIO_STREAM_BLUETOOTH_SCO, "AUDIO_STREAM_BLUETOOTH_SCO",
38           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_SCO,
39             ""}},
40          }
41      },
42     },
43     {"STRATEGY_SONIFICATION", STRATEGY_SONIFICATION,
44      {
45          {AUDIO_STREAM_RING, "AUDIO_STREAM_RING",
46           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE,
47             AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""}}
48          },
49          {AUDIO_STREAM_ALARM, "AUDIO_STREAM_ALARM",
50           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ALARM, AUDIO_SOURCE_DEFAULT,
51             AUDIO_FLAG_NONE, ""}},
52          }
53      },
54     },
55     {"STRATEGY_ENFORCED_AUDIBLE", STRATEGY_ENFORCED_AUDIBLE,
56      {
57          {AUDIO_STREAM_ENFORCED_AUDIBLE, "AUDIO_STREAM_ENFORCED_AUDIBLE",
58           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT,
59             AUDIO_FLAG_AUDIBILITY_ENFORCED, ""}}
60          }
61      },
62     },
63     {"STRATEGY_ACCESSIBILITY", STRATEGY_ACCESSIBILITY,
64      {
65          {AUDIO_STREAM_ACCESSIBILITY, "AUDIO_STREAM_ACCESSIBILITY",
66           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY,
67             AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""}}
68          }
69      },
70     },
71     {"STRATEGY_SONIFICATION_RESPECTFUL", STRATEGY_SONIFICATION_RESPECTFUL,
72      {
73          {AUDIO_STREAM_NOTIFICATION, "AUDIO_STREAM_NOTIFICATION",
74           {
75               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION, AUDIO_SOURCE_DEFAULT,
76                AUDIO_FLAG_NONE, ""},
77               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION_EVENT,
78                AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""}
79           }
80          }
81      },
82     },
83     {"STRATEGY_MEDIA", STRATEGY_MEDIA,
84      {
85          {AUDIO_STREAM_ASSISTANT, "AUDIO_STREAM_ASSISTANT",
86           {{AUDIO_CONTENT_TYPE_SPEECH, AUDIO_USAGE_ASSISTANT,
87             AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""}}
88          },
89          {AUDIO_STREAM_MUSIC, "AUDIO_STREAM_MUSIC",
90           {
91               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_MEDIA, AUDIO_SOURCE_DEFAULT,
92                AUDIO_FLAG_NONE, ""},
93               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_GAME, AUDIO_SOURCE_DEFAULT,
94                AUDIO_FLAG_NONE, ""},
95               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ASSISTANT, AUDIO_SOURCE_DEFAULT,
96                AUDIO_FLAG_NONE, ""},
97               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE,
98                AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""},
99               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT,
100                AUDIO_FLAG_NONE, ""}
101           },
102          },
103          {AUDIO_STREAM_SYSTEM, "AUDIO_STREAM_SYSTEM",
104           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ASSISTANCE_SONIFICATION,
105             AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""}}
106          }
107      },
108     },
109     {"STRATEGY_DTMF", STRATEGY_DTMF,
110      {
111          {AUDIO_STREAM_DTMF, "AUDIO_STREAM_DTMF",
112           {
113               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING,
114                AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""}
115           }
116          }
117      },
118     },
119     {"STRATEGY_CALL_ASSISTANT", STRATEGY_CALL_ASSISTANT,
120      {
121          {AUDIO_STREAM_CALL_ASSISTANT, "AUDIO_STREAM_CALL_ASSISTANT",
122           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_CALL_ASSISTANT, AUDIO_SOURCE_DEFAULT,
123             AUDIO_FLAG_NONE, ""}}
124          }
125      },
126     },
127     {"STRATEGY_TRANSMITTED_THROUGH_SPEAKER", STRATEGY_TRANSMITTED_THROUGH_SPEAKER,
128      {
129          {AUDIO_STREAM_TTS, "AUDIO_STREAM_TTS",
130           {
131               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT,
132                 AUDIO_FLAG_BEACON, ""},
133               {AUDIO_CONTENT_TYPE_ULTRASOUND, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT,
134                 AUDIO_FLAG_NONE, ""},
135               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_SPEAKER_CLEANUP, AUDIO_SOURCE_DEFAULT,
136                 AUDIO_FLAG_NONE, ""}
137           }
138          }
139      },
140     }
141 };
142 
143 /**
144  * For Internal use of respectively audio policy and audioflinger
145  * For compatibility reason why apm volume config file, volume group name is the stream type.
146  */
147 const engineConfig::ProductStrategies gOrderedSystemStrategies = {
148     {"STRATEGY_REROUTING", STRATEGY_REROUTING,
149      {
150          {AUDIO_STREAM_REROUTING, "AUDIO_STREAM_REROUTING",
151           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_VIRTUAL_SOURCE, AUDIO_SOURCE_DEFAULT,
152             AUDIO_FLAG_NONE, AUDIO_TAG_APM_RESERVED_INTERNAL}}
153          }
154      },
155     },
156     {"STRATEGY_PATCH", STRATEGY_PATCH,
157      {
158          {AUDIO_STREAM_PATCH, "AUDIO_STREAM_PATCH",
159           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT,
160             AUDIO_FLAG_NONE, AUDIO_TAG_APM_RESERVED_INTERNAL}}
161          }
162      },
163     }
164 };
165 const engineConfig::VolumeGroups gSystemVolumeGroups = {
166     {"AUDIO_STREAM_REROUTING", 0, 1,
167      {
168          {"DEVICE_CATEGORY_SPEAKER", {{0,0}, {100, 0}}},
169          {"DEVICE_CATEGORY_HEADSET", {{0,0}, {100, 0}}},
170          {"DEVICE_CATEGORY_EARPIECE", {{0,0}, {100, 0}}},
171          {"DEVICE_CATEGORY_EXT_MEDIA", {{0,0}, {100, 0}}},
172          {"DEVICE_CATEGORY_HEARING_AID", {{0,0}, {100, 0}}},
173 
174      }
175     },
176     {"AUDIO_STREAM_PATCH", 0, 1,
177      {
178          {"DEVICE_CATEGORY_SPEAKER", {{0,0}, {100, 0}}},
179          {"DEVICE_CATEGORY_HEADSET", {{0,0}, {100, 0}}},
180          {"DEVICE_CATEGORY_EARPIECE", {{0,0}, {100, 0}}},
181          {"DEVICE_CATEGORY_EXT_MEDIA", {{0,0}, {100, 0}}},
182          {"DEVICE_CATEGORY_HEARING_AID", {{0,0}, {100, 0}}},
183 
184      }
185     }
186 };
187 
188 const engineConfig::Config gDefaultEngineConfig = {
189     1.0,
190     gOrderedStrategies,
191     {},
192     {},
193     {}
194 };
195 } // namespace android
196