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/media_foundation/config.gni")
16
17if (hst_is_standard_sys) {
18  config("media_foundation_public_config") {
19    include_dirs = [
20      "$histreamer_root_dir/interface/kits/c",
21      "$histreamer_root_dir/interface/inner_api",
22      "$histreamer_root_dir/interface/inner_api/buffer",
23      "$histreamer_root_dir/interface/inner_api/common",
24      "$histreamer_root_dir/interface/inner_api/meta",
25    ]
26  }
27
28  config("media_foundation_config") {
29    defines = [
30      "HST_ANY_WITH_NO_RTTI",
31      "MEDIA_OHOS",
32    ]
33
34    if (media_foundation_enable_ffrt) {
35      defines += [ "MEDIA_FOUNDATION_FFRT" ]
36    }
37
38    include_dirs = [
39      "$histreamer_root_dir/osal/base",
40      "$histreamer_root_dir/plugin",
41      "$histreamer_root_dir/src/buffer/avbuffer/include",
42      "$histreamer_root_dir/src/buffer/avbuffer_queue/include",
43      "$histreamer_root_dir/src/capi/common",
44    ]
45
46    cflags = [
47      "-O2",
48      "-fPIC",
49      "-Wall",
50      "-fexceptions",
51      "-fno-rtti",
52      "-Wno-unused-but-set-variable",
53      "-Wno-format",
54    ]
55    cflags_cc = cflags
56  }
57
58  ohos_shared_library("media_foundation") {
59    branch_protector_ret = "pac_ret"
60    install_enable = true
61
62    public_configs = [ ":media_foundation_public_config" ]
63
64    configs = [ ":media_foundation_config" ]
65
66    defines = [
67      "HST_ANY_WITH_NO_RTTI",
68      "MEDIA_OHOS",
69      "DYNAMIC_PLUGINS",
70    ]
71
72    sanitize = {
73      ubsan = true
74      boundary_sanitize = true
75      cfi = true
76      cfi_cross_dso = true
77      debug = false
78      integer_overflow = true
79    }
80
81    sources = [
82      "$histreamer_root_dir/src/buffer/avbuffer/av_hardware_memory.cpp",
83      "$histreamer_root_dir/src/buffer/avbuffer/av_shared_memory_ext.cpp",
84      "$histreamer_root_dir/src/buffer/avbuffer/av_surface_memory.cpp",
85      "$histreamer_root_dir/src/buffer/avbuffer/av_virtual_memory.cpp",
86      "$histreamer_root_dir/src/buffer/avbuffer/avbuffer.cpp",
87      "$histreamer_root_dir/src/buffer/avbuffer/avbuffer_common.cpp",
88      "$histreamer_root_dir/src/buffer/avbuffer/avbuffer_utils.cpp",
89      "$histreamer_root_dir/src/buffer/avbuffer/avmemory.cpp",
90    ]
91
92    sources += [
93      "$histreamer_root_dir/src/buffer/avbuffer_queue/avbuffer_queue.cpp",
94      "$histreamer_root_dir/src/buffer/avbuffer_queue/avbuffer_queue_consumer.cpp",
95      "$histreamer_root_dir/src/buffer/avbuffer_queue/avbuffer_queue_producer.cpp",
96      "$histreamer_root_dir/src/buffer/avbuffer_queue/avbuffer_queue_producer_proxy.cpp",
97      "$histreamer_root_dir/src/buffer/avbuffer_queue/avbuffer_queue_producer_stub.cpp",
98    ]
99
100    sources += [
101      "$histreamer_root_dir/src/buffer/avsharedmemory/avsharedmemorybase.cpp",
102    ]
103
104    sources += [ "$histreamer_root_dir/src/common/avsharedmemorypool.cpp" ]
105
106    sources += [
107      "$histreamer_root_dir/src/meta/any.cpp",
108      "$histreamer_root_dir/src/meta/format.cpp",
109      "$histreamer_root_dir/src/meta/media_source.cpp",
110      "$histreamer_root_dir/src/meta/meta.cpp",
111    ]
112
113    sources += [ "$histreamer_root_dir/src/capi/common/native_mfmagic.cpp" ]
114
115    sources += [
116      "$histreamer_root_dir/src/osal/filesystem/file_system.cpp",
117      "$histreamer_root_dir/src/osal/task/task.cpp",
118      "$histreamer_root_dir/src/osal/utils/dump_buffer.cpp",
119      "$histreamer_root_dir/src/osal/utils/steady_clock.cpp",
120      "$histreamer_root_dir/src/osal/utils/util.cpp",
121    ]
122
123    if (media_foundation_enable_ffrt) {
124      sources += [
125        "$histreamer_root_dir/src/osal/task/ffrt/condition_variable.cpp",
126        "$histreamer_root_dir/src/osal/task/ffrt/jobutils.cpp",
127        "$histreamer_root_dir/src/osal/task/ffrt/task.cpp",
128      ]
129    } else {
130      sources += [
131        "$histreamer_root_dir/src/osal/task/pthread/autolock.cpp",
132        "$histreamer_root_dir/src/osal/task/pthread/condition_variable.cpp",
133        "$histreamer_root_dir/src/osal/task/pthread/jobutils.cpp",
134        "$histreamer_root_dir/src/osal/task/pthread/mutex.cpp",
135        "$histreamer_root_dir/src/osal/task/pthread/pipeline_threadpool.cpp",
136        "$histreamer_root_dir/src/osal/task/pthread/taskInner.cpp",
137        "$histreamer_root_dir/src/osal/task/pthread/thread.cpp",
138      ]
139    }
140
141    sources += [
142      "$histreamer_root_dir/src/filter/filter.cpp",
143      "$histreamer_root_dir/src/filter/filter_factory.cpp",
144      "$histreamer_root_dir/src/pipeline/pipeline.cpp",
145    ]
146
147    sources += [
148      "$histreamer_root_dir/src/plugin/cached_plugin_package.cpp",
149      "$histreamer_root_dir/src/plugin/plugin_buffer.cpp",
150      "$histreamer_root_dir/src/plugin/plugin_list.cpp",
151      "$histreamer_root_dir/src/plugin/plugin_manager_v2.cpp",
152      "$histreamer_root_dir/src/plugin/plugin_package.cpp",
153    ]
154
155    public_deps = []
156
157    external_deps = [
158      "c_utils:utils",
159      "ffmpeg:libohosffmpeg",
160      "graphic_2d:libgraphic_utils",
161      "graphic_surface:sync_fence",
162      "hilog:libhilog",
163      "hitrace:hitrace_meter",
164      "init:libbegetutil",
165      "ipc:ipc_core",
166    ]
167
168    public_external_deps = [
169      "bounds_checking_function:libsec_static",
170      "graphic_surface:surface",
171    ]
172
173    if (media_foundation_enable_ffrt) {
174      external_deps += [ "ffrt:libffrt" ]
175    }
176
177    innerapi_tags = [
178      "platformsdk",
179      "sasdk",
180    ]
181
182    if (target_cpu == "arm64" || is_emulator) {
183      hst_plugin_path = "\"/system/lib64/media/media_plugins\""
184    } else {
185      hst_plugin_path = "\"/system/lib/media/media_plugins\""
186    }
187
188    defines += [
189      "HST_PLUGIN_PATH=${hst_plugin_path}",
190      "HST_PLUGIN_FILE_TAIL=\".z.so\"",
191    ]
192
193    subsystem_name = "multimedia"
194    part_name = "media_foundation"
195  }
196} else {
197  group("media_foundation") {
198  }
199}
200