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