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