1 /*
2 * This file is auto-generated. DO NOT MODIFY.
3 * Using: out/host/linux-x86/bin/aidl --lang=ndk -Weverything -Wno-missing-permission-annotation --structured --version 3 --hash notfrozen -t --stability vintf --min_sdk_version current -pout/soong/.intermediates/system/hardware/interfaces/media/android.media.audio.eraser.types_interface/1/preprocessed.aidl -pout/soong/.intermediates/system/hardware/interfaces/media/android.media.audio.common.types_interface/4/preprocessed.aidl -pout/soong/.intermediates/hardware/interfaces/audio/aidl/android.hardware.audio.common_interface/4/preprocessed.aidl -pout/soong/.intermediates/hardware/interfaces/common/aidl/android.hardware.common_interface/2/preprocessed.aidl -pout/soong/.intermediates/hardware/interfaces/common/fmq/aidl/android.hardware.common.fmq_interface/1/preprocessed.aidl --previous_api_dir=hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect/2 --previous_hash 54d5a2e1d59066b57e35eb7bcb5ebc72a1259c1c --ninja -d out/soong/.intermediates/hardware/interfaces/audio/aidl/android.hardware.audio.effect-V3-ndk-source/gen/staging/android/hardware/audio/effect/Parameter.cpp.d -h out/soong/.intermediates/hardware/interfaces/audio/aidl/android.hardware.audio.effect-V3-ndk-source/gen/include/staging -o out/soong/.intermediates/hardware/interfaces/audio/aidl/android.hardware.audio.effect-V3-ndk-source/gen/staging -Nhardware/interfaces/audio/aidl hardware/interfaces/audio/aidl/android/hardware/audio/effect/Parameter.aidl
4 *
5 * DO NOT CHECK THIS FILE INTO A CODE TREE (e.g. git, etc..).
6 * ALWAYS GENERATE THIS FILE FROM UPDATED AIDL COMPILER
7 * AS A BUILD INTERMEDIATE ONLY. THIS IS NOT SOURCE CODE.
8 */
9 #pragma once
10
11 #include <array>
12 #include <cassert>
13 #include <cstdint>
14 #include <memory>
15 #include <optional>
16 #include <string>
17 #include <type_traits>
18 #include <utility>
19 #include <variant>
20 #include <vector>
21 #include <android/binder_enums.h>
22 #include <android/binder_interface_utils.h>
23 #include <android/binder_parcelable_utils.h>
24 #include <android/binder_to_string.h>
25 #include <aidl/android/hardware/audio/common/SinkMetadata.h>
26 #include <aidl/android/hardware/audio/common/SourceMetadata.h>
27 #include <aidl/android/hardware/audio/effect/AcousticEchoCanceler.h>
28 #include <aidl/android/hardware/audio/effect/AutomaticGainControlV1.h>
29 #include <aidl/android/hardware/audio/effect/AutomaticGainControlV2.h>
30 #include <aidl/android/hardware/audio/effect/BassBoost.h>
31 #include <aidl/android/hardware/audio/effect/Downmix.h>
32 #include <aidl/android/hardware/audio/effect/DynamicsProcessing.h>
33 #include <aidl/android/hardware/audio/effect/EnvironmentalReverb.h>
34 #include <aidl/android/hardware/audio/effect/Equalizer.h>
35 #include <aidl/android/hardware/audio/effect/Eraser.h>
36 #include <aidl/android/hardware/audio/effect/HapticGenerator.h>
37 #include <aidl/android/hardware/audio/effect/LoudnessEnhancer.h>
38 #include <aidl/android/hardware/audio/effect/NoiseSuppression.h>
39 #include <aidl/android/hardware/audio/effect/Parameter.h>
40 #include <aidl/android/hardware/audio/effect/PresetReverb.h>
41 #include <aidl/android/hardware/audio/effect/Spatializer.h>
42 #include <aidl/android/hardware/audio/effect/VendorExtension.h>
43 #include <aidl/android/hardware/audio/effect/Virtualizer.h>
44 #include <aidl/android/hardware/audio/effect/Visualizer.h>
45 #include <aidl/android/hardware/audio/effect/Volume.h>
46 #include <aidl/android/media/audio/common/AudioConfig.h>
47 #include <aidl/android/media/audio/common/AudioDeviceDescription.h>
48 #include <aidl/android/media/audio/common/AudioMode.h>
49 #include <aidl/android/media/audio/common/AudioSource.h>
50 #ifdef BINDER_STABILITY_SUPPORT
51 #include <android/binder_stability.h>
52 #endif // BINDER_STABILITY_SUPPORT
53
54 #ifndef __BIONIC__
55 #define __assert2(a,b,c,d) ((void)0)
56 #endif
57
58 namespace aidl::android::hardware::audio::common {
59 class SinkMetadata;
60 class SourceMetadata;
61 } // namespace aidl::android::hardware::audio::common
62 namespace aidl::android::hardware::audio::effect {
63 class VendorExtension;
64 } // namespace aidl::android::hardware::audio::effect
65 namespace aidl::android::media::audio::common {
66 class AudioConfig;
67 class AudioDeviceDescription;
68 } // namespace aidl::android::media::audio::common
69 namespace aidl {
70 namespace android {
71 namespace hardware {
72 namespace audio {
73 namespace effect {
74 class Parameter {
75 public:
76 typedef std::false_type fixed_size;
77 static const char* descriptor;
78
79 enum class Tag : int32_t {
80 common = 0,
81 deviceDescription = 1,
82 mode = 2,
83 source = 3,
84 offload = 4,
85 volumeStereo = 5,
86 specific = 6,
87 sinkMetadata = 7,
88 sourceMetadata = 8,
89 };
90
91 class Id {
92 public:
93 typedef std::false_type fixed_size;
94 static const char* descriptor;
95
96 enum class Tag : int32_t {
97 vendorEffectTag = 0,
98 acousticEchoCancelerTag = 1,
99 automaticGainControlV1Tag = 2,
100 automaticGainControlV2Tag = 3,
101 bassBoostTag = 4,
102 downmixTag = 5,
103 dynamicsProcessingTag = 6,
104 environmentalReverbTag = 7,
105 equalizerTag = 8,
106 hapticGeneratorTag = 9,
107 loudnessEnhancerTag = 10,
108 noiseSuppressionTag = 11,
109 presetReverbTag = 12,
110 virtualizerTag = 13,
111 visualizerTag = 14,
112 volumeTag = 15,
113 commonTag = 16,
114 spatializerTag = 17,
115 eraserTag = 18,
116 };
117
118 // Expose tag symbols for legacy code
119 static const inline Tag vendorEffectTag = Tag::vendorEffectTag;
120 static const inline Tag acousticEchoCancelerTag = Tag::acousticEchoCancelerTag;
121 static const inline Tag automaticGainControlV1Tag = Tag::automaticGainControlV1Tag;
122 static const inline Tag automaticGainControlV2Tag = Tag::automaticGainControlV2Tag;
123 static const inline Tag bassBoostTag = Tag::bassBoostTag;
124 static const inline Tag downmixTag = Tag::downmixTag;
125 static const inline Tag dynamicsProcessingTag = Tag::dynamicsProcessingTag;
126 static const inline Tag environmentalReverbTag = Tag::environmentalReverbTag;
127 static const inline Tag equalizerTag = Tag::equalizerTag;
128 static const inline Tag hapticGeneratorTag = Tag::hapticGeneratorTag;
129 static const inline Tag loudnessEnhancerTag = Tag::loudnessEnhancerTag;
130 static const inline Tag noiseSuppressionTag = Tag::noiseSuppressionTag;
131 static const inline Tag presetReverbTag = Tag::presetReverbTag;
132 static const inline Tag virtualizerTag = Tag::virtualizerTag;
133 static const inline Tag visualizerTag = Tag::visualizerTag;
134 static const inline Tag volumeTag = Tag::volumeTag;
135 static const inline Tag commonTag = Tag::commonTag;
136 static const inline Tag spatializerTag = Tag::spatializerTag;
137 static const inline Tag eraserTag = Tag::eraserTag;
138
139 template<typename _Tp>
140 static constexpr bool _not_self = !std::is_same_v<std::remove_cv_t<std::remove_reference_t<_Tp>>, Id>;
141
Id()142 Id() : _value(std::in_place_index<static_cast<size_t>(vendorEffectTag)>, ::aidl::android::hardware::audio::effect::VendorExtension()) { }
143
144 template <typename _Tp, typename = std::enable_if_t<_not_self<_Tp>>>
145 // NOLINTNEXTLINE(google-explicit-constructor)
Id(_Tp && _arg)146 constexpr Id(_Tp&& _arg)
147 : _value(std::forward<_Tp>(_arg)) {}
148
149 template <size_t _Np, typename... _Tp>
Id(std::in_place_index_t<_Np>,_Tp &&..._args)150 constexpr explicit Id(std::in_place_index_t<_Np>, _Tp&&... _args)
151 : _value(std::in_place_index<_Np>, std::forward<_Tp>(_args)...) {}
152
153 template <Tag _tag, typename... _Tp>
make(_Tp &&..._args)154 static Id make(_Tp&&... _args) {
155 return Id(std::in_place_index<static_cast<size_t>(_tag)>, std::forward<_Tp>(_args)...);
156 }
157
158 template <Tag _tag, typename _Tp, typename... _Up>
make(std::initializer_list<_Tp> _il,_Up &&..._args)159 static Id make(std::initializer_list<_Tp> _il, _Up&&... _args) {
160 return Id(std::in_place_index<static_cast<size_t>(_tag)>, std::move(_il), std::forward<_Up>(_args)...);
161 }
162
getTag()163 Tag getTag() const {
164 return static_cast<Tag>(_value.index());
165 }
166
167 template <Tag _tag>
get()168 const auto& get() const {
169 if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
170 return std::get<static_cast<size_t>(_tag)>(_value);
171 }
172
173 template <Tag _tag>
get()174 auto& get() {
175 if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
176 return std::get<static_cast<size_t>(_tag)>(_value);
177 }
178
179 template <Tag _tag, typename... _Tp>
set(_Tp &&..._args)180 void set(_Tp&&... _args) {
181 _value.emplace<static_cast<size_t>(_tag)>(std::forward<_Tp>(_args)...);
182 }
183
184 binder_status_t readFromParcel(const AParcel* _parcel);
185 binder_status_t writeToParcel(AParcel* _parcel) const;
186
187 inline bool operator==(const Id& _rhs) const {
188 return _value == _rhs._value;
189 }
190 inline bool operator<(const Id& _rhs) const {
191 return _value < _rhs._value;
192 }
193 inline bool operator!=(const Id& _rhs) const {
194 return !(*this == _rhs);
195 }
196 inline bool operator>(const Id& _rhs) const {
197 return _rhs < *this;
198 }
199 inline bool operator>=(const Id& _rhs) const {
200 return !(*this < _rhs);
201 }
202 inline bool operator<=(const Id& _rhs) const {
203 return !(_rhs < *this);
204 }
205
206 static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_VINTF;
toString()207 inline std::string toString() const {
208 std::ostringstream os;
209 os << "Id{";
210 switch (getTag()) {
211 case vendorEffectTag: os << "vendorEffectTag: " << ::android::internal::ToString(get<vendorEffectTag>()); break;
212 case acousticEchoCancelerTag: os << "acousticEchoCancelerTag: " << ::android::internal::ToString(get<acousticEchoCancelerTag>()); break;
213 case automaticGainControlV1Tag: os << "automaticGainControlV1Tag: " << ::android::internal::ToString(get<automaticGainControlV1Tag>()); break;
214 case automaticGainControlV2Tag: os << "automaticGainControlV2Tag: " << ::android::internal::ToString(get<automaticGainControlV2Tag>()); break;
215 case bassBoostTag: os << "bassBoostTag: " << ::android::internal::ToString(get<bassBoostTag>()); break;
216 case downmixTag: os << "downmixTag: " << ::android::internal::ToString(get<downmixTag>()); break;
217 case dynamicsProcessingTag: os << "dynamicsProcessingTag: " << ::android::internal::ToString(get<dynamicsProcessingTag>()); break;
218 case environmentalReverbTag: os << "environmentalReverbTag: " << ::android::internal::ToString(get<environmentalReverbTag>()); break;
219 case equalizerTag: os << "equalizerTag: " << ::android::internal::ToString(get<equalizerTag>()); break;
220 case hapticGeneratorTag: os << "hapticGeneratorTag: " << ::android::internal::ToString(get<hapticGeneratorTag>()); break;
221 case loudnessEnhancerTag: os << "loudnessEnhancerTag: " << ::android::internal::ToString(get<loudnessEnhancerTag>()); break;
222 case noiseSuppressionTag: os << "noiseSuppressionTag: " << ::android::internal::ToString(get<noiseSuppressionTag>()); break;
223 case presetReverbTag: os << "presetReverbTag: " << ::android::internal::ToString(get<presetReverbTag>()); break;
224 case virtualizerTag: os << "virtualizerTag: " << ::android::internal::ToString(get<virtualizerTag>()); break;
225 case visualizerTag: os << "visualizerTag: " << ::android::internal::ToString(get<visualizerTag>()); break;
226 case volumeTag: os << "volumeTag: " << ::android::internal::ToString(get<volumeTag>()); break;
227 case commonTag: os << "commonTag: " << ::android::internal::ToString(get<commonTag>()); break;
228 case spatializerTag: os << "spatializerTag: " << ::android::internal::ToString(get<spatializerTag>()); break;
229 case eraserTag: os << "eraserTag: " << ::android::internal::ToString(get<eraserTag>()); break;
230 }
231 os << "}";
232 return os.str();
233 }
234 private:
235 std::variant<::aidl::android::hardware::audio::effect::VendorExtension, ::aidl::android::hardware::audio::effect::AcousticEchoCanceler::Id, ::aidl::android::hardware::audio::effect::AutomaticGainControlV1::Id, ::aidl::android::hardware::audio::effect::AutomaticGainControlV2::Id, ::aidl::android::hardware::audio::effect::BassBoost::Id, ::aidl::android::hardware::audio::effect::Downmix::Id, ::aidl::android::hardware::audio::effect::DynamicsProcessing::Id, ::aidl::android::hardware::audio::effect::EnvironmentalReverb::Id, ::aidl::android::hardware::audio::effect::Equalizer::Id, ::aidl::android::hardware::audio::effect::HapticGenerator::Id, ::aidl::android::hardware::audio::effect::LoudnessEnhancer::Id, ::aidl::android::hardware::audio::effect::NoiseSuppression::Id, ::aidl::android::hardware::audio::effect::PresetReverb::Id, ::aidl::android::hardware::audio::effect::Virtualizer::Id, ::aidl::android::hardware::audio::effect::Visualizer::Id, ::aidl::android::hardware::audio::effect::Volume::Id, ::aidl::android::hardware::audio::effect::Parameter::Tag, ::aidl::android::hardware::audio::effect::Spatializer::Id, ::aidl::android::hardware::audio::effect::Eraser::Id> _value;
236 };
237 class Common {
238 public:
239 typedef std::false_type fixed_size;
240 static const char* descriptor;
241
242 int32_t session = 0;
243 int32_t ioHandle = 0;
244 ::aidl::android::media::audio::common::AudioConfig input;
245 ::aidl::android::media::audio::common::AudioConfig output;
246
247 binder_status_t readFromParcel(const AParcel* parcel);
248 binder_status_t writeToParcel(AParcel* parcel) const;
249
250 inline bool operator==(const Common& _rhs) const {
251 return std::tie(session, ioHandle, input, output) == std::tie(_rhs.session, _rhs.ioHandle, _rhs.input, _rhs.output);
252 }
253 inline bool operator<(const Common& _rhs) const {
254 return std::tie(session, ioHandle, input, output) < std::tie(_rhs.session, _rhs.ioHandle, _rhs.input, _rhs.output);
255 }
256 inline bool operator!=(const Common& _rhs) const {
257 return !(*this == _rhs);
258 }
259 inline bool operator>(const Common& _rhs) const {
260 return _rhs < *this;
261 }
262 inline bool operator>=(const Common& _rhs) const {
263 return !(*this < _rhs);
264 }
265 inline bool operator<=(const Common& _rhs) const {
266 return !(_rhs < *this);
267 }
268
269 static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_VINTF;
toString()270 inline std::string toString() const {
271 std::ostringstream _aidl_os;
272 _aidl_os << "Common{";
273 _aidl_os << "session: " << ::android::internal::ToString(session);
274 _aidl_os << ", ioHandle: " << ::android::internal::ToString(ioHandle);
275 _aidl_os << ", input: " << ::android::internal::ToString(input);
276 _aidl_os << ", output: " << ::android::internal::ToString(output);
277 _aidl_os << "}";
278 return _aidl_os.str();
279 }
280 };
281 class VolumeStereo {
282 public:
283 typedef std::false_type fixed_size;
284 static const char* descriptor;
285
286 float left = 0.000000f;
287 float right = 0.000000f;
288
289 binder_status_t readFromParcel(const AParcel* parcel);
290 binder_status_t writeToParcel(AParcel* parcel) const;
291
292 inline bool operator==(const VolumeStereo& _rhs) const {
293 return std::tie(left, right) == std::tie(_rhs.left, _rhs.right);
294 }
295 inline bool operator<(const VolumeStereo& _rhs) const {
296 return std::tie(left, right) < std::tie(_rhs.left, _rhs.right);
297 }
298 inline bool operator!=(const VolumeStereo& _rhs) const {
299 return !(*this == _rhs);
300 }
301 inline bool operator>(const VolumeStereo& _rhs) const {
302 return _rhs < *this;
303 }
304 inline bool operator>=(const VolumeStereo& _rhs) const {
305 return !(*this < _rhs);
306 }
307 inline bool operator<=(const VolumeStereo& _rhs) const {
308 return !(_rhs < *this);
309 }
310
311 static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_VINTF;
toString()312 inline std::string toString() const {
313 std::ostringstream _aidl_os;
314 _aidl_os << "VolumeStereo{";
315 _aidl_os << "left: " << ::android::internal::ToString(left);
316 _aidl_os << ", right: " << ::android::internal::ToString(right);
317 _aidl_os << "}";
318 return _aidl_os.str();
319 }
320 };
321 class Specific {
322 public:
323 typedef std::false_type fixed_size;
324 static const char* descriptor;
325
326 enum class Tag : int32_t {
327 vendorEffect = 0,
328 acousticEchoCanceler = 1,
329 automaticGainControlV1 = 2,
330 automaticGainControlV2 = 3,
331 bassBoost = 4,
332 downmix = 5,
333 dynamicsProcessing = 6,
334 environmentalReverb = 7,
335 equalizer = 8,
336 hapticGenerator = 9,
337 loudnessEnhancer = 10,
338 noiseSuppression = 11,
339 presetReverb = 12,
340 virtualizer = 13,
341 visualizer = 14,
342 volume = 15,
343 spatializer = 16,
344 eraser = 17,
345 };
346
347 // Expose tag symbols for legacy code
348 static const inline Tag vendorEffect = Tag::vendorEffect;
349 static const inline Tag acousticEchoCanceler = Tag::acousticEchoCanceler;
350 static const inline Tag automaticGainControlV1 = Tag::automaticGainControlV1;
351 static const inline Tag automaticGainControlV2 = Tag::automaticGainControlV2;
352 static const inline Tag bassBoost = Tag::bassBoost;
353 static const inline Tag downmix = Tag::downmix;
354 static const inline Tag dynamicsProcessing = Tag::dynamicsProcessing;
355 static const inline Tag environmentalReverb = Tag::environmentalReverb;
356 static const inline Tag equalizer = Tag::equalizer;
357 static const inline Tag hapticGenerator = Tag::hapticGenerator;
358 static const inline Tag loudnessEnhancer = Tag::loudnessEnhancer;
359 static const inline Tag noiseSuppression = Tag::noiseSuppression;
360 static const inline Tag presetReverb = Tag::presetReverb;
361 static const inline Tag virtualizer = Tag::virtualizer;
362 static const inline Tag visualizer = Tag::visualizer;
363 static const inline Tag volume = Tag::volume;
364 static const inline Tag spatializer = Tag::spatializer;
365 static const inline Tag eraser = Tag::eraser;
366
367 template<typename _Tp>
368 static constexpr bool _not_self = !std::is_same_v<std::remove_cv_t<std::remove_reference_t<_Tp>>, Specific>;
369
Specific()370 Specific() : _value(std::in_place_index<static_cast<size_t>(vendorEffect)>, ::aidl::android::hardware::audio::effect::VendorExtension()) { }
371
372 template <typename _Tp, typename = std::enable_if_t<_not_self<_Tp>>>
373 // NOLINTNEXTLINE(google-explicit-constructor)
Specific(_Tp && _arg)374 constexpr Specific(_Tp&& _arg)
375 : _value(std::forward<_Tp>(_arg)) {}
376
377 template <size_t _Np, typename... _Tp>
Specific(std::in_place_index_t<_Np>,_Tp &&..._args)378 constexpr explicit Specific(std::in_place_index_t<_Np>, _Tp&&... _args)
379 : _value(std::in_place_index<_Np>, std::forward<_Tp>(_args)...) {}
380
381 template <Tag _tag, typename... _Tp>
make(_Tp &&..._args)382 static Specific make(_Tp&&... _args) {
383 return Specific(std::in_place_index<static_cast<size_t>(_tag)>, std::forward<_Tp>(_args)...);
384 }
385
386 template <Tag _tag, typename _Tp, typename... _Up>
make(std::initializer_list<_Tp> _il,_Up &&..._args)387 static Specific make(std::initializer_list<_Tp> _il, _Up&&... _args) {
388 return Specific(std::in_place_index<static_cast<size_t>(_tag)>, std::move(_il), std::forward<_Up>(_args)...);
389 }
390
getTag()391 Tag getTag() const {
392 return static_cast<Tag>(_value.index());
393 }
394
395 template <Tag _tag>
get()396 const auto& get() const {
397 if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
398 return std::get<static_cast<size_t>(_tag)>(_value);
399 }
400
401 template <Tag _tag>
get()402 auto& get() {
403 if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
404 return std::get<static_cast<size_t>(_tag)>(_value);
405 }
406
407 template <Tag _tag, typename... _Tp>
set(_Tp &&..._args)408 void set(_Tp&&... _args) {
409 _value.emplace<static_cast<size_t>(_tag)>(std::forward<_Tp>(_args)...);
410 }
411
412 binder_status_t readFromParcel(const AParcel* _parcel);
413 binder_status_t writeToParcel(AParcel* _parcel) const;
414
415 inline bool operator==(const Specific& _rhs) const {
416 return _value == _rhs._value;
417 }
418 inline bool operator<(const Specific& _rhs) const {
419 return _value < _rhs._value;
420 }
421 inline bool operator!=(const Specific& _rhs) const {
422 return !(*this == _rhs);
423 }
424 inline bool operator>(const Specific& _rhs) const {
425 return _rhs < *this;
426 }
427 inline bool operator>=(const Specific& _rhs) const {
428 return !(*this < _rhs);
429 }
430 inline bool operator<=(const Specific& _rhs) const {
431 return !(_rhs < *this);
432 }
433
434 static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_VINTF;
toString()435 inline std::string toString() const {
436 std::ostringstream os;
437 os << "Specific{";
438 switch (getTag()) {
439 case vendorEffect: os << "vendorEffect: " << ::android::internal::ToString(get<vendorEffect>()); break;
440 case acousticEchoCanceler: os << "acousticEchoCanceler: " << ::android::internal::ToString(get<acousticEchoCanceler>()); break;
441 case automaticGainControlV1: os << "automaticGainControlV1: " << ::android::internal::ToString(get<automaticGainControlV1>()); break;
442 case automaticGainControlV2: os << "automaticGainControlV2: " << ::android::internal::ToString(get<automaticGainControlV2>()); break;
443 case bassBoost: os << "bassBoost: " << ::android::internal::ToString(get<bassBoost>()); break;
444 case downmix: os << "downmix: " << ::android::internal::ToString(get<downmix>()); break;
445 case dynamicsProcessing: os << "dynamicsProcessing: " << ::android::internal::ToString(get<dynamicsProcessing>()); break;
446 case environmentalReverb: os << "environmentalReverb: " << ::android::internal::ToString(get<environmentalReverb>()); break;
447 case equalizer: os << "equalizer: " << ::android::internal::ToString(get<equalizer>()); break;
448 case hapticGenerator: os << "hapticGenerator: " << ::android::internal::ToString(get<hapticGenerator>()); break;
449 case loudnessEnhancer: os << "loudnessEnhancer: " << ::android::internal::ToString(get<loudnessEnhancer>()); break;
450 case noiseSuppression: os << "noiseSuppression: " << ::android::internal::ToString(get<noiseSuppression>()); break;
451 case presetReverb: os << "presetReverb: " << ::android::internal::ToString(get<presetReverb>()); break;
452 case virtualizer: os << "virtualizer: " << ::android::internal::ToString(get<virtualizer>()); break;
453 case visualizer: os << "visualizer: " << ::android::internal::ToString(get<visualizer>()); break;
454 case volume: os << "volume: " << ::android::internal::ToString(get<volume>()); break;
455 case spatializer: os << "spatializer: " << ::android::internal::ToString(get<spatializer>()); break;
456 case eraser: os << "eraser: " << ::android::internal::ToString(get<eraser>()); break;
457 }
458 os << "}";
459 return os.str();
460 }
461 private:
462 std::variant<::aidl::android::hardware::audio::effect::VendorExtension, ::aidl::android::hardware::audio::effect::AcousticEchoCanceler, ::aidl::android::hardware::audio::effect::AutomaticGainControlV1, ::aidl::android::hardware::audio::effect::AutomaticGainControlV2, ::aidl::android::hardware::audio::effect::BassBoost, ::aidl::android::hardware::audio::effect::Downmix, ::aidl::android::hardware::audio::effect::DynamicsProcessing, ::aidl::android::hardware::audio::effect::EnvironmentalReverb, ::aidl::android::hardware::audio::effect::Equalizer, ::aidl::android::hardware::audio::effect::HapticGenerator, ::aidl::android::hardware::audio::effect::LoudnessEnhancer, ::aidl::android::hardware::audio::effect::NoiseSuppression, ::aidl::android::hardware::audio::effect::PresetReverb, ::aidl::android::hardware::audio::effect::Virtualizer, ::aidl::android::hardware::audio::effect::Visualizer, ::aidl::android::hardware::audio::effect::Volume, ::aidl::android::hardware::audio::effect::Spatializer, ::aidl::android::hardware::audio::effect::Eraser> _value;
463 };
464 // Expose tag symbols for legacy code
465 static const inline Tag common = Tag::common;
466 static const inline Tag deviceDescription = Tag::deviceDescription;
467 static const inline Tag mode = Tag::mode;
468 static const inline Tag source = Tag::source;
469 static const inline Tag offload = Tag::offload;
470 static const inline Tag volumeStereo = Tag::volumeStereo;
471 static const inline Tag specific = Tag::specific;
472 static const inline Tag sinkMetadata = Tag::sinkMetadata;
473 static const inline Tag sourceMetadata = Tag::sourceMetadata;
474
475 template<typename _Tp>
476 static constexpr bool _not_self = !std::is_same_v<std::remove_cv_t<std::remove_reference_t<_Tp>>, Parameter>;
477
Parameter()478 Parameter() : _value(std::in_place_index<static_cast<size_t>(common)>, ::aidl::android::hardware::audio::effect::Parameter::Common()) { }
479
480 template <typename _Tp, typename = std::enable_if_t<_not_self<_Tp>>>
481 // NOLINTNEXTLINE(google-explicit-constructor)
Parameter(_Tp && _arg)482 constexpr Parameter(_Tp&& _arg)
483 : _value(std::forward<_Tp>(_arg)) {}
484
485 template <size_t _Np, typename... _Tp>
Parameter(std::in_place_index_t<_Np>,_Tp &&..._args)486 constexpr explicit Parameter(std::in_place_index_t<_Np>, _Tp&&... _args)
487 : _value(std::in_place_index<_Np>, std::forward<_Tp>(_args)...) {}
488
489 template <Tag _tag, typename... _Tp>
make(_Tp &&..._args)490 static Parameter make(_Tp&&... _args) {
491 return Parameter(std::in_place_index<static_cast<size_t>(_tag)>, std::forward<_Tp>(_args)...);
492 }
493
494 template <Tag _tag, typename _Tp, typename... _Up>
make(std::initializer_list<_Tp> _il,_Up &&..._args)495 static Parameter make(std::initializer_list<_Tp> _il, _Up&&... _args) {
496 return Parameter(std::in_place_index<static_cast<size_t>(_tag)>, std::move(_il), std::forward<_Up>(_args)...);
497 }
498
getTag()499 Tag getTag() const {
500 return static_cast<Tag>(_value.index());
501 }
502
503 template <Tag _tag>
get()504 const auto& get() const {
505 if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
506 return std::get<static_cast<size_t>(_tag)>(_value);
507 }
508
509 template <Tag _tag>
get()510 auto& get() {
511 if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
512 return std::get<static_cast<size_t>(_tag)>(_value);
513 }
514
515 template <Tag _tag, typename... _Tp>
set(_Tp &&..._args)516 void set(_Tp&&... _args) {
517 _value.emplace<static_cast<size_t>(_tag)>(std::forward<_Tp>(_args)...);
518 }
519
520 binder_status_t readFromParcel(const AParcel* _parcel);
521 binder_status_t writeToParcel(AParcel* _parcel) const;
522
523 inline bool operator==(const Parameter& _rhs) const {
524 return _value == _rhs._value;
525 }
526 inline bool operator<(const Parameter& _rhs) const {
527 return _value < _rhs._value;
528 }
529 inline bool operator!=(const Parameter& _rhs) const {
530 return !(*this == _rhs);
531 }
532 inline bool operator>(const Parameter& _rhs) const {
533 return _rhs < *this;
534 }
535 inline bool operator>=(const Parameter& _rhs) const {
536 return !(*this < _rhs);
537 }
538 inline bool operator<=(const Parameter& _rhs) const {
539 return !(_rhs < *this);
540 }
541
542 static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_VINTF;
toString()543 inline std::string toString() const {
544 std::ostringstream os;
545 os << "Parameter{";
546 switch (getTag()) {
547 case common: os << "common: " << ::android::internal::ToString(get<common>()); break;
548 case deviceDescription: os << "deviceDescription: " << ::android::internal::ToString(get<deviceDescription>()); break;
549 case mode: os << "mode: " << ::android::internal::ToString(get<mode>()); break;
550 case source: os << "source: " << ::android::internal::ToString(get<source>()); break;
551 case offload: os << "offload: " << ::android::internal::ToString(get<offload>()); break;
552 case volumeStereo: os << "volumeStereo: " << ::android::internal::ToString(get<volumeStereo>()); break;
553 case specific: os << "specific: " << ::android::internal::ToString(get<specific>()); break;
554 case sinkMetadata: os << "sinkMetadata: " << ::android::internal::ToString(get<sinkMetadata>()); break;
555 case sourceMetadata: os << "sourceMetadata: " << ::android::internal::ToString(get<sourceMetadata>()); break;
556 }
557 os << "}";
558 return os.str();
559 }
560 private:
561 std::variant<::aidl::android::hardware::audio::effect::Parameter::Common, std::vector<::aidl::android::media::audio::common::AudioDeviceDescription>, ::aidl::android::media::audio::common::AudioMode, ::aidl::android::media::audio::common::AudioSource, bool, ::aidl::android::hardware::audio::effect::Parameter::VolumeStereo, ::aidl::android::hardware::audio::effect::Parameter::Specific, ::aidl::android::hardware::audio::common::SinkMetadata, ::aidl::android::hardware::audio::common::SourceMetadata> _value;
562 };
563 } // namespace effect
564 } // namespace audio
565 } // namespace hardware
566 } // namespace android
567 } // namespace aidl
568 namespace aidl {
569 namespace android {
570 namespace hardware {
571 namespace audio {
572 namespace effect {
toString(Parameter::Id::Tag val)573 [[nodiscard]] static inline std::string toString(Parameter::Id::Tag val) {
574 switch(val) {
575 case Parameter::Id::Tag::vendorEffectTag:
576 return "vendorEffectTag";
577 case Parameter::Id::Tag::acousticEchoCancelerTag:
578 return "acousticEchoCancelerTag";
579 case Parameter::Id::Tag::automaticGainControlV1Tag:
580 return "automaticGainControlV1Tag";
581 case Parameter::Id::Tag::automaticGainControlV2Tag:
582 return "automaticGainControlV2Tag";
583 case Parameter::Id::Tag::bassBoostTag:
584 return "bassBoostTag";
585 case Parameter::Id::Tag::downmixTag:
586 return "downmixTag";
587 case Parameter::Id::Tag::dynamicsProcessingTag:
588 return "dynamicsProcessingTag";
589 case Parameter::Id::Tag::environmentalReverbTag:
590 return "environmentalReverbTag";
591 case Parameter::Id::Tag::equalizerTag:
592 return "equalizerTag";
593 case Parameter::Id::Tag::hapticGeneratorTag:
594 return "hapticGeneratorTag";
595 case Parameter::Id::Tag::loudnessEnhancerTag:
596 return "loudnessEnhancerTag";
597 case Parameter::Id::Tag::noiseSuppressionTag:
598 return "noiseSuppressionTag";
599 case Parameter::Id::Tag::presetReverbTag:
600 return "presetReverbTag";
601 case Parameter::Id::Tag::virtualizerTag:
602 return "virtualizerTag";
603 case Parameter::Id::Tag::visualizerTag:
604 return "visualizerTag";
605 case Parameter::Id::Tag::volumeTag:
606 return "volumeTag";
607 case Parameter::Id::Tag::commonTag:
608 return "commonTag";
609 case Parameter::Id::Tag::spatializerTag:
610 return "spatializerTag";
611 case Parameter::Id::Tag::eraserTag:
612 return "eraserTag";
613 default:
614 return std::to_string(static_cast<int32_t>(val));
615 }
616 }
617 } // namespace effect
618 } // namespace audio
619 } // namespace hardware
620 } // namespace android
621 } // namespace aidl
622 namespace ndk {
623 namespace internal {
624 #pragma clang diagnostic push
625 #pragma clang diagnostic ignored "-Wc++17-extensions"
626 template <>
627 constexpr inline std::array<aidl::android::hardware::audio::effect::Parameter::Id::Tag, 19> enum_values<aidl::android::hardware::audio::effect::Parameter::Id::Tag> = {
628 aidl::android::hardware::audio::effect::Parameter::Id::Tag::vendorEffectTag,
629 aidl::android::hardware::audio::effect::Parameter::Id::Tag::acousticEchoCancelerTag,
630 aidl::android::hardware::audio::effect::Parameter::Id::Tag::automaticGainControlV1Tag,
631 aidl::android::hardware::audio::effect::Parameter::Id::Tag::automaticGainControlV2Tag,
632 aidl::android::hardware::audio::effect::Parameter::Id::Tag::bassBoostTag,
633 aidl::android::hardware::audio::effect::Parameter::Id::Tag::downmixTag,
634 aidl::android::hardware::audio::effect::Parameter::Id::Tag::dynamicsProcessingTag,
635 aidl::android::hardware::audio::effect::Parameter::Id::Tag::environmentalReverbTag,
636 aidl::android::hardware::audio::effect::Parameter::Id::Tag::equalizerTag,
637 aidl::android::hardware::audio::effect::Parameter::Id::Tag::hapticGeneratorTag,
638 aidl::android::hardware::audio::effect::Parameter::Id::Tag::loudnessEnhancerTag,
639 aidl::android::hardware::audio::effect::Parameter::Id::Tag::noiseSuppressionTag,
640 aidl::android::hardware::audio::effect::Parameter::Id::Tag::presetReverbTag,
641 aidl::android::hardware::audio::effect::Parameter::Id::Tag::virtualizerTag,
642 aidl::android::hardware::audio::effect::Parameter::Id::Tag::visualizerTag,
643 aidl::android::hardware::audio::effect::Parameter::Id::Tag::volumeTag,
644 aidl::android::hardware::audio::effect::Parameter::Id::Tag::commonTag,
645 aidl::android::hardware::audio::effect::Parameter::Id::Tag::spatializerTag,
646 aidl::android::hardware::audio::effect::Parameter::Id::Tag::eraserTag,
647 };
648 #pragma clang diagnostic pop
649 } // namespace internal
650 } // namespace ndk
651 namespace aidl {
652 namespace android {
653 namespace hardware {
654 namespace audio {
655 namespace effect {
toString(Parameter::Specific::Tag val)656 [[nodiscard]] static inline std::string toString(Parameter::Specific::Tag val) {
657 switch(val) {
658 case Parameter::Specific::Tag::vendorEffect:
659 return "vendorEffect";
660 case Parameter::Specific::Tag::acousticEchoCanceler:
661 return "acousticEchoCanceler";
662 case Parameter::Specific::Tag::automaticGainControlV1:
663 return "automaticGainControlV1";
664 case Parameter::Specific::Tag::automaticGainControlV2:
665 return "automaticGainControlV2";
666 case Parameter::Specific::Tag::bassBoost:
667 return "bassBoost";
668 case Parameter::Specific::Tag::downmix:
669 return "downmix";
670 case Parameter::Specific::Tag::dynamicsProcessing:
671 return "dynamicsProcessing";
672 case Parameter::Specific::Tag::environmentalReverb:
673 return "environmentalReverb";
674 case Parameter::Specific::Tag::equalizer:
675 return "equalizer";
676 case Parameter::Specific::Tag::hapticGenerator:
677 return "hapticGenerator";
678 case Parameter::Specific::Tag::loudnessEnhancer:
679 return "loudnessEnhancer";
680 case Parameter::Specific::Tag::noiseSuppression:
681 return "noiseSuppression";
682 case Parameter::Specific::Tag::presetReverb:
683 return "presetReverb";
684 case Parameter::Specific::Tag::virtualizer:
685 return "virtualizer";
686 case Parameter::Specific::Tag::visualizer:
687 return "visualizer";
688 case Parameter::Specific::Tag::volume:
689 return "volume";
690 case Parameter::Specific::Tag::spatializer:
691 return "spatializer";
692 case Parameter::Specific::Tag::eraser:
693 return "eraser";
694 default:
695 return std::to_string(static_cast<int32_t>(val));
696 }
697 }
698 } // namespace effect
699 } // namespace audio
700 } // namespace hardware
701 } // namespace android
702 } // namespace aidl
703 namespace ndk {
704 namespace internal {
705 #pragma clang diagnostic push
706 #pragma clang diagnostic ignored "-Wc++17-extensions"
707 template <>
708 constexpr inline std::array<aidl::android::hardware::audio::effect::Parameter::Specific::Tag, 18> enum_values<aidl::android::hardware::audio::effect::Parameter::Specific::Tag> = {
709 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::vendorEffect,
710 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::acousticEchoCanceler,
711 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::automaticGainControlV1,
712 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::automaticGainControlV2,
713 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::bassBoost,
714 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::downmix,
715 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::dynamicsProcessing,
716 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::environmentalReverb,
717 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::equalizer,
718 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::hapticGenerator,
719 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::loudnessEnhancer,
720 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::noiseSuppression,
721 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::presetReverb,
722 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::virtualizer,
723 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::visualizer,
724 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::volume,
725 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::spatializer,
726 aidl::android::hardware::audio::effect::Parameter::Specific::Tag::eraser,
727 };
728 #pragma clang diagnostic pop
729 } // namespace internal
730 } // namespace ndk
731 namespace aidl {
732 namespace android {
733 namespace hardware {
734 namespace audio {
735 namespace effect {
toString(Parameter::Tag val)736 [[nodiscard]] static inline std::string toString(Parameter::Tag val) {
737 switch(val) {
738 case Parameter::Tag::common:
739 return "common";
740 case Parameter::Tag::deviceDescription:
741 return "deviceDescription";
742 case Parameter::Tag::mode:
743 return "mode";
744 case Parameter::Tag::source:
745 return "source";
746 case Parameter::Tag::offload:
747 return "offload";
748 case Parameter::Tag::volumeStereo:
749 return "volumeStereo";
750 case Parameter::Tag::specific:
751 return "specific";
752 case Parameter::Tag::sinkMetadata:
753 return "sinkMetadata";
754 case Parameter::Tag::sourceMetadata:
755 return "sourceMetadata";
756 default:
757 return std::to_string(static_cast<int32_t>(val));
758 }
759 }
760 } // namespace effect
761 } // namespace audio
762 } // namespace hardware
763 } // namespace android
764 } // namespace aidl
765 namespace ndk {
766 namespace internal {
767 #pragma clang diagnostic push
768 #pragma clang diagnostic ignored "-Wc++17-extensions"
769 template <>
770 constexpr inline std::array<aidl::android::hardware::audio::effect::Parameter::Tag, 9> enum_values<aidl::android::hardware::audio::effect::Parameter::Tag> = {
771 aidl::android::hardware::audio::effect::Parameter::Tag::common,
772 aidl::android::hardware::audio::effect::Parameter::Tag::deviceDescription,
773 aidl::android::hardware::audio::effect::Parameter::Tag::mode,
774 aidl::android::hardware::audio::effect::Parameter::Tag::source,
775 aidl::android::hardware::audio::effect::Parameter::Tag::offload,
776 aidl::android::hardware::audio::effect::Parameter::Tag::volumeStereo,
777 aidl::android::hardware::audio::effect::Parameter::Tag::specific,
778 aidl::android::hardware::audio::effect::Parameter::Tag::sinkMetadata,
779 aidl::android::hardware::audio::effect::Parameter::Tag::sourceMetadata,
780 };
781 #pragma clang diagnostic pop
782 } // namespace internal
783 } // namespace ndk
784