# Copyright (c) 2021-2023 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import("//build/ohos.gni") import("../../appgallery.gni") import("../../config.gni") import("../../ressche_part.gni") import("../../sensor.gni") import("../../window_manager.gni") group("audio_service_packages") { deps = [ ":audio_common", ":audio_server_init", ":audio_service", ":audio_service_init", ] } ohos_shared_library("audio_common") { branch_protector_ret = "pac_ret" sanitize = { cfi = true cfi_cross_dso = true cfi_vcall_icall_only = true debug = false } install_enable = true include_dirs = [ "common/include", "../../frameworks/native/audioschedule/include", "../../interfaces/inner_api/native/audiocommon/include", ] sources = [ "common/src/audio_common_converter.cpp", "common/src/audio_down_mix_stereo.cpp", "common/src/audio_dump_pcm.cpp", "common/src/audio_log_utils.cpp", "common/src/audio_process_config.cpp", "common/src/audio_resample.cpp", "common/src/audio_ring_cache.cpp", "common/src/audio_thread_task.cpp", "common/src/audio_volume.cpp", "common/src/callback_handler.cpp", "common/src/format_converter.cpp", "common/src/futex_tool.cpp", "common/src/linear_pos_time_model.cpp", "common/src/oh_audio_buffer.cpp", "common/src/volume_tools.cpp", ] cflags = [ "-Wall", "-Werror", ] if (target_cpu == "arm") { cflags += [ "-DBINDER_IPC_32BIT" ] } deps = [ "../../frameworks/native/audioschedule:audio_schedule", "../../frameworks/native/audioutils:audio_utils", ] external_deps = [ "c_utils:utils", "eventhandler:libeventhandler", "hilog:libhilog", "hisysevent:libhisysevent", "ipc:ipc_single", "media_foundation:media_monitor_client", "media_foundation:media_monitor_common", "samgr:samgr_proxy", ] if (sonic_enable == true) { external_deps += [ "pulseaudio:sonic" ] } if (speex_enable == true) { cflags += [ "-DSPEEX_ENABLE" ] include_dirs += [ "//third_party/pulseaudio/speex/include" ] external_deps += [ "pulseaudio:speexresampler" ] } cflags_cc = cflags cflags_cc += [ "-std=c++20" ] defines = [] if (use_libfuzzer || use_clang_coverage) { defines += [ "TEST_COVERAGE" ] } subsystem_name = "multimedia" innerapi_tags = [ "platformsdk_indirect" ] part_name = "audio_framework" } config("audio_client_public_config") { include_dirs = [ "client/include", "common/include", "../audio_policy/client/include", "../audio_policy/common/include", "../../frameworks/native/audiopolicy/include", "../../frameworks/native/audiostream/include", "../../frameworks/native/audioutils/include", "../../interfaces/inner_api/native/audiocapturer/include", "../../interfaces/inner_api/native/audiocommon/include", "../../interfaces/inner_api/native/audiomanager/include", "../../interfaces/inner_api/native/audiorenderer/include", ] cflags = [ "-Wall", "-Werror", ] if (sonic_enable == true) { cflags += [ "-DSONIC_ENABLE" ] } external_deps = [] if (sonic_enable == true) { external_deps += [ "pulseaudio:sonic" ] } if (target_cpu == "arm") { cflags += [ "-DBINDER_IPC_32BIT" ] } } config("audio_sasdk_public_config") { include_dirs = [ "../../interfaces/inner_api/native/audiosasdk/include" ] cflags = [ "-Wall", "-Werror", ] if (target_cpu == "arm") { cflags += [ "-DBINDER_IPC_32BIT" ] } } ohos_shared_library("audio_client") { branch_protector_ret = "pac_ret" install_enable = true sources = [ "client/src/audio_device_descriptor.cpp", "client/src/audio_group_manager.cpp", "client/src/audio_manager_listener_stub.cpp", "client/src/audio_manager_proxy.cpp", "client/src/audio_process_in_client.cpp", "client/src/audio_process_proxy.cpp", "client/src/audio_routing_manager.cpp", "client/src/audio_session_manager.cpp", "client/src/audio_spatial_channel_converter.cpp", "client/src/audio_spatialization_manager.cpp", "client/src/audio_stream_manager.cpp", "client/src/audio_stream_tracker.cpp", "client/src/audio_system_manager.cpp", "client/src/capturer_in_client.cpp", "client/src/fast_audio_stream.cpp", "client/src/i_audio_stream.cpp", "client/src/ipc_offline_stream_proxy.cpp", "client/src/ipc_stream_listener_impl.cpp", "client/src/ipc_stream_listener_stub.cpp", "client/src/ipc_stream_proxy.cpp", "client/src/microphone_descriptor.cpp", "client/src/offline_stream_in_client.cpp", "client/src/policy_provider_stub.cpp", "client/src/renderer_in_client.cpp", ] public_configs = [ ":audio_client_public_config" ] deps = [ ":audio_common", "../../frameworks/native/audioutils:audio_utils", "../audio_policy:audio_policy_client", ] include_dirs = [ "server/include" ] external_deps = [ "bounds_checking_function:libsec_shared", "bundle_framework:appexecfwk_base", "bundle_framework:appexecfwk_core", "c_utils:utils", "eventhandler:libeventhandler", "hilog:libhilog", "hisysevent:libhisysevent", "init:libbegetutil", "ipc:ipc_single", "media_foundation:media_monitor_client", "media_foundation:media_monitor_common", "power_manager:powermgr_client", "pulseaudio:pulse", "safwk:system_ability_fwk", "samgr:samgr_proxy", ] public_external_deps = [ "libxml2:libxml2", "pulseaudio:sonic", ] defines = [] if (audio_framework_feature_power_manager) { external_deps += [ "power_manager:powermgr_client" ] defines += [ "FEATURE_POWER_MANAGER" ] } if (use_libfuzzer || use_clang_coverage) { defines += [ "TEST_COVERAGE" ] } version_script = "../../audio_framework.versionscript" innerapi_tags = [ "platformsdk" ] subsystem_name = "multimedia" part_name = "audio_framework" } ohos_prebuilt_etc("audio_server_init") { source = "etc/audio_server.cfg" relative_install_dir = "init" part_name = "audio_framework" subsystem_name = "multimedia" } ohos_prebuilt_etc("audio_service_init") { source = "etc/pulseaudio.cfg" relative_install_dir = "init" part_name = "audio_framework" subsystem_name = "multimedia" } config("audio_service_config") { visibility = [ ":*" ] visibility += [ "../../test/fuzztest/*" ] include_dirs = [ "common/include", "client/include", "server/include", "server/include/config", "../audio_policy/server/include/service/effect", "../../frameworks/native/audioeffect/include", "../../frameworks/native/offlineaudioeffect/include", "../../frameworks/native/audioinnercall/include", "../../frameworks/native/audiopolicy/include", "../../frameworks/native/audioschedule/include", "../../frameworks/native/audioutils/include", "../../frameworks/native/playbackcapturer/include", "../../frameworks/native/hdiadapter/common/include", "../../frameworks/native/hdiadapter/sink/bluetooth", "../../frameworks/native/hdiadapter/sink/common", "../../frameworks/native/hdiadapter/sink/file", "../../frameworks/native/hdiadapter/sink/fast", "../../frameworks/native/hdiadapter/sink/remote", "../../frameworks/native/hdiadapter/sink/remote_fast", "../../frameworks/native/hdiadapter/sink/primary", "../../frameworks/native/hdiadapter/sink/offload", "../../frameworks/native/hdiadapter/source/common", "../../frameworks/native/hdiadapter/source/fast", "../../frameworks/native/hdiadapter/source/primary", "../../frameworks/native/hdiadapter/source/remote", "../../frameworks/native/hdiadapter/source/remote_fast", "../../interfaces/inner_api/native/audiocommon/include", "../../interfaces/inner_api/native/audiomanager/include", ] cflags = [] if (target_cpu == "arm") { cflags += [ "-DBINDER_IPC_32BIT" ] } if (audio_framework_feature_daudio_enable == true) { cflags += [ "-DDAUDIO_ENABLE" ] } cflags_cc = cflags cflags_cc += [ "-std=c++20" ] } ohos_shared_library("audio_process_service") { branch_protector_ret = "pac_ret" sanitize = { cfi = true cfi_cross_dso = true cfi_vcall_icall_only = true debug = false } install_enable = true sources = [ "server/src/audio_endpoint.cpp", "server/src/audio_endpoint_separate.cpp", "server/src/audio_engine_manager.cpp", "server/src/audio_playback_engine.cpp", "server/src/audio_process_in_server.cpp", "server/src/audio_process_stub.cpp", "server/src/audio_service.cpp", "server/src/capturer_in_server.cpp", "server/src/i_stream_manager.cpp", "server/src/ipc_offline_stream_stub.cpp", "server/src/ipc_stream_in_server.cpp", "server/src/ipc_stream_listener_proxy.cpp", "server/src/ipc_stream_stub.cpp", "server/src/none_mix_engine.cpp", "server/src/offline_stream_in_server.cpp", "server/src/pa_adapter_manager.cpp", "server/src/pa_capturer_stream_impl.cpp", "server/src/pa_renderer_stream_impl.cpp", "server/src/policy_handler.cpp", "server/src/policy_provider_proxy.cpp", "server/src/pro_audio_stream_manager.cpp", "server/src/pro_renderer_stream_impl.cpp", "server/src/renderer_in_server.cpp", ] configs = [ ":audio_service_config" ] deps = [ ":audio_common", "../../frameworks/native/audioeffect:audio_effect", "../../frameworks/native/audioschedule:audio_schedule", "../../frameworks/native/audioutils:audio_utils", "../../frameworks/native/hdiadapter/sink:audio_renderer_sink", "../../frameworks/native/hdiadapter/sink:bluetooth_renderer_sink", "../../frameworks/native/hdiadapter/sink:fast_audio_renderer_sink", "../../frameworks/native/hdiadapter/sink:renderer_sink_adapter", "../../frameworks/native/hdiadapter/source:audio_capturer_source", "../../frameworks/native/hdiadapter/source:fast_audio_capturer_source", "../../frameworks/native/offlineaudioeffect:offline_audio_effect", "../../frameworks/native/playbackcapturer:playback_capturer", ] public_deps = [ "../../frameworks/native/offlineaudioeffect:offline_audio_effect" ] if (audio_framework_feature_daudio_enable == true) { deps += [ "../../frameworks/native/hdiadapter/sink:remote_fast_audio_renderer_sink", "../../frameworks/native/hdiadapter/source:remote_fast_audio_capturer_source", ] } external_deps = [ "c_utils:utils", "drivers_interface_audio:libeffect_proxy_1.0", "hicollie:libhicollie", "hilog:libhilog", "ipc:ipc_single", "media_foundation:media_monitor_client", "media_foundation:media_monitor_common", "pulseaudio:pulse", ] public_external_deps = [ "bounds_checking_function:libsec_static" ] defines = [] if (audio_framework_feature_power_manager) { external_deps += [ "power_manager:powermgr_client" ] defines += [ "FEATURE_POWER_MANAGER" ] } if (ressche_enable == true) { external_deps += [ "resource_schedule_service:ressched_client" ] defines += [ "RESSCHE_ENABLE" ] } subsystem_name = "multimedia" part_name = "audio_framework" } ohos_shared_library("audio_service") { stack_protector_ret = true sanitize = { cfi = true cfi_cross_dso = true cfi_vcall_icall_only = true debug = false } install_enable = true sources = [ "server/src/audio_effect_server.cpp", "server/src/audio_manager_listener_proxy.cpp", "server/src/audio_manager_stub.cpp", "server/src/audio_server.cpp", "server/src/audio_server_asr.cpp", "server/src/audio_server_dump.cpp", "server/src/config/audio_param_parser.cpp", ] configs = [ ":audio_service_config" ] deps = [ ":audio_common", ":audio_process_service", "../../frameworks/native/audioeffect:audio_effect", "../../frameworks/native/audioinnercall:audio_inner_call", "../../frameworks/native/audioschedule:audio_schedule", "../../frameworks/native/audioutils:audio_utils", "../../frameworks/native/hdiadapter/sink:audio_renderer_sink", "../../frameworks/native/hdiadapter/sink:bluetooth_renderer_sink", "../../frameworks/native/hdiadapter/sink:offload_audio_renderer_sink", "../../frameworks/native/hdiadapter/sink:renderer_sink_adapter", "../../frameworks/native/hdiadapter/source:audio_capturer_source", "../../frameworks/native/hdiadapter/source:capturer_source_adapter", "../../frameworks/native/hdiadapter/source:fast_audio_capturer_source", "../../frameworks/native/playbackcapturer:playback_capturer", ] external_deps = [ "access_token:libaccesstoken_sdk", "bundle_framework:appexecfwk_base", "bundle_framework:appexecfwk_core", "c_utils:utils", "drivers_interface_audio:libeffect_proxy_1.0", "hicollie:libhicollie", "hilog:libhilog", "hisysevent:libhisysevent", "ipc:ipc_single", "media_foundation:media_monitor_client", "media_foundation:media_monitor_common", "pulseaudio:pulse", "pulseaudio:pulseaudio", "safwk:system_ability_fwk", "samgr:samgr_proxy", ] public_external_deps = [ "libxml2:libxml2" ] defines = [] if (audio_framework_config_policy_enable) { defines += [ "USE_CONFIG_POLICY" ] external_deps += [ "config_policy:configpolicy_util" ] } if (build_variant == "user") { defines += [ "AUDIO_BUILD_VARIANT_USER" ] } else if (build_variant == "root") { defines += [ "AUDIO_BUILD_VARIANT_ROOT" ] } if (appgallery_part_enable == true) { defines += [ "FEATURE_APPGALLERY" ] } if (sensor_enable == true) { external_deps += [ "sensor:sensor_interface_native" ] } if (ressche_enable == true) { external_deps += [ "resource_schedule_service:ressched_client" ] } if (use_libfuzzer || use_clang_coverage) { defines += [ "TEST_COVERAGE" ] } subsystem_name = "multimedia" part_name = "audio_framework" } ohos_shared_library("audio_sasdk") { stack_protector_ret = true sanitize = { cfi = true cfi_cross_dso = true cfi_vcall_icall_only = true debug = false } install_enable = true sources = [ "client/src/audio_sasdk.cpp" ] include_dirs = [ "../../interfaces/inner_api/native/audiocommon/include", "../../interfaces/inner_api/native/audiosasdk/include", ] public_configs = [ ":audio_sasdk_public_config" ] deps = [ ":audio_common", "../audio_policy:audio_policy_client", ] external_deps = [ "c_utils:utils", "hilog:libhilog", ] version_script = "../../audio_framework.versionscript" innerapi_tags = [ "platformsdk", "sasdk", ] subsystem_name = "multimedia" part_name = "audio_framework" } group("audio_service_test_packages") { deps = [ ":audio_hdi_device_test", ":audio_process_client_test", ] } ohos_executable("audio_process_client_test") { install_enable = false include_dirs = [ "../../frameworks/native/audioutils/include", "../../interfaces/inner_api/native/audiocommon/include", "client/include", ] sources = [ "test/example/audio_process_client_test.cpp" ] deps = [ ":audio_client", "./../../frameworks/native/audioutils:audio_utils", ] external_deps = [ "bounds_checking_function:libsec_shared", "c_utils:utils", "hilog:libhilog", "init:libbegetutil", ] part_name = "audio_framework" subsystem_name = "multimedia" } ohos_executable("audio_hdi_device_test") { install_enable = false include_dirs = [ "../../frameworks/native/audioutils/include", "../../frameworks/native/hdiadapter/common/include", "../../frameworks/native/hdiadapter/sink", "../../frameworks/native/hdiadapter/sink/common", "../../frameworks/native/hdiadapter/sink/fast", "../../interfaces/inner_api/native/audiocommon/include", ] cflags = [ "-DDEBUG_DIRECT_USE_HDI" ] sources = [ "test/example/audio_hdi_device_test.cpp" ] deps = [ "../../frameworks/native/audioutils:audio_utils", "../../frameworks/native/hdiadapter/sink:fast_audio_renderer_sink", "../../frameworks/native/hdiadapter/sink:remote_fast_audio_renderer_sink", ] external_deps = [ "c_utils:utils", "hilog:libhilog", "pulseaudio:pulse", ] part_name = "audio_framework" subsystem_name = "multimedia" } ohos_executable("audio_faststream_playback_test") { install_enable = false sources = [ "test/example/audio_stream_playback_test.cpp" ] configs = [ ":audio_client_public_config" ] deps = [ ":audio_client", "../../frameworks/native/audiocapturer:audio_capturer", "../../frameworks/native/audiorenderer:audio_renderer", "../../frameworks/native/audioutils:audio_utils", ] external_deps = [ "bounds_checking_function:libsec_shared", "c_utils:utils", "hilog:libhilog", "init:libbegetutil", "ipc:ipc_single", "pulseaudio:pulse", ] part_name = "audio_framework" subsystem_name = "multimedia" }