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