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