1fa7767c5Sopenharmony_ci# Copyright (c) 2024 Huawei Device Co., Ltd.
2fa7767c5Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3fa7767c5Sopenharmony_ci# you may not use this file except in compliance with the License.
4fa7767c5Sopenharmony_ci# You may obtain a copy of the License at
5fa7767c5Sopenharmony_ci#
6fa7767c5Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
7fa7767c5Sopenharmony_ci#
8fa7767c5Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9fa7767c5Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10fa7767c5Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11fa7767c5Sopenharmony_ci# See the License for the specific language governing permissions and
12fa7767c5Sopenharmony_ci# limitations under the License.
13fa7767c5Sopenharmony_ci
14fa7767c5Sopenharmony_ciimport("//foundation/multimedia/media_foundation/config.gni")
15fa7767c5Sopenharmony_ciimport("$histreamer_root_dir/video_processing_engine/config.gni")
16fa7767c5Sopenharmony_ci
17fa7767c5Sopenharmony_ciif (hst_is_standard_sys) {
18fa7767c5Sopenharmony_ci  config("vpe_capi_config") {
19fa7767c5Sopenharmony_ci    cflags = [
20fa7767c5Sopenharmony_ci      "-fno-exceptions",
21fa7767c5Sopenharmony_ci      "-Wall",
22fa7767c5Sopenharmony_ci      "-fno-common",
23fa7767c5Sopenharmony_ci      "-fstack-protector-all",
24fa7767c5Sopenharmony_ci      "-Wshadow",
25fa7767c5Sopenharmony_ci      "-FPIC",
26fa7767c5Sopenharmony_ci      "-FS",
27fa7767c5Sopenharmony_ci      "-O2",
28fa7767c5Sopenharmony_ci      "-D_FORTIFY_SOURCE=2",
29fa7767c5Sopenharmony_ci      "-Wformat=2",
30fa7767c5Sopenharmony_ci      "-Wdate-time",
31fa7767c5Sopenharmony_ci    ]
32fa7767c5Sopenharmony_ci
33fa7767c5Sopenharmony_ci    cflags_cc = [
34fa7767c5Sopenharmony_ci      "-std=c++17",
35fa7767c5Sopenharmony_ci      "-fno-rtti",
36fa7767c5Sopenharmony_ci    ]
37fa7767c5Sopenharmony_ci  }
38fa7767c5Sopenharmony_ci
39fa7767c5Sopenharmony_ci  config("vpe_capi_public_config") {
40fa7767c5Sopenharmony_ci    include_dirs = [
41fa7767c5Sopenharmony_ci      "$vpe_interface_capi_dir",
42fa7767c5Sopenharmony_ci      "$vpe_interface_inner_dir",
43fa7767c5Sopenharmony_ci    ]
44fa7767c5Sopenharmony_ci  }
45fa7767c5Sopenharmony_ci
46fa7767c5Sopenharmony_ci  ohos_shared_library("image_processing") {
47fa7767c5Sopenharmony_ci    stack_protector_ret = true
48fa7767c5Sopenharmony_ci    install_enable = true
49fa7767c5Sopenharmony_ci
50fa7767c5Sopenharmony_ci    sanitize = {
51fa7767c5Sopenharmony_ci      boundary_sanitize = true
52fa7767c5Sopenharmony_ci      cfi = true
53fa7767c5Sopenharmony_ci      cfi_cross_dso = true
54fa7767c5Sopenharmony_ci      integer_overflow = true
55fa7767c5Sopenharmony_ci      ubsan = true
56fa7767c5Sopenharmony_ci      debug = false
57fa7767c5Sopenharmony_ci    }
58fa7767c5Sopenharmony_ci
59fa7767c5Sopenharmony_ci    configs = [ ":vpe_capi_config" ]
60fa7767c5Sopenharmony_ci    public_configs = [ ":vpe_capi_public_config" ]
61fa7767c5Sopenharmony_ci
62fa7767c5Sopenharmony_ci    include_dirs = [
63fa7767c5Sopenharmony_ci      "$vpe_interface_capi_dir",
64fa7767c5Sopenharmony_ci      "$vpe_interface_inner_dir",
65fa7767c5Sopenharmony_ci      "$vpe_dfx_dir/include",
66fa7767c5Sopenharmony_ci      "$vpe_capi_image_dir/include",
67fa7767c5Sopenharmony_ci      "$vpe_capi_image_dir/detail_enhancer/include",
68fa7767c5Sopenharmony_ci      "$vpe_algorithm_dir/include",
69fa7767c5Sopenharmony_ci      "$vpe_algorithm_dir/detail_enhancer/include",
70fa7767c5Sopenharmony_ci    ]
71fa7767c5Sopenharmony_ci
72fa7767c5Sopenharmony_ci    sources = [
73fa7767c5Sopenharmony_ci      "$vpe_algorithm_dir/detail_enhancer/detail_enhancer.cpp",
74fa7767c5Sopenharmony_ci      "$vpe_capi_image_dir/detail_enhancer/detail_enhancer_image_native.cpp",
75fa7767c5Sopenharmony_ci      "$vpe_capi_image_dir/image_processing.cpp",
76fa7767c5Sopenharmony_ci      "$vpe_capi_image_dir/image_processing_capability.cpp",
77fa7767c5Sopenharmony_ci      "$vpe_capi_image_dir/image_processing_impl.cpp",
78fa7767c5Sopenharmony_ci      "$vpe_capi_image_dir/image_processing_loader.cpp",
79fa7767c5Sopenharmony_ci      "$vpe_capi_image_dir/image_processing_native.cpp",
80fa7767c5Sopenharmony_ci    ]
81fa7767c5Sopenharmony_ci
82fa7767c5Sopenharmony_ci    defines = []
83fa7767c5Sopenharmony_ci
84fa7767c5Sopenharmony_ci    deps = [ "$vpe_base_root_dir/src:media_foundation" ]
85fa7767c5Sopenharmony_ci
86fa7767c5Sopenharmony_ci    external_deps = [
87fa7767c5Sopenharmony_ci      "c_utils:utils",
88fa7767c5Sopenharmony_ci      "graphic_2d:2d_graphics",
89fa7767c5Sopenharmony_ci      "hilog:libhilog",
90fa7767c5Sopenharmony_ci      "hitrace:hitrace_meter",
91fa7767c5Sopenharmony_ci      "image_framework:image_native",
92fa7767c5Sopenharmony_ci      "image_framework:pixelmap",
93fa7767c5Sopenharmony_ci      "ipc:ipc_single",
94fa7767c5Sopenharmony_ci    ]
95fa7767c5Sopenharmony_ci
96fa7767c5Sopenharmony_ci    if (has_skia) {
97fa7767c5Sopenharmony_ci      defines += [ "SKIA_ENABLE" ]
98fa7767c5Sopenharmony_ci      external_deps += [ "skia:skia_canvaskit" ]
99fa7767c5Sopenharmony_ci      include_dirs += [ "$vpe_algorithm_dir/detail_enhancer/skia/include" ]
100fa7767c5Sopenharmony_ci      sources += [ "$vpe_algorithm_dir/detail_enhancer/skia/skia_impl.cpp" ]
101fa7767c5Sopenharmony_ci    }
102fa7767c5Sopenharmony_ci
103fa7767c5Sopenharmony_ci    innerapi_tags = [ "ndk" ]
104fa7767c5Sopenharmony_ci    output_extension = "so"
105fa7767c5Sopenharmony_ci    subsystem_name = "multimedia"
106fa7767c5Sopenharmony_ci    part_name = "media_foundation"
107fa7767c5Sopenharmony_ci  }
108fa7767c5Sopenharmony_ci
109fa7767c5Sopenharmony_ci  ohos_shared_library("video_processing") {
110fa7767c5Sopenharmony_ci    stack_protector_ret = true
111fa7767c5Sopenharmony_ci    install_enable = true
112fa7767c5Sopenharmony_ci
113fa7767c5Sopenharmony_ci    sanitize = {
114fa7767c5Sopenharmony_ci      boundary_sanitize = true
115fa7767c5Sopenharmony_ci      cfi = true
116fa7767c5Sopenharmony_ci      cfi_cross_dso = true
117fa7767c5Sopenharmony_ci      integer_overflow = true
118fa7767c5Sopenharmony_ci      ubsan = true
119fa7767c5Sopenharmony_ci      debug = false
120fa7767c5Sopenharmony_ci    }
121fa7767c5Sopenharmony_ci
122fa7767c5Sopenharmony_ci    configs = [ ":vpe_capi_config" ]
123fa7767c5Sopenharmony_ci    public_configs = [ ":vpe_capi_public_config" ]
124fa7767c5Sopenharmony_ci
125fa7767c5Sopenharmony_ci    include_dirs = [
126fa7767c5Sopenharmony_ci      "$vpe_interface_capi_dir",
127fa7767c5Sopenharmony_ci      "$vpe_interface_inner_dir",
128fa7767c5Sopenharmony_ci      "$vpe_dfx_dir/include",
129fa7767c5Sopenharmony_ci      "$vpe_capi_video_dir/include",
130fa7767c5Sopenharmony_ci      "$vpe_capi_video_dir/detail_enhancer/include",
131fa7767c5Sopenharmony_ci      "$vpe_algorithm_dir/include",
132fa7767c5Sopenharmony_ci      "$vpe_algorithm_dir/detail_enhancer/include",
133fa7767c5Sopenharmony_ci    ]
134fa7767c5Sopenharmony_ci
135fa7767c5Sopenharmony_ci    sources = [
136fa7767c5Sopenharmony_ci      "$vpe_algorithm_dir/detail_enhancer/detail_enhancer.cpp",
137fa7767c5Sopenharmony_ci      "$vpe_capi_video_dir/detail_enhancer/detail_enhancer_video_native.cpp",
138fa7767c5Sopenharmony_ci      "$vpe_capi_video_dir/video_processing.cpp",
139fa7767c5Sopenharmony_ci      "$vpe_capi_video_dir/video_processing_callback_impl.cpp",
140fa7767c5Sopenharmony_ci      "$vpe_capi_video_dir/video_processing_callback_native.cpp",
141fa7767c5Sopenharmony_ci      "$vpe_capi_video_dir/video_processing_capability.cpp",
142fa7767c5Sopenharmony_ci      "$vpe_capi_video_dir/video_processing_impl.cpp",
143fa7767c5Sopenharmony_ci      "$vpe_capi_video_dir/video_processing_loader.cpp",
144fa7767c5Sopenharmony_ci      "$vpe_capi_video_dir/video_processing_native.cpp",
145fa7767c5Sopenharmony_ci    ]
146fa7767c5Sopenharmony_ci
147fa7767c5Sopenharmony_ci    defines = []
148fa7767c5Sopenharmony_ci
149fa7767c5Sopenharmony_ci    deps = [ "$vpe_base_root_dir/src:media_foundation" ]
150fa7767c5Sopenharmony_ci
151fa7767c5Sopenharmony_ci    external_deps = [
152fa7767c5Sopenharmony_ci      "c_utils:utils",
153fa7767c5Sopenharmony_ci      "graphic_surface:surface",
154fa7767c5Sopenharmony_ci      "hilog:libhilog",
155fa7767c5Sopenharmony_ci      "hitrace:hitrace_meter",
156fa7767c5Sopenharmony_ci      "ipc:ipc_single",
157fa7767c5Sopenharmony_ci    ]
158fa7767c5Sopenharmony_ci
159fa7767c5Sopenharmony_ci    if (has_skia) {
160fa7767c5Sopenharmony_ci      defines += [ "SKIA_ENABLE" ]
161fa7767c5Sopenharmony_ci      external_deps += [ "skia:skia_canvaskit" ]
162fa7767c5Sopenharmony_ci      include_dirs += [ "$vpe_algorithm_dir/detail_enhancer/skia/include" ]
163fa7767c5Sopenharmony_ci      sources += [ "$vpe_algorithm_dir/detail_enhancer/skia/skia_impl.cpp" ]
164fa7767c5Sopenharmony_ci    }
165fa7767c5Sopenharmony_ci
166fa7767c5Sopenharmony_ci    innerapi_tags = [ "ndk" ]
167fa7767c5Sopenharmony_ci    output_extension = "so"
168fa7767c5Sopenharmony_ci    subsystem_name = "multimedia"
169fa7767c5Sopenharmony_ci    part_name = "media_foundation"
170fa7767c5Sopenharmony_ci  }
171fa7767c5Sopenharmony_ci} else {
172fa7767c5Sopenharmony_ci  group("image_processing") {
173fa7767c5Sopenharmony_ci  }
174fa7767c5Sopenharmony_ci  group("video_processing") {
175fa7767c5Sopenharmony_ci  }
176fa7767c5Sopenharmony_ci}
177