# Copyright (c) 2025 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("../../audio_framework_test_sources.gni")
import("../../config.gni")
group("audio_suite_packages") {
deps = [
":audio_pcm_process",
":audio_suite",
":audio_suite_capabilities",
]
if (audio_framework_feature_audiosuite_support) {
deps += [
":audio_suite_service",
"../../sa_profile:audio_suite_sa_profile",
":audio_suite_init",
]
}
}
config("audio_suite_public_config") {
include_dirs = [
"client/manager/include",
"client/converter/include",
"client/config/include",
"client/node/include",
"client/utils/include",
"../../frameworks/native/audioutils/include",
"../audio_engine/utils/",
"../audio_engine/plugin/channel_converter/include/",
"../../interfaces/inner_api/native/audiocommon/include",
"../../interfaces/inner_api/native/audiosuite/include",
"../../interfaces/inner_api/native/audiomanager/include",
"../../interfaces/kits/c/common",
]
}
audio_ohos_library("audio_suite") {
branch_protector_ret = "pac_ret"
sanitize = {
cfi = true
cfi_cross_dso = true
cfi_vcall_icall_only = true
debug = false
integer_overflow = true
ubsan = true
boundary_sanitize = true
}
install_enable = true
public_configs = [ ":audio_suite_public_config" ]
include_dirs = [
"client/manager/include",
"client/converter/include",
"client/stub/include",
"../../frameworks/native/audioutils/include",
"../../frameworks/native/audioschedule/include",
"../../frameworks/native/offlineaudioeffect/include",
"../../interfaces/inner_api/native/offlineaudioeffect/include",
"../audio_engine/buffer",
"../audio_engine/plugin/resample/include",
"../audio_service/common/include/limiter",
"../../interfaces/inner_api/native/audiocommon/include/",
"../../interfaces/kits/c/audio_suite/",
"../audio_service/common/include/dfx",
]
public_configs += [
"idl:audio_suite_idl_config",
]
deps = [
"../audio_engine:audio_engine_utils",
"../audio_engine:audio_engine_plugins",
"../../frameworks/native/audioutils:audio_utils",
"../../frameworks/native/audioschedule:audio_schedule",
"../../frameworks/native/offlineaudioeffect:offline_audio_effect",
"../audio_service:audio_common",
"../../frameworks/native/audioutils:audio_xml_utils",
"../audio_service:audio_engine_manager",
"../audio_service:audio_policy_manager",
"../audio_service:audio_client",
"idl:audio_suite_idl_headers",
]
external_deps = [
"bounds_checking_function:libsec_shared",
"c_utils:utils",
"hilog:libhilog",
"ipc:ipc_single",
"bounds_checking_function:libsec_shared",
"media_foundation:media_monitor_client",
"media_foundation:media_monitor_common",
"samgr:samgr_proxy",
]
cflags_cc = [
"-Wall",
"-Werror",
"-Os",
"-ffunction-sections",
"-fdata-sections",
"-fvisibility-inlines-hidden",
"-fno-ident",
"-fno-exceptions",
"-fno-rtti",
]
ldflags = [
"-flto=full",
"-Wl,-gc-sections",
"-Wl,--exclude-libs,ALL",
"-Wl,--hash-style=gnu",
"-Wl,--strip-debug",
]
if (audio_framework_feature_audiosuite_support || audio_framework_feature_audiosuite_format_convert_support) {
sources = []
if (audio_framework_feature_audiosuite_support) {
sources += [
"client/manager/src/audio_suite_engine.cpp",
"client/manager/src/audio_suite_manager.cpp",
"client/manager/src/audio_suite_pipeline.cpp",
"client/manager/src/audio_suite_client_download_manager.cpp",
"client/manager/src/audio_suite_client_policy.cpp",
"client/manager/src/audio_suite_mixer_processor.cpp",
"client/manager/src/audio_suite_download_callback_stub_impl.cpp",
"client/manager/src/audio_suite_status_callback_stub_impl.cpp",
"client/node/src/audio_suite_input_node.cpp",
"client/node/src/audio_suite_output_node.cpp",
"client/node/src/audio_suite_process_node.cpp",
"client/node/src/audio_suite_aiss_node.cpp",
"client/node/src/audio_suite_env_node.cpp",
"client/node/src/audio_suite_eq_node.cpp",
"client/node/src/audio_suite_mixer_node.cpp",
"client/node/src/audio_suite_nr_node.cpp",
"client/node/src/audio_suite_soundfield_node.cpp",
"client/node/src/audio_suite_tempo_pitch_node.cpp",
"client/node/src/audio_suite_node.cpp",
"client/node/src/audio_suite_space_render_node.cpp",
"client/node/src/audio_suite_hoa_render_node.cpp",
"client/node/src/audio_suite_mixer_processor_node.cpp",
"client/node/src/audio_suite_system_node.cpp",
"client/utils/src/audio_suite_manager_thread.cpp",
"client/utils/src/audio_suite_common.cpp",
"client/utils/src/audio_suite_algo_interface.cpp",
"client/utils/src/audio_suite_serializer.cpp",
"client/utils/src/audio_suite_eq_algo_interface_impl.cpp",
"client/utils/src/audio_suite_env_algo_interface_impl.cpp",
"client/utils/src/audio_suite_nr_algo_interface_impl.cpp",
"client/utils/src/audio_suite_soundfield_algo_interface_impl.cpp",
"client/utils/src/audio_suite_aiss_algo_interface_impl.cpp",
"client/node/src/audio_suite_general_voice_change_node.cpp",
"client/utils/src/audio_suite_voice_morphing_algo_interface_impl.cpp",
"client/node/src/audio_suite_voice_beautifier_node.cpp",
"client/utils/src/audio_suite_pure_voice_change_algo_interface_impl.cpp",
"client/node/src/audio_suite_pure_voice_change_node.cpp",
"client/utils/src/audio_suite_tempo_pitch_algo_interface_impl.cpp",
"client/utils/src/audio_suite_space_render_algo_interface_impl.cpp",
"client/utils/src/audio_suite_hoa_render_algo_interface_impl.cpp",
"client/config/src/audio_suite_capabilities_parser.cpp",
"client/config/src/audio_suite_capabilities.cpp",
]
deps += [
"idl:audio_suite_client_idl",
]
} else {
sources += [
"client/manager/src/audio_suite_client_download_manager_stub.cpp",
]
}
if (audio_framework_feature_audiosuite_support || audio_framework_feature_audiosuite_format_convert_support) {
sources += [
"client/converter/src/audio_format_converter_impl.cpp",
"client/utils/src/audio_suite_pcm_buffer.cpp",
"client/utils/src/audio_suite_format_conversion.cpp",
"client/converter/src/audio_suite_raw_format_conversion.cpp",
]
}
} else {
sources = [
"client/manager/src/audio_suite_client_download_manager_stub.cpp",
]
}
version_script = "libaudio_suite.versionscript"
subsystem_name = "multimedia"
part_name = "audio_framework"
}
audio_ohos_library("audio_pcm_process") {
branch_protector_ret = "pac_ret"
cflags = [ "-Os" ]
sanitize = {
cfi = true
cfi_cross_dso = true
cfi_vcall_icall_only = true
debug = false
integer_overflow = true
ubsan = true
boundary_sanitize = true
}
install_enable = true
if (audio_framework_feature_audiosuite_support) {
include_dirs = [
"client/converter/include",
"client/manager/include",
"client/pcm_process/include",
"client/utils/include",
"client/node/include",
"../../interfaces/inner_api/native/audiocommon/include/",
"../../interfaces/inner_api/native/audiosuite/include",
"../../interfaces/inner_api/native/audio_pcm_process/include",
"../audio_engine/utils/",
"../audio_engine/plugin/channel_converter/include/",
]
sources = [ "client/pcm_process/src/audio_pcm_process_impl.cpp" ]
deps = [
":audio_suite",
"../audio_engine:audio_engine_plugins",
"../../frameworks/native/audioutils:audio_utils",
"../audio_service:audio_common",
]
external_deps = [
"c_utils:utils",
"hilog:libhilog",
"bounds_checking_function:libsec_shared",
]
}
# innerapi_tags = [ "chipsetsdk" ]
subsystem_name = "multimedia"
part_name = "audio_framework"
}
if (audio_framework_feature_audiosuite_support) {
audio_ohos_library("audio_suite_service") {
branch_protector_ret = "pac_ret"
sanitize = {
cfi = true
cfi_cross_dso = true
cfi_vcall_icall_only = true
debug = false
integer_overflow = true
ubsan = true
boundary_sanitize = true
}
install_enable = true
cflags_cc = [
"-Werror",
"-Os",
"-ffunction-sections",
"-fdata-sections",
"-fvisibility-inlines-hidden",
"-fno-ident",
"-fno-exceptions",
"-fno-rtti",
]
ldflags = [
"-flto=full",
"-Wl,-gc-sections",
"-Wl,--exclude-libs,ALL",
"-Wl,--hash-style=gnu",
"-Wl,--strip-debug",
]
defines = []
public_configs = [
"idl:audio_suite_idl_config",
]
include_dirs = [
"server/include",
"server/include",
"client/utils/include",
"client/node/include",
"idl",
"../../interfaces/inner_api/native/audiocommon/include",
"../../interfaces/inner_api/native/audiosuite/include",
"../../frameworks/native/audioutils/include",
"../audio_service/common/include",
"${target_gen_dir}",
]
sources = [
"server/src/audio_suite_service.cpp",
"server/src/download_manager.cpp",
"server/src/background_download.cpp",
]
shlib_type = "sa"
deps = [
":audio_suite",
"../../frameworks/native/audioutils:audio_utils",
"../audio_service:audio_common",
"idl:audio_suite_server_idl",
"idl:audio_suite_idl_headers",
]
external_deps = [
"c_utils:utils",
"hilog:libhilog",
"ipc:ipc_core",
"samgr:samgr_proxy",
"safwk:system_ability_fwk",
"eventhandler:libeventhandler",
"hisysevent:libhisysevent",
"hitrace:hitrace_meter",
"access_token:libaccesstoken_sdk",
"access_token:libnativetoken_shared",
"access_token:libtokensetproc_shared",
"init:libbegetutil",
"bounds_checking_function:libsec_shared",
"common_event_service:cesfwk_innerkits",
]
if (defined(global_parts_info) && defined(global_parts_info.communication_netmanager_base)) {
external_deps += ["netmanager_base:net_conn_manager_if"]
defines += ["AUDIO_SUITE_ROM_DOWNLOAD_NET_MANAGER"]
}
if (defined(global_parts_info) && defined(global_parts_info.powermgr_battery_manager)) {
external_deps += ["battery_manager:batterysrv_client"]
defines += ["AUDIO_SUITE_ROM_DOWNLOAD_BATTERY_MANAGER"]
}
if (defined(global_parts_info) && defined(global_parts_info.theme_screenlock_mgr)) {
external_deps += ["screenlock_mgr:screenlock_client"]
defines += ["AUDIO_SUITE_ROM_DOWNLOAD_SCREENLOCK_MANAGER"]
}
subsystem_name = "multimedia"
part_name = "audio_framework"
}
}
ohos_prebuilt_etc("audio_suite_capabilities") {
source = "client/config/file/audio_suite_capabilities.xml"
subsystem_name = "multimedia"
relative_install_dir = "audio"
part_name = "audio_framework"
}
ohos_prebuilt_etc("audio_suite_init") {
source = "etc/audio_suite_server.cfg"
relative_install_dir = "init"
subsystem_name = "multimedia"
part_name = "audio_framework"
}