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