1# Copyright (C) 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("//foundation/multimedia/av_codec/config.gni") 16 17config("av_codec_packege_include") { 18 include_dirs = [ 19 "$av_codec_root_dir/frameworks/native/avcodec", 20 "$av_codec_root_dir/frameworks/native/avcodeclist", 21 "$av_codec_root_dir/frameworks/native/avdemuxer", 22 "$av_codec_root_dir/frameworks/native/avmuxer", 23 "$av_codec_root_dir/frameworks/native/avsource", 24 "$av_codec_root_dir/interfaces/inner_api/native", 25 "$av_codec_root_dir/interfaces/kits/c", 26 "$av_codec_root_dir/interfaces", 27 "$av_codec_root_dir/services/dfx/include", 28 "$av_codec_root_dir/services/include", 29 "$av_codec_root_dir/services/services/codec/client", 30 "$av_codec_root_dir/services/services/codec/ipc", 31 "$av_codec_root_dir/services/services/codeclist/client", 32 "$av_codec_root_dir/services/services/codeclist/ipc", 33 "$av_codec_root_dir/services/services/common", 34 "$av_codec_root_dir/services/services/demuxer/client", 35 "$av_codec_root_dir/services/services/demuxer/ipc", 36 "$av_codec_root_dir/services/services/muxer/client", 37 "$av_codec_root_dir/services/services/muxer/ipc", 38 "$av_codec_root_dir/services/services/sa_avcodec/client", 39 "$av_codec_root_dir/services/services/sa_avcodec/ipc", 40 "$av_codec_root_dir/services/services/source/client", 41 "$av_codec_root_dir/services/services/source/ipc", 42 "$av_codec_root_dir/services/engine/base/include", 43 "$av_codec_root_dir/services/services/codec/server", 44 "$av_codec_root_dir/services/services/codec/server/post_processing", 45 "$av_codec_root_dir/services/engine/codec/include/audio", 46 "$av_codec_root_dir/services/engine/codeclist", 47 "$av_codec_root_dir/services/engine/common/include", 48 "$av_codec_root_dir/services/utils/include", 49 ] 50} 51 52config("av_codec_client_local_config") { 53 include_dirs = [ 54 "$av_codec_root_dir/services/services/factory", 55 "$av_codec_root_dir/services/engine/factory", 56 57 "$av_codec_root_dir/services/media_engine/modules/muxer", 58 "$av_codec_root_dir/services/media_engine/modules/demuxer", 59 "$av_codec_root_dir/services/engine/plugin/common", 60 "$av_codec_root_dir/services/engine/plugin/core", 61 "$av_codec_root_dir/services/engine/plugin/interface", 62 "$av_codec_root_dir/services/engine/source/hst_releated", 63 "$av_codec_root_dir/services/media_engine/modules", 64 ] 65} 66 67config("av_codec_client_ipc_config") { 68 include_dirs = [ 69 "$av_codec_root_dir/services/services/codec/client", 70 "$av_codec_root_dir/services/services/codec/ipc", 71 "$av_codec_root_dir/services/services/codeclist/client", 72 "$av_codec_root_dir/services/services/codeclist/ipc", 73 "$av_codec_root_dir/services/services/common", 74 "$av_codec_root_dir/services/services/demuxer/client", 75 "$av_codec_root_dir/services/services/demuxer/ipc", 76 "$av_codec_root_dir/services/services/muxer/client", 77 "$av_codec_root_dir/services/services/muxer/ipc", 78 "$av_codec_root_dir/services/services/sa_avcodec/client", 79 "$av_codec_root_dir/services/services/sa_avcodec/ipc", 80 "$av_codec_root_dir/services/services/source/client", 81 "$av_codec_root_dir/services/services/source/ipc", 82 ] 83} 84 85config("av_codec_client_public_config") { 86 include_dirs = [ 87 "./", 88 "$av_codec_root_dir/frameworks/native/avcodec", 89 "$av_codec_root_dir/frameworks/native/avcodeclist", 90 "$av_codec_root_dir/frameworks/native/avdemuxer", 91 "$av_codec_root_dir/frameworks/native/avmuxer", 92 "$av_codec_root_dir/frameworks/native/avsource", 93 "$av_codec_root_dir/interfaces/kits/c", 94 "$av_codec_root_dir/services/include", 95 "$av_codec_root_dir/services/dfx/include", 96 "$av_codec_root_dir/services/utils/include", 97 ] 98 99 defines = [] 100 defines += av_codec_defines 101 102 if (target_cpu == "arm64" || is_emulator) { 103 av_codec_plugin_path = "\"/system/lib64/media/av_codec_plugins\"" 104 av_codec_path = "\"/system/lib64\"" 105 } else { 106 av_codec_plugin_path = "\"/system/lib/media/av_codec_plugins\"" 107 av_codec_path = "\"/system/lib\"" 108 } 109 110 defines += [ 111 "AV_CODEC_PLUGIN_PATH=${av_codec_plugin_path}", 112 "AV_CODEC_PLUGIN_FILE_TAIL=\".z.so\"", 113 "AV_CODEC_PATH=${av_codec_path}", 114 ] 115 116 if (av_codec_client_support_codec) { 117 defines += [ "CLIENT_SUPPORT_CODEC" ] 118 } else { 119 defines += [ "CLIENT_UNSUPPORT_CODEC" ] 120 } 121 122 if (av_codec_enable_special_codec) { 123 defines += [ "AV_CODEC_AUDIO_VIVID_CAPACITY" ] 124 } 125} 126 127config("av_codec_client_codec_config") { 128 include_dirs = [ 129 "$av_codec_root_dir/interfaces/inner_api/native", 130 "$av_codec_root_dir/interfaces/kits/c", 131 "$av_codec_root_dir/services/dfx/include", 132 "$av_codec_root_dir/services/drm_decryptor", 133 "$av_codec_root_dir/services/utils/include/", 134 "$av_codec_root_dir/services/engine/base/include/", 135 "$av_codec_root_dir/services/engine/codec/include/audio/", 136 "$av_codec_root_dir/services/engine/common/include/", 137 "$av_codec_root_dir/services/media_engine/modules/media_codec/", 138 "$av_codec_root_dir/services/media_engine/plugins/ffmpeg_adapter/common/", 139 ] 140} 141 142config("av_codec_client_compile_config") { 143 cflags = [ 144 "-fno-exceptions", 145 "-Wall", 146 "-fno-common", 147 "-fstack-protector-strong", 148 "-Wshadow", 149 "-FPIC", 150 "-FS", 151 "-O2", 152 "-D_FORTIFY_SOURCE=2", 153 "-Wformat=2", 154 "-Wdate-time", 155 ] 156 157 cflags_cc = [ 158 "-std=c++17", 159 "-fno-rtti", 160 ] 161 162 if (target_cpu == "arm") { 163 cflags += [ "-DBINDER_IPC_32BIT" ] 164 } 165} 166 167ohos_shared_library("av_codec_client") { 168 branch_protector_ret = "pac_ret" 169 install_enable = true 170 public_configs = [ 171 ":av_codec_client_local_config", 172 ":av_codec_client_ipc_config", 173 ":av_codec_client_public_config", 174 ":av_codec_packege_include", 175 ":av_codec_client_codec_config", 176 ] 177 178 public_external_deps = [ 179 "ffmpeg:libohosffmpeg", 180 "media_foundation:media_foundation", 181 ] 182 sanitize = av_codec_sanitize 183 184 configs = [ 185 ":av_codec_packege_include", 186 ":av_codec_client_compile_config", 187 "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules_config", 188 ] 189 190 sources = [ 191 "$av_codec_root_dir/frameworks/native/common/avcodec_errors.cpp", 192 "$av_codec_root_dir/services/dfx/avcodec_dfx_component.cpp", 193 "$av_codec_root_dir/services/services/common/avsharedmemory_ipc.cpp", 194 "$av_codec_root_dir/services/services/sa_avcodec/client/avcodec_client.cpp", 195 "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_listener_stub.cpp", 196 "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_parcel.cpp", 197 "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_service_proxy.cpp", 198 ] 199 if (av_codec_support_codec) { 200 sources += [ 201 "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_codec_impl.cpp", 202 "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_codec_inner_impl.cpp", 203 "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_decoder_impl.cpp", 204 "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_encoder_impl.cpp", 205 "$av_codec_root_dir/frameworks/native/avcodec/avcodec_video_decoder_impl.cpp", 206 "$av_codec_root_dir/frameworks/native/avcodec/avcodec_video_encoder_impl.cpp", 207 "$av_codec_root_dir/services/services/codec/client/codec_client.cpp", 208 "$av_codec_root_dir/services/services/codec/ipc/buffer_converter.cpp", 209 "$av_codec_root_dir/services/services/codec/ipc/codec_listener_stub.cpp", 210 "$av_codec_root_dir/services/services/codec/ipc/codec_service_proxy.cpp", 211 ] 212 } 213 if (av_codec_support_codeclist) { 214 sources += [ 215 "$av_codec_root_dir/frameworks/native/avcodeclist/avcodec_info.cpp", 216 "$av_codec_root_dir/frameworks/native/avcodeclist/avcodeclist_impl.cpp", 217 "$av_codec_root_dir/services/services/codeclist/client/codeclist_client.cpp", 218 "$av_codec_root_dir/services/services/codeclist/ipc/codeclist_service_proxy.cpp", 219 "$av_codec_root_dir/services/services/sa_avcodec/ipc/codeclist_parcel.cpp", 220 ] 221 } 222 if (av_codec_client_support_codec) { 223 sources += [ 224 "$av_codec_root_dir/services/drm_decryptor/codec_drm_decrypt.cpp", 225 "$av_codec_root_dir/services/engine/codeclist/audio_codeclist_info.cpp", 226 "$av_codec_root_dir/services/engine/codeclist/codec_ability_singleton.cpp", 227 "$av_codec_root_dir/services/engine/codeclist/codeclist_builder.cpp", 228 "$av_codec_root_dir/services/engine/codeclist/codeclist_core.cpp", 229 "$av_codec_root_dir/services/media_engine/plugins/ffmpeg_adapter/common/hdi_codec.cpp", 230 "$av_codec_root_dir/services/services/codec/server/codec_factory.cpp", 231 "$av_codec_root_dir/services/services/codec/server/codec_param_checker.cpp", 232 "$av_codec_root_dir/services/services/codec/server/codec_server.cpp", 233 "$av_codec_root_dir/services/services/codec/server/post_processing/dynamic_controller.cpp", 234 "$av_codec_root_dir/services/services/codec/server/post_processing/dynamic_interface.cpp", 235 "$av_codec_root_dir/services/services/codec/server/post_processing/state_machine.cpp", 236 "$av_codec_root_dir/services/services/codec/server/temporal_scalability.cpp", 237 ] 238 } 239 if (av_codec_support_demuxer) { 240 include_dirs = [ 241 "$av_codec_root_dir/services/media_engine/modules", 242 "$av_codec_root_dir/services/media_engine/plugins", 243 ] 244 245 if (target_cpu == "arm64" || is_emulator) { 246 av_codec_plugin_path = "\"/system/lib64/media/av_codec_plugins\"" 247 } else { 248 av_codec_plugin_path = "\"/system/lib/media/av_codec_plugins\"" 249 } 250 251 if (target_cpu == "arm64" || is_emulator) { 252 oh_file_plugin_path = "\"/system/lib64/media/histreamer_plugins\"" 253 } else { 254 oh_file_plugin_path = "\"/system/lib/media/histreamer_plugins\"" 255 } 256 257 defines = [] 258 defines += av_codec_defines 259 defines += [ 260 "AV_CODEC_PLUGIN_PATH=${av_codec_plugin_path}", 261 "AV_CODEC_PLUGIN_FILE_TAIL=\".z.so\"", 262 "OH_FILE_PLUGIN_PATH=${oh_file_plugin_path}", 263 ] 264 sources += [ 265 "$av_codec_root_dir/frameworks/native/avdemuxer/avdemuxer_impl.cpp", 266 "$av_codec_root_dir/frameworks/native/avsource/avsource_impl.cpp", 267 ] 268 } 269 if (av_codec_support_muxer) { 270 sources += 271 [ "$av_codec_root_dir/frameworks/native/avmuxer/avmuxer_impl.cpp" ] 272 } 273 deps = [ 274 "$av_codec_root_dir/services/dfx:av_codec_service_dfx", 275 "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules", 276 ] 277 278 if (av_codec_client_support_codec) { 279 deps += [ "$av_codec_root_dir/services/engine/codec/audio:av_codec_audio_ffmpeg_codec" ] 280 } 281 282 if (av_codec_support_codeclist) { 283 deps += [ "$av_codec_root_dir/services/engine:av_codec_engine_package" ] 284 } 285 286 deps += [ "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules" ] 287 288 external_deps = [ 289 "bounds_checking_function:libsec_static", 290 "c_utils:utils", 291 "drivers_interface_codec:libcodec_proxy_3.0", 292 "graphic_surface:surface", 293 "hilog:libhilog", 294 "ipc:ipc_single", 295 "media_foundation:media_foundation", 296 "qos_manager:qos", 297 "samgr:samgr_proxy", 298 ] 299 300 if (av_codec_support_drm) { 301 external_deps += [ "drm_framework:drm_framework" ] 302 } 303 304 innerapi_tags = [ 305 "platformsdk", 306 "sasdk", 307 ] 308 309 subsystem_name = "multimedia" 310 part_name = "av_codec" 311} 312