xref: /aosp_15_r20/frameworks/av/media/audioaidlconversion/include/media/AidlConversionCppNdk-impl.h (revision ec779b8e0859a360c3d303172224686826e6e0e1)
1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 // WARNING: This file is intended for multiple inclusion.
18 // Do not include directly, use 'AidlConversionCppNdk.h'.
19 #if (defined(BACKEND_NDK_IMPL) && !defined(AUDIO_AIDL_CONVERSION_AIDL_CONVERSION_CPP_NDK_NDK)) || \
20     (!defined(BACKEND_NDK_IMPL) && !defined(AUDIO_AIDL_CONVERSION_AIDL_CONVERSION_CPP_NDK_CPP))
21 #if defined(BACKEND_NDK_IMPL)
22 #define AUDIO_AIDL_CONVERSION_AIDL_CONVERSION_CPP_NDK_NDK
23 #else
24 #define AUDIO_AIDL_CONVERSION_AIDL_CONVERSION_CPP_NDK_CPP
25 #endif  // BACKEND_NDK_IMPL
26 
27 #include <limits>
28 #include <type_traits>
29 
30 /**
31  * Can handle conversion between AIDL (both CPP and NDK backend) and legacy type.
32  * Controlled by the cflags preprocessor in Android.bp.
33  */
34 #if defined(BACKEND_NDK_IMPL)
35 #define PREFIX(f) <aidl/f>
36 #else
37 #define PREFIX(f) <f>
38 #endif
39 
40 #include PREFIX(android/media/audio/common/AudioAttributes.h)
41 #include PREFIX(android/media/audio/common/AudioChannelLayout.h)
42 #include PREFIX(android/media/audio/common/AudioConfig.h)
43 #include PREFIX(android/media/audio/common/AudioConfigBase.h)
44 #include PREFIX(android/media/audio/common/AudioContentType.h)
45 #include PREFIX(android/media/audio/common/AudioDeviceDescription.h)
46 #include PREFIX(android/media/audio/common/AudioDualMonoMode.h)
47 #include PREFIX(android/media/audio/common/AudioEncapsulationMetadataType.h)
48 #include PREFIX(android/media/audio/common/AudioEncapsulationMode.h)
49 #include PREFIX(android/media/audio/common/AudioEncapsulationType.h)
50 #include PREFIX(android/media/audio/common/AudioFlag.h)
51 #include PREFIX(android/media/audio/common/AudioFormatDescription.h)
52 #include PREFIX(android/media/audio/common/AudioGain.h)
53 #include PREFIX(android/media/audio/common/AudioGainConfig.h)
54 #include PREFIX(android/media/audio/common/AudioGainMode.h)
55 #include PREFIX(android/media/audio/common/AudioInputFlags.h)
56 #include PREFIX(android/media/audio/common/AudioIoFlags.h)
57 #include PREFIX(android/media/audio/common/AudioLatencyMode.h)
58 #include PREFIX(android/media/audio/common/AudioMode.h)
59 #include PREFIX(android/media/audio/common/AudioOffloadInfo.h)
60 #include PREFIX(android/media/audio/common/AudioOutputFlags.h)
61 #include PREFIX(android/media/audio/common/AudioPort.h)
62 #include PREFIX(android/media/audio/common/AudioPortConfig.h)
63 #include PREFIX(android/media/audio/common/AudioPortExt.h)
64 #include PREFIX(android/media/audio/common/AudioPortMixExt.h)
65 #include PREFIX(android/media/audio/common/AudioPlaybackRate.h)
66 #include PREFIX(android/media/audio/common/AudioProfile.h)
67 #include PREFIX(android/media/audio/common/AudioSource.h)
68 #include PREFIX(android/media/audio/common/AudioStandard.h)
69 #include PREFIX(android/media/audio/common/AudioUsage.h)
70 #include PREFIX(android/media/audio/common/AudioUuid.h)
71 #include PREFIX(android/media/audio/common/ExtraAudioDescriptor.h)
72 #include PREFIX(android/media/audio/common/Int.h)
73 #include PREFIX(android/media/audio/common/MicrophoneDynamicInfo.h)
74 #include PREFIX(android/media/audio/common/MicrophoneInfo.h)
75 #undef PREFIX
76 
77 #include <system/audio.h>
78 #include <system/audio_effect.h>
79 
80 #if defined(BACKEND_NDK_IMPL)
81 namespace aidl {
82 #endif
83 
84 namespace android {
85 
86 // maxSize is the size of the C-string buffer (including the 0-terminator), NOT the max length of
87 // the string.
88 ::android::status_t aidl2legacy_string(std::string_view aidl, char* dest, size_t maxSize);
89 ConversionResult<std::string> legacy2aidl_string(const char* legacy, size_t maxSize);
90 
91 ConversionResult<audio_module_handle_t> aidl2legacy_int32_t_audio_module_handle_t(int32_t aidl);
92 ConversionResult<int32_t> legacy2aidl_audio_module_handle_t_int32_t(audio_module_handle_t legacy);
93 
94 ConversionResult<audio_io_handle_t> aidl2legacy_int32_t_audio_io_handle_t(int32_t aidl);
95 ConversionResult<int32_t> legacy2aidl_audio_io_handle_t_int32_t(audio_io_handle_t legacy);
96 
97 ConversionResult<audio_port_handle_t> aidl2legacy_int32_t_audio_port_handle_t(int32_t aidl);
98 ConversionResult<int32_t> legacy2aidl_audio_port_handle_t_int32_t(audio_port_handle_t legacy);
99 
100 ConversionResult<audio_patch_handle_t> aidl2legacy_int32_t_audio_patch_handle_t(int32_t aidl);
101 ConversionResult<int32_t> legacy2aidl_audio_patch_handle_t_int32_t(audio_patch_handle_t legacy);
102 
103 ConversionResult<audio_unique_id_t> aidl2legacy_int32_t_audio_unique_id_t(int32_t aidl);
104 ConversionResult<int32_t> legacy2aidl_audio_unique_id_t_int32_t(audio_unique_id_t legacy);
105 
106 ConversionResult<audio_hw_sync_t> aidl2legacy_int32_t_audio_hw_sync_t(int32_t aidl);
107 ConversionResult<int32_t> legacy2aidl_audio_hw_sync_t_int32_t(audio_hw_sync_t legacy);
108 
109 ConversionResult<unsigned int> aidl2legacy_int32_t_config_mask(int32_t aidl);
110 ConversionResult<int32_t> legacy2aidl_config_mask_int32_t(unsigned int legacy);
111 
112 ConversionResult<pid_t> aidl2legacy_int32_t_pid_t(int32_t aidl);
113 ConversionResult<int32_t> legacy2aidl_pid_t_int32_t(pid_t legacy);
114 
115 ConversionResult<uid_t> aidl2legacy_int32_t_uid_t(int32_t aidl);
116 ConversionResult<int32_t> legacy2aidl_uid_t_int32_t(uid_t legacy);
117 
118 ConversionResult<::android::String8> aidl2legacy_string_view_String8(std::string_view aidl);
119 ConversionResult<std::string> legacy2aidl_String8_string(const ::android::String8& legacy);
120 
121 ConversionResult<::android::String16> aidl2legacy_string_view_String16(std::string_view aidl);
122 ConversionResult<std::string> legacy2aidl_String16_string(const ::android::String16& legacy);
123 
124 ConversionResult<std::optional<::android::String16>>
125 aidl2legacy_optional_string_view_optional_String16(std::optional<std::string_view> aidl);
126 ConversionResult<std::optional<std::string_view>>
127 legacy2aidl_optional_String16_optional_string(std::optional<::android::String16> legacy);
128 
129 ConversionResult<audio_channel_mask_t> aidl2legacy_AudioChannelLayout_audio_channel_mask_t(
130         const media::audio::common::AudioChannelLayout& aidl, bool isInput);
131 ConversionResult<media::audio::common::AudioChannelLayout>
132 legacy2aidl_audio_channel_mask_t_AudioChannelLayout(audio_channel_mask_t legacy, bool isInput);
133 
134 audio_channel_mask_t aidl2legacy_AudioChannelLayout_layout_audio_channel_mask_t_bits(
135         int aidlLayout, bool isInput);
136 int legacy2aidl_audio_channel_mask_t_bits_AudioChannelLayout_layout(
137         audio_channel_mask_t legacy, bool isInput);
138 
139 enum class AudioPortDirection {
140     INPUT, OUTPUT
141 };
142 ConversionResult<AudioPortDirection> portDirection(audio_port_role_t role, audio_port_type_t type);
143 ConversionResult<audio_port_role_t> portRole(AudioPortDirection direction, audio_port_type_t type);
144 
145 ConversionResult<audio_config_t>
146 aidl2legacy_AudioConfig_audio_config_t(const media::audio::common::AudioConfig& aidl, bool isInput);
147 ConversionResult<media::audio::common::AudioConfig>
148 legacy2aidl_audio_config_t_AudioConfig(const audio_config_t& legacy, bool isInput);
149 
150 ConversionResult<audio_config_base_t>
151 aidl2legacy_AudioConfigBase_audio_config_base_t(
152         const media::audio::common::AudioConfigBase& aidl, bool isInput);
153 ConversionResult<media::audio::common::AudioConfigBase>
154 legacy2aidl_audio_config_base_t_AudioConfigBase(const audio_config_base_t& legacy, bool isInput);
155 
156 ConversionResult<audio_input_flags_t>
157 aidl2legacy_AudioInputFlags_audio_input_flags_t(media::audio::common::AudioInputFlags aidl);
158 ConversionResult<media::audio::common::AudioInputFlags>
159 legacy2aidl_audio_input_flags_t_AudioInputFlags(audio_input_flags_t legacy);
160 
161 ConversionResult<audio_output_flags_t>
162 aidl2legacy_AudioOutputFlags_audio_output_flags_t(media::audio::common::AudioOutputFlags aidl);
163 ConversionResult<media::audio::common::AudioOutputFlags>
164 legacy2aidl_audio_output_flags_t_AudioOutputFlags(audio_output_flags_t legacy);
165 
166 ConversionResult<audio_input_flags_t> aidl2legacy_int32_t_audio_input_flags_t_mask(
167         int32_t aidl);
168 ConversionResult<int32_t> legacy2aidl_audio_input_flags_t_int32_t_mask(
169         audio_input_flags_t legacy);
170 
171 ConversionResult<audio_output_flags_t> aidl2legacy_int32_t_audio_output_flags_t_mask(
172         int32_t aidl);
173 ConversionResult<int32_t> legacy2aidl_audio_output_flags_t_int32_t_mask(
174         audio_output_flags_t legacy);
175 
176 ConversionResult<audio_io_flags> aidl2legacy_AudioIoFlags_audio_io_flags(
177         const media::audio::common::AudioIoFlags& aidl, bool isInput);
178 ConversionResult<media::audio::common::AudioIoFlags> legacy2aidl_audio_io_flags_AudioIoFlags(
179         const audio_io_flags& legacy, bool isInput);
180 
181 ConversionResult<audio_session_t> aidl2legacy_int32_t_audio_session_t(int32_t aidl);
182 ConversionResult<int32_t> legacy2aidl_audio_session_t_int32_t(audio_session_t legacy);
183 
184 ConversionResult<audio_content_type_t>
185 aidl2legacy_AudioContentType_audio_content_type_t(
186         media::audio::common::AudioContentType aidl);
187 ConversionResult<media::audio::common::AudioContentType>
188 legacy2aidl_audio_content_type_t_AudioContentType(audio_content_type_t legacy);
189 
190 ConversionResult<audio_devices_t> aidl2legacy_AudioDeviceDescription_audio_devices_t(
191         const media::audio::common::AudioDeviceDescription& aidl);
192 ConversionResult<media::audio::common::AudioDeviceDescription>
193 legacy2aidl_audio_devices_t_AudioDeviceDescription(audio_devices_t legacy);
194 
195 media::audio::common::AudioDeviceAddress::Tag suggestDeviceAddressTag(
196         const media::audio::common::AudioDeviceDescription& description);
197 
198 ::android::status_t aidl2legacy_AudioDevice_audio_device(
199         const media::audio::common::AudioDevice& aidl, audio_devices_t* legacyType,
200         char* legacyAddress);
201 ::android::status_t aidl2legacy_AudioDevice_audio_device(
202         const media::audio::common::AudioDevice& aidl, audio_devices_t* legacyType,
203         ::android::String8* legacyAddress);
204 ::android::status_t aidl2legacy_AudioDevice_audio_device(
205         const media::audio::common::AudioDevice& aidl, audio_devices_t* legacyType,
206         std::string* legacyAddress);
207 
208 ConversionResult<media::audio::common::AudioDevice> legacy2aidl_audio_device_AudioDevice(
209         audio_devices_t legacyType, const char* legacyAddress);
210 ConversionResult<media::audio::common::AudioDevice> legacy2aidl_audio_device_AudioDevice(
211         audio_devices_t legacyType, const ::android::String8& legacyAddress);
212 ConversionResult<media::audio::common::AudioDevice> legacy2aidl_audio_device_AudioDevice(
213         audio_devices_t legacyType, const std::string& legacyAddress);
214 
215 ConversionResult<audio_extra_audio_descriptor>
216 aidl2legacy_ExtraAudioDescriptor_audio_extra_audio_descriptor(
217         const media::audio::common::ExtraAudioDescriptor& aidl);
218 
219 ConversionResult<media::audio::common::ExtraAudioDescriptor>
220 legacy2aidl_audio_extra_audio_descriptor_ExtraAudioDescriptor(
221         const audio_extra_audio_descriptor& legacy);
222 
223 ConversionResult<audio_encapsulation_metadata_type_t>
224 aidl2legacy_AudioEncapsulationMetadataType_audio_encapsulation_metadata_type_t(
225         media::audio::common::AudioEncapsulationMetadataType aidl);
226 ConversionResult<media::audio::common::AudioEncapsulationMetadataType>
227 legacy2aidl_audio_encapsulation_metadata_type_t_AudioEncapsulationMetadataType(
228         audio_encapsulation_metadata_type_t legacy);
229 
230 ConversionResult<uint32_t> aidl2legacy_AudioEncapsulationMetadataType_mask(int32_t aidl);
231 ConversionResult<int32_t> legacy2aidl_AudioEncapsulationMetadataType_mask(uint32_t legacy);
232 
233 ConversionResult<audio_encapsulation_mode_t>
234 aidl2legacy_AudioEncapsulationMode_audio_encapsulation_mode_t(
235         media::audio::common::AudioEncapsulationMode aidl);
236 ConversionResult<media::audio::common::AudioEncapsulationMode>
237 legacy2aidl_audio_encapsulation_mode_t_AudioEncapsulationMode(audio_encapsulation_mode_t legacy);
238 
239 ConversionResult<uint32_t> aidl2legacy_AudioEncapsulationMode_mask(int32_t aidl);
240 ConversionResult<int32_t> legacy2aidl_AudioEncapsulationMode_mask(uint32_t legacy);
241 
242 ConversionResult<audio_encapsulation_type_t>
243 aidl2legacy_AudioEncapsulationType_audio_encapsulation_type_t(
244         const media::audio::common::AudioEncapsulationType& aidl);
245 ConversionResult<media::audio::common::AudioEncapsulationType>
246 legacy2aidl_audio_encapsulation_type_t_AudioEncapsulationType(
247         const audio_encapsulation_type_t& legacy);
248 
249 ConversionResult<audio_format_t> aidl2legacy_AudioFormatDescription_audio_format_t(
250         const media::audio::common::AudioFormatDescription& aidl);
251 ConversionResult<media::audio::common::AudioFormatDescription>
252 legacy2aidl_audio_format_t_AudioFormatDescription(audio_format_t legacy);
253 
254 ConversionResult<audio_gain_mode_t>
255 aidl2legacy_AudioGainMode_audio_gain_mode_t(media::audio::common::AudioGainMode aidl);
256 ConversionResult<media::audio::common::AudioGainMode>
257 legacy2aidl_audio_gain_mode_t_AudioGainMode(audio_gain_mode_t legacy);
258 
259 ConversionResult<audio_gain_mode_t> aidl2legacy_int32_t_audio_gain_mode_t_mask(int32_t aidl);
260 ConversionResult<int32_t> legacy2aidl_audio_gain_mode_t_int32_t_mask(audio_gain_mode_t legacy);
261 
262 ConversionResult<audio_gain_config> aidl2legacy_AudioGainConfig_audio_gain_config(
263         const media::audio::common::AudioGainConfig& aidl, bool isInput);
264 ConversionResult<media::audio::common::AudioGainConfig>
265 legacy2aidl_audio_gain_config_AudioGainConfig(const audio_gain_config& legacy, bool isInput);
266 
267 ConversionResult<audio_gain>
268 aidl2legacy_AudioGain_audio_gain(const media::audio::common::AudioGain& aidl, bool isInput);
269 ConversionResult<media::audio::common::AudioGain>
270 legacy2aidl_audio_gain_AudioGain(const audio_gain& legacy, bool isInput);
271 
272 ConversionResult<audio_input_flags_t>
273 aidl2legacy_AudioInputFlags_audio_input_flags_t(media::audio::common::AudioInputFlags aidl);
274 ConversionResult<media::audio::common::AudioInputFlags>
275 legacy2aidl_audio_input_flags_t_AudioInputFlags(audio_input_flags_t legacy);
276 
277 ConversionResult<audio_mode_t>
278 aidl2legacy_AudioMode_audio_mode_t(media::audio::common::AudioMode aidl);
279 ConversionResult<media::audio::common::AudioMode>
280 legacy2aidl_audio_mode_t_AudioMode(audio_mode_t legacy);
281 
282 ConversionResult<audio_offload_info_t>
283 aidl2legacy_AudioOffloadInfo_audio_offload_info_t(
284         const media::audio::common::AudioOffloadInfo& aidl);
285 ConversionResult<media::audio::common::AudioOffloadInfo>
286 legacy2aidl_audio_offload_info_t_AudioOffloadInfo(const audio_offload_info_t& legacy);
287 
288 ConversionResult<audio_output_flags_t>
289 aidl2legacy_AudioOutputFlags_audio_output_flags_t(media::audio::common::AudioOutputFlags aidl);
290 ConversionResult<media::audio::common::AudioOutputFlags>
291 legacy2aidl_audio_output_flags_t_AudioOutputFlags(audio_output_flags_t legacy);
292 
293 ConversionResult<audio_stream_type_t>
294 aidl2legacy_AudioStreamType_audio_stream_type_t(media::audio::common::AudioStreamType aidl);
295 ConversionResult<media::audio::common::AudioStreamType>
296 legacy2aidl_audio_stream_type_t_AudioStreamType(audio_stream_type_t legacy);
297 
298 // This type is unnamed in the original definition, thus we name it here.
299 using audio_port_config_mix_ext_usecase = decltype(audio_port_config_mix_ext::usecase);
300 ConversionResult<audio_port_config_mix_ext_usecase>
301 aidl2legacy_AudioPortMixExtUseCase_audio_port_config_mix_ext_usecase(
302         const media::audio::common::AudioPortMixExtUseCase& aidl, bool isInput);
303 ConversionResult<media::audio::common::AudioPortMixExtUseCase>
304 legacy2aidl_audio_port_config_mix_ext_usecase_AudioPortMixExtUseCase(
305         const audio_port_config_mix_ext_usecase& legacy, bool isInput);
306 
307 ConversionResult<audio_port_config_device_ext>
308 aidl2legacy_AudioPortDeviceExt_audio_port_config_device_ext(
309         const media::audio::common::AudioPortDeviceExt& aidl);
310 ConversionResult<media::audio::common::AudioPortDeviceExt>
311         legacy2aidl_audio_port_config_device_ext_AudioPortDeviceExt(
312         const audio_port_config_device_ext& legacy);
313 
314 ::android::status_t aidl2legacy_AudioPortConfig_audio_port_config(
315         const media::audio::common::AudioPortConfig& aidl, bool isInput,
316         audio_port_config* legacy, int32_t* portId);
317 ConversionResult<media::audio::common::AudioPortConfig>
318 legacy2aidl_audio_port_config_AudioPortConfig(
319         const audio_port_config& legacy, bool isInput, int32_t portId);
320 
321 ConversionResult<audio_port_mix_ext> aidl2legacy_AudioPortMixExt_audio_port_mix_ext(
322         const media::audio::common::AudioPortMixExt& aidl);
323 ConversionResult<media::audio::common::AudioPortMixExt>
324 legacy2aidl_audio_port_mix_ext_AudioPortMixExt(
325         const audio_port_mix_ext& legacy);
326 
327 ConversionResult<audio_port_device_ext>
328 aidl2legacy_AudioPortDeviceExt_audio_port_device_ext(
329         const media::audio::common::AudioPortDeviceExt& aidl);
330 ConversionResult<media::audio::common::AudioPortDeviceExt>
331 legacy2aidl_audio_port_device_ext_AudioPortDeviceExt(
332         const audio_port_device_ext& legacy);
333 
334 ConversionResult<audio_port_v7>
335 aidl2legacy_AudioPort_audio_port_v7(
336         const media::audio::common::AudioPort& aidl, bool isInput);
337 ConversionResult<media::audio::common::AudioPort>
338 legacy2aidl_audio_port_v7_AudioPort(const audio_port_v7& legacy, bool isInput);
339 
340 ConversionResult<audio_profile> aidl2legacy_AudioProfile_audio_profile(
341         const media::audio::common::AudioProfile& aidl, bool isInput);
342 ConversionResult<media::audio::common::AudioProfile> legacy2aidl_audio_profile_AudioProfile(
343         const audio_profile& legacy, bool isInput);
344 
345 ConversionResult<audio_standard_t> aidl2legacy_AudioStandard_audio_standard_t(
346         media::audio::common::AudioStandard aidl);
347 ConversionResult<media::audio::common::AudioStandard> legacy2aidl_audio_standard_t_AudioStandard(
348         audio_standard_t legacy);
349 
350 ConversionResult<audio_source_t> aidl2legacy_AudioSource_audio_source_t(
351         media::audio::common::AudioSource aidl);
352 ConversionResult<media::audio::common::AudioSource> legacy2aidl_audio_source_t_AudioSource(
353         audio_source_t legacy);
354 
355 ConversionResult<audio_usage_t> aidl2legacy_AudioUsage_audio_usage_t(
356         media::audio::common::AudioUsage aidl);
357 ConversionResult<media::audio::common::AudioUsage> legacy2aidl_audio_usage_t_AudioUsage(
358         audio_usage_t legacy);
359 
360 ConversionResult<audio_flags_mask_t>
361 aidl2legacy_AudioFlag_audio_flags_mask_t(media::audio::common::AudioFlag aidl);
362 ConversionResult<media::audio::common::AudioFlag>
363 legacy2aidl_audio_flags_mask_t_AudioFlag(audio_flags_mask_t legacy);
364 
365 ConversionResult<audio_flags_mask_t>
366 aidl2legacy_int32_t_audio_flags_mask_t_mask(int32_t aidl);
367 ConversionResult<int32_t>
368 legacy2aidl_audio_flags_mask_t_int32_t_mask(audio_flags_mask_t legacy);
369 
370 ConversionResult<std::string>
371 aidl2legacy_AudioTags_string(const std::vector<std::string>& aidl);
372 ConversionResult<std::vector<std::string>>
373 legacy2aidl_string_AudioTags(const std::string& legacy);
374 
375 ConversionResult<audio_attributes_t>
376 aidl2legacy_AudioAttributes_audio_attributes_t(const media::audio::common::AudioAttributes& aidl);
377 ConversionResult<media::audio::common::AudioAttributes>
378 legacy2aidl_audio_attributes_t_AudioAttributes(const audio_attributes_t& legacy);
379 
380 ConversionResult<audio_uuid_t> aidl2legacy_AudioUuid_audio_uuid_t(
381         const media::audio::common::AudioUuid &aidl);
382 ConversionResult<media::audio::common::AudioUuid> legacy2aidl_audio_uuid_t_AudioUuid(
383         const audio_uuid_t& legacy);
384 
385 ConversionResult<audio_dual_mono_mode_t>
386 aidl2legacy_AudioDualMonoMode_audio_dual_mono_mode_t(media::audio::common::AudioDualMonoMode aidl);
387 ConversionResult<media::audio::common::AudioDualMonoMode>
388 legacy2aidl_audio_dual_mono_mode_t_AudioDualMonoMode(audio_dual_mono_mode_t legacy);
389 
390 ConversionResult<audio_timestretch_fallback_mode_t>
391 aidl2legacy_TimestretchFallbackMode_audio_timestretch_fallback_mode_t(
392         media::audio::common::AudioPlaybackRate::TimestretchFallbackMode aidl);
393 ConversionResult<media::audio::common::AudioPlaybackRate::TimestretchFallbackMode>
394 legacy2aidl_audio_timestretch_fallback_mode_t_TimestretchFallbackMode(
395         audio_timestretch_fallback_mode_t legacy);
396 
397 ConversionResult<audio_timestretch_stretch_mode_t>
398 aidl2legacy_TimestretchMode_audio_timestretch_stretch_mode_t(
399         media::audio::common::AudioPlaybackRate::TimestretchMode aidl);
400 ConversionResult<media::audio::common::AudioPlaybackRate::TimestretchMode>
401 legacy2aidl_audio_timestretch_stretch_mode_t_TimestretchMode(
402         audio_timestretch_stretch_mode_t legacy);
403 
404 ConversionResult<audio_playback_rate_t>
405 aidl2legacy_AudioPlaybackRate_audio_playback_rate_t(
406         const media::audio::common::AudioPlaybackRate& aidl);
407 ConversionResult<media::audio::common::AudioPlaybackRate>
408 legacy2aidl_audio_playback_rate_t_AudioPlaybackRate(const audio_playback_rate_t& legacy);
409 
410 ConversionResult<audio_latency_mode_t>
411 aidl2legacy_AudioLatencyMode_audio_latency_mode_t(media::audio::common::AudioLatencyMode aidl);
412 ConversionResult<media::audio::common::AudioLatencyMode>
413 legacy2aidl_audio_latency_mode_t_AudioLatencyMode(audio_latency_mode_t legacy);
414 
415 ConversionResult<audio_microphone_location_t>
416 aidl2legacy_MicrophoneInfoLocation_audio_microphone_location_t(
417         media::audio::common::MicrophoneInfo::Location aidl);
418 ConversionResult<media::audio::common::MicrophoneInfo::Location>
419 legacy2aidl_audio_microphone_location_t_MicrophoneInfoLocation(audio_microphone_location_t legacy);
420 
421 ConversionResult<audio_microphone_group_t> aidl2legacy_int32_t_audio_microphone_group_t(
422         int32_t aidl);
423 ConversionResult<int32_t> legacy2aidl_audio_microphone_group_t_int32_t(
424         audio_microphone_group_t legacy);
425 
426 ConversionResult<audio_microphone_directionality_t>
427 aidl2legacy_MicrophoneInfoDirectionality_audio_microphone_directionality_t(
428         media::audio::common::MicrophoneInfo::Directionality aidl);
429 ConversionResult<media::audio::common::MicrophoneInfo::Directionality>
430 legacy2aidl_audio_microphone_directionality_t_MicrophoneInfoDirectionality(
431         audio_microphone_directionality_t legacy);
432 
433 ConversionResult<audio_microphone_coordinate>
434 aidl2legacy_MicrophoneInfoCoordinate_audio_microphone_coordinate(
435         const media::audio::common::MicrophoneInfo::Coordinate& aidl);
436 ConversionResult<media::audio::common::MicrophoneInfo::Coordinate>
437 legacy2aidl_audio_microphone_coordinate_MicrophoneInfoCoordinate(
438         const audio_microphone_coordinate& legacy);
439 
440 ConversionResult<audio_microphone_channel_mapping_t>
441 aidl2legacy_MicrophoneDynamicInfoChannelMapping_audio_microphone_channel_mapping_t(
442         media::audio::common::MicrophoneDynamicInfo::ChannelMapping aidl);
443 ConversionResult<media::audio::common::MicrophoneDynamicInfo::ChannelMapping>
444 legacy2aidl_audio_microphone_channel_mapping_t_MicrophoneDynamicInfoChannelMapping(
445         audio_microphone_channel_mapping_t legacy);
446 
447 ConversionResult<audio_microphone_characteristic_t>
448 aidl2legacy_MicrophoneInfos_audio_microphone_characteristic_t(
449         const media::audio::common::MicrophoneInfo& aidlInfo,
450         const media::audio::common::MicrophoneDynamicInfo& aidlDynamic);
451 ::android::status_t
452 legacy2aidl_audio_microphone_characteristic_t_MicrophoneInfos(
453         const audio_microphone_characteristic_t& legacy,
454         media::audio::common::MicrophoneInfo* aidlInfo,
455         media::audio::common::MicrophoneDynamicInfo* aidlDynamic);
456 
457 }  // namespace android
458 
459 #if defined(BACKEND_NDK_IMPL)
460 } // aidl
461 #endif
462 
463 // (defined(BACKEND_NDK_IMPL) && !defined(AUDIO_AIDL_CONVERSION_AIDL_CONVERSION_CPP_NDK_NDK)) || \
464 // (!defined(BACKEND_NDK_IMPL) && !defined(AUDIO_AIDL_CONVERSION_AIDL_CONVERSION_CPP_NDK_CPP))
465 #endif
466