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