# Copyright (C) 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("//foundation/multimedia/av_codec/config.gni") config("av_codec_packege_include") { include_dirs = [ "$av_codec_root_dir/frameworks/native/avcodec", "$av_codec_root_dir/frameworks/native/avcodeclist", "$av_codec_root_dir/frameworks/native/avdemuxer", "$av_codec_root_dir/frameworks/native/avmuxer", "$av_codec_root_dir/frameworks/native/avsource", "$av_codec_root_dir/interfaces/inner_api/native", "$av_codec_root_dir/interfaces/kits/c", "$av_codec_root_dir/interfaces", "$av_codec_root_dir/services/dfx/include", "$av_codec_root_dir/services/include", "$av_codec_root_dir/services/services/codec/client", "$av_codec_root_dir/services/services/codec/ipc", "$av_codec_root_dir/services/services/codeclist/client", "$av_codec_root_dir/services/services/codeclist/ipc", "$av_codec_root_dir/services/services/common", "$av_codec_root_dir/services/services/demuxer/client", "$av_codec_root_dir/services/services/demuxer/ipc", "$av_codec_root_dir/services/services/muxer/client", "$av_codec_root_dir/services/services/muxer/ipc", "$av_codec_root_dir/services/services/sa_avcodec/client", "$av_codec_root_dir/services/services/sa_avcodec/ipc", "$av_codec_root_dir/services/services/source/client", "$av_codec_root_dir/services/services/source/ipc", "$av_codec_root_dir/services/engine/base/include", "$av_codec_root_dir/services/services/codec/server", "$av_codec_root_dir/services/services/codec/server/post_processing", "$av_codec_root_dir/services/engine/codec/include/audio", "$av_codec_root_dir/services/engine/codeclist", "$av_codec_root_dir/services/engine/common/include", "$av_codec_root_dir/services/utils/include", ] } config("av_codec_client_local_config") { include_dirs = [ "$av_codec_root_dir/services/services/factory", "$av_codec_root_dir/services/engine/factory", "$av_codec_root_dir/services/media_engine/modules/muxer", "$av_codec_root_dir/services/engine/plugin/common", "$av_codec_root_dir/services/engine/plugin/core", "$av_codec_root_dir/services/engine/plugin/interface", "$av_codec_root_dir/services/engine/source/hst_releated", "$av_codec_root_dir/services/media_engine/modules", ] } config("av_codec_client_ipc_config") { include_dirs = [ "$av_codec_root_dir/services/services/codec/client", "$av_codec_root_dir/services/services/codec/ipc", "$av_codec_root_dir/services/services/codeclist/client", "$av_codec_root_dir/services/services/codeclist/ipc", "$av_codec_root_dir/services/services/common", "$av_codec_root_dir/services/services/demuxer/client", "$av_codec_root_dir/services/services/demuxer/ipc", "$av_codec_root_dir/services/services/muxer/client", "$av_codec_root_dir/services/services/muxer/ipc", "$av_codec_root_dir/services/services/sa_avcodec/client", "$av_codec_root_dir/services/services/sa_avcodec/ipc", "$av_codec_root_dir/services/services/source/client", "$av_codec_root_dir/services/services/source/ipc", ] } config("av_codec_client_public_config") { include_dirs = [ "./", "$av_codec_root_dir/frameworks/native/avcodec", "$av_codec_root_dir/frameworks/native/avcodeclist", "$av_codec_root_dir/frameworks/native/avdemuxer", "$av_codec_root_dir/frameworks/native/avmuxer", "$av_codec_root_dir/frameworks/native/avsource", "$av_codec_root_dir/interfaces/kits/c", "$av_codec_root_dir/services/include", "$av_codec_root_dir/services/dfx/include", "$av_codec_root_dir/services/utils/include", ] defines = [] defines += av_codec_defines if (target_cpu == "arm64" || is_emulator) { av_codec_plugin_path = "\"/system/lib64/media/av_codec_plugins\"" av_codec_path = "\"/system/lib64\"" } else { av_codec_plugin_path = "\"/system/lib/media/av_codec_plugins\"" av_codec_path = "\"/system/lib\"" } defines += [ "AV_CODEC_PLUGIN_PATH=${av_codec_plugin_path}", "AV_CODEC_PLUGIN_FILE_TAIL=\".z.so\"", "AV_CODEC_PATH=${av_codec_path}", ] if (av_codec_client_support_codec) { defines += [ "CLIENT_SUPPORT_CODEC" ] } else { defines += [ "CLIENT_UNSUPPORT_CODEC" ] } if (av_codec_enable_special_codec) { defines += [ "AV_CODEC_AUDIO_VIVID_CAPACITY" ] } } config("av_codec_client_codec_config") { include_dirs = [ "$av_codec_root_dir/interfaces/inner_api/native", "$av_codec_root_dir/interfaces/kits/c", "$av_codec_root_dir/services/dfx/include", "$av_codec_root_dir/services/drm_decryptor", "$av_codec_root_dir/services/utils/include/", "$av_codec_root_dir/services/engine/base/include/", "$av_codec_root_dir/services/engine/codec/include/audio/", "$av_codec_root_dir/services/engine/common/include/", "$av_codec_root_dir/services/media_engine/modules/media_codec/", "$av_codec_root_dir/services/media_engine/plugins/ffmpeg_adapter/common/", ] } config("av_codec_client_compile_config") { cflags = [ "-fno-exceptions", "-Wall", "-fno-common", "-fstack-protector-strong", "-Wshadow", "-FPIC", "-FS", "-O2", "-D_FORTIFY_SOURCE=2", "-Wformat=2", "-Wdate-time", ] cflags_cc = [ "-std=c++17", "-fno-rtti", ] if (target_cpu == "arm") { cflags += [ "-DBINDER_IPC_32BIT" ] } } config("av_codec_client_drm_config") { include_dirs = [ "$drm_framework_root_dir/services/drm_service/ipc" ] } ohos_shared_library("av_codec_client") { branch_protector_ret = "pac_ret" install_enable = true public_configs = [ ":av_codec_client_local_config", ":av_codec_client_ipc_config", ":av_codec_client_public_config", ":av_codec_packege_include", ":av_codec_client_codec_config", ":av_codec_client_drm_config", ] public_external_deps = [ "ffmpeg:libohosffmpeg", "graphic_surface:surface", "media_foundation:media_foundation", ] sanitize = av_codec_sanitize configs = [ ":av_codec_packege_include", ":av_codec_client_compile_config", "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules_config", ] sources = [ "$av_codec_root_dir/frameworks/native/common/avcodec_errors.cpp", "$av_codec_root_dir/services/services/common/avsharedmemory_ipc.cpp", "$av_codec_root_dir/services/services/sa_avcodec/client/avcodec_client.cpp", "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_listener_stub.cpp", "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_parcel.cpp", "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_service_proxy.cpp", ] if (av_codec_support_codec) { sources += [ "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_codec_impl.cpp", "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_codec_inner_impl.cpp", "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_decoder_impl.cpp", "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_encoder_impl.cpp", "$av_codec_root_dir/frameworks/native/avcodec/avcodec_video_decoder_impl.cpp", "$av_codec_root_dir/frameworks/native/avcodec/avcodec_video_encoder_impl.cpp", "$av_codec_root_dir/services/services/codec/client/codec_client.cpp", "$av_codec_root_dir/services/services/codec/ipc/buffer_converter.cpp", "$av_codec_root_dir/services/services/codec/ipc/codec_listener_stub.cpp", "$av_codec_root_dir/services/services/codec/ipc/codec_service_proxy.cpp", ] } if (av_codec_support_codeclist) { sources += [ "$av_codec_root_dir/frameworks/native/avcodeclist/avcodec_info.cpp", "$av_codec_root_dir/frameworks/native/avcodeclist/avcodeclist_impl.cpp", "$av_codec_root_dir/services/services/codeclist/client/codeclist_client.cpp", "$av_codec_root_dir/services/services/codeclist/ipc/codeclist_service_proxy.cpp", "$av_codec_root_dir/services/services/sa_avcodec/ipc/codeclist_parcel.cpp", ] } if (av_codec_client_support_codec) { sources += [ "$av_codec_root_dir/services/drm_decryptor/codec_drm_decrypt.cpp", "$av_codec_root_dir/services/engine/codeclist/audio_codeclist_info.cpp", "$av_codec_root_dir/services/engine/codeclist/codec_ability_singleton.cpp", "$av_codec_root_dir/services/engine/codeclist/codeclist_builder.cpp", "$av_codec_root_dir/services/engine/codeclist/codeclist_core.cpp", "$av_codec_root_dir/services/media_engine/plugins/ffmpeg_adapter/common/hdi_codec.cpp", "$av_codec_root_dir/services/services/codec/server/codec_factory.cpp", "$av_codec_root_dir/services/services/codec/server/codec_param_checker.cpp", "$av_codec_root_dir/services/services/codec/server/codec_server.cpp", "$av_codec_root_dir/services/services/codec/server/post_processing/dynamic_controller.cpp", "$av_codec_root_dir/services/services/codec/server/post_processing/dynamic_interface.cpp", "$av_codec_root_dir/services/services/codec/server/post_processing/state_machine.cpp", "$av_codec_root_dir/services/services/codec/server/temporal_scalability.cpp", ] } if (av_codec_support_demuxer) { include_dirs = [ "$av_codec_root_dir/services/media_engine/modules", "$av_codec_root_dir/services/media_engine/plugins", ] if (target_cpu == "arm64" || is_emulator) { av_codec_plugin_path = "\"/system/lib64/media/av_codec_plugins\"" } else { av_codec_plugin_path = "\"/system/lib/media/av_codec_plugins\"" } if (target_cpu == "arm64" || is_emulator) { oh_file_plugin_path = "\"/system/lib64/media/histreamer_plugins\"" } else { oh_file_plugin_path = "\"/system/lib/media/histreamer_plugins\"" } defines = [] defines += av_codec_defines defines += [ "AV_CODEC_PLUGIN_PATH=${av_codec_plugin_path}", "AV_CODEC_PLUGIN_FILE_TAIL=\".z.so\"", "OH_FILE_PLUGIN_PATH=${oh_file_plugin_path}", ] sources += [ "$av_codec_root_dir/frameworks/native/avdemuxer/avdemuxer_impl.cpp", "$av_codec_root_dir/frameworks/native/avsource/avsource_impl.cpp", ] } if (av_codec_support_muxer) { sources += [ "$av_codec_root_dir/frameworks/native/avmuxer/avmuxer_impl.cpp" ] } deps = [ "$av_codec_root_dir/services/dfx:av_codec_service_dfx", "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules", ] if (av_codec_client_support_codec) { deps += [ "$av_codec_root_dir/services/engine/codec/audio:av_codec_audio_ffmpeg_codec" ] } if (av_codec_support_codeclist) { deps += [ "$av_codec_root_dir/services/engine:av_codec_engine_package" ] } deps += [ "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules" ] external_deps = [ "bounds_checking_function:libsec_static", "c_utils:utils", "drivers_interface_codec:libcodec_proxy_3.0", "graphic_surface:surface", "hilog:libhilog", "ipc:ipc_single", "media_foundation:media_foundation", "samgr:samgr_proxy", ] if (av_codec_support_drm) { external_deps += [ "drm_framework:drm_framework" ] } innerapi_tags = [ "platformsdk", "sasdk", ] subsystem_name = "multimedia" part_name = "av_codec" }