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