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