# Copyright (c) 2021-2021 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # import("//foundation/multimedia/media_foundation/config.gni") if (!hst_is_lite_sys) { ohos_kernel_type = "" } group("plugin_ffmpeg_adapter") { deps = [] if (ohos_kernel_type != "liteos_m") { deps += [ ":histreamer_plugin_FFmpegAudioDecoders", ":histreamer_plugin_FFmpegDemuxer", ] if (media_foundation_enable_video) { deps += [ ":histreamer_plugin_FFmpegVideoDecoders" ] } } if (!hst_is_lite_sys && media_foundation_enable_recorder) { deps += [ ":histreamer_plugin_FFmpegAudioEncoders", ":histreamer_plugin_FFmpegMuxers", ] if (media_foundation_enable_video) { deps += [ ":histreamer_plugin_FFmpegVideoEncoders" ] } } } config("plugin_ffmpeg_adapter_config") { include_dirs = [ "//foundation/multimedia/media_foundation/engine/include/", "//foundation/multimedia/media_foundation/engine/plugin/", ] } ohos_source_set("ffmpeg_adapter_common") { subsystem_name = "multimedia" part_name = "media_foundation" sources = [ "utils/ffmpeg_utils.cpp" ] public_configs = [ ":plugin_ffmpeg_adapter_config", "//foundation/multimedia/media_foundation:histreamer_presets", ] public_deps = [ "//foundation/multimedia/media_foundation/engine/foundation:histreamer_foundation", "//foundation/multimedia/media_foundation/engine/plugin:histreamer_plugin_base", ] if (!hst_is_lite_sys) { external_deps = [ "graphic_surface:surface", "hilog:libhilog", "ipc:ipc_core", ] } if (hst_is_lite_sys) { print("histreamer audio encoder plugin only supports standard system") include_dirs = [ "//third_party/ffmpeg" ] } else { public_external_deps = [ "ffmpeg:libohosffmpeg" ] } } ohos_source_set("ffmpeg_audio_decoders") { subsystem_name = "multimedia" part_name = "media_foundation" sources = [ "audio_decoder/audio_ffmpeg_decoder_plugin.cpp" ] public_configs = [ ":plugin_ffmpeg_adapter_config", "//foundation/multimedia/media_foundation:histreamer_presets", ] public_deps = [ "//foundation/multimedia/media_foundation/engine/foundation:histreamer_foundation", "//foundation/multimedia/media_foundation/engine/plugin:histreamer_plugin_base", ] if (!hst_is_lite_sys) { external_deps = [ "graphic_surface:surface", "hilog:libhilog", "ipc:ipc_core", ] } if (hst_is_lite_sys) { include_dirs = [ "//third_party/ffmpeg" ] # deps on lite } else { public_external_deps = [ "ffmpeg:libohosffmpeg" ] } } ohos_source_set("ffmpeg_demuxers") { subsystem_name = "multimedia" part_name = "media_foundation" sources = [ "demuxer/ffmpeg_demuxer_plugin.cpp", "demuxer/ffmpeg_track_meta.cpp", "utils/aac_audio_config_parser.cpp", "utils/bit_reader.cpp", ] if (media_foundation_enable_video) { sources += [ "utils/avc_config_data_parser.cpp" ] } public_configs = [ ":plugin_ffmpeg_adapter_config", "//foundation/multimedia/media_foundation:histreamer_presets", ] public_deps = [ "//foundation/multimedia/media_foundation/engine/foundation:histreamer_foundation", "//foundation/multimedia/media_foundation/engine/plugin:histreamer_plugin_base", ] if (!hst_is_lite_sys) { external_deps = [ "graphic_surface:surface", "hilog:libhilog", "ipc:ipc_core", ] } if (hst_is_lite_sys) { include_dirs = [ "//third_party/ffmpeg" ] # deps on lite } else { public_external_deps = [ "ffmpeg:libohosffmpeg" ] } } ohos_source_set("ffmpeg_audio_encoders") { subsystem_name = "multimedia" part_name = "media_foundation" sources = [ "audio_encoder/audio_ffmpeg_encoder_plugin.cpp", "audio_encoder/ffmpeg_au_enc_config.cpp", ] public_configs = [ ":plugin_ffmpeg_adapter_config", "//foundation/multimedia/media_foundation:histreamer_presets", ] public_deps = [ "//foundation/multimedia/media_foundation/engine/foundation:histreamer_foundation", "//foundation/multimedia/media_foundation/engine/plugin:histreamer_ffmpeg_convert", "//foundation/multimedia/media_foundation/engine/plugin:histreamer_plugin_base", ] if (!hst_is_lite_sys) { external_deps = [ "graphic_surface:surface", "hilog:libhilog", "ipc:ipc_core", ] } if (hst_is_lite_sys) { include_dirs = [ "//third_party/ffmpeg" ] print("histreamer audio encoder plugin only supports standard system") } else { public_external_deps = [ "ffmpeg:libohosffmpeg" ] } } ohos_source_set("ffmpeg_video_decoders") { subsystem_name = "multimedia" part_name = "media_foundation" sources = [ "video_decoder/video_ffmpeg_decoder_plugin.cpp" ] public_configs = [ ":plugin_ffmpeg_adapter_config", "//foundation/multimedia/media_foundation:histreamer_presets", ] public_deps = [ "//foundation/multimedia/media_foundation/engine/foundation:histreamer_foundation", "//foundation/multimedia/media_foundation/engine/plugin:histreamer_ffmpeg_convert", "//foundation/multimedia/media_foundation/engine/plugin:histreamer_plugin_base", ] if (!hst_is_lite_sys) { external_deps = [ "graphic_surface:surface", "hilog:libhilog", "ipc:ipc_core", ] } if (hst_is_lite_sys) { include_dirs = [ "//third_party/ffmpeg" ] print("histreamer video decoder plugin only supports standard system") } else { public_external_deps = [ "ffmpeg:libohosffmpeg" ] } } ohos_source_set("ffmpeg_video_encoders") { subsystem_name = "multimedia" part_name = "media_foundation" sources = [ "video_encoder/ffmpeg_vid_enc_config.cpp", "video_encoder/video_ffmpeg_encoder_plugin.cpp", ] public_configs = [ ":plugin_ffmpeg_adapter_config", "//foundation/multimedia/media_foundation:histreamer_presets", ] public_deps = [ "//foundation/multimedia/media_foundation/engine/foundation:histreamer_foundation", "//foundation/multimedia/media_foundation/engine/plugin:histreamer_plugin_base", ] if (!hst_is_lite_sys) { external_deps = [ "graphic_surface:surface", "hilog:libhilog", "ipc:ipc_core", ] } if (hst_is_lite_sys) { include_dirs = [ "//third_party/ffmpeg" ] print("histreamer video encoder plugin only supports standard system") } else { public_external_deps = [ "ffmpeg:libohosffmpeg" ] } } ohos_source_set("ffmpeg_muxers") { subsystem_name = "multimedia" part_name = "media_foundation" sources = [ "muxer/ffmpeg_muxer_plugin.cpp", "utils/ffmpeg_codec_map.cpp", ] public_configs = [ ":plugin_ffmpeg_adapter_config", "//foundation/multimedia/media_foundation:histreamer_presets", ] public_deps = [ "//foundation/multimedia/media_foundation/engine/foundation:histreamer_foundation", "//foundation/multimedia/media_foundation/engine/plugin:histreamer_plugin_base", ] if (!hst_is_lite_sys) { external_deps = [ "graphic_surface:surface", "hilog:libhilog", "ipc:ipc_core", ] } if (hst_is_lite_sys) { include_dirs = [ "//third_party/ffmpeg" ] print("histreamer ffmpeg muxer plugin only supports standard system") } else { public_external_deps = [ "ffmpeg:libohosffmpeg" ] } } if (hst_is_lite_sys) { # lite import("//build/lite/config/component/lite_component.gni") if (ohos_kernel_type == "liteos_m") { # plugin is not need on this platform } else { lite_library("histreamer_plugin_FFmpegAudioDecoders") { target_type = "shared_library" sources = [] deps = [ ":ffmpeg_adapter_common", ":ffmpeg_audio_decoders", ] ldflags = [ "-lavcodec", "-lswresample", ] } lite_library("histreamer_plugin_FFmpegDemuxer") { target_type = "shared_library" sources = [] deps = [ ":ffmpeg_adapter_common", ":ffmpeg_demuxers", ] ldflags = [ "-lavformat", "-lavcodec", ] } } } else { # standard import("//build/ohos.gni") ohos_shared_library("histreamer_plugin_FFmpegAudioDecoders") { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true } deps = [ ":ffmpeg_adapter_common", ":ffmpeg_audio_decoders", ] external_deps = [ "hilog:libhilog" ] relative_install_dir = "media/histreamer_plugins" subsystem_name = "multimedia" part_name = "media_foundation" } ohos_shared_library("histreamer_plugin_FFmpegVideoDecoders") { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true } deps = [ ":ffmpeg_adapter_common", ":ffmpeg_video_decoders", ] external_deps = [ "hilog:libhilog" ] relative_install_dir = "media/histreamer_plugins" subsystem_name = "multimedia" part_name = "media_foundation" } ohos_shared_library("histreamer_plugin_FFmpegDemuxer") { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true } deps = [ ":ffmpeg_adapter_common", ":ffmpeg_demuxers", ] external_deps = [ "hilog:libhilog" ] relative_install_dir = "media/histreamer_plugins" subsystem_name = "multimedia" part_name = "media_foundation" } ohos_shared_library("histreamer_plugin_FFmpegAudioEncoders") { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true } deps = [ ":ffmpeg_adapter_common", ":ffmpeg_audio_encoders", ] external_deps = [ "hilog:libhilog" ] relative_install_dir = "media/histreamer_plugins" subsystem_name = "multimedia" part_name = "media_foundation" } ohos_shared_library("histreamer_plugin_FFmpegVideoEncoders") { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true } deps = [ ":ffmpeg_adapter_common", ":ffmpeg_video_encoders", ] external_deps = [ "hilog:libhilog" ] relative_install_dir = "media/histreamer_plugins" subsystem_name = "multimedia" part_name = "media_foundation" } ohos_shared_library("histreamer_plugin_FFmpegMuxers") { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true } deps = [ ":ffmpeg_adapter_common", ":ffmpeg_muxers", ] external_deps = [ "hilog:libhilog" ] relative_install_dir = "media/histreamer_plugins" subsystem_name = "multimedia" part_name = "media_foundation" } }