blob: 9f71dbe6689658bc89725fe219cbeee40f137b1f [file] [log] [blame]
/*
* Copyright (C) 2023 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.
*/
#ifndef ANDROID_EFFECT_UUID_H_
#define ANDROID_EFFECT_UUID_H_
#include <aidl/android/hardware/audio/effect/Descriptor.h>
#include <aidl/android/media/audio/common/AudioUuid.h>
#include <android-base/no_destructor.h>
namespace aidl::android::hardware::audio::effect {
using ::aidl::android::media::audio::common::AudioUuid;
inline AudioUuid stringToUuid(const char* str) {
AudioUuid uuid{};
uint32_t tmp[10];
if (!str || sscanf(str, "%08x-%04x-%04x-%04x-%02x%02x%02x%02x%02x%02x", tmp,
tmp + 1, tmp + 2, tmp + 3, tmp + 4, tmp + 5, tmp + 6,
tmp + 7, tmp + 8, tmp + 9) < 10) {
return uuid;
}
uuid.timeLow = (uint32_t)tmp[0];
uuid.timeMid = (uint16_t)tmp[1];
uuid.timeHiAndVersion = (uint16_t)tmp[2];
uuid.clockSeq = (uint16_t)tmp[3];
uuid.node.insert(uuid.node.end(), {(uint8_t)tmp[4], (uint8_t)tmp[5], (uint8_t)tmp[6],
(uint8_t)tmp[7], (uint8_t)tmp[8], (uint8_t)tmp[9]});
return uuid;
}
inline const char* const& kEffectTypeUuidAcousticEchoCanceler =
Descriptor::EFFECT_TYPE_UUID_AEC;
inline const char* const& kEffectTypeUuidAutomaticGainControlV1 =
Descriptor::EFFECT_TYPE_UUID_AGC1;
inline const char* const& kEffectTypeUuidAutomaticGainControlV2 =
Descriptor::EFFECT_TYPE_UUID_AGC2;
inline const char* const& kEffectTypeUuidBassBoost =
Descriptor::EFFECT_TYPE_UUID_BASS_BOOST;
inline const char* const& kEffectTypeUuidDownmix =
Descriptor::EFFECT_TYPE_UUID_DOWNMIX;
inline const char* const& kEffectTypeUuidDynamicsProcessing =
Descriptor::EFFECT_TYPE_UUID_DYNAMICS_PROCESSING;
inline const char* const& kEffectTypeUuidEnvReverb =
Descriptor::EFFECT_TYPE_UUID_ENV_REVERB;
inline const char* const& kEffectTypeUuidEqualizer =
Descriptor::EFFECT_TYPE_UUID_EQUALIZER;
inline const char* const& kEffectTypeUuidHapticGenerator =
Descriptor::EFFECT_TYPE_UUID_HAPTIC_GENERATOR;
inline const char* const& kEffectTypeUuidLoudnessEnhancer =
Descriptor::EFFECT_TYPE_UUID_LOUDNESS_ENHANCER;
inline const char* const& kEffectTypeUuidNoiseSuppression =
Descriptor::EFFECT_TYPE_UUID_NS;
inline const char* const& kEffectTypeUuidPresetReverb =
Descriptor::EFFECT_TYPE_UUID_PRESET_REVERB;
inline const char* const& kEffectTypeUuidSpatializer =
Descriptor::EFFECT_TYPE_UUID_SPATIALIZER;
inline const char* const& kEffectTypeUuidVirtualizer =
Descriptor::EFFECT_TYPE_UUID_VIRTUALIZER;
inline const char* const& kEffectTypeUuidVisualizer =
Descriptor::EFFECT_TYPE_UUID_VISUALIZER;
inline const char* const& kEffectTypeUuidVolume =
Descriptor::EFFECT_TYPE_UUID_VOLUME;
constexpr char kEffectImplUuidAcousticEchoCancelerSw[] = "bb392ec0-8d4d-11e0-a896-0002a5d5c51b";
constexpr char kEffectImplUuidAutomaticGainControlV1Sw[] = "aa8130e0-66fc-11e0-bad0-0002a5d5c51b";
constexpr char kEffectImplUuidAutomaticGainControlV2Sw[] = "89f38e65-d4d2-4d64-ad0e-2b3e799ea886";
constexpr char kEffectImplUuidBassBoostSw[] = "fa8181f2-588b-11ed-9b6a-0242ac120002";
constexpr char kEffectImplUuidBassBoostBundle[] = "8631f300-72e2-11df-b57e-0002a5d5c51b";
constexpr char kEffectImplUuidBassBoostProxy[] = "14804144-a5ee-4d24-aa88-0002a5d5c51b";
constexpr char kEffectImplUuidDownmixSw[] = "fa8187ba-588b-11ed-9b6a-0242ac120002";
constexpr char kEffectImplUuidDownmix[] = "93f04452-e4fe-41cc-91f9-e475b6d1d69f";
constexpr char kEffectImplUuidDynamicsProcessingSw[] = "fa818d78-588b-11ed-9b6a-0242ac120002";
constexpr char kEffectImplUuidDynamicsProcessing[] = "e0e6539b-1781-7261-676f-6d7573696340";
constexpr char kEffectImplUuidEqualizerSw[] = "0bed4300-847d-11df-bb17-0002a5d5c51b";
constexpr char kEffectImplUuidEqualizerBundle[] = "ce772f20-847d-11df-bb17-0002a5d5c51b";
constexpr char kEffectImplUuidEqualizerProxy[] = "c8e70ecd-48ca-456e-8a4f-0002a5d5c51b";
constexpr char kEffectImplUuidHapticGeneratorSw[] = "fa819110-588b-11ed-9b6a-0242ac120002";
constexpr char kEffectImplUuidHapticGenerator[] = "97c4acd1-8b82-4f2f-832e-c2fe5d7a9931";
constexpr char kEffectImplUuidLoudnessEnhancerSw[] = "fa819610-588b-11ed-9b6a-0242ac120002";
constexpr char kEffectImplUuidLoudnessEnhancer[] = "fa415329-2034-4bea-b5dc-5b381c8d1e2c";
constexpr char kEffectImplUuidEnvReverbSw[] = "fa819886-588b-11ed-9b6a-0242ac120002";
constexpr char kEffectImplUuidAuxEnvReverb[] = "4a387fc0-8ab3-11df-8bad-0002a5d5c51b";
constexpr char kEffectImplUuidInsertEnvReverb[] = "c7a511a0-a3bb-11df-860e-0002a5d5c51b";
constexpr char kEffectImplUuidNoiseSuppressionSw[] = "c06c8400-8e06-11e0-9cb6-0002a5d5c51b";
constexpr char kEffectImplUuidPresetReverbSw[] = "fa8199c6-588b-11ed-9b6a-0242ac120002";
constexpr char kEffectImplUuidAuxPresetReverb[] = "f29a1400-a3bb-11df-8ddc-0002a5d5c51b";
constexpr char kEffectImplUuidInsertPresetReverb[] = "172cdf00-a3bc-11df-a72f-0002a5d5c51b";
constexpr char kEffectImplUuidVirtualizerSw[] = "fa819d86-588b-11ed-9b6a-0242ac120002";
constexpr char kEffectImplUuidVirtualizerBundle[] = "1d4033c0-8557-11df-9f2d-0002a5d5c51b";
constexpr char kEffectImplUuidVirtualizerProxy[] = "d3467faa-acc7-4d34-acaf-0002a5d5c51b";
constexpr char kEffectImplUuidVisualizerSw[] = "fa81a0f6-588b-11ed-9b6a-0242ac120002";
constexpr char kEffectImplUuidVisualizer[] = "d069d9e0-8329-11df-9168-0002a5d5c51b";
constexpr char kEffectImplUuidVisualizerProxy[] = "1d0a1a53-7d5d-48f2-8e71-27fbd10d842c";
constexpr char kEffectImplUuidVolumeSw[] = "fa81a718-588b-11ed-9b6a-0242ac120002";
constexpr char kEffectImplUuidVolumeBundle[] = "119341a0-8469-11df-81f9-0002a5d5c51b";
constexpr char kEffectUuidNull[] = "ec7178ec-e5e1-4432-a3f4-4657e6795210";
constexpr char kEffectUuidZero[] = "00000000-0000-0000-0000-000000000000";
constexpr char kEffectUuidExtensionType[] = "fa81dbde-588b-11ed-9b6a-0242ac120002";
constexpr char kEffectUuidExtensionImpl[] = "fa81dd00-588b-11ed-9b6a-0242ac120002";
#define EFFECT_TYPE_UUID_LIST_DEF(V) \
V(TypeUuidAcousticEchoCanceler) \
V(TypeUuidAutomaticGainControlV1) \
V(TypeUuidAutomaticGainControlV2) \
V(TypeUuidBassBoost) \
V(TypeUuidDownmix) \
V(TypeUuidDynamicsProcessing) \
V(TypeUuidEqualizer) \
V(TypeUuidHapticGenerator) \
V(TypeUuidLoudnessEnhancer) \
V(TypeUuidEnvReverb) \
V(TypeUuidPresetReverb) \
V(TypeUuidNoiseSuppression) \
V(TypeUuidSpatializer) \
V(TypeUuidVirtualizer) \
V(TypeUuidVisualizer) \
V(TypeUuidVolume)
#define EFFECT_IMPL_UUID_LIST_DEF(V) \
V(ImplUuidAcousticEchoCancelerSw) \
V(ImplUuidAutomaticGainControlV1Sw) \
V(ImplUuidAutomaticGainControlV2Sw) \
V(ImplUuidBassBoostSw) \
V(ImplUuidBassBoostBundle) \
V(ImplUuidBassBoostProxy) \
V(ImplUuidDownmixSw) \
V(ImplUuidDownmix) \
V(ImplUuidDynamicsProcessingSw) \
V(ImplUuidDynamicsProcessing) \
V(ImplUuidEqualizerSw) \
V(ImplUuidEqualizerBundle) \
V(ImplUuidEqualizerProxy) \
V(ImplUuidHapticGeneratorSw) \
V(ImplUuidHapticGenerator) \
V(ImplUuidLoudnessEnhancerSw) \
V(ImplUuidLoudnessEnhancer) \
V(ImplUuidEnvReverbSw) \
V(ImplUuidAuxEnvReverb) \
V(ImplUuidInsertEnvReverb) \
V(ImplUuidNoiseSuppressionSw) \
V(ImplUuidPresetReverbSw) \
V(ImplUuidAuxPresetReverb) \
V(ImplUuidInsertPresetReverb) \
V(ImplUuidVirtualizerSw) \
V(ImplUuidVirtualizerBundle) \
V(ImplUuidVirtualizerProxy) \
V(ImplUuidVisualizerSw) \
V(ImplUuidVisualizer) \
V(ImplUuidVisualizerProxy) \
V(ImplUuidVolumeSw) \
V(ImplUuidVolumeBundle)
#define EFFECT_OTHER_UUID_LIST_DEF(V) \
V(UuidNull) \
V(UuidZero) \
V(UuidExtensionType) \
V(UuidExtensionImpl)
#define GENERATE_UUID_GETTER_V(symbol) \
inline const AudioUuid& getEffect##symbol() { \
static const ::android::base::NoDestructor<AudioUuid> uuid( \
stringToUuid(kEffect##symbol)); \
return *uuid; \
}
// Generate all the UUID getter functions:
EFFECT_TYPE_UUID_LIST_DEF(GENERATE_UUID_GETTER_V)
EFFECT_IMPL_UUID_LIST_DEF(GENERATE_UUID_GETTER_V)
EFFECT_OTHER_UUID_LIST_DEF(GENERATE_UUID_GETTER_V)
} // namespace aidl::android::hardware::audio::effect
#endif // ANDROID_EFFECT_UUID_H_