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