1package {
2    // See: http://go/android-license-faq
3    // A large-scale-change added 'default_applicable_licenses' to import
4    // all of the 'license_kinds' from "frameworks_av_license"
5    // to get the below license kinds:
6    //   SPDX-license-identifier-Apache-2.0
7    default_applicable_licenses: ["frameworks_av_license"],
8}
9
10cc_library_headers {
11    name: "libaudioclient_headers",
12    vendor_available: true,
13    min_sdk_version: "29",
14    host_supported: true,
15
16    header_libs: [
17        "libaudiofoundation_headers",
18    ],
19    export_include_dirs: [
20        "include",
21    ],
22    export_header_lib_headers: [
23        "libaudiofoundation_headers",
24    ],
25    static_libs: [
26        "audioflinger-aidl-cpp",
27        "audiopolicy-aidl-cpp",
28        "spatializer-aidl-cpp",
29        "av-types-aidl-cpp",
30    ],
31    export_static_lib_headers: [
32        "audioflinger-aidl-cpp",
33        "audiopolicy-aidl-cpp",
34        "spatializer-aidl-cpp",
35        "av-types-aidl-cpp",
36    ],
37    target: {
38        darwin: {
39            enabled: false,
40        },
41    },
42}
43
44cc_library_shared {
45    name: "libaudiopolicy",
46    srcs: [
47        "AudioAttributes.cpp",
48        "AudioPolicy.cpp",
49        "AudioProductStrategy.cpp",
50        "AudioVolumeGroup.cpp",
51        "PolicyAidlConversion.cpp"
52    ],
53    shared_libs: [
54        "audioclient-types-aidl-cpp",
55        "audioflinger-aidl-cpp",
56        "audiopolicy-aidl-cpp",
57        "audiopolicy-types-aidl-cpp",
58        "capture_state_listener-aidl-cpp",
59        "libaudiofoundation",
60        "libaudioclient_aidl_conversion",
61        "libaudioutils",
62        "libbinder",
63        "libcutils",
64        "liblog",
65        "libutils",
66    ],
67    cflags: [
68        "-Werror",
69        "-Wall",
70    ],
71    include_dirs: ["system/media/audio_utils/include"],
72    export_include_dirs: ["include"],
73    export_shared_lib_headers: [
74        "audioclient-types-aidl-cpp",
75        "audioflinger-aidl-cpp",
76        "audiopolicy-aidl-cpp",
77        "audiopolicy-types-aidl-cpp",
78        "capture_state_listener-aidl-cpp",
79        "libaudiofoundation",
80        "libaudioclient_aidl_conversion",
81    ],
82    header_libs: ["libaudioclient_headers"],
83}
84
85cc_library {
86    name: "libaudioclient",
87
88    aidl: {
89        export_aidl_headers: true,
90        local_include_dirs: ["aidl"],
91        include_dirs: [
92            "frameworks/av/aidl",
93        ],
94    },
95
96    srcs: [
97        // AIDL files for audioclient interfaces
98        // The headers for these interfaces will be available to any modules that
99        // include libaudioclient, at the path "aidl/package/path/BnFoo.h"
100        ":libaudioclient_aidl",
101
102        "AudioEffect.cpp",
103        "AudioRecord.cpp",
104        "AudioSystem.cpp",
105        "AudioTrack.cpp",
106        "AudioTrackShared.cpp",
107        "IAudioFlinger.cpp",
108        "ToneGenerator.cpp",
109        "PlayerBase.cpp",
110        "RecordingActivityTracker.cpp",
111        "TrackPlayerBase.cpp",
112    ],
113    shared_libs: [
114        "audioclient-types-aidl-cpp",
115        "audioflinger-aidl-cpp",
116        "audiopolicy-aidl-cpp",
117        "spatializer-aidl-cpp",
118        "audiopolicy-types-aidl-cpp",
119        "av-types-aidl-cpp",
120        "capture_state_listener-aidl-cpp",
121        "libaudioclient_aidl_conversion",
122        "libaudiofoundation",
123        "libaudioutils",
124        "libaudiopolicy",
125        "libaudiomanager",
126        "libbinder",
127        "libcutils",
128        "libdl",
129        "liblog",
130        "libmedia_helper",
131        "libmediametrics",
132        "libmediautils",
133        "libnblog",
134        "libprocessgroup",
135        "libshmemcompat",
136        "libutils",
137        "libvibrator",
138        "framework-permission-aidl-cpp",
139    ],
140    export_shared_lib_headers: [
141        "audioflinger-aidl-cpp",
142        "audiopolicy-aidl-cpp",
143        "spatializer-aidl-cpp",
144        "framework-permission-aidl-cpp",
145        "libbinder",
146    ],
147
148    include_dirs: [
149        "frameworks/av/media/libnbaio/include_mono/",
150    ],
151    local_include_dirs: [
152        "include/media",
153        "aidl",
154    ],
155    header_libs: [
156        "libaudioclient_headers",
157        "libbase_headers",
158        "libmedia_headers",
159    ],
160    export_header_lib_headers: ["libaudioclient_headers"],
161    export_static_lib_headers: [
162        "effect-aidl-cpp",
163        "shared-file-region-aidl-cpp",
164    ],
165
166    static_libs: [
167        "effect-aidl-cpp",
168        // for memory heap analysis
169        "libc_malloc_debug_backtrace",
170        "shared-file-region-aidl-cpp",
171    ],
172    cflags: [
173        "-Wall",
174        "-Werror",
175        "-Wno-error=deprecated-declarations",
176    ],
177    sanitize: {
178        misc_undefined: [
179            "unsigned-integer-overflow",
180            "signed-integer-overflow",
181        ],
182    },
183}
184
185// This is intended for clients needing to include AidlConversionUtil.h, without dragging in a lot of extra
186// dependencies.
187cc_library_headers {
188    name: "libaudioclient_aidl_conversion_util",
189    host_supported: true,
190    vendor_available: true,
191    double_loadable: true,
192    min_sdk_version: "29",
193    export_include_dirs: [
194        "include",
195    ],
196    header_libs: [
197        "libbase_headers",
198    ],
199    export_header_lib_headers: [
200        "libbase_headers",
201    ],
202    apex_available: [
203        "//apex_available:platform",
204        "com.android.bluetooth.updatable",
205        "com.android.media",
206        "com.android.media.swcodec",
207    ],
208    target: {
209        darwin: {
210            enabled: false,
211        },
212    },
213}
214
215cc_library {
216    name: "libaudioclient_aidl_conversion",
217    srcs: ["AidlConversion.cpp"],
218    export_include_dirs: ["include"],
219    host_supported: true,
220    vendor_available: true,
221    double_loadable: true,
222    min_sdk_version: "29",
223    header_libs: [
224        "libaudioclient_aidl_conversion_util",
225        "libaudio_system_headers",
226    ],
227    export_header_lib_headers: [
228        "libaudioclient_aidl_conversion_util",
229    ],
230    shared_libs: [
231        "audioclient-types-aidl-cpp",
232        "libbase",
233        "libbinder",
234        "liblog",
235        "libshmemcompat",
236        "libutils",
237        "shared-file-region-aidl-cpp",
238        "framework-permission-aidl-cpp",
239    ],
240    export_shared_lib_headers: [
241        "audioclient-types-aidl-cpp",
242        "libbase",
243        "shared-file-region-aidl-cpp",
244    ],
245    cflags: [
246        "-Wall",
247        "-Werror",
248        "-Wno-error=deprecated-declarations",
249    ],
250    sanitize: {
251        misc_undefined: [
252            "unsigned-integer-overflow",
253            "signed-integer-overflow",
254        ],
255    },
256    target: {
257        darwin: {
258            enabled: false,
259        },
260    },
261}
262
263// AIDL interface between libaudioclient and framework.jar
264filegroup {
265    name: "libaudioclient_aidl",
266    srcs: [
267        "aidl/android/media/IPlayer.aidl",
268    ],
269    path: "aidl",
270}
271
272aidl_interface {
273    name: "capture_state_listener-aidl",
274    unstable: true,
275    local_include_dir: "aidl",
276    host_supported: true,
277    double_loadable: true,
278    vendor_available: true,
279    srcs: [
280        "aidl/android/media/ICaptureStateListener.aidl",
281    ],
282}
283
284aidl_interface {
285    name: "effect-aidl",
286    unstable: true,
287    local_include_dir: "aidl",
288    host_supported: true,
289    double_loadable: true,
290    vendor_available: true,
291    srcs: [
292        "aidl/android/media/IEffect.aidl",
293        "aidl/android/media/IEffectClient.aidl",
294    ],
295    imports: [
296        "shared-file-region-aidl",
297    ],
298}
299
300aidl_interface {
301    name: "audioclient-types-aidl",
302    unstable: true,
303    host_supported: true,
304    vendor_available: true,
305    double_loadable: true,
306    local_include_dir: "aidl",
307    srcs: [
308        "aidl/android/media/AudioAttributesInternal.aidl",
309        "aidl/android/media/AudioClient.aidl",
310        "aidl/android/media/AudioConfig.aidl",
311        "aidl/android/media/AudioConfigBase.aidl",
312        "aidl/android/media/AudioContentType.aidl",
313        "aidl/android/media/AudioDevice.aidl",
314        "aidl/android/media/AudioDualMonoMode.aidl",
315        "aidl/android/media/AudioEncapsulationMode.aidl",
316        "aidl/android/media/AudioEncapsulationMetadataType.aidl",
317        "aidl/android/media/AudioEncapsulationType.aidl",
318        "aidl/android/media/AudioFlag.aidl",
319        "aidl/android/media/AudioGain.aidl",
320        "aidl/android/media/AudioGainConfig.aidl",
321        "aidl/android/media/AudioGainMode.aidl",
322        "aidl/android/media/AudioInputFlags.aidl",
323        "aidl/android/media/AudioIoConfigEvent.aidl",
324        "aidl/android/media/AudioIoDescriptor.aidl",
325        "aidl/android/media/AudioIoFlags.aidl",
326        "aidl/android/media/AudioMixLatencyClass.aidl",
327        "aidl/android/media/AudioMode.aidl",
328        "aidl/android/media/AudioOffloadInfo.aidl",
329        "aidl/android/media/AudioOutputFlags.aidl",
330        "aidl/android/media/AudioPatch.aidl",
331        "aidl/android/media/AudioPlaybackRate.aidl",
332        "aidl/android/media/AudioPort.aidl",
333        "aidl/android/media/AudioPortConfig.aidl",
334        "aidl/android/media/AudioPortConfigType.aidl",
335        "aidl/android/media/AudioPortConfigDeviceExt.aidl",
336        "aidl/android/media/AudioPortConfigExt.aidl",
337        "aidl/android/media/AudioPortConfigMixExt.aidl",
338        "aidl/android/media/AudioPortConfigMixExtUseCase.aidl",
339        "aidl/android/media/AudioPortConfigSessionExt.aidl",
340        "aidl/android/media/AudioPortDeviceExt.aidl",
341        "aidl/android/media/AudioPortExt.aidl",
342        "aidl/android/media/AudioPortMixExt.aidl",
343        "aidl/android/media/AudioPortRole.aidl",
344        "aidl/android/media/AudioPortSessionExt.aidl",
345        "aidl/android/media/AudioPortType.aidl",
346        "aidl/android/media/AudioProfile.aidl",
347        "aidl/android/media/AudioSourceType.aidl",
348        "aidl/android/media/AudioStandard.aidl",
349        "aidl/android/media/AudioStreamType.aidl",
350        "aidl/android/media/AudioTimestampInternal.aidl",
351        "aidl/android/media/AudioUniqueIdUse.aidl",
352        "aidl/android/media/AudioUsage.aidl",
353        "aidl/android/media/AudioUuid.aidl",
354        "aidl/android/media/AudioVibratorInfo.aidl",
355        "aidl/android/media/EffectDescriptor.aidl",
356        "aidl/android/media/ExtraAudioDescriptor.aidl",
357        "aidl/android/media/TrackSecondaryOutputInfo.aidl",
358    ],
359    imports: [
360        "audio_common-aidl",
361        "framework-permission-aidl",
362    ],
363    backend: {
364        cpp: {
365            min_sdk_version: "29",
366            apex_available: [
367                "//apex_available:platform",
368                "com.android.media",
369            ],
370        },
371    },
372}
373aidl_interface {
374    name: "audiopolicy-types-aidl",
375    unstable: true,
376    host_supported: true,
377    vendor_available: true,
378    double_loadable: true,
379    local_include_dir: "aidl",
380    srcs: [
381        "aidl/android/media/AudioAttributesEx.aidl",
382        "aidl/android/media/AudioMix.aidl",
383        "aidl/android/media/AudioMixCallbackFlag.aidl",
384        "aidl/android/media/AudioMixMatchCriterion.aidl",
385        "aidl/android/media/AudioMixMatchCriterionValue.aidl",
386        "aidl/android/media/AudioMixRouteFlag.aidl",
387        "aidl/android/media/AudioMixType.aidl",
388        "aidl/android/media/AudioOffloadMode.aidl",
389        "aidl/android/media/AudioPolicyDeviceState.aidl",
390        "aidl/android/media/AudioPolicyForceUse.aidl",
391        "aidl/android/media/AudioPolicyForcedConfig.aidl",
392        "aidl/android/media/AudioProductStrategy.aidl",
393        "aidl/android/media/AudioVolumeGroup.aidl",
394        "aidl/android/media/DeviceRole.aidl",
395        "aidl/android/media/SoundTriggerSession.aidl",
396        "aidl/android/media/SpatializationLevel.aidl",
397        "aidl/android/media/SpatializationMode.aidl",
398        "aidl/android/media/SpatializerHeadTrackingMode.aidl",
399    ],
400    imports: [
401        "audio_common-aidl",
402        "audioclient-types-aidl",
403    ],
404    backend: {
405        cpp: {
406            min_sdk_version: "29",
407            apex_available: [
408                "//apex_available:platform",
409                "com.android.media",
410            ],
411        },
412    },
413}
414
415aidl_interface {
416    name: "audioflinger-aidl",
417    unstable: true,
418    local_include_dir: "aidl",
419    host_supported: true,
420    vendor_available: true,
421    srcs: [
422        "aidl/android/media/CreateEffectRequest.aidl",
423        "aidl/android/media/CreateEffectResponse.aidl",
424        "aidl/android/media/CreateRecordRequest.aidl",
425        "aidl/android/media/CreateRecordResponse.aidl",
426        "aidl/android/media/CreateTrackRequest.aidl",
427        "aidl/android/media/CreateTrackResponse.aidl",
428        "aidl/android/media/OpenInputRequest.aidl",
429        "aidl/android/media/OpenInputResponse.aidl",
430        "aidl/android/media/OpenOutputRequest.aidl",
431        "aidl/android/media/OpenOutputResponse.aidl",
432        "aidl/android/media/RenderPosition.aidl",
433
434        "aidl/android/media/IAudioFlingerService.aidl",
435        "aidl/android/media/IAudioFlingerClient.aidl",
436        "aidl/android/media/IAudioRecord.aidl",
437        "aidl/android/media/IAudioTrack.aidl",
438        "aidl/android/media/IAudioTrackCallback.aidl",
439    ],
440    imports: [
441        "audio_common-aidl",
442        "audioclient-types-aidl",
443        "av-types-aidl",
444        "effect-aidl",
445        "shared-file-region-aidl",
446        "framework-permission-aidl",
447    ],
448    double_loadable: true,
449    backend: {
450        cpp: {
451            min_sdk_version: "29",
452            apex_available: [
453                "//apex_available:platform",
454                "com.android.media",
455            ],
456        },
457    },
458}
459
460aidl_interface {
461    name: "audiopolicy-aidl",
462    unstable: true,
463    local_include_dir: "aidl",
464    host_supported: true,
465    vendor_available: true,
466    srcs: [
467        "aidl/android/media/GetInputForAttrResponse.aidl",
468        "aidl/android/media/GetOutputForAttrResponse.aidl",
469        "aidl/android/media/GetSpatializerResponse.aidl",
470        "aidl/android/media/Int.aidl",
471        "aidl/android/media/RecordClientInfo.aidl",
472        "aidl/android/media/IAudioPolicyService.aidl",
473        "aidl/android/media/IAudioPolicyServiceClient.aidl",
474    ],
475    imports: [
476        "audio_common-aidl",
477        "audioclient-types-aidl",
478        "audiopolicy-types-aidl",
479        "capture_state_listener-aidl",
480        "framework-permission-aidl",
481        "spatializer-aidl",
482    ],
483
484    double_loadable: true,
485    backend: {
486        cpp: {
487            min_sdk_version: "29",
488            apex_available: [
489                "//apex_available:platform",
490                "com.android.media",
491            ],
492        },
493    },
494}
495
496aidl_interface {
497    name: "spatializer-aidl",
498    unstable: true,
499    local_include_dir: "aidl",
500    host_supported: true,
501    vendor_available: true,
502    srcs: [
503        "aidl/android/media/INativeSpatializerCallback.aidl",
504        "aidl/android/media/ISpatializer.aidl",
505        "aidl/android/media/ISpatializerHeadTrackingCallback.aidl",
506    ],
507    imports: [
508        "audiopolicy-types-aidl",
509    ],
510
511    double_loadable: true,
512    backend: {
513        cpp: {
514            min_sdk_version: "29",
515            apex_available: [
516                "//apex_available:platform",
517                "com.android.media",
518            ],
519        },
520    },
521}
522