/* * 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 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_INDEX_MASK_1)}, {"AUDIO_CHANNEL_INDEX_MASK_2", static_cast(AUDIO_CHANNEL_INDEX_MASK_2)}, {"AUDIO_CHANNEL_INDEX_MASK_3", static_cast(AUDIO_CHANNEL_INDEX_MASK_3)}, {"AUDIO_CHANNEL_INDEX_MASK_4", static_cast(AUDIO_CHANNEL_INDEX_MASK_4)}, {"AUDIO_CHANNEL_INDEX_MASK_5", static_cast(AUDIO_CHANNEL_INDEX_MASK_5)}, {"AUDIO_CHANNEL_INDEX_MASK_6", static_cast(AUDIO_CHANNEL_INDEX_MASK_6)}, {"AUDIO_CHANNEL_INDEX_MASK_7", static_cast(AUDIO_CHANNEL_INDEX_MASK_7)}, {"AUDIO_CHANNEL_INDEX_MASK_8", static_cast(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; template class TypeConverter; template class TypeConverter; template class TypeConverter; template class TypeConverter; template class TypeConverter; template class TypeConverter; template class TypeConverter; template class TypeConverter; template class TypeConverter; template class TypeConverter; template class TypeConverter; template class TypeConverter; template class TypeConverter; 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(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