• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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,
30             AUDIO_FLAG_NONE, ""}},
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, AUDIO_FLAG_NONE, ""}}
43          },
44          {"alarm", AUDIO_STREAM_ALARM, "AUDIO_STREAM_ALARM",
45           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ALARM, AUDIO_SOURCE_DEFAULT,
46             AUDIO_FLAG_NONE, ""}},
47          }
48      },
49     },
50     {"STRATEGY_ENFORCED_AUDIBLE",
51      {
52          {"", AUDIO_STREAM_ENFORCED_AUDIBLE, "AUDIO_STREAM_ENFORCED_AUDIBLE",
53           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT,
54             AUDIO_FLAG_AUDIBILITY_ENFORCED, ""}}
55          }
56      },
57     },
58     {"STRATEGY_ACCESSIBILITY",
59      {
60          {"", AUDIO_STREAM_ACCESSIBILITY, "AUDIO_STREAM_ACCESSIBILITY",
61           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY,
62             AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""}}
63          }
64      },
65     },
66     {"STRATEGY_SONIFICATION_RESPECTFUL",
67      {
68          {"", AUDIO_STREAM_NOTIFICATION, "AUDIO_STREAM_NOTIFICATION",
69           {
70               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION, AUDIO_SOURCE_DEFAULT,
71                AUDIO_FLAG_NONE, ""},
72               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST,
73                AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""},
74               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT,
75                AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""},
76               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED,
77                AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""},
78               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_NOTIFICATION_EVENT,
79                AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""}
80           }
81          }
82      },
83     },
84     {"STRATEGY_MEDIA",
85      {
86          {"assistant", AUDIO_STREAM_ASSISTANT, "AUDIO_STREAM_ASSISTANT",
87           {{AUDIO_CONTENT_TYPE_SPEECH, AUDIO_USAGE_ASSISTANT,
88             AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""}}
89          },
90          {"music", AUDIO_STREAM_MUSIC, "AUDIO_STREAM_MUSIC",
91           {
92               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_MEDIA, AUDIO_SOURCE_DEFAULT,
93                AUDIO_FLAG_NONE, ""},
94               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_GAME, AUDIO_SOURCE_DEFAULT,
95                AUDIO_FLAG_NONE, ""},
96               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ASSISTANT, AUDIO_SOURCE_DEFAULT,
97                AUDIO_FLAG_NONE, ""},
98               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE,
99                AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""},
100               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT,
101                AUDIO_FLAG_NONE, ""}
102           },
103          },
104          {"system", AUDIO_STREAM_SYSTEM, "AUDIO_STREAM_SYSTEM",
105           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_ASSISTANCE_SONIFICATION,
106             AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""}}
107          }
108      },
109     },
110     {"STRATEGY_DTMF",
111      {
112          {"", AUDIO_STREAM_DTMF, "AUDIO_STREAM_DTMF",
113           {
114               {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING,
115                AUDIO_SOURCE_DEFAULT, AUDIO_FLAG_NONE, ""}
116           }
117          }
118      },
119     },
120     {"STRATEGY_CALL_ASSISTANT",
121      {
122          {"", AUDIO_STREAM_CALL_ASSISTANT, "AUDIO_STREAM_CALL_ASSISTANT",
123           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_CALL_ASSISTANT, AUDIO_SOURCE_DEFAULT,
124             AUDIO_FLAG_NONE, ""}}
125          }
126      },
127     },
128     {"STRATEGY_TRANSMITTED_THROUGH_SPEAKER",
129      {
130          {"", AUDIO_STREAM_TTS, "AUDIO_STREAM_TTS",
131           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT,
132             AUDIO_FLAG_BEACON, ""}}
133          }
134      },
135     }
136 };
137 
138 /**
139  * For Internal use of respectively audio policy and audioflinger
140  * For compatibility reason why apm volume config file, volume group name is the stream type.
141  */
142 const engineConfig::ProductStrategies gOrderedSystemStrategies = {
143     {"rerouting",
144      {
145          {"", AUDIO_STREAM_REROUTING, "AUDIO_STREAM_REROUTING",
146           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_VIRTUAL_SOURCE, AUDIO_SOURCE_DEFAULT,
147             AUDIO_FLAG_NONE, ""}}
148          }
149      },
150     },
151     {"patch",
152      {
153          {"", AUDIO_STREAM_PATCH, "AUDIO_STREAM_PATCH",
154           {{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT,
155             AUDIO_FLAG_NONE, ""}}
156          }
157      },
158     }
159 };
160 const engineConfig::VolumeGroups gSystemVolumeGroups = {
161     {"AUDIO_STREAM_REROUTING", 0, 1,
162      {
163          {"DEVICE_CATEGORY_SPEAKER", {{0,0}, {100, 0}}},
164          {"DEVICE_CATEGORY_HEADSET", {{0,0}, {100, 0}}},
165          {"DEVICE_CATEGORY_EARPIECE", {{0,0}, {100, 0}}},
166          {"DEVICE_CATEGORY_EXT_MEDIA", {{0,0}, {100, 0}}},
167          {"DEVICE_CATEGORY_HEARING_AID", {{0,0}, {100, 0}}},
168 
169      }
170     },
171     {"AUDIO_STREAM_PATCH", 0, 1,
172      {
173          {"DEVICE_CATEGORY_SPEAKER", {{0,0}, {100, 0}}},
174          {"DEVICE_CATEGORY_HEADSET", {{0,0}, {100, 0}}},
175          {"DEVICE_CATEGORY_EARPIECE", {{0,0}, {100, 0}}},
176          {"DEVICE_CATEGORY_EXT_MEDIA", {{0,0}, {100, 0}}},
177          {"DEVICE_CATEGORY_HEARING_AID", {{0,0}, {100, 0}}},
178 
179      }
180     }
181 };
182 
183 const engineConfig::Config gDefaultEngineConfig = {
184     1.0,
185     gOrderedStrategies,
186     {},
187     {},
188     {}
189 };
190 } // namespace android
191