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