1# Copyright (c) 2025 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("//build/config/components/idl_tool/idl.gni") 16import("//foundation/multimedia/video_processing_engine/config.gni") 17 18config("export_config") { 19 include_dirs = [ 20 "$AIHDR_ENHANCER_DIR/include", 21 "$INTERFACES_INNER_API_DIR", 22 "$DFX_DIR/include", 23 "$VIDEO_PROCESSING_ENGINE_ROOT_DIR/services/include", 24 "$DETAIL_ENHANCER_DIR/include", 25 "$COLORSPACE_CONVERTER_DIR/include", 26 "$METADATA_GENERATOR_DIR/include", 27 "$INTERFACES_INNER_API_DIR/native/colorspace", 28 "$COLORSPACE_CONVERTER_DISPLAY_DIR/include", 29 "$VIDEO_REFRESHRATE_PREDICTION_DIR/include", 30 "$ALGORITHM_DIR/common/include", 31 "$CONTRAST_ENHANCER_DIR/include", 32 "$METADATA_GENERATOR_VIDEO_DIR/include", 33 "$ALGORITHM_EXTENSION_MANAGER_DIR/include", 34 "$ALGORITHM_EXTENSION_SKIA_DIR/include", 35 ] 36} 37config("video_process_config") { 38 cflags = [ 39 "-std=c++17", 40 "-fno-rtti", 41 "-fno-exceptions", 42 "-Wall", 43 "-fno-common", 44 "-fstack-protector-strong", 45 "-Wshadow", 46 "-FPIC", 47 "-FS", 48 "-O2", 49 "-D_FORTIFY_SOURCE=2", 50 "-Wformat=2", 51 52 # "-Wfloat-equal", 53 "-Wdate-time", 54 "-Werror", 55 "-Wextra", 56 "-Wimplicit-fallthrough", 57 "-Wsign-compare", 58 "-Wunused-parameter", 59 ] 60 61 include_dirs = [ 62 "$VIDEO_PROCESSING_ENGINE_ROOT_DIR", 63 "$FRAMEWORK_DIR", 64 "$FRAMEWORK_DIR/common/include", 65 "$AIHDR_ENHANCER_DIR/include", 66 "$AIHDR_ENHANCER_VIDEO_DIR/include", 67 "$ALGORITHM_DIR/common/include", 68 "$ALGORITHM_DIR/extension_manager/include", 69 "$COLORSPACE_CONVERTER_DIR/include", 70 "$COLORSPACE_CONVERTER_DISPLAY_DIR/include", 71 "$COLORSPACE_CONVERTER_VIDEO_DIR/include", 72 "$CONTRAST_ENHANCER_DIR/include", 73 "$METADATA_GENERATOR_DIR/include", 74 "$METADATA_GENERATOR_VIDEO_DIR/include", 75 "$DETAIL_ENHANCER_VIDEO_DIR/include", 76 "$VIDEO_REFRESHRATE_PREDICTION_DIR/include", 77 "$DETAIL_ENHANCER_DIR/include", 78 "$DFX_DIR/include", 79 "$FRAMEWORK_DIR/plugin", 80 "$FRAMEWORK_DIR/module", 81 "$INTERFACES_INNER_API_DIR", 82 "$INTERFACES_INNER_API_DIR/module", 83 "$INTERFACES_DIR/plugin", 84 "$SERVICES_DIR/include", 85 "$SERVICES_DIR/utils/include", 86 "$VIDEO_PROCESSING_ENGINE_ROOT_DIR/services/include", 87 "${target_gen_dir}/../services/", 88 ] 89} 90 91if (defined(global_parts_info) && 92 defined(global_parts_info.multimedia_video_processing_engine_ext)) { 93 ohos_prebuilt_shared_library("extream_vision_engine") { 94 if (is_asan && use_hwasan) { 95 source = "//binary/artifacts/display/AIPQ20/asan/libextream_vision_engine.so" 96 } else { 97 source = "//binary/artifacts/display/AIPQ20/libextream_vision_engine.so" 98 } 99 module_install_dir = "lib64/" 100 output = "libextream_vision_engine.so" 101 install_images = [ "system" ] 102 subsystem_name = "multimedia" 103 part_name = "video_processing_engine" 104 install_enable = true 105 } 106 107 ohos_prebuilt_shared_library("ai_super_resolution") { 108 if (is_asan && use_hwasan) { 109 source = "//binary/artifacts/display/AIPQ20/asan/libdisplay_aipq_imagesr.so" 110 } else { 111 source = "//binary/artifacts/display/AIPQ20/libdisplay_aipq_imagesr.so" 112 } 113 module_install_dir = "lib64/" 114 output = "libdisplay_aipq_imagesr.so" 115 install_images = [ "system" ] 116 subsystem_name = "multimedia" 117 part_name = "video_processing_engine" 118 install_enable = true 119 } 120 121 ohos_prebuilt_shared_library("aihdr_engine") { 122 if (is_asan && use_hwasan) { 123 source = "//binary/artifacts/display/AIPQ20/asan/libaihdr_engine.so" 124 } else { 125 source = "//binary/artifacts/display/AIPQ20/libaihdr_engine.so" 126 } 127 module_install_dir = "lib64/" 128 output = "libaihdr_engine.so" 129 install_images = [ "system" ] 130 subsystem_name = "multimedia" 131 part_name = "video_processing_engine" 132 install_enable = true 133 } 134} else { 135 group("extream_vision_engine") { 136 } 137 138 group("ai_super_resolution") { 139 } 140 141 group("aihdr_engine") { 142 } 143} 144 145ohos_shared_library("videoprocessingengine") { 146 branch_protector_ret = "pac_ret" 147 148 install_enable = true 149 150 sanitize = { 151 boundary_sanitize = true 152 cfi = true 153 cfi_cross_dso = true 154 integer_overflow = true 155 ubsan = true 156 debug = false 157 } 158 159 configs = [ ":video_process_config" ] 160 public_configs = [ ":export_config" ] 161 162 include_dirs = [ 163 "$DFX_DIR/include", 164 "$METADATA_GENERATOR_DIR/include", 165 "$METADATA_GENERATOR_VIDEO_DIR/include", 166 "$VIDEO_REFRESHRATE_PREDICTION_DIR/include", 167 "$ALGORITHM_DIR/common/include", 168 "$ALGORITHM_DIR/extension_manager/include", 169 "$COLORSPACE_CONVERTER_DIR/include", 170 "$COLORSPACE_CONVERTER_VIDEO_DIR/include", 171 ] 172 173 sources = [ 174 "$AIHDR_ENHANCER_DIR/aihdr_enhancer_fwk.cpp", 175 "$AIHDR_ENHANCER_VIDEO_DIR/aihdr_enhancer_video_impl.cpp", 176 "$ALGORITHM_DIR/common/algorithm_common.cpp", 177 "$ALGORITHM_DIR/common/algorithm_utils.cpp", 178 "$ALGORITHM_DIR/common/algorithm_video.cpp", 179 "$ALGORITHM_DIR/common/algorithm_video_common.cpp", 180 "$ALGORITHM_DIR/common/algorithm_video_impl.cpp", 181 "$ALGORITHM_DIR/common/frame_info.cpp", 182 "$ALGORITHM_DIR/extension_manager/extension_manager.cpp", 183 "$ALGORITHM_DIR/extension_manager/utils.cpp", 184 "$COLORSPACE_CONVERTER_DIR/colorspace_converter_fwk.cpp", 185 "$COLORSPACE_CONVERTER_VIDEO_DIR/colorspace_converter_video_impl.cpp", 186 "$COLORSPACE_CONVERTER_DISPLAY_DIR/colorspace_converter_display_fwk.cpp", 187 "$METADATA_GENERATOR_DIR/metadata_generator_fwk.cpp", 188 "$METADATA_GENERATOR_VIDEO_DIR/metadata_generator_video_impl.cpp", 189 "$DETAIL_ENHANCER_DIR/detail_enhancer_image_fwk.cpp", 190 "$DETAIL_ENHANCER_VIDEO_DIR/detail_enhancer_video_fwk.cpp", 191 "$DETAIL_ENHANCER_VIDEO_DIR/detail_enhancer_video_impl.cpp", 192 "$VIDEO_REFRESHRATE_PREDICTION_DIR/video_refreshrate_prediction_fwk.cpp", 193 "$CONTRAST_ENHANCER_DIR/contrast_enhancer_image_fwk.cpp", 194 "$DFX_DIR/vpe_trace.cpp", 195 "$DFX_DIR/vpe_log.cpp", 196 #client 197 "$VIDEO_PROCESSING_ENGINE_ROOT_DIR/services/src/video_processing_client.cpp", 198 "$VIDEO_PROCESSING_ENGINE_ROOT_DIR/services/src/video_processing_load_callback.cpp", 199 "$VIDEO_PROCESSING_ENGINE_ROOT_DIR/services/utils/surface_buffer_info.cpp", 200 "${target_gen_dir}/../services/video_processing_service_manager_proxy.cpp", 201 "${target_gen_dir}/../services/video_processing_service_manager_stub.cpp", 202 "$ALGORITHM_COMMON_DIR/image_opencl_wrapper.cpp", 203 "$ALGORITHM_COMMON_DIR/image_openclsetup.cpp" 204 ] 205 206 deps = [ 207 "$VIDEO_PROCESSING_ENGINE_ROOT_DIR/services:videoprocessingservice_interface", 208 ":aihdr_engine", 209 ":ai_super_resolution", 210 ":extream_vision_engine", 211 ] 212 213 if (has_skia) { 214 defines += [ "SKIA_ENABLE" ] 215 deps += [ "//third_party/skia:skia_ohos" ] 216 include_dirs += [ "$ALGORITHM_EXTENSION_SKIA_DIR/include" ] 217 sources += [ "$ALGORITHM_EXTENSION_SKIA_DIR/skia_impl.cpp" ] 218 } 219 220 external_deps = [ 221 "c_utils:utils", 222 "drivers_interface_display:libdisplay_commontype_proxy_2.1", 223 "graphic_2d:2d_graphics", 224 "graphic_2d:EGL", 225 "graphic_2d:GLESv3", 226 "graphic_surface:surface", 227 "graphic_surface:sync_fence", 228 "hdf_core:libhdf_host", 229 "hdf_core:libhdf_ipc_adapter", 230 "hdf_core:libhdf_utils", 231 "hdf_core:libhdi", 232 "hilog:libhilog", 233 "hitrace:hitrace_meter", 234 "image_framework:image_native", 235 "init:libbegetutil", 236 "ipc:ipc_single", 237 "media_foundation:media_foundation", 238 "safwk:system_ability_fwk", 239 "samgr:samgr_proxy", 240 "skia:skia_canvaskit", 241 "opencl-headers:libcl", 242 "bounds_checking_function:libsec_static", 243 ] 244 245 subsystem_name = "multimedia" 246 part_name = "video_processing_engine" 247} 248 249config("vpe_capi_config") { 250 cflags = [ 251 "-fno-exceptions", 252 "-Wall", 253 "-fno-common", 254 "-fstack-protector-all", 255 "-Wshadow", 256 "-FPIC", 257 "-FS", 258 "-O2", 259 "-D_FORTIFY_SOURCE=2", 260 "-Wformat=2", 261 "-Wdate-time", 262 ] 263 264 cflags_cc = [ 265 "-std=c++17", 266 "-fno-rtti", 267 ] 268} 269 270config("vpe_capi_public_config") { 271 include_dirs = [ 272 "$INTERFACES_CAPI_DIR", 273 "$INTERFACES_INNER_API_DIR", 274 ] 275} 276 277ohos_shared_library("image_processing") { 278 stack_protector_ret = true 279 install_enable = true 280 281 sanitize = { 282 boundary_sanitize = true 283 cfi = true 284 cfi_cross_dso = true 285 integer_overflow = true 286 ubsan = true 287 debug = false 288 } 289 290 configs = [ ":vpe_capi_config" ] 291 public_configs = [ ":vpe_capi_public_config" ] 292 293 cflags = [ 294 "-ffunction-sections", 295 "-fdata-sections", 296 "-DIMAGE_COLORSPACE_FLAG", 297 ] 298 299 include_dirs = [ 300 #Interface 301 "$INTERFACES_CAPI_DIR", 302 "$INTERFACES_INNER_API_DIR", 303 #Common 304 "$DFX_DIR/include", 305 "$ALGORITHM_COMMON_DIR/include", 306 "$SERVICES_DIR/utils/include", 307 #CAPI implementation 308 "$CAPI_IMAGE_DIR/include", 309 "$CAPI_IMAGE_DETAIL_ENHANCER_DIR/include", 310 "$CAPI_COLORSPACE_CONVERTER_DIR/include", 311 "$CAPI_METADATA_GENERATOR_DIR/include", 312 "$DETAIL_ENHANCER_DIR/include", 313 "$VIDEO_PROCESSING_ENGINE_ROOT_DIR/services/include", 314 "${target_gen_dir}/../services/", 315 "$VIDEO_PROCESSING_ENGINE_ROOT_DIR/framework/algorithm/common/include", 316 ] 317 318 sources = [ 319 "$CAPI_IMAGE_DIR/image_environment_native.cpp", 320 "$CAPI_IMAGE_DIR/image_processing.cpp", 321 "$CAPI_IMAGE_DIR/image_processing_factory.cpp", 322 "$CAPI_IMAGE_DIR/image_processing_impl.cpp", 323 "$CAPI_IMAGE_DIR/image_processing_native_base.cpp", 324 "$CAPI_IMAGE_DIR/image_processing_utils.cpp", 325 "$CAPI_IMAGE_DIR/image_processing_capi_capability.cpp", 326 "$VIDEO_PROCESSING_ENGINE_ROOT_DIR/framework/algorithm/common/vpe_utils_common.cpp", 327 "$CAPI_IMAGE_DETAIL_ENHANCER_DIR/detail_enhancer_image_native.cpp", 328 "$CAPI_COLORSPACE_CONVERTER_DIR/colorspace_converter_image_native.cpp", 329 "$CAPI_METADATA_GENERATOR_DIR/metadata_generator_image_native.cpp", 330 ] 331 332 defines = [] 333 334 deps = [ 335 ":videoprocessingengine", 336 "$VIDEO_PROCESSING_ENGINE_ROOT_DIR/services:videoprocessingservice_interface", 337 ] 338 339 external_deps = [ 340 "c_utils:utils", 341 "drivers_interface_display:display_commontype_idl_headers", 342 "graphic_surface:surface", 343 "graphic_2d:2d_graphics", 344 "hilog:libhilog", 345 "hitrace:hitrace_meter", 346 "image_framework:image_native", 347 "drivers_interface_display:libdisplay_commontype_proxy_2.1", 348 "ipc:ipc_single", 349 "image_framework:pixelmap", 350 "media_foundation:media_foundation", 351 "safwk:system_ability_fwk", 352 "samgr:samgr_proxy", 353 ] 354 355 innerapi_tags = [ "ndk" ] 356 output_extension = "so" 357 subsystem_name = "multimedia" 358 part_name = "video_processing_engine" 359} 360 361ohos_shared_library("video_processing") { 362 stack_protector_ret = true 363 install_enable = true 364 365 sanitize = { 366 boundary_sanitize = true 367 cfi = true 368 cfi_cross_dso = true 369 integer_overflow = true 370 ubsan = true 371 debug = false 372 } 373 374 configs = [ ":vpe_capi_config" ] 375 public_configs = [ ":vpe_capi_public_config" ] 376 377 include_dirs = [ 378 #Interface 379 "$INTERFACES_CAPI_DIR", 380 "$INTERFACES_INNER_API_DIR", 381 #Common 382 "$DFX_DIR/include", 383 "$ALGORITHM_COMMON_DIR/include", 384 "$SERVICES_DIR/utils/include", 385 #CAPI implementation 386 "$CAPI_VIDEO_DIR/include", 387 "$CAPI_VIDEO_DIR/aihdr_enhancer/include", 388 "$CAPI_VIDEO_DETAIL_ENHANCER_DIR/include", 389 "$CAPI_VIDEO_COLORSPACE_CONVERTER_DIR/include/", 390 "$CAPI_VIDEO_METADATA_GENERATOR_DIR/include/", 391 "$VIDEO_PROCESSING_ENGINE_ROOT_DIR/services/include", 392 "${target_gen_dir}/../services/", 393 ] 394 395 sources = [ 396 #CAPI common 397 "$CAPI_VIDEO_DIR/video_environment_native.cpp", 398 "$CAPI_VIDEO_DIR/video_processing_callback_impl.cpp", 399 "$CAPI_VIDEO_DIR/video_processing_callback_native.cpp", 400 "$CAPI_VIDEO_DIR/video_processing.cpp", 401 "$CAPI_VIDEO_DIR/video_processing_capi_capability.cpp", 402 "$CAPI_VIDEO_DIR/video_processing_factory.cpp", 403 "$CAPI_VIDEO_DIR/video_processing_impl.cpp", 404 "$CAPI_VIDEO_DIR/video_processing_native_base.cpp", 405 "$CAPI_VIDEO_DIR/video_processing_utils.cpp", 406 #CAPI - features 407 #CAPI - detail enhancement 408 "$CAPI_VIDEO_DETAIL_ENHANCER_DIR/detail_enhancer_video_native.cpp", 409 "$CAPI_VIDEO_COLORSPACE_CONVERTER_DIR/colorSpace_converter_video_native.cpp", 410 "$CAPI_VIDEO_METADATA_GENERATOR_DIR/metadata_generator_video_native.cpp", 411 "$CAPI_VIDEO_DIR/aihdr_enhancer/aihdr_enhancer_video_native.cpp" 412 ] 413 414 defines = [] 415 416 deps = [ 417 ":videoprocessingengine", 418 "$VIDEO_PROCESSING_ENGINE_ROOT_DIR/services:videoprocessingservice_interface", 419 ] 420 421 external_deps = [ 422 "c_utils:utils", 423 "graphic_surface:surface", 424 "hilog:libhilog", 425 "hitrace:hitrace_meter", 426 "ipc:ipc_single", 427 "media_foundation:media_foundation", 428 "drivers_interface_display:libdisplay_commontype_proxy_2.1", 429 "graphic_2d:libgraphic_utils", 430 "graphic_2d:librender_service_client", 431 "ipc:ipc_single", 432 "safwk:system_ability_fwk", 433 "samgr:samgr_proxy", 434 ] 435 436 innerapi_tags = [ "ndk" ] 437 output_extension = "so" 438 subsystem_name = "multimedia" 439 part_name = "video_processing_engine" 440} 441 442ohos_shared_library("detailEnhancer") { 443 sanitize = { 444 cfi = true 445 cfi_cross_dso = true 446 cfi_vcall_icall_only = true 447 debug = false 448 } 449 450 defines = [ "IMAGE_COLORSPACE_FLAG" ] 451 452 include_dirs = [ 453 "$DFX_DIR/include", 454 "//foundation/multimedia/video_processing_engine/interfaces/kits/js", 455 "//foundation/multimedia/video_processing_engine/interfaces/inner_api", 456 "//foundation/multimedia/video_processing_engine/framework/capi/image_processing/include/", 457 ] 458 sources = [ 459 "//foundation/multimedia/video_processing_engine/framework/capi/image_processing/detail_enhance_napi.cpp", 460 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/common/src/memory_manager.cpp", 461 ] 462 463 deps = [ 464 ":videoprocessingengine", 465 ] 466 467 cflags = VIDEO_PROCESSING_ENGINE_CFLAGS 468 external_deps = [ 469 "c_utils:utils", 470 "graphic_surface:surface", 471 "hilog:libhilog", 472 "hitrace:hitrace_meter", 473 "ipc:ipc_napi", 474 "media_foundation:native_media_core", 475 "napi:ace_napi", 476 "image_framework:image_utils", 477 "image_framework:image_native", 478 "image_framework:pixelmap", 479 "image_framework:image", 480 "drivers_interface_display:libdisplay_commontype_proxy_2.1", 481 ] 482 483 output_name = "libdetailenhancer_napi" 484 subsystem_name = "multimedia" 485 relative_install_dir = "module/multimedia" 486 part_name = "video_processing_engine" 487} 488 489ohos_shared_library("videoprocessingenginenapi") { 490 sanitize = { 491 cfi = true 492 cfi_cross_dso = true 493 cfi_vcall_icall_only = true 494 debug = false 495 } 496 497 defines = [ "IMAGE_COLORSPACE_FLAG" ] 498 499 include_dirs = [ 500 "$DFX_DIR/include", 501 "$INTERFACES_DIR/kits/js", 502 "$INTERFACES_INNER_API_DIR", 503 "$CAPI_DIR/image_processing/include/", 504 "$ALGORITHM_COMMON_DIR/include/", 505 "$INTERFACES_CAPI_DIR", 506 ] 507 sources = [ 508 "$CAPI_DIR/image_processing/detail_enhance_napi_formal.cpp", 509 "$INTERFACES_DIR/kits/js/native_module_ohos_imageprocessing.cpp", 510 ] 511 512 deps = [ 513 ":videoprocessingengine", 514 ] 515 516 cflags = VIDEO_PROCESSING_ENGINE_CFLAGS 517 external_deps = [ 518 "c_utils:utils", 519 "drivers_interface_display:libdisplay_commontype_proxy_2.1", 520 "graphic_surface:surface", 521 "hilog:libhilog", 522 "hitrace:hitrace_meter", 523 "image_framework:image_utils", 524 "image_framework:image_native", 525 "image_framework:pixelmap", 526 "image_framework:image", 527 "ipc:ipc_napi", 528 "media_foundation:native_media_core", 529 "media_foundation:media_foundation", 530 "napi:ace_napi", 531 ] 532 533 output_name = "libvideoprocessingengine_napi" 534 subsystem_name = "multimedia" 535 relative_install_dir = "module/multimedia" 536 part_name = "video_processing_engine" 537} 538