1fa7767c5Sopenharmony_ci# Copyright (c) 2021-2022 Huawei Device Co., Ltd. 2fa7767c5Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 3fa7767c5Sopenharmony_ci# you may not use this file except in compliance with the License. 4fa7767c5Sopenharmony_ci# You may obtain a copy of the License at 5fa7767c5Sopenharmony_ci# 6fa7767c5Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 7fa7767c5Sopenharmony_ci# 8fa7767c5Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 9fa7767c5Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 10fa7767c5Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11fa7767c5Sopenharmony_ci# See the License for the specific language governing permissions and 12fa7767c5Sopenharmony_ci# limitations under the License. 13fa7767c5Sopenharmony_ci# 14fa7767c5Sopenharmony_ciimport("//foundation/multimedia/media_foundation/config.gni") 15fa7767c5Sopenharmony_ci 16fa7767c5Sopenharmony_cideclare_args() { 17fa7767c5Sopenharmony_ci if (hst_is_mini_sys) { 18fa7767c5Sopenharmony_ci plugin_dynamic_register = false 19fa7767c5Sopenharmony_ci } else { 20fa7767c5Sopenharmony_ci plugin_dynamic_register = true 21fa7767c5Sopenharmony_ci } 22fa7767c5Sopenharmony_ci} 23fa7767c5Sopenharmony_ci 24fa7767c5Sopenharmony_ciconfig("hst_plugin_intf_config") { 25fa7767c5Sopenharmony_ci include_dirs = [ 26fa7767c5Sopenharmony_ci "//foundation/multimedia/media_foundation/engine/include", 27fa7767c5Sopenharmony_ci "//foundation/multimedia/media_foundation/engine/scene/standard", 28fa7767c5Sopenharmony_ci ] 29fa7767c5Sopenharmony_ci if (hst_is_lite_sys) { 30fa7767c5Sopenharmony_ci include_dirs += 31fa7767c5Sopenharmony_ci [ "//foundation/multimedia/media_utils_lite/interfaces/kits" ] 32fa7767c5Sopenharmony_ci } else { 33fa7767c5Sopenharmony_ci include_dirs += 34fa7767c5Sopenharmony_ci [ "//foundation/multimedia/media_foundation/engine/scene/standard" ] 35fa7767c5Sopenharmony_ci } 36fa7767c5Sopenharmony_ci} 37fa7767c5Sopenharmony_ci 38fa7767c5Sopenharmony_ciif (hst_is_lite_sys) { 39fa7767c5Sopenharmony_ci source_set("histreamer_plugin_intf") { 40fa7767c5Sopenharmony_ci sources = [ 41fa7767c5Sopenharmony_ci "common/media_sink.cpp", 42fa7767c5Sopenharmony_ci "common/media_source.cpp", 43fa7767c5Sopenharmony_ci "common/plugin_buffer.cpp", 44fa7767c5Sopenharmony_ci ] 45fa7767c5Sopenharmony_ci public_configs = [ 46fa7767c5Sopenharmony_ci ":hst_plugin_intf_config", 47fa7767c5Sopenharmony_ci "//foundation/multimedia/media_foundation:histreamer_presets", 48fa7767c5Sopenharmony_ci ] 49fa7767c5Sopenharmony_ci if (hst_is_mini_sys) { 50fa7767c5Sopenharmony_ci public_deps = [ "//third_party/bounds_checking_function:libsec_static" ] 51fa7767c5Sopenharmony_ci } else { 52fa7767c5Sopenharmony_ci public_external_deps = [ "bounds_checking_function:libsec_shared" ] 53fa7767c5Sopenharmony_ci } 54fa7767c5Sopenharmony_ci } 55fa7767c5Sopenharmony_ci} else { 56fa7767c5Sopenharmony_ci ohos_source_set("histreamer_plugin_intf") { 57fa7767c5Sopenharmony_ci subsystem_name = "multimedia" 58fa7767c5Sopenharmony_ci part_name = "media_foundation" 59fa7767c5Sopenharmony_ci sources = [ 60fa7767c5Sopenharmony_ci "common/media_sink.cpp", 61fa7767c5Sopenharmony_ci "common/media_source.cpp", 62fa7767c5Sopenharmony_ci "common/plugin_buffer.cpp", 63fa7767c5Sopenharmony_ci ] 64fa7767c5Sopenharmony_ci public_configs = [ 65fa7767c5Sopenharmony_ci ":hst_plugin_intf_config", 66fa7767c5Sopenharmony_ci "//foundation/multimedia/media_foundation:histreamer_presets", 67fa7767c5Sopenharmony_ci ] 68fa7767c5Sopenharmony_ci public_external_deps = [ "player_framework:media_client" ] 69fa7767c5Sopenharmony_ci external_deps = [ "bounds_checking_function:libsec_shared" ] 70fa7767c5Sopenharmony_ci if (media_foundation_enable_video) { 71fa7767c5Sopenharmony_ci public_external_deps += [ 72fa7767c5Sopenharmony_ci "c_utils:utilsbase", 73fa7767c5Sopenharmony_ci "drivers_peripheral_display:hdi_gralloc_client", 74fa7767c5Sopenharmony_ci "graphic_surface:surface", 75fa7767c5Sopenharmony_ci "graphic_surface:sync_fence", 76fa7767c5Sopenharmony_ci ] 77fa7767c5Sopenharmony_ci sources += [ 78fa7767c5Sopenharmony_ci "common/share_allocator.cpp", 79fa7767c5Sopenharmony_ci "common/share_memory.cpp", 80fa7767c5Sopenharmony_ci "common/surface_allocator.cpp", 81fa7767c5Sopenharmony_ci "common/surface_memory.cpp", 82fa7767c5Sopenharmony_ci ] 83fa7767c5Sopenharmony_ci external_deps += [ 84fa7767c5Sopenharmony_ci "c_utils:utils", 85fa7767c5Sopenharmony_ci "graphic_surface:sync_fence", 86fa7767c5Sopenharmony_ci "hilog:libhilog", 87fa7767c5Sopenharmony_ci "ipc:ipc_single", 88fa7767c5Sopenharmony_ci ] 89fa7767c5Sopenharmony_ci } 90fa7767c5Sopenharmony_ci } 91fa7767c5Sopenharmony_ci} 92fa7767c5Sopenharmony_ci 93fa7767c5Sopenharmony_ciohos_source_set("plugin_base") { 94fa7767c5Sopenharmony_ci subsystem_name = "multimedia" 95fa7767c5Sopenharmony_ci part_name = "media_foundation" 96fa7767c5Sopenharmony_ci sources = [] 97fa7767c5Sopenharmony_ci public_deps = [ 98fa7767c5Sopenharmony_ci ":histreamer_plugin_intf", 99fa7767c5Sopenharmony_ci "//foundation/multimedia/media_foundation/engine/foundation:histreamer_foundation", 100fa7767c5Sopenharmony_ci ] 101fa7767c5Sopenharmony_ci public_configs = 102fa7767c5Sopenharmony_ci [ "//foundation/multimedia/media_foundation:histreamer_presets" ] 103fa7767c5Sopenharmony_ci} 104fa7767c5Sopenharmony_ci 105fa7767c5Sopenharmony_ciconfig("histreamer_plugin_base_external_config") { 106fa7767c5Sopenharmony_ci include_dirs = [ 107fa7767c5Sopenharmony_ci "//foundation/multimedia/media_foundation/engine", 108fa7767c5Sopenharmony_ci "//foundation/multimedia/media_foundation/engine/include", 109fa7767c5Sopenharmony_ci "//foundation/multimedia/media_foundation/engine/include/plugin/common", 110fa7767c5Sopenharmony_ci "//foundation/multimedia/media_foundation/engine/include/plugin/core", 111fa7767c5Sopenharmony_ci "//foundation/multimedia/media_foundation/engine/scene/standard", 112fa7767c5Sopenharmony_ci ] 113fa7767c5Sopenharmony_ci} 114fa7767c5Sopenharmony_ci 115fa7767c5Sopenharmony_ciif (hst_is_lite_sys) { 116fa7767c5Sopenharmony_ci import("//build/lite/config/component/lite_component.gni") 117fa7767c5Sopenharmony_ci lite_library("histreamer_plugin_base") { 118fa7767c5Sopenharmony_ci if (hst_is_mini_sys) { 119fa7767c5Sopenharmony_ci target_type = "static_library" 120fa7767c5Sopenharmony_ci } else { 121fa7767c5Sopenharmony_ci target_type = "shared_library" 122fa7767c5Sopenharmony_ci } 123fa7767c5Sopenharmony_ci sources = [] 124fa7767c5Sopenharmony_ci deps = [ ":plugin_base" ] 125fa7767c5Sopenharmony_ci } 126fa7767c5Sopenharmony_ci} else { 127fa7767c5Sopenharmony_ci import("//build/ohos.gni") 128fa7767c5Sopenharmony_ci ohos_shared_library("histreamer_plugin_base") { 129fa7767c5Sopenharmony_ci subsystem_name = "multimedia" 130fa7767c5Sopenharmony_ci part_name = "media_foundation" 131fa7767c5Sopenharmony_ci public_configs = [ ":histreamer_plugin_base_external_config" ] 132fa7767c5Sopenharmony_ci deps = [ ":plugin_base" ] 133fa7767c5Sopenharmony_ci external_deps = [ "hilog:libhilog" ] 134fa7767c5Sopenharmony_ci sanitize = { 135fa7767c5Sopenharmony_ci cfi = true 136fa7767c5Sopenharmony_ci cfi_cross_dso = true 137fa7767c5Sopenharmony_ci debug = false 138fa7767c5Sopenharmony_ci integer_overflow = true 139fa7767c5Sopenharmony_ci } 140fa7767c5Sopenharmony_ci } 141fa7767c5Sopenharmony_ci} 142fa7767c5Sopenharmony_ci 143fa7767c5Sopenharmony_ciohos_source_set("ffmpeg_convert") { 144fa7767c5Sopenharmony_ci subsystem_name = "multimedia" 145fa7767c5Sopenharmony_ci part_name = "media_foundation" 146fa7767c5Sopenharmony_ci include_dirs = [ "//foundation/multimedia/media_foundation/engine/include" ] 147fa7767c5Sopenharmony_ci sources = [ "convert/ffmpeg_convert.cpp" ] 148fa7767c5Sopenharmony_ci public_configs = 149fa7767c5Sopenharmony_ci [ "//foundation/multimedia/media_foundation:histreamer_presets" ] 150fa7767c5Sopenharmony_ci public_deps = [ 151fa7767c5Sopenharmony_ci "//foundation/multimedia/media_foundation/engine/foundation:histreamer_foundation", 152fa7767c5Sopenharmony_ci "//foundation/multimedia/media_foundation/engine/pipeline:histreamer_base", 153fa7767c5Sopenharmony_ci ] 154fa7767c5Sopenharmony_ci 155fa7767c5Sopenharmony_ci if (hst_is_standard_sys) { 156fa7767c5Sopenharmony_ci public_external_deps = [ "ffmpeg:libohosffmpeg" ] 157fa7767c5Sopenharmony_ci external_deps = [ "hilog:libhilog" ] 158fa7767c5Sopenharmony_ci } else { 159fa7767c5Sopenharmony_ci include_dirs += [ "//third_party/ffmpeg" ] 160fa7767c5Sopenharmony_ci } 161fa7767c5Sopenharmony_ci} 162fa7767c5Sopenharmony_ci 163fa7767c5Sopenharmony_ciif (hst_is_lite_sys) { 164fa7767c5Sopenharmony_ci import("//build/lite/config/component/lite_component.gni") 165fa7767c5Sopenharmony_ci lite_library("histreamer_ffmpeg_convert") { 166fa7767c5Sopenharmony_ci if (hst_is_mini_sys) { 167fa7767c5Sopenharmony_ci target_type = "static_library" 168fa7767c5Sopenharmony_ci } else { 169fa7767c5Sopenharmony_ci target_type = "shared_library" 170fa7767c5Sopenharmony_ci } 171fa7767c5Sopenharmony_ci sources = [] 172fa7767c5Sopenharmony_ci deps = [ ":ffmpeg_convert" ] 173fa7767c5Sopenharmony_ci } 174fa7767c5Sopenharmony_ci} else { 175fa7767c5Sopenharmony_ci import("//build/ohos.gni") 176fa7767c5Sopenharmony_ci ohos_shared_library("histreamer_ffmpeg_convert") { 177fa7767c5Sopenharmony_ci subsystem_name = "multimedia" 178fa7767c5Sopenharmony_ci part_name = "media_foundation" 179fa7767c5Sopenharmony_ci include_dirs = [ "//foundation/multimedia/media_foundation/engine/include" ] 180fa7767c5Sopenharmony_ci deps = [ ":ffmpeg_convert" ] 181fa7767c5Sopenharmony_ci external_deps = [ 182fa7767c5Sopenharmony_ci "ffmpeg:libohosffmpeg", 183fa7767c5Sopenharmony_ci "hilog:libhilog", 184fa7767c5Sopenharmony_ci ] 185fa7767c5Sopenharmony_ci sanitize = { 186fa7767c5Sopenharmony_ci cfi = true 187fa7767c5Sopenharmony_ci cfi_cross_dso = true 188fa7767c5Sopenharmony_ci debug = false 189fa7767c5Sopenharmony_ci integer_overflow = true 190fa7767c5Sopenharmony_ci } 191fa7767c5Sopenharmony_ci } 192fa7767c5Sopenharmony_ci} 193fa7767c5Sopenharmony_ci 194fa7767c5Sopenharmony_ciohos_source_set("histreamer_plugin_core") { 195fa7767c5Sopenharmony_ci subsystem_name = "multimedia" 196fa7767c5Sopenharmony_ci part_name = "media_foundation" 197fa7767c5Sopenharmony_ci include_dirs = [ "//foundation/multimedia/media_foundation/engine/include" ] 198fa7767c5Sopenharmony_ci sources = [ 199fa7767c5Sopenharmony_ci "core/audio_sink.cpp", 200fa7767c5Sopenharmony_ci "core/base.cpp", 201fa7767c5Sopenharmony_ci "core/codec.cpp", 202fa7767c5Sopenharmony_ci "core/demuxer.cpp", 203fa7767c5Sopenharmony_ci "core/muxer.cpp", 204fa7767c5Sopenharmony_ci "core/output_sink.cpp", 205fa7767c5Sopenharmony_ci "core/plugin_core_utils.cpp", 206fa7767c5Sopenharmony_ci "core/plugin_manager.cpp", 207fa7767c5Sopenharmony_ci "core/plugin_register.cpp", 208fa7767c5Sopenharmony_ci "core/plugin_wrapper.cpp", 209fa7767c5Sopenharmony_ci "core/source.cpp", 210fa7767c5Sopenharmony_ci "core/video_sink.cpp", 211fa7767c5Sopenharmony_ci ] 212fa7767c5Sopenharmony_ci defines = [] 213fa7767c5Sopenharmony_ci if (plugin_dynamic_register) { 214fa7767c5Sopenharmony_ci sources += [ "core/plugin_loader.cpp" ] 215fa7767c5Sopenharmony_ci defines += [ "DYNAMIC_PLUGINS" ] 216fa7767c5Sopenharmony_ci } 217fa7767c5Sopenharmony_ci public_configs = 218fa7767c5Sopenharmony_ci [ "//foundation/multimedia/media_foundation:histreamer_presets" ] 219fa7767c5Sopenharmony_ci public_deps = [ 220fa7767c5Sopenharmony_ci ":histreamer_plugin_base", 221fa7767c5Sopenharmony_ci "plugins:gen_plugin_static_header", 222fa7767c5Sopenharmony_ci "//foundation/multimedia/media_foundation/engine/foundation:histreamer_foundation", 223fa7767c5Sopenharmony_ci ] 224fa7767c5Sopenharmony_ci if (hst_is_lite_sys) { 225fa7767c5Sopenharmony_ci defines += [ 226fa7767c5Sopenharmony_ci "HST_PLUGIN_PATH=\"/usr/lib\"", 227fa7767c5Sopenharmony_ci "HST_PLUGIN_FILE_TAIL=\".so\"", 228fa7767c5Sopenharmony_ci ] 229fa7767c5Sopenharmony_ci include_dirs += [ 230fa7767c5Sopenharmony_ci "//foundation/multimedia/media_utils_lite/interfaces/kits", 231fa7767c5Sopenharmony_ci "//drivers/peripheral/display/interfaces/include", 232fa7767c5Sopenharmony_ci ] 233fa7767c5Sopenharmony_ci if (hst_is_mini_sys) { 234fa7767c5Sopenharmony_ci public_deps += [ "//third_party/bounds_checking_function:libsec_static" ] 235fa7767c5Sopenharmony_ci } else { 236fa7767c5Sopenharmony_ci public_external_deps = [ "bounds_checking_function:libsec_shared" ] 237fa7767c5Sopenharmony_ci } 238fa7767c5Sopenharmony_ci } else { 239fa7767c5Sopenharmony_ci if (target_cpu == "arm64" || is_emulator) { 240fa7767c5Sopenharmony_ci hst_plugin_path = "\"/system/lib64/media/histreamer_plugins\"" 241fa7767c5Sopenharmony_ci } else { 242fa7767c5Sopenharmony_ci hst_plugin_path = "\"/system/lib/media/histreamer_plugins\"" 243fa7767c5Sopenharmony_ci } 244fa7767c5Sopenharmony_ci defines += [ 245fa7767c5Sopenharmony_ci "HST_PLUGIN_PATH=${hst_plugin_path}", 246fa7767c5Sopenharmony_ci "HST_PLUGIN_FILE_TAIL=\".z.so\"", 247fa7767c5Sopenharmony_ci ] 248fa7767c5Sopenharmony_ci external_deps = [ 249fa7767c5Sopenharmony_ci "bounds_checking_function:libsec_shared", 250fa7767c5Sopenharmony_ci "c_utils:utilsbase", 251fa7767c5Sopenharmony_ci "graphic_surface:surface", 252fa7767c5Sopenharmony_ci "hilog:libhilog", 253fa7767c5Sopenharmony_ci "ipc:ipc_single", 254fa7767c5Sopenharmony_ci "player_framework:media_client", 255fa7767c5Sopenharmony_ci ] 256fa7767c5Sopenharmony_ci } 257fa7767c5Sopenharmony_ci} 258