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 <system/audio.h>
20 
21 namespace android {
22 /**
23  * @brief AudioProductStrategies hard coded array of strategies to fill new engine API contract.
24  */
25 const engineConfig::ProductStrategies gOrderedStrategies = {
26     {"STRATEGY_PHONE",
27      {
28          {"phone", AUDIO_STREAM_VOICE_CALL, "AUDIO_STREAM_VOICE_CALL",
29           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_VOICE_COMMUNICATION, AUDIO_SOURCE_DEFAULT, 0,
30             ""}},
31          },
32          {"sco", AUDIO_STREAM_BLUETOOTH_SCO, "AUDIO_STREAM_BLUETOOTH_SCO",
33           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_SCO,
34             ""}},
35          }
36      },
37     },
38     {"STRATEGY_SONIFICATION",
39      {
40          {"ring", AUDIO_STREAM_RING, "AUDIO_STREAM_RING",
41           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE,
42             AUDIO_SOURCE_DEFAULT, 0, ""}}
43          },
44          {"alarm", AUDIO_STREAM_ALARM, "AUDIO_STREAM_ALARM",
45           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ALARM, AUDIO_SOURCE_DEFAULT, 0, ""}},
46          }
47      },
48     },
49     {"STRATEGY_ENFORCED_AUDIBLE",
50      {
51          {"", AUDIO_STREAM_ENFORCED_AUDIBLE, "AUDIO_STREAM_ENFORCED_AUDIBLE",
52           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT,
53             AUDIO_FLAG_AUDIBILITY_ENFORCED, ""}}
54          }
55      },
56     },
57     {"STRATEGY_ACCESSIBILITY",
58      {
59          {"", AUDIO_STREAM_ACCESSIBILITY, "AUDIO_STREAM_ACCESSIBILITY",
60           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY,
61             AUDIO_SOURCE_DEFAULT, 0, ""}}
62          }
63      },
64     },
65     {"STRATEGY_SONIFICATION_RESPECTFUL",
66      {
67          {"", AUDIO_STREAM_NOTIFICATION, "AUDIO_STREAM_NOTIFICATION",
68           {
69               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION, AUDIO_SOURCE_DEFAULT, 0, ""},
70               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST,
71                AUDIO_SOURCE_DEFAULT, 0, ""},
72               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT,
73                AUDIO_SOURCE_DEFAULT, 0, ""},
74               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED,
75                AUDIO_SOURCE_DEFAULT, 0, ""},
76               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION_EVENT,
77                AUDIO_SOURCE_DEFAULT, 0, ""}
78           }
79          }
80      },
81     },
82     {"STRATEGY_MEDIA",
83      {
84          {"assistant", AUDIO_STREAM_ASSISTANT, "AUDIO_STREAM_ASSISTANT",
85           {{AUDIO_CONTENT_TYPE_SPEECH, AUDIO_USAGE_ASSISTANT,
86             AUDIO_SOURCE_DEFAULT, 0, ""}}
87          },
88          {"music", AUDIO_STREAM_MUSIC, "AUDIO_STREAM_MUSIC",
89           {
90               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_MEDIA, AUDIO_SOURCE_DEFAULT, 0, ""},
91               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_GAME, AUDIO_SOURCE_DEFAULT, 0, ""},
92               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ASSISTANT, AUDIO_SOURCE_DEFAULT, 0, ""},
93               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE,
94                AUDIO_SOURCE_DEFAULT, 0, ""},
95               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT, 0, ""}
96           },
97          },
98          {"system", AUDIO_STREAM_SYSTEM, "AUDIO_STREAM_SYSTEM",
99           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ASSISTANCE_SONIFICATION,
100             AUDIO_SOURCE_DEFAULT, 0, ""}}
101          }
102      },
103     },
104     {"STRATEGY_DTMF",
105      {
106          {"", AUDIO_STREAM_DTMF, "AUDIO_STREAM_DTMF",
107           {
108               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING,
109                AUDIO_SOURCE_DEFAULT, 0, ""}
110           }
111          }
112      },
113     },
114     {"STRATEGY_CALL_ASSISTANT",
115      {
116          {"", AUDIO_STREAM_CALL_ASSISTANT, "AUDIO_STREAM_CALL_ASSISTANT",
117           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_CALL_ASSISTANT, AUDIO_SOURCE_DEFAULT, 0, ""}}
118          }
119      },
120     },
121     {"STRATEGY_TRANSMITTED_THROUGH_SPEAKER",
122      {
123          {"", AUDIO_STREAM_TTS, "AUDIO_STREAM_TTS",
124           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT,
125             AUDIO_FLAG_BEACON, ""}}
126          }
127      },
128     }
129 };
130 
131 /**
132  * For Internal use of respectively audio policy and audioflinger
133  * For compatibility reason why apm volume config file, volume group name is the stream type.
134  */
135 const engineConfig::ProductStrategies gOrderedSystemStrategies = {
136     {"rerouting",
137      {
138          {"", AUDIO_STREAM_REROUTING, "AUDIO_STREAM_REROUTING",
139           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT, 0, ""}}
140          }
141      },
142     },
143     {"patch",
144      {
145          {"", AUDIO_STREAM_PATCH, "AUDIO_STREAM_PATCH",
146           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT, 0, ""}}
147          }
148      },
149     }
150 };
151 const engineConfig::VolumeGroups gSystemVolumeGroups = {
152     {"AUDIO_STREAM_REROUTING", 0, 1,
153      {
154          {"DEVICE_CATEGORY_SPEAKER", {{0,0}, {100, 0}}},
155          {"DEVICE_CATEGORY_HEADSET", {{0,0}, {100, 0}}},
156          {"DEVICE_CATEGORY_EARPIECE", {{0,0}, {100, 0}}},
157          {"DEVICE_CATEGORY_EXT_MEDIA", {{0,0}, {100, 0}}},
158          {"DEVICE_CATEGORY_HEARING_AID", {{0,0}, {100, 0}}},
159 
160      }
161     },
162     {"AUDIO_STREAM_PATCH", 0, 1,
163      {
164          {"DEVICE_CATEGORY_SPEAKER", {{0,0}, {100, 0}}},
165          {"DEVICE_CATEGORY_HEADSET", {{0,0}, {100, 0}}},
166          {"DEVICE_CATEGORY_EARPIECE", {{0,0}, {100, 0}}},
167          {"DEVICE_CATEGORY_EXT_MEDIA", {{0,0}, {100, 0}}},
168          {"DEVICE_CATEGORY_HEARING_AID", {{0,0}, {100, 0}}},
169 
170      }
171     }
172 };
173 
174 const engineConfig::Config gDefaultEngineConfig = {
175     1.0,
176     gOrderedStrategies,
177     {},
178     {},
179     {}
180 };
181 } // namespace android
182