• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2022 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("//foundation/multimedia/media_foundation/config.gni")
15
16declare_args() {
17  if (hst_is_mini_sys) {
18    plugin_dynamic_register = false
19  } else {
20    plugin_dynamic_register = true
21  }
22}
23
24config("hst_plugin_intf_config") {
25  include_dirs = [
26    "//foundation/multimedia/media_foundation/engine/include",
27    "//foundation/multimedia/media_foundation/engine/scene/standard",
28  ]
29  if (hst_is_lite_sys) {
30    include_dirs +=
31        [ "//foundation/multimedia/media_utils_lite/interfaces/kits" ]
32  } else {
33    include_dirs +=
34        [ "//foundation/multimedia/media_foundation/engine/scene/standard" ]
35  }
36}
37
38if (hst_is_lite_sys) {
39  source_set("histreamer_plugin_intf") {
40    sources = [
41      "common/media_sink.cpp",
42      "common/media_source.cpp",
43      "common/plugin_buffer.cpp",
44    ]
45    public_configs = [
46      ":hst_plugin_intf_config",
47      "//foundation/multimedia/media_foundation:histreamer_presets",
48    ]
49    if (hst_is_mini_sys) {
50      public_deps = [ "//third_party/bounds_checking_function:libsec_static" ]
51    } else {
52      public_external_deps = [ "bounds_checking_function:libsec_shared" ]
53    }
54  }
55} else {
56  ohos_source_set("histreamer_plugin_intf") {
57    subsystem_name = "multimedia"
58    part_name = "media_foundation"
59    sources = [
60      "common/media_sink.cpp",
61      "common/media_source.cpp",
62      "common/plugin_buffer.cpp",
63    ]
64    public_configs = [
65      ":hst_plugin_intf_config",
66      "//foundation/multimedia/media_foundation:histreamer_presets",
67    ]
68    public_external_deps = [ "player_framework:media_client" ]
69    external_deps = [
70      "bounds_checking_function:libsec_shared",
71      "hitrace:hitrace_meter",
72    ]
73    if (media_foundation_enable_video) {
74      public_external_deps += [
75        "c_utils:utilsbase",
76        "drivers_interface_display:libdisplay_composer_hdi_impl_1.2",
77        "drivers_interface_display:libdisplay_composer_proxy_1.0",
78        "drivers_interface_display:libdisplay_composer_proxy_1.1",
79        "drivers_interface_display:libdisplay_composer_proxy_1.2",
80        "graphic_surface:surface",
81        "graphic_surface:sync_fence",
82      ]
83      sources += [
84        "common/share_allocator.cpp",
85        "common/share_memory.cpp",
86        "common/surface_allocator.cpp",
87        "common/surface_memory.cpp",
88      ]
89      external_deps += [
90        "c_utils:utils",
91        "graphic_surface:sync_fence",
92        "hilog:libhilog",
93        "ipc:ipc_single",
94      ]
95    }
96  }
97}
98
99ohos_source_set("plugin_base") {
100  subsystem_name = "multimedia"
101  part_name = "media_foundation"
102  sources = []
103  public_deps = [
104    ":histreamer_plugin_intf",
105    "//foundation/multimedia/media_foundation/engine/foundation:histreamer_foundation",
106  ]
107  public_configs =
108      [ "//foundation/multimedia/media_foundation:histreamer_presets" ]
109  if (hst_is_standard_sys) {
110    external_deps = [
111      "hitrace:hitrace_meter",
112    ]
113  }
114}
115
116config("histreamer_plugin_base_external_config") {
117  include_dirs = [
118    "//foundation/multimedia/media_foundation/engine",
119    "//foundation/multimedia/media_foundation/engine/include",
120    "//foundation/multimedia/media_foundation/engine/include/plugin/common",
121    "//foundation/multimedia/media_foundation/engine/include/plugin/core",
122    "//foundation/multimedia/media_foundation/engine/scene/standard",
123  ]
124}
125
126if (hst_is_lite_sys) {
127  import("//build/lite/config/component/lite_component.gni")
128  lite_library("histreamer_plugin_base") {
129    if (hst_is_mini_sys) {
130      target_type = "static_library"
131    } else {
132      target_type = "shared_library"
133    }
134    sources = []
135    deps = [ ":plugin_base" ]
136  }
137} else {
138  import("//build/ohos.gni")
139  ohos_shared_library("histreamer_plugin_base") {
140    subsystem_name = "multimedia"
141    part_name = "media_foundation"
142    public_configs = [ ":histreamer_plugin_base_external_config" ]
143    deps = [ ":plugin_base" ]
144    external_deps = [ "hilog:libhilog" ]
145    sanitize = {
146      cfi = true
147      cfi_cross_dso = true
148      debug = false
149      integer_overflow = true
150    }
151  }
152}
153
154ohos_source_set("ffmpeg_convert") {
155  subsystem_name = "multimedia"
156  part_name = "media_foundation"
157  include_dirs = [ "//foundation/multimedia/media_foundation/engine/include" ]
158  sources = [ "convert/ffmpeg_convert.cpp" ]
159  public_configs =
160      [ "//foundation/multimedia/media_foundation:histreamer_presets" ]
161  public_deps = [
162    "//foundation/multimedia/media_foundation/engine/foundation:histreamer_foundation",
163    "//foundation/multimedia/media_foundation/engine/pipeline:histreamer_base",
164  ]
165
166  if (hst_is_standard_sys) {
167    public_external_deps = [ "ffmpeg:libohosffmpeg" ]
168    external_deps = [
169      "hilog:libhilog",
170      "hitrace:hitrace_meter",
171    ]
172  } else {
173    include_dirs += [ "//third_party/ffmpeg" ]
174  }
175}
176
177if (hst_is_lite_sys) {
178  import("//build/lite/config/component/lite_component.gni")
179  lite_library("histreamer_ffmpeg_convert") {
180    if (hst_is_mini_sys) {
181      target_type = "static_library"
182    } else {
183      target_type = "shared_library"
184    }
185    sources = []
186    deps = [ ":ffmpeg_convert" ]
187  }
188} else {
189  import("//build/ohos.gni")
190  ohos_shared_library("histreamer_ffmpeg_convert") {
191    subsystem_name = "multimedia"
192    part_name = "media_foundation"
193    include_dirs = [ "//foundation/multimedia/media_foundation/engine/include" ]
194    deps = [ ":ffmpeg_convert" ]
195    external_deps = [
196      "ffmpeg:libohosffmpeg",
197      "hilog:libhilog",
198    ]
199    sanitize = {
200      cfi = true
201      cfi_cross_dso = true
202      debug = false
203      integer_overflow = true
204    }
205  }
206}
207
208ohos_source_set("histreamer_plugin_core") {
209  subsystem_name = "multimedia"
210  part_name = "media_foundation"
211  include_dirs = [ "//foundation/multimedia/media_foundation/engine/include" ]
212  sources = [
213    "core/audio_sink.cpp",
214    "core/base.cpp",
215    "core/codec.cpp",
216    "core/demuxer.cpp",
217    "core/muxer.cpp",
218    "core/output_sink.cpp",
219    "core/plugin_core_utils.cpp",
220    "core/plugin_manager.cpp",
221    "core/plugin_register.cpp",
222    "core/plugin_wrapper.cpp",
223    "core/source.cpp",
224    "core/video_sink.cpp",
225  ]
226  defines = []
227  if (plugin_dynamic_register) {
228    sources += [ "core/plugin_loader.cpp" ]
229    defines += [ "DYNAMIC_PLUGINS" ]
230  }
231  public_configs =
232      [ "//foundation/multimedia/media_foundation:histreamer_presets" ]
233  public_deps = [
234    ":histreamer_plugin_base",
235    "plugins:gen_plugin_static_header",
236    "//foundation/multimedia/media_foundation/engine/foundation:histreamer_foundation",
237  ]
238  if (hst_is_lite_sys) {
239    defines += [
240      "HST_PLUGIN_PATH=\"/usr/lib\"",
241      "HST_PLUGIN_FILE_TAIL=\".so\"",
242    ]
243    include_dirs += [
244      "//foundation/multimedia/media_utils_lite/interfaces/kits",
245      "//drivers/peripheral/display/interfaces/include",
246    ]
247    if (hst_is_mini_sys) {
248      public_deps += [ "//third_party/bounds_checking_function:libsec_static" ]
249    } else {
250      public_external_deps = [ "bounds_checking_function:libsec_shared" ]
251    }
252  } else {
253    if (target_cpu == "arm64" || is_emulator) {
254      hst_plugin_path = "\"/system/lib64/media/histreamer_plugins\""
255    } else {
256      hst_plugin_path = "\"/system/lib/media/histreamer_plugins\""
257    }
258    defines += [
259      "HST_PLUGIN_PATH=${hst_plugin_path}",
260      "HST_PLUGIN_FILE_TAIL=\".z.so\"",
261    ]
262    external_deps = [
263      "bounds_checking_function:libsec_shared",
264      "c_utils:utilsbase",
265      "graphic_surface:surface",
266      "hilog:libhilog",
267      "hitrace:hitrace_meter",
268      "ipc:ipc_single",
269      "player_framework:media_client",
270    ]
271  }
272}
273