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