• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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