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