1# Copyright (c) 2021-2023 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import("//build/ohos.gni")
15import("../../appgallery.gni")
16import("../../config.gni")
17import("../../ressche_part.gni")
18import("../../sensor.gni")
19import("../../window_manager.gni")
20
21group("audio_service_packages") {
22  deps = [
23    ":audio_common",
24    ":audio_server_init",
25    ":audio_service",
26    ":audio_service_init",
27  ]
28}
29
30ohos_shared_library("audio_common") {
31  branch_protector_ret = "pac_ret"
32  sanitize = {
33    cfi = true
34    cfi_cross_dso = true
35    cfi_vcall_icall_only = true
36    debug = false
37  }
38
39  install_enable = true
40
41  include_dirs = [
42    "common/include",
43    "../../frameworks/native/audioschedule/include",
44    "../../interfaces/inner_api/native/audiocommon/include",
45  ]
46
47  sources = [
48    "common/src/audio_common_converter.cpp",
49    "common/src/audio_down_mix_stereo.cpp",
50    "common/src/audio_dump_pcm.cpp",
51    "common/src/audio_log_utils.cpp",
52    "common/src/audio_process_config.cpp",
53    "common/src/audio_resample.cpp",
54    "common/src/audio_ring_cache.cpp",
55    "common/src/audio_thread_task.cpp",
56    "common/src/audio_volume.cpp",
57    "common/src/callback_handler.cpp",
58    "common/src/format_converter.cpp",
59    "common/src/futex_tool.cpp",
60    "common/src/linear_pos_time_model.cpp",
61    "common/src/oh_audio_buffer.cpp",
62    "common/src/volume_tools.cpp",
63  ]
64
65  cflags = [
66    "-Wall",
67    "-Werror",
68  ]
69  if (target_cpu == "arm") {
70    cflags += [ "-DBINDER_IPC_32BIT" ]
71  }
72
73  deps = [
74    "../../frameworks/native/audioschedule:audio_schedule",
75    "../../frameworks/native/audioutils:audio_utils",
76  ]
77
78  external_deps = [
79    "c_utils:utils",
80    "eventhandler:libeventhandler",
81    "hilog:libhilog",
82    "hisysevent:libhisysevent",
83    "ipc:ipc_single",
84    "media_foundation:media_monitor_client",
85    "media_foundation:media_monitor_common",
86    "samgr:samgr_proxy",
87  ]
88
89  if (sonic_enable == true) {
90    external_deps += [ "pulseaudio:sonic" ]
91  }
92
93  if (speex_enable == true) {
94    cflags += [ "-DSPEEX_ENABLE" ]
95    include_dirs += [ "//third_party/pulseaudio/speex/include" ]
96    external_deps += [ "pulseaudio:speexresampler" ]
97  }
98
99  cflags_cc = cflags
100  cflags_cc += [ "-std=c++20" ]
101
102  defines = []
103  if (use_libfuzzer || use_clang_coverage) {
104    defines += [ "TEST_COVERAGE" ]
105  }
106
107  subsystem_name = "multimedia"
108  innerapi_tags = [ "platformsdk_indirect" ]
109  part_name = "audio_framework"
110}
111
112config("audio_client_public_config") {
113  include_dirs = [
114    "client/include",
115    "common/include",
116    "../audio_policy/client/include",
117    "../audio_policy/common/include",
118    "../../frameworks/native/audiopolicy/include",
119    "../../frameworks/native/audiostream/include",
120    "../../frameworks/native/audioutils/include",
121    "../../interfaces/inner_api/native/audiocapturer/include",
122    "../../interfaces/inner_api/native/audiocommon/include",
123    "../../interfaces/inner_api/native/audiomanager/include",
124    "../../interfaces/inner_api/native/audiorenderer/include",
125  ]
126
127  cflags = [
128    "-Wall",
129    "-Werror",
130  ]
131
132  if (sonic_enable == true) {
133    cflags += [ "-DSONIC_ENABLE" ]
134  }
135
136  external_deps = []
137
138  if (sonic_enable == true) {
139    external_deps += [ "pulseaudio:sonic" ]
140  }
141
142  if (target_cpu == "arm") {
143    cflags += [ "-DBINDER_IPC_32BIT" ]
144  }
145}
146
147config("audio_sasdk_public_config") {
148  include_dirs = [ "../../interfaces/inner_api/native/audiosasdk/include" ]
149
150  cflags = [
151    "-Wall",
152    "-Werror",
153  ]
154
155  if (target_cpu == "arm") {
156    cflags += [ "-DBINDER_IPC_32BIT" ]
157  }
158}
159
160ohos_shared_library("audio_client") {
161  branch_protector_ret = "pac_ret"
162  install_enable = true
163  sources = [
164    "client/src/audio_device_descriptor.cpp",
165    "client/src/audio_group_manager.cpp",
166    "client/src/audio_manager_listener_stub.cpp",
167    "client/src/audio_manager_proxy.cpp",
168    "client/src/audio_process_in_client.cpp",
169    "client/src/audio_process_proxy.cpp",
170    "client/src/audio_routing_manager.cpp",
171    "client/src/audio_session_manager.cpp",
172    "client/src/audio_spatial_channel_converter.cpp",
173    "client/src/audio_spatialization_manager.cpp",
174    "client/src/audio_stream_manager.cpp",
175    "client/src/audio_stream_tracker.cpp",
176    "client/src/audio_system_manager.cpp",
177    "client/src/capturer_in_client.cpp",
178    "client/src/fast_audio_stream.cpp",
179    "client/src/i_audio_stream.cpp",
180    "client/src/ipc_offline_stream_proxy.cpp",
181    "client/src/ipc_stream_listener_impl.cpp",
182    "client/src/ipc_stream_listener_stub.cpp",
183    "client/src/ipc_stream_proxy.cpp",
184    "client/src/microphone_descriptor.cpp",
185    "client/src/offline_stream_in_client.cpp",
186    "client/src/policy_provider_stub.cpp",
187    "client/src/renderer_in_client.cpp",
188  ]
189
190  public_configs = [ ":audio_client_public_config" ]
191
192  deps = [
193    ":audio_common",
194    "../../frameworks/native/audioutils:audio_utils",
195    "../audio_policy:audio_policy_client",
196  ]
197
198  include_dirs = [ "server/include" ]
199
200  external_deps = [
201    "bounds_checking_function:libsec_shared",
202    "bundle_framework:appexecfwk_base",
203    "bundle_framework:appexecfwk_core",
204    "c_utils:utils",
205    "eventhandler:libeventhandler",
206    "hilog:libhilog",
207    "hisysevent:libhisysevent",
208    "init:libbegetutil",
209    "ipc:ipc_single",
210    "media_foundation:media_monitor_client",
211    "media_foundation:media_monitor_common",
212    "power_manager:powermgr_client",
213    "pulseaudio:pulse",
214    "safwk:system_ability_fwk",
215    "samgr:samgr_proxy",
216  ]
217
218  public_external_deps = [
219    "libxml2:libxml2",
220    "pulseaudio:sonic",
221  ]
222
223  defines = []
224  if (audio_framework_feature_power_manager) {
225    external_deps += [ "power_manager:powermgr_client" ]
226    defines += [ "FEATURE_POWER_MANAGER" ]
227  }
228
229  if (use_libfuzzer || use_clang_coverage) {
230    defines += [ "TEST_COVERAGE" ]
231  }
232
233  version_script = "../../audio_framework.versionscript"
234  innerapi_tags = [ "platformsdk" ]
235
236  subsystem_name = "multimedia"
237  part_name = "audio_framework"
238}
239
240ohos_prebuilt_etc("audio_server_init") {
241  source = "etc/audio_server.cfg"
242  relative_install_dir = "init"
243  part_name = "audio_framework"
244  subsystem_name = "multimedia"
245}
246
247ohos_prebuilt_etc("audio_service_init") {
248  source = "etc/pulseaudio.cfg"
249  relative_install_dir = "init"
250  part_name = "audio_framework"
251  subsystem_name = "multimedia"
252}
253
254config("audio_service_config") {
255  visibility = [ ":*" ]
256  visibility += [ "../../test/fuzztest/*" ]
257
258  include_dirs = [
259    "common/include",
260    "client/include",
261    "server/include",
262    "server/include/config",
263    "../audio_policy/server/include/service/effect",
264    "../../frameworks/native/audioeffect/include",
265    "../../frameworks/native/offlineaudioeffect/include",
266    "../../frameworks/native/audioinnercall/include",
267    "../../frameworks/native/audiopolicy/include",
268    "../../frameworks/native/audioschedule/include",
269    "../../frameworks/native/audioutils/include",
270    "../../frameworks/native/playbackcapturer/include",
271    "../../frameworks/native/hdiadapter/common/include",
272    "../../frameworks/native/hdiadapter/sink/bluetooth",
273    "../../frameworks/native/hdiadapter/sink/common",
274    "../../frameworks/native/hdiadapter/sink/file",
275    "../../frameworks/native/hdiadapter/sink/fast",
276    "../../frameworks/native/hdiadapter/sink/remote",
277    "../../frameworks/native/hdiadapter/sink/remote_fast",
278    "../../frameworks/native/hdiadapter/sink/primary",
279    "../../frameworks/native/hdiadapter/sink/offload",
280    "../../frameworks/native/hdiadapter/source/common",
281    "../../frameworks/native/hdiadapter/source/fast",
282    "../../frameworks/native/hdiadapter/source/primary",
283    "../../frameworks/native/hdiadapter/source/remote",
284    "../../frameworks/native/hdiadapter/source/remote_fast",
285    "../../interfaces/inner_api/native/audiocommon/include",
286    "../../interfaces/inner_api/native/audiomanager/include",
287  ]
288
289  cflags = []
290
291  if (target_cpu == "arm") {
292    cflags += [ "-DBINDER_IPC_32BIT" ]
293  }
294
295  if (audio_framework_feature_daudio_enable == true) {
296    cflags += [ "-DDAUDIO_ENABLE" ]
297  }
298
299  cflags_cc = cflags
300  cflags_cc += [ "-std=c++20" ]
301}
302
303ohos_shared_library("audio_process_service") {
304  branch_protector_ret = "pac_ret"
305  sanitize = {
306    cfi = true
307    cfi_cross_dso = true
308    cfi_vcall_icall_only = true
309    debug = false
310  }
311  install_enable = true
312
313  sources = [
314    "server/src/audio_endpoint.cpp",
315    "server/src/audio_endpoint_separate.cpp",
316    "server/src/audio_engine_manager.cpp",
317    "server/src/audio_playback_engine.cpp",
318    "server/src/audio_process_in_server.cpp",
319    "server/src/audio_process_stub.cpp",
320    "server/src/audio_service.cpp",
321    "server/src/capturer_in_server.cpp",
322    "server/src/i_stream_manager.cpp",
323    "server/src/ipc_offline_stream_stub.cpp",
324    "server/src/ipc_stream_in_server.cpp",
325    "server/src/ipc_stream_listener_proxy.cpp",
326    "server/src/ipc_stream_stub.cpp",
327    "server/src/none_mix_engine.cpp",
328    "server/src/offline_stream_in_server.cpp",
329    "server/src/pa_adapter_manager.cpp",
330    "server/src/pa_capturer_stream_impl.cpp",
331    "server/src/pa_renderer_stream_impl.cpp",
332    "server/src/policy_handler.cpp",
333    "server/src/policy_provider_proxy.cpp",
334    "server/src/pro_audio_stream_manager.cpp",
335    "server/src/pro_renderer_stream_impl.cpp",
336    "server/src/renderer_in_server.cpp",
337  ]
338
339  configs = [ ":audio_service_config" ]
340
341  deps = [
342    ":audio_common",
343    "../../frameworks/native/audioeffect:audio_effect",
344    "../../frameworks/native/audioschedule:audio_schedule",
345    "../../frameworks/native/audioutils:audio_utils",
346    "../../frameworks/native/hdiadapter/sink:audio_renderer_sink",
347    "../../frameworks/native/hdiadapter/sink:bluetooth_renderer_sink",
348    "../../frameworks/native/hdiadapter/sink:fast_audio_renderer_sink",
349    "../../frameworks/native/hdiadapter/sink:renderer_sink_adapter",
350    "../../frameworks/native/hdiadapter/source:audio_capturer_source",
351    "../../frameworks/native/hdiadapter/source:fast_audio_capturer_source",
352    "../../frameworks/native/offlineaudioeffect:offline_audio_effect",
353    "../../frameworks/native/playbackcapturer:playback_capturer",
354  ]
355
356  public_deps =
357      [ "../../frameworks/native/offlineaudioeffect:offline_audio_effect" ]
358
359  if (audio_framework_feature_daudio_enable == true) {
360    deps += [
361      "../../frameworks/native/hdiadapter/sink:remote_fast_audio_renderer_sink",
362      "../../frameworks/native/hdiadapter/source:remote_fast_audio_capturer_source",
363    ]
364  }
365
366  external_deps = [
367    "c_utils:utils",
368    "drivers_interface_audio:libeffect_proxy_1.0",
369    "hicollie:libhicollie",
370    "hilog:libhilog",
371    "ipc:ipc_single",
372    "media_foundation:media_monitor_client",
373    "media_foundation:media_monitor_common",
374    "pulseaudio:pulse",
375  ]
376
377  public_external_deps = [ "bounds_checking_function:libsec_static" ]
378
379  defines = []
380  if (audio_framework_feature_power_manager) {
381    external_deps += [ "power_manager:powermgr_client" ]
382    defines += [ "FEATURE_POWER_MANAGER" ]
383  }
384
385  if (ressche_enable == true) {
386    external_deps += [ "resource_schedule_service:ressched_client" ]
387    defines += [ "RESSCHE_ENABLE" ]
388  }
389
390  subsystem_name = "multimedia"
391  part_name = "audio_framework"
392}
393
394ohos_shared_library("audio_service") {
395  stack_protector_ret = true
396  sanitize = {
397    cfi = true
398    cfi_cross_dso = true
399    cfi_vcall_icall_only = true
400    debug = false
401  }
402  install_enable = true
403
404  sources = [
405    "server/src/audio_effect_server.cpp",
406    "server/src/audio_manager_listener_proxy.cpp",
407    "server/src/audio_manager_stub.cpp",
408    "server/src/audio_server.cpp",
409    "server/src/audio_server_asr.cpp",
410    "server/src/audio_server_dump.cpp",
411    "server/src/config/audio_param_parser.cpp",
412  ]
413
414  configs = [ ":audio_service_config" ]
415
416  deps = [
417    ":audio_common",
418    ":audio_process_service",
419    "../../frameworks/native/audioeffect:audio_effect",
420    "../../frameworks/native/audioinnercall:audio_inner_call",
421    "../../frameworks/native/audioschedule:audio_schedule",
422    "../../frameworks/native/audioutils:audio_utils",
423    "../../frameworks/native/hdiadapter/sink:audio_renderer_sink",
424    "../../frameworks/native/hdiadapter/sink:bluetooth_renderer_sink",
425    "../../frameworks/native/hdiadapter/sink:offload_audio_renderer_sink",
426    "../../frameworks/native/hdiadapter/sink:renderer_sink_adapter",
427    "../../frameworks/native/hdiadapter/source:audio_capturer_source",
428    "../../frameworks/native/hdiadapter/source:capturer_source_adapter",
429    "../../frameworks/native/hdiadapter/source:fast_audio_capturer_source",
430    "../../frameworks/native/playbackcapturer:playback_capturer",
431  ]
432
433  external_deps = [
434    "access_token:libaccesstoken_sdk",
435    "bundle_framework:appexecfwk_base",
436    "bundle_framework:appexecfwk_core",
437    "c_utils:utils",
438    "drivers_interface_audio:libeffect_proxy_1.0",
439    "hicollie:libhicollie",
440    "hilog:libhilog",
441    "hisysevent:libhisysevent",
442    "ipc:ipc_single",
443    "media_foundation:media_monitor_client",
444    "media_foundation:media_monitor_common",
445    "pulseaudio:pulse",
446    "pulseaudio:pulseaudio",
447    "safwk:system_ability_fwk",
448    "samgr:samgr_proxy",
449  ]
450
451  public_external_deps = [ "libxml2:libxml2" ]
452
453  defines = []
454  if (audio_framework_config_policy_enable) {
455    defines += [ "USE_CONFIG_POLICY" ]
456    external_deps += [ "config_policy:configpolicy_util" ]
457  }
458
459  if (build_variant == "user") {
460    defines += [ "AUDIO_BUILD_VARIANT_USER" ]
461  } else if (build_variant == "root") {
462    defines += [ "AUDIO_BUILD_VARIANT_ROOT" ]
463  }
464
465  if (appgallery_part_enable == true) {
466    defines += [ "FEATURE_APPGALLERY" ]
467  }
468
469  if (sensor_enable == true) {
470    external_deps += [ "sensor:sensor_interface_native" ]
471  }
472
473  if (ressche_enable == true) {
474    external_deps += [ "resource_schedule_service:ressched_client" ]
475  }
476
477  if (use_libfuzzer || use_clang_coverage) {
478    defines += [ "TEST_COVERAGE" ]
479  }
480
481  subsystem_name = "multimedia"
482  part_name = "audio_framework"
483}
484
485ohos_shared_library("audio_sasdk") {
486  stack_protector_ret = true
487  sanitize = {
488    cfi = true
489    cfi_cross_dso = true
490    cfi_vcall_icall_only = true
491    debug = false
492  }
493
494  install_enable = true
495  sources = [ "client/src/audio_sasdk.cpp" ]
496
497  include_dirs = [
498    "../../interfaces/inner_api/native/audiocommon/include",
499    "../../interfaces/inner_api/native/audiosasdk/include",
500  ]
501
502  public_configs = [ ":audio_sasdk_public_config" ]
503
504  deps = [
505    ":audio_common",
506    "../audio_policy:audio_policy_client",
507  ]
508
509  external_deps = [
510    "c_utils:utils",
511    "hilog:libhilog",
512  ]
513
514  version_script = "../../audio_framework.versionscript"
515  innerapi_tags = [
516    "platformsdk",
517    "sasdk",
518  ]
519
520  subsystem_name = "multimedia"
521  part_name = "audio_framework"
522}
523
524group("audio_service_test_packages") {
525  deps = [
526    ":audio_hdi_device_test",
527    ":audio_process_client_test",
528  ]
529}
530
531ohos_executable("audio_process_client_test") {
532  install_enable = false
533
534  include_dirs = [
535    "../../frameworks/native/audioutils/include",
536    "../../interfaces/inner_api/native/audiocommon/include",
537    "client/include",
538  ]
539
540  sources = [ "test/example/audio_process_client_test.cpp" ]
541
542  deps = [
543    ":audio_client",
544    "./../../frameworks/native/audioutils:audio_utils",
545  ]
546
547  external_deps = [
548    "bounds_checking_function:libsec_shared",
549    "c_utils:utils",
550    "hilog:libhilog",
551    "init:libbegetutil",
552  ]
553
554  part_name = "audio_framework"
555  subsystem_name = "multimedia"
556}
557
558ohos_executable("audio_hdi_device_test") {
559  install_enable = false
560
561  include_dirs = [
562    "../../frameworks/native/audioutils/include",
563    "../../frameworks/native/hdiadapter/common/include",
564    "../../frameworks/native/hdiadapter/sink",
565    "../../frameworks/native/hdiadapter/sink/common",
566    "../../frameworks/native/hdiadapter/sink/fast",
567    "../../interfaces/inner_api/native/audiocommon/include",
568  ]
569
570  cflags = [ "-DDEBUG_DIRECT_USE_HDI" ]
571
572  sources = [ "test/example/audio_hdi_device_test.cpp" ]
573
574  deps = [
575    "../../frameworks/native/audioutils:audio_utils",
576    "../../frameworks/native/hdiadapter/sink:fast_audio_renderer_sink",
577    "../../frameworks/native/hdiadapter/sink:remote_fast_audio_renderer_sink",
578  ]
579
580  external_deps = [
581    "c_utils:utils",
582    "hilog:libhilog",
583    "pulseaudio:pulse",
584  ]
585
586  part_name = "audio_framework"
587  subsystem_name = "multimedia"
588}
589
590ohos_executable("audio_faststream_playback_test") {
591  install_enable = false
592
593  sources = [ "test/example/audio_stream_playback_test.cpp" ]
594
595  configs = [ ":audio_client_public_config" ]
596
597  deps = [
598    ":audio_client",
599    "../../frameworks/native/audiocapturer:audio_capturer",
600    "../../frameworks/native/audiorenderer:audio_renderer",
601    "../../frameworks/native/audioutils:audio_utils",
602  ]
603
604  external_deps = [
605    "bounds_checking_function:libsec_shared",
606    "c_utils:utils",
607    "hilog:libhilog",
608    "init:libbegetutil",
609    "ipc:ipc_single",
610    "pulseaudio:pulse",
611  ]
612
613  part_name = "audio_framework"
614  subsystem_name = "multimedia"
615}
616