blob: 5be78d17fae3b21a4ac98d8cfc6f585ee080d63c [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <media/TypeConverter.h>
namespace android {
#define MAKE_STRING_FROM_ENUM(string) { #string, string }
#define TERMINATOR { .literal = nullptr }
template <>
const OutputDeviceConverter::Table OutputDeviceConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_NONE),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_EARPIECE),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_SPEAKER),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_SPEAKER_SAFE),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_WIRED_HEADSET),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_WIRED_HEADPHONE),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BLUETOOTH_SCO),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_ALL_SCO),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_ALL_A2DP),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_AUX_DIGITAL),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_HDMI),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_USB_ACCESSORY),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_USB_DEVICE),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_ALL_USB),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_REMOTE_SUBMIX),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_TELEPHONY_TX),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_LINE),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_HDMI_ARC),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_SPDIF),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_FM),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_AUX_LINE),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_IP),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_BUS),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_PROXY),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_USB_HEADSET),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_HEARING_AID),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_ECHO_CANCELLER),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_DEFAULT),
// STUB must be after DEFAULT, so the latter is picked up by toString first.
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_OUT_STUB),
TERMINATOR
};
template <>
const InputDeviceConverter::Table InputDeviceConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_NONE),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_COMMUNICATION),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_AMBIENT),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_BUILTIN_MIC),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_ALL_SCO),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_WIRED_HEADSET),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_AUX_DIGITAL),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_HDMI),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_HDMI_ARC),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_TELEPHONY_RX),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_VOICE_CALL),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_BACK_MIC),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_REMOTE_SUBMIX),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_USB_ACCESSORY),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_USB_DEVICE),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_ALL_USB),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_FM_TUNER),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_TV_TUNER),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_LINE),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_SPDIF),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_BLUETOOTH_A2DP),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_LOOPBACK),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_IP),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_BUS),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_PROXY),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_USB_HEADSET),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_BLUETOOTH_BLE),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_ECHO_REFERENCE),
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_DEFAULT),
// STUB must be after DEFAULT, so the latter is picked up by toString first.
MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_STUB),
TERMINATOR
};
template <>
const OutputFlagConverter::Table OutputFlagConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_NONE),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_DIRECT),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_PRIMARY),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_FAST),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_DEEP_BUFFER),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_NON_BLOCKING),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_HW_AV_SYNC),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_TTS),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_RAW),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_SYNC),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_IEC958_NONAUDIO),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_DIRECT_PCM),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_MMAP_NOIRQ),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_VOIP_RX),
MAKE_STRING_FROM_ENUM(AUDIO_OUTPUT_FLAG_INCALL_MUSIC),
TERMINATOR
};
template <>
const InputFlagConverter::Table InputFlagConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_NONE),
MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_FAST),
MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_HW_HOTWORD),
MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_RAW),
MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_SYNC),
MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_MMAP_NOIRQ),
MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_VOIP_TX),
MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_HW_AV_SYNC),
MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_DIRECT),
TERMINATOR
};
template <>
const FormatConverter::Table FormatConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_PCM_16_BIT),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_PCM_8_BIT),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_PCM_32_BIT),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_PCM_8_24_BIT),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_PCM_FLOAT),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_PCM_24_BIT_PACKED),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_MP3),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AMR_NB),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AMR_WB),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_MAIN),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_LC),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_SSR),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_LTP),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_HE_V1),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_SCALABLE),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ERLC),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_LD),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_HE_V2),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ELD),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_XHE),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_MAIN),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_LC),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_SSR),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_LTP),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_HE_V1),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_SCALABLE),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_ERLC),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_LD),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_HE_V2),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_ELD),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS_XHE),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_VORBIS),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_HE_AAC_V1),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_HE_AAC_V2),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_OPUS),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AC3),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_E_AC3),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_DTS),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_DTS_HD),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_IEC61937),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_DOLBY_TRUEHD),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_EVRC),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_EVRCB),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_EVRCWB),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_EVRCNW),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADIF),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_WMA),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_WMA_PRO),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AMR_WB_PLUS),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_MP2),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_QCELP),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_DSD),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_FLAC),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_ALAC),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_APE),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_ADTS),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_SBC),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_APTX),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_APTX_HD),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AC4),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_LDAC),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_MAT),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_E_AC3_JOC),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_MAT_1_0),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_MAT_2_0),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_MAT_2_1),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_LATM),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_LATM_LC),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_LATM_HE_V1),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_AAC_LATM_HE_V2),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_CELT),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_APTX_ADAPTIVE),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_LHDC),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_LHDC_LL),
MAKE_STRING_FROM_ENUM(AUDIO_FORMAT_APTX_TWSP),
TERMINATOR
};
template <>
const OutputChannelConverter::Table OutputChannelConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_MONO),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_STEREO),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_2POINT1),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_2POINT0POINT2),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_2POINT1POINT2),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_TRI),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_TRI_BACK),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_3POINT1),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_3POINT0POINT2),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_3POINT1POINT2),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_QUAD),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_QUAD_BACK),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_QUAD_SIDE),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_SURROUND),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_PENTA),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_5POINT1),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_5POINT1_BACK),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_5POINT1_SIDE),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_5POINT1POINT2),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_5POINT1POINT4),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_6POINT1),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_7POINT1),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_7POINT1POINT2),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_7POINT1POINT4),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_HAPTIC_A),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_MONO_HAPTIC_A),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_STEREO_HAPTIC_A),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_HAPTIC_AB),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_MONO_HAPTIC_AB),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_OUT_STEREO_HAPTIC_AB),
TERMINATOR
};
template <>
const InputChannelConverter::Table InputChannelConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_MONO),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_STEREO),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_FRONT_BACK),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_6),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_2POINT0POINT2),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_2POINT1POINT2),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_3POINT0POINT2),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_3POINT1POINT2),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_5POINT1),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_VOICE_UPLINK_MONO),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_VOICE_DNLINK_MONO),
MAKE_STRING_FROM_ENUM(AUDIO_CHANNEL_IN_VOICE_CALL_MONO),
TERMINATOR
};
template <>
const ChannelIndexConverter::Table ChannelIndexConverter::mTable[] = {
{"AUDIO_CHANNEL_INDEX_MASK_1", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_1)},
{"AUDIO_CHANNEL_INDEX_MASK_2", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_2)},
{"AUDIO_CHANNEL_INDEX_MASK_3", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_3)},
{"AUDIO_CHANNEL_INDEX_MASK_4", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_4)},
{"AUDIO_CHANNEL_INDEX_MASK_5", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_5)},
{"AUDIO_CHANNEL_INDEX_MASK_6", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_6)},
{"AUDIO_CHANNEL_INDEX_MASK_7", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_7)},
{"AUDIO_CHANNEL_INDEX_MASK_8", static_cast<audio_channel_mask_t>(AUDIO_CHANNEL_INDEX_MASK_8)},
TERMINATOR
};
template <>
const GainModeConverter::Table GainModeConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_GAIN_MODE_JOINT),
MAKE_STRING_FROM_ENUM(AUDIO_GAIN_MODE_CHANNELS),
MAKE_STRING_FROM_ENUM(AUDIO_GAIN_MODE_RAMP),
TERMINATOR
};
template <>
const StreamTypeConverter::Table StreamTypeConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_DEFAULT),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_VOICE_CALL),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_SYSTEM),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_RING),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_MUSIC),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_ALARM),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_NOTIFICATION),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_BLUETOOTH_SCO ),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_ENFORCED_AUDIBLE),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_DTMF),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_TTS),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_ACCESSIBILITY),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_REROUTING),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_PATCH),
TERMINATOR
};
template<>
const AudioModeConverter::Table AudioModeConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_MODE_INVALID),
MAKE_STRING_FROM_ENUM(AUDIO_MODE_CURRENT),
MAKE_STRING_FROM_ENUM(AUDIO_MODE_NORMAL),
MAKE_STRING_FROM_ENUM(AUDIO_MODE_RINGTONE),
MAKE_STRING_FROM_ENUM(AUDIO_MODE_IN_CALL),
MAKE_STRING_FROM_ENUM(AUDIO_MODE_IN_COMMUNICATION),
TERMINATOR
};
template<>
const AudioContentTypeConverter::Table AudioContentTypeConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_CONTENT_TYPE_UNKNOWN),
MAKE_STRING_FROM_ENUM(AUDIO_CONTENT_TYPE_SPEECH),
MAKE_STRING_FROM_ENUM(AUDIO_CONTENT_TYPE_MUSIC),
MAKE_STRING_FROM_ENUM(AUDIO_CONTENT_TYPE_MOVIE),
MAKE_STRING_FROM_ENUM(AUDIO_CONTENT_TYPE_SONIFICATION),
TERMINATOR
};
template <>
const UsageTypeConverter::Table UsageTypeConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_UNKNOWN),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_MEDIA),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_VOICE_COMMUNICATION),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_ALARM),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_NOTIFICATION),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_NOTIFICATION_EVENT),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_ASSISTANCE_SONIFICATION),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_GAME),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_VIRTUAL_SOURCE),
MAKE_STRING_FROM_ENUM(AUDIO_USAGE_ASSISTANT),
TERMINATOR
};
template <>
const SourceTypeConverter::Table SourceTypeConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_DEFAULT),
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_MIC),
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_VOICE_UPLINK),
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_VOICE_DOWNLINK),
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_VOICE_CALL),
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_CAMCORDER),
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_VOICE_RECOGNITION),
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_VOICE_COMMUNICATION),
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_REMOTE_SUBMIX),
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_UNPROCESSED),
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_VOICE_PERFORMANCE),
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_ECHO_REFERENCE),
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_FM_TUNER),
MAKE_STRING_FROM_ENUM(AUDIO_SOURCE_HOTWORD),
TERMINATOR
};
template <>
const AudioFlagConverter::Table AudioFlagConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_NONE),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_AUDIBILITY_ENFORCED),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_SECURE),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_SCO),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_BEACON),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_HW_AV_SYNC),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_HW_HOTWORD),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_BYPASS_INTERRUPTION_POLICY),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_BYPASS_MUTE),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_LOW_LATENCY),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_DEEP_BUFFER),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_NO_MEDIA_PROJECTION),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_NO_SYSTEM_CAPTURE),
TERMINATOR
};
template class TypeConverter<OutputDeviceTraits>;
template class TypeConverter<InputDeviceTraits>;
template class TypeConverter<OutputFlagTraits>;
template class TypeConverter<InputFlagTraits>;
template class TypeConverter<FormatTraits>;
template class TypeConverter<OutputChannelTraits>;
template class TypeConverter<InputChannelTraits>;
template class TypeConverter<ChannelIndexTraits>;
template class TypeConverter<GainModeTraits>;
template class TypeConverter<StreamTraits>;
template class TypeConverter<AudioModeTraits>;
template class TypeConverter<UsageTraits>;
template class TypeConverter<SourceTraits>;
template class TypeConverter<AudioFlagTraits>;
bool deviceFromString(const std::string& literalDevice, audio_devices_t& device) {
return InputDeviceConverter::fromString(literalDevice, device) ||
OutputDeviceConverter::fromString(literalDevice, device);
}
SampleRateTraits::Collection samplingRatesFromString(
const std::string &samplingRates, const char *del)
{
SampleRateTraits::Collection samplingRateCollection;
collectionFromString<SampleRateTraits>(samplingRates, samplingRateCollection, del);
return samplingRateCollection;
}
FormatTraits::Collection formatsFromString(
const std::string &formats, const char *del)
{
FormatTraits::Collection formatCollection;
FormatConverter::collectionFromString(formats, formatCollection, del);
return formatCollection;
}
audio_format_t formatFromString(const std::string &literalFormat, audio_format_t defaultFormat)
{
audio_format_t format;
if (literalFormat.empty()) {
return defaultFormat;
}
FormatConverter::fromString(literalFormat, format);
return format;
}
audio_channel_mask_t channelMaskFromString(const std::string &literalChannels)
{
audio_channel_mask_t channels;
if (!OutputChannelConverter::fromString(literalChannels, channels) &&
!InputChannelConverter::fromString(literalChannels, channels)) {
return AUDIO_CHANNEL_INVALID;
}
return channels;
}
ChannelTraits::Collection channelMasksFromString(
const std::string &channels, const char *del)
{
ChannelTraits::Collection channelMaskCollection;
OutputChannelConverter::collectionFromString(channels, channelMaskCollection, del);
InputChannelConverter::collectionFromString(channels, channelMaskCollection, del);
ChannelIndexConverter::collectionFromString(channels, channelMaskCollection, del);
return channelMaskCollection;
}
InputChannelTraits::Collection inputChannelMasksFromString(
const std::string &inChannels, const char *del)
{
InputChannelTraits::Collection inputChannelMaskCollection;
InputChannelConverter::collectionFromString(inChannels, inputChannelMaskCollection, del);
ChannelIndexConverter::collectionFromString(inChannels, inputChannelMaskCollection, del);
return inputChannelMaskCollection;
}
OutputChannelTraits::Collection outputChannelMasksFromString(
const std::string &outChannels, const char *del)
{
OutputChannelTraits::Collection outputChannelMaskCollection;
OutputChannelConverter::collectionFromString(outChannels, outputChannelMaskCollection, del);
ChannelIndexConverter::collectionFromString(outChannels, outputChannelMaskCollection, del);
return outputChannelMaskCollection;
}
}; // namespace android