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