TypeConverter.cpp revision 44344b05261cb9ad46a43e635f637b89aecc7afe
1913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov/*
2913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov * Copyright (C) 2016 The Android Open Source Project
3913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov *
4913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov * Licensed under the Apache License, Version 2.0 (the "License");
5913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov * you may not use this file except in compliance with the License.
6913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov * You may obtain a copy of the License at
7913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov *
8913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov *      http://www.apache.org/licenses/LICENSE-2.0
9913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov *
10913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov * Unless required by applicable law or agreed to in writing, software
11913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov * distributed under the License is distributed on an "AS IS" BASIS,
12913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov * See the License for the specific language governing permissions and
14913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov * limitations under the License.
15913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov */
16913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
17913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov#include <media/TypeConverter.h>
18913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
19913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovnamespace android {
20913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
21913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov#define MAKE_STRING_FROM_ENUM(string) { #string, string }
22913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov#define TERMINATOR { .literal = nullptr }
23913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
24913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate <>
25913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovconst OutputDeviceConverter::Table OutputDeviceConverter::mTable[] = {
26913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_NONE),
27913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_EARPIECE),
28913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_SPEAKER),
29913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_SPEAKER_SAFE),
30913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_WIRED_HEADSET),
31913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_WIRED_HEADPHONE),
32913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BLUETOOTH_SCO),
33913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET),
34913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT),
35913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_ALL_SCO),
36913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP),
37913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES),
38913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER),
39913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_ALL_A2DP),
40913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_AUX_DIGITAL),
41913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_HDMI),
42913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET),
43913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET),
44913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_USB_ACCESSORY),
45913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_USB_DEVICE),
46913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_ALL_USB),
47913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_REMOTE_SUBMIX),
48913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_TELEPHONY_TX),
49913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_LINE),
50913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_HDMI_ARC),
51913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_SPDIF),
52913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_FM),
53913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_AUX_LINE),
54913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_IP),
55913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BUS),
56c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_PROXY),
57913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_DEFAULT),
580aa15c6e4d02d3aa96d5ddfc6c862fe4da1da594Mikhail Naganov    // STUB must be after DEFAULT, so the latter is picked up by toString first.
590aa15c6e4d02d3aa96d5ddfc6c862fe4da1da594Mikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_STUB),
60913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    TERMINATOR
61913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov};
62913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
63913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate <>
64913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovconst InputDeviceConverter::Table InputDeviceConverter::mTable[] = {
65913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_NONE),
66913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_COMMUNICATION),
67913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_AMBIENT),
68913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_BUILTIN_MIC),
69913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET),
70913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_ALL_SCO),
71913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_WIRED_HEADSET),
72913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_AUX_DIGITAL),
73913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_HDMI),
74913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_TELEPHONY_RX),
75913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_VOICE_CALL),
76913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_BACK_MIC),
77913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_REMOTE_SUBMIX),
78913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET),
79913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET),
80913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_USB_ACCESSORY),
81913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_USB_DEVICE),
82913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_ALL_USB),
83913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_FM_TUNER),
84913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_TV_TUNER),
85913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_LINE),
86913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_SPDIF),
87913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_BLUETOOTH_A2DP),
88913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_LOOPBACK),
89913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_IP),
90913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_BUS),
91c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_PROXY),
92913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_DEFAULT),
930aa15c6e4d02d3aa96d5ddfc6c862fe4da1da594Mikhail Naganov    // STUB must be after DEFAULT, so the latter is picked up by toString first.
940aa15c6e4d02d3aa96d5ddfc6c862fe4da1da594Mikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_STUB),
95913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    TERMINATOR
96913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov};
97913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
98913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
99913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate <>
100913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovconst OutputFlagConverter::Table OutputFlagConverter::mTable[] = {
101913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_NONE),
102913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_DIRECT),
103913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_PRIMARY),
104913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_FAST),
105913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_DEEP_BUFFER),
106913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD),
107913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_NON_BLOCKING),
108913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_HW_AV_SYNC),
109913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_TTS),
110913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_RAW),
111913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_SYNC),
112913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_IEC958_NONAUDIO),
113c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_DIRECT_PCM),
114913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    TERMINATOR
115913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov};
116913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
117913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
118913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate <>
119913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovconst InputFlagConverter::Table InputFlagConverter::mTable[] = {
120913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_NONE),
121913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_FAST),
122913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_HW_HOTWORD),
123913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_RAW),
124913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_SYNC),
125913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    TERMINATOR
126913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov};
127913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
128913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
129913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate <>
130913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovconst FormatConverter::Table FormatConverter::mTable[] = {
131913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_PCM_16_BIT),
132913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_PCM_8_BIT),
133913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_PCM_32_BIT),
134913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_PCM_8_24_BIT),
135913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_PCM_FLOAT),
136913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_PCM_24_BIT_PACKED),
137913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_MP3),
138913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AMR_NB),
139913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AMR_WB),
140913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC),
141913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_MAIN),
142913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_LC),
143913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_SSR),
144913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_LTP),
145913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_HE_V1),
146913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_SCALABLE),
147913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ERLC),
148913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_LD),
149913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_HE_V2),
150913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ELD),
151c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_MAIN),
152c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_LC),
153c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_SSR),
154c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_LTP),
155c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_HE_V1),
156c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_SCALABLE),
157c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_ERLC),
158c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_LD),
159c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_HE_V2),
160c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_ELD),
161913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_VORBIS),
162913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_HE_AAC_V1),
163913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_HE_AAC_V2),
164913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_OPUS),
165913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AC3),
166913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_E_AC3),
167913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_DTS),
168913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_DTS_HD),
169913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_IEC61937),
170913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_DOLBY_TRUEHD),
171c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_EVRC),
172c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_EVRCB),
173c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_EVRCWB),
174c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_EVRCNW),
175c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADIF),
176c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_WMA),
177c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_WMA_PRO),
178c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AMR_WB_PLUS),
179c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_MP2),
180c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_QCELP),
181c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_DSD),
182c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_FLAC),
183c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_ALAC),
184c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_APE),
185c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS),
186c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_SBC),
187c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_APTX),
188c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_APTX_HD),
189c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_LDAC),
190913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    TERMINATOR
191913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov};
192913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
193913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
194913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate <>
195913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovconst OutputChannelConverter::Table OutputChannelConverter::mTable[] = {
196913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_MONO),
197913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_STEREO),
198c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_2POINT1),
199913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_QUAD),
200c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_SURROUND),
201c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_PENTA),
202913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_5POINT1),
203c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_6POINT1),
204913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_7POINT1),
205913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    TERMINATOR
206913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov};
207913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
208913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
209913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate <>
210913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovconst InputChannelConverter::Table InputChannelConverter::mTable[] = {
211913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_MONO),
212913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_STEREO),
213913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_FRONT_BACK),
214c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_VOICE_UPLINK_MONO),
215c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_VOICE_DNLINK_MONO),
216c89c8910d901704e03c30b1fdbeb38fd82d4bbdcMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_VOICE_CALL_MONO),
217913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    TERMINATOR
218913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov};
219913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
220913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate <>
221913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovconst ChannelIndexConverter::Table ChannelIndexConverter::mTable[] = {
222913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    {"AUDIO_CHANNEL_INDEX_MASK_1", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_1)},
223913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    {"AUDIO_CHANNEL_INDEX_MASK_2", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_2)},
224913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    {"AUDIO_CHANNEL_INDEX_MASK_3", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_3)},
225913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    {"AUDIO_CHANNEL_INDEX_MASK_4", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_4)},
226913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    {"AUDIO_CHANNEL_INDEX_MASK_5", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_5)},
227913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    {"AUDIO_CHANNEL_INDEX_MASK_6", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_6)},
228913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    {"AUDIO_CHANNEL_INDEX_MASK_7", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_7)},
229913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    {"AUDIO_CHANNEL_INDEX_MASK_8", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_8)},
230913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    TERMINATOR
231913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov};
232913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
233913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
234913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate <>
235913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovconst GainModeConverter::Table GainModeConverter::mTable[] = {
236913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_GAIN_MODE_JOINT),
237913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_GAIN_MODE_CHANNELS),
238913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_GAIN_MODE_RAMP),
239913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    TERMINATOR
240913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov};
241913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
242913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
243913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate <>
244913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovconst StreamTypeConverter::Table StreamTypeConverter::mTable[] = {
245913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_STREAM_VOICE_CALL),
246913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_STREAM_SYSTEM),
247913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_STREAM_RING),
248913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_STREAM_MUSIC),
249913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_STREAM_ALARM),
250913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_STREAM_NOTIFICATION),
251913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_STREAM_BLUETOOTH_SCO ),
252913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_STREAM_ENFORCED_AUDIBLE),
253913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_STREAM_DTMF),
254913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_STREAM_TTS),
255913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_STREAM_ACCESSIBILITY),
256913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_STREAM_REROUTING),
257913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_STREAM_PATCH),
258913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    TERMINATOR
259913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov};
260913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
261913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate<>
262913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovconst AudioModeConverter::Table AudioModeConverter::mTable[] = {
263913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_MODE_INVALID),
264913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_MODE_CURRENT),
265913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_MODE_NORMAL),
266913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_MODE_RINGTONE),
267913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_MODE_IN_CALL),
268913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_MODE_IN_COMMUNICATION),
269913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    TERMINATOR
270913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov};
271913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
27244344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganovtemplate <>
27344344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganovconst UsageTypeConverter::Table UsageTypeConverter::mTable[] = {
27444344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_UNKNOWN),
27544344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_MEDIA),
27644344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_VOICE_COMMUNICATION),
27744344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING),
27844344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_ALARM),
27944344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_NOTIFICATION),
28044344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE),
28144344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST),
28244344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT),
28344344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED),
28444344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_NOTIFICATION_EVENT),
28544344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY),
28644344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE),
28744344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_ASSISTANCE_SONIFICATION),
28844344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_GAME),
28944344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_VIRTUAL_SOURCE),
29044344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_CNT),
29144344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_MAX),
29244344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    TERMINATOR
29344344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov};
29444344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov
29544344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganovtemplate <>
29644344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganovconst SourceTypeConverter::Table SourceTypeConverter::mTable[] = {
29744344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_DEFAULT),
29844344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_MIC),
29944344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_VOICE_UPLINK),
30044344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_VOICE_DOWNLINK),
30144344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_VOICE_CALL),
30244344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_CAMCORDER),
30344344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_VOICE_RECOGNITION),
30444344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_VOICE_COMMUNICATION),
30544344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_REMOTE_SUBMIX),
30644344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_UNPROCESSED),
30744344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_CNT),
30844344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_MAX),
30944344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_FM_TUNER),
31044344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_HOTWORD),
31144344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov    TERMINATOR
31244344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov};
31344344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganov
314913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate class TypeConverter<OutputDeviceTraits>;
315913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate class TypeConverter<InputDeviceTraits>;
316913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate class TypeConverter<OutputFlagTraits>;
317913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate class TypeConverter<InputFlagTraits>;
318913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate class TypeConverter<FormatTraits>;
319913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate class TypeConverter<OutputChannelTraits>;
320913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate class TypeConverter<InputChannelTraits>;
321913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate class TypeConverter<ChannelIndexTraits>;
322913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate class TypeConverter<GainModeTraits>;
323913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate class TypeConverter<StreamTraits>;
324913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovtemplate class TypeConverter<AudioModeTraits>;
32544344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganovtemplate class TypeConverter<UsageTraits>;
32644344b05261cb9ad46a43e635f637b89aecc7afeMikhail Naganovtemplate class TypeConverter<SourceTraits>;
327913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
328913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovbool deviceFromString(const std::string& literalDevice, audio_devices_t& device) {
329913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    return InputDeviceConverter::fromString(literalDevice, device) ||
330913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov            OutputDeviceConverter::fromString(literalDevice, device);
331913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov}
332913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
333913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovbool deviceToString(audio_devices_t device, std::string& literalDevice) {
334913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    if (device & AUDIO_DEVICE_BIT_IN) {
335913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov        return InputDeviceConverter::toString(device, literalDevice);
336913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    } else {
337913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov        return OutputDeviceConverter::toString(device, literalDevice);
338913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    }
339913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov}
340913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
341913d06c099bd689375483a839e11057ccf284d1cMikhail NaganovSampleRateTraits::Collection samplingRatesFromString(
342913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov        const std::string &samplingRates, const char *del)
343913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov{
344913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    SampleRateTraits::Collection samplingRateCollection;
345913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    collectionFromString<SampleRateTraits>(samplingRates, samplingRateCollection, del);
346913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    return samplingRateCollection;
347913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov}
348913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
349913d06c099bd689375483a839e11057ccf284d1cMikhail NaganovFormatTraits::Collection formatsFromString(
350913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov        const std::string &formats, const char *del)
351913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov{
352913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    FormatTraits::Collection formatCollection;
353913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    FormatConverter::collectionFromString(formats, formatCollection, del);
354913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    return formatCollection;
355913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov}
356913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
357913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovaudio_format_t formatFromString(const std::string &literalFormat, audio_format_t defaultFormat)
358913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov{
359913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    audio_format_t format;
360913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    if (literalFormat.empty()) {
361913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov        return defaultFormat;
362913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    }
363913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    FormatConverter::fromString(literalFormat, format);
364913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    return format;
365913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov}
366913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
367913d06c099bd689375483a839e11057ccf284d1cMikhail Naganovaudio_channel_mask_t channelMaskFromString(const std::string &literalChannels)
368913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov{
369913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    audio_channel_mask_t channels;
370913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    if (!OutputChannelConverter::fromString(literalChannels, channels) ||
371913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov            !InputChannelConverter::fromString(literalChannels, channels)) {
372913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov        return AUDIO_CHANNEL_INVALID;
373913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    }
374913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    return channels;
375913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov}
376913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
377913d06c099bd689375483a839e11057ccf284d1cMikhail NaganovChannelTraits::Collection channelMasksFromString(
378913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov        const std::string &channels, const char *del)
379913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov{
380913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    ChannelTraits::Collection channelMaskCollection;
381913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    OutputChannelConverter::collectionFromString(channels, channelMaskCollection, del);
382913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    InputChannelConverter::collectionFromString(channels, channelMaskCollection, del);
383913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    ChannelIndexConverter::collectionFromString(channels, channelMaskCollection, del);
384913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    return channelMaskCollection;
385913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov}
386913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
387913d06c099bd689375483a839e11057ccf284d1cMikhail NaganovInputChannelTraits::Collection inputChannelMasksFromString(
388913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov        const std::string &inChannels, const char *del)
389913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov{
390913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    InputChannelTraits::Collection inputChannelMaskCollection;
391913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    InputChannelConverter::collectionFromString(inChannels, inputChannelMaskCollection, del);
392913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    ChannelIndexConverter::collectionFromString(inChannels, inputChannelMaskCollection, del);
393913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    return inputChannelMaskCollection;
394913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov}
395913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
396913d06c099bd689375483a839e11057ccf284d1cMikhail NaganovOutputChannelTraits::Collection outputChannelMasksFromString(
397913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov        const std::string &outChannels, const char *del)
398913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov{
399913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    OutputChannelTraits::Collection outputChannelMaskCollection;
400913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    OutputChannelConverter::collectionFromString(outChannels, outputChannelMaskCollection, del);
401913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    ChannelIndexConverter::collectionFromString(outChannels, outputChannelMaskCollection, del);
402913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov    return outputChannelMaskCollection;
403913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov}
404913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov
405913d06c099bd689375483a839e11057ccf284d1cMikhail Naganov}; // namespace android
406