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