• 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")
17
18pulseaudio_dir = "//third_party/pulseaudio"
19pulseaudio_build_path = "//third_party/pulseaudio/ohosbuild"
20
21group("audio_service_packages") {
22  deps = [
23    ":audio_common",
24    ":audio_service",
25    ":audio_service_init",
26  ]
27}
28
29ohos_shared_library("audio_common") {
30  sanitize = {
31    cfi = true
32    cfi_cross_dso = true
33    debug = false
34    blocklist = "../../cfi_blocklist.txt"
35  }
36
37  install_enable = true
38
39  include_dirs = [
40    "common/include",
41    "../../interfaces/inner_api/native/audiocommon/include",
42  ]
43
44  sources = [
45    "common/src/audio_process_config.cpp",
46    "common/src/linear_pos_time_model.cpp",
47    "common/src/oh_audio_buffer.cpp",
48  ]
49
50  cflags = [
51    "-Wall",
52    "-Werror",
53  ]
54  if (target_cpu == "arm") {
55    cflags += [ "-DBINDER_IPC_32BIT" ]
56  }
57
58  deps = [ "../../frameworks/native/audioutils:audio_utils" ]
59
60  external_deps = [
61    "c_utils:utils",
62    "hilog:libhilog",
63    "hisysevent:libhisysevent",
64    "ipc:ipc_single",
65  ]
66
67  subsystem_name = "multimedia"
68  innerapi_tags = [ "platformsdk_indirect" ]
69  part_name = "audio_framework"
70}
71
72config("audio_client_public_config") {
73  include_dirs = [
74    "client/include",
75    "common/include",
76    "../audio_policy/client/include",
77    "../audio_policy/common/include",
78    "../../frameworks/native/audiopolicy/include",
79    "../../frameworks/native/audiostream/include",
80    "../../frameworks/native/audioutils/include",
81    "../../interfaces/inner_api/native/audiocapturer/include",
82    "../../interfaces/inner_api/native/audiocommon/include",
83    "../../interfaces/inner_api/native/audiomanager/include",
84    "../../interfaces/inner_api/native/audiorenderer/include",
85  ]
86
87  cflags = [
88    "-Wall",
89    "-Werror",
90  ]
91
92  if (target_cpu == "arm") {
93    cflags += [ "-DBINDER_IPC_32BIT" ]
94  }
95}
96
97ohos_shared_library("audio_client") {
98  sanitize = {
99    cfi = true
100    cfi_cross_dso = true
101    integer_overflow = true
102    debug = false
103    blocklist = "../../cfi_blocklist.txt"
104  }
105  install_enable = true
106  sources = [
107    "client/src/audio_device_descriptor.cpp",
108    "client/src/audio_group_manager.cpp",
109    "client/src/audio_manager_listener_stub.cpp",
110    "client/src/audio_manager_proxy.cpp",
111    "client/src/audio_process_in_client.cpp",
112    "client/src/audio_process_proxy.cpp",
113    "client/src/audio_routing_manager.cpp",
114    "client/src/audio_service_client.cpp",
115    "client/src/audio_stream.cpp",
116    "client/src/audio_stream_manager.cpp",
117    "client/src/audio_stream_tracker.cpp",
118    "client/src/audio_system_manager.cpp",
119    "client/src/fast_audio_stream.cpp",
120    "client/src/i_audio_stream.cpp",
121    "client/src/policy_provider_stub.cpp",
122  ]
123
124  public_configs = [ ":audio_client_public_config" ]
125
126  deps = [
127    ":audio_common",
128    "$pulseaudio_build_path/src/pulse:pulse",
129    "../../frameworks/native/audioutils:audio_utils",
130    "../audio_policy:audio_policy_client",
131  ]
132
133  include_dirs = [
134    "server/include",
135    "$pulseaudio_dir/src",
136    "$pulseaudio_dir/confgure/src",
137    "$pulseaudio_dir/include",
138    "$pulseaudio_build_path/include",
139    "../../../../foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
140    "../../../../utils/system/safwk/native/include",
141    "../../../../commonlibrary/c_utils/base/include",
142    "//third_party/bounds_checking_function/include",
143  ]
144
145  include_dirs += [ multimedia_audio_framework_pulse_audio ]
146
147  external_deps = [
148    "bundle_framework:appexecfwk_base",
149    "bundle_framework:appexecfwk_core",
150    "c_utils:utils",
151    "eventhandler:libeventhandler",
152    "hilog:libhilog",
153    "hisysevent:libhisysevent",
154    "ipc:ipc_single",
155    "samgr:samgr_proxy",
156  ]
157
158  version_script = "../../audio_framework.versionscript"
159  innerapi_tags = [ "platformsdk" ]
160
161  subsystem_name = "multimedia"
162  part_name = "audio_framework"
163}
164
165ohos_prebuilt_etc("audio_service_init") {
166  source = "etc/pulseaudio.cfg"
167  relative_install_dir = "init"
168  part_name = "audio_framework"
169  subsystem_name = "multimedia"
170}
171
172config("audio_service_config") {
173  visibility = [ ":*" ]
174  visibility += [ "../../test/fuzztest/*" ]
175
176  include_dirs = [
177    "common/include",
178    "client/include",
179    "server/include",
180    "../audio_policy/server/include/service/effect",
181    "../../frameworks/native/audioeffect/include",
182    "../../frameworks/native/audiopolicy/include",
183    "../../frameworks/native/audioschedule/include",
184    "../../frameworks/native/audioutils/include",
185    "../../frameworks/native/playbackcapturer/include",
186    "../../frameworks/native/hdiadapter/sink/bluetooth",
187    "../../frameworks/native/hdiadapter/sink/common",
188    "../../frameworks/native/hdiadapter/sink/file",
189    "../../frameworks/native/hdiadapter/sink/fast",
190    "../../frameworks/native/hdiadapter/sink/remote",
191    "../../frameworks/native/hdiadapter/sink/remote_fast",
192    "../../frameworks/native/hdiadapter/sink/primary",
193    "../../frameworks/native/hdiadapter/source/common",
194    "../../frameworks/native/hdiadapter/source/fast",
195    "../../frameworks/native/hdiadapter/source/primary",
196    "../../frameworks/native/hdiadapter/source/remote_fast",
197    "../../interfaces/inner_api/native/audiocommon/include",
198    "../../interfaces/inner_api/native/audiomanager/include",
199  ]
200
201  include_dirs += [ multimedia_audio_framework_drivers ]
202
203  if (target_cpu == "arm") {
204    cflags = [ "-DBINDER_IPC_32BIT" ]
205  }
206}
207
208ohos_shared_library("audio_process_service") {
209  sanitize = {
210    cfi = true
211    cfi_cross_dso = true
212    debug = false
213    blocklist = "../../cfi_blocklist.txt"
214  }
215  install_enable = true
216
217  sources = [
218    "server/src/audio_endpoint.cpp",
219    "server/src/audio_process_in_server.cpp",
220    "server/src/audio_process_stub.cpp",
221    "server/src/audio_service.cpp",
222    "server/src/policy_handler.cpp",
223    "server/src/policy_provider_proxy.cpp",
224  ]
225
226  configs = [ ":audio_service_config" ]
227
228  deps = [
229    ":audio_common",
230    "../../frameworks/native/audioschedule:audio_schedule",
231    "../../frameworks/native/audioutils:audio_utils",
232    "../../frameworks/native/hdiadapter/sink:fast_audio_renderer_sink",
233    "../../frameworks/native/hdiadapter/sink:remote_audio_renderer_sink",
234    "../../frameworks/native/hdiadapter/sink:remote_fast_audio_renderer_sink",
235    "../../frameworks/native/hdiadapter/source:fast_audio_capturer_source",
236    "../../frameworks/native/hdiadapter/source:remote_fast_audio_capturer_source",
237  ]
238
239  public_deps = [ "//third_party/bounds_checking_function:libsec_static" ]
240
241  external_deps = [
242    "c_utils:utils",
243    "hicollie:libhicollie",
244    "hilog:libhilog",
245    "ipc:ipc_single",
246  ]
247
248  subsystem_name = "multimedia"
249  part_name = "audio_framework"
250}
251
252ohos_shared_library("audio_service") {
253  sanitize = {
254    cfi = true
255    cfi_cross_dso = true
256    debug = false
257    blocklist = "../../cfi_blocklist.txt"
258  }
259  install_enable = true
260
261  sources = [
262    "server/src/audio_effect_server.cpp",
263    "server/src/audio_manager_listener_proxy.cpp",
264    "server/src/audio_manager_stub.cpp",
265    "server/src/audio_server.cpp",
266  ]
267
268  configs = [ ":audio_service_config" ]
269
270  deps = [
271    ":audio_common",
272    ":audio_process_service",
273    "$pulseaudio_build_path/src/daemon:pulseaudio",
274    "../../frameworks/native/audioeffect:audio_effect",
275    "../../frameworks/native/audioschedule:audio_schedule",
276    "../../frameworks/native/audioutils:audio_utils",
277    "../../frameworks/native/hdiadapter/sink:audio_renderer_sink",
278    "../../frameworks/native/hdiadapter/sink:bluetooth_renderer_sink",
279    "../../frameworks/native/hdiadapter/sink:remote_audio_renderer_sink",
280    "../../frameworks/native/hdiadapter/sink:remote_fast_audio_renderer_sink",
281    "../../frameworks/native/hdiadapter/sink:renderer_sink_adapter",
282    "../../frameworks/native/hdiadapter/source:audio_capturer_source",
283    "../../frameworks/native/hdiadapter/source:capturer_source_adapter",
284    "../../frameworks/native/playbackcapturer:playback_capturer",
285  ]
286
287  external_deps = [
288    "access_token:libaccesstoken_sdk",
289    "c_utils:utils",
290    "hicollie:libhicollie",
291    "hilog:libhilog",
292    "ipc:ipc_single",
293    "power_manager:powermgr_client",
294    "safwk:system_ability_fwk",
295    "samgr:samgr_proxy",
296  ]
297
298  if (ressche_enable == true) {
299    external_deps += [ "resource_schedule_service:ressched_client" ]
300  }
301
302  subsystem_name = "multimedia"
303  part_name = "audio_framework"
304}
305
306group("audio_service_test_packages") {
307  deps = [
308    ":audio_hdi_device_test",
309    ":audio_multichannel_test",
310    ":audio_process_client_test",
311    ":audio_service_playback_test",
312    ":audio_service_record_test",
313  ]
314}
315
316ohos_executable("audio_process_client_test") {
317  install_enable = false
318
319  include_dirs = [
320    "../../frameworks/native/audioutils/include",
321    "../../interfaces/inner_api/native/audiocommon/include",
322    "client/include",
323  ]
324
325  sources = [ "test/example/audio_process_client_test.cpp" ]
326
327  deps = [
328    ":audio_client",
329    "./../../frameworks/native/audioutils:audio_utils",
330  ]
331
332  external_deps = [
333    "c_utils:utils",
334    "hilog:libhilog",
335    "init:libbegetutil",
336  ]
337
338  part_name = "audio_framework"
339  subsystem_name = "multimedia"
340}
341
342ohos_executable("audio_hdi_device_test") {
343  install_enable = false
344
345  include_dirs = [
346    "../../frameworks/native/audioutils/include",
347    "../../frameworks/native/hdiadapter/sink",
348    "../../frameworks/native/hdiadapter/sink/common",
349    "../../frameworks/native/hdiadapter/sink/fast",
350    "../../interfaces/inner_api/native/audiocommon/include",
351  ]
352
353  include_dirs += [ multimedia_audio_framework_drivers ]
354
355  cflags = [ "-DDEBUG_DIRECT_USE_HDI" ]
356
357  sources = [
358    "../../frameworks/native/hdiadapter/sink/remote_fast/remote_fast_audio_renderer_sink.cpp",
359    "test/example/audio_hdi_device_test.cpp",
360  ]
361
362  deps = [
363    "../../frameworks/native/audioutils:audio_utils",
364    "../../frameworks/native/hdiadapter/sink:fast_audio_renderer_sink",
365    "../../frameworks/native/hdiadapter/sink:remote_fast_audio_renderer_sink",
366  ]
367
368  external_deps = [
369    "c_utils:utils",
370    "hilog:libhilog",
371    "power_manager:powermgr_client",
372  ]
373
374  part_name = "audio_framework"
375  subsystem_name = "multimedia"
376}
377
378ohos_executable("audio_service_playback_test") {
379  install_enable = false
380
381  sources = [ "test/example/playback_test.cpp" ]
382
383  configs = [ ":audio_client_public_config" ]
384
385  deps = [ ":audio_client" ]
386
387  include_dirs = [
388    "$pulseaudio_build_path/include",
389    "$pulseaudio_dir/confgure/src",
390    "$pulseaudio_dir/include",
391    "$pulseaudio_dir/src",
392    "../../../../commonlibrary/c_utils/base/include",
393    "../../../../foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
394    "../../../../utils/system/safwk/native/include",
395    "//third_party/bounds_checking_function/include",
396  ]
397
398  external_deps = [
399    "hilog:libhilog",
400    "ipc:ipc_single",
401  ]
402
403  part_name = "audio_framework"
404  subsystem_name = "multimedia"
405}
406
407ohos_executable("audio_faststream_playback_test") {
408  install_enable = false
409
410  sources = [ "test/example/fast_audio_stream_playback_test.cpp" ]
411
412  configs = [ ":audio_client_public_config" ]
413
414  deps = [
415    ":audio_client",
416    "../../frameworks/native/audiocapturer:audio_capturer",
417    "../../frameworks/native/audiorenderer:audio_renderer",
418  ]
419
420  include_dirs = [
421    "../../../../foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
422    "../../../../utils/system/safwk/native/include",
423    "../../../../commonlibrary/c_utils/base/include",
424    "$pulseaudio_dir/src",
425    "$pulseaudio_dir/confgure/src",
426    "$pulseaudio_dir/include",
427    "$pulseaudio_build_path/include",
428    "//third_party/bounds_checking_function/include",
429  ]
430
431  external_deps = [
432    "hilog:libhilog",
433    "init:libbegetutil",
434    "ipc:ipc_single",
435  ]
436
437  part_name = "audio_framework"
438  subsystem_name = "multimedia"
439}
440
441ohos_executable("audio_service_record_test") {
442  install_enable = false
443
444  sources = [ "test/example/record_test.cpp" ]
445
446  configs = [ ":audio_client_public_config" ]
447
448  include_dirs = [
449    "$pulseaudio_build_path/include",
450    "$pulseaudio_dir/confgure/src",
451    "$pulseaudio_dir/include",
452    "$pulseaudio_dir/src",
453    "../../../../commonlibrary/c_utils/base/include",
454    "../../../../foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
455    "../../../../utils/system/safwk/native/include",
456    "//third_party/bounds_checking_function/include",
457  ]
458
459  deps = [ ":audio_client" ]
460
461  external_deps = [
462    "hilog:libhilog",
463    "ipc:ipc_single",
464  ]
465  part_name = "audio_framework"
466  subsystem_name = "multimedia"
467}
468
469ohos_executable("audio_multichannel_test") {
470  install_enable = false
471
472  sources = [ "test/example/audio_multichannel_test.cpp" ]
473
474  configs = [ ":audio_client_public_config" ]
475
476  include_dirs = [
477    "$pulseaudio_build_path/include",
478    "$pulseaudio_dir/confgure/src",
479    "$pulseaudio_dir/include",
480    "$pulseaudio_dir/src",
481    "../../../../foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
482    "../../../../utils/system/safwk/native/include",
483    "../../../../commonlibrary/c_utils/base/include",
484    "//third_party/bounds_checking_function/include",
485  ]
486
487  deps = [ ":audio_client" ]
488
489  external_deps = [
490    "hilog:libhilog",
491    "ipc:ipc_single",
492  ]
493
494  part_name = "audio_framework"
495  subsystem_name = "multimedia"
496}
497