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