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