# 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("//build/ohos.gni")
declare_args() {
  histreamer_root_dir = "//foundation/multimedia/media_foundation"
  multimedia_root_dir = "//foundation/multimedia"
  hiviewdfx_root_dir = "//base/hiviewdfx"

  # build histreamer plugin feature ability
  # only for small and std (mini device does not support dynamic libraries)
  media_foundation_enable_plugin_ffmpeg_adapter = false

  # hdi codec adapter, only for std device (Omx has not been implemented)
  media_foundation_enable_plugin_codec_adapter = false

  # only tested on std device
  media_foundation_enable_plugin_http_source = false

  # depends on lite audio hdi interface (small device)
  media_foundation_enable_plugin_hdi_adapter = false

  # depends on lite media api
  media_foundation_enable_plugin_stream_source = false

  # only support mini device bes2600 tech (L0)
  media_foundation_enable_plugin_lite_aac_decoder = false
  media_foundation_enable_plugin_http_lite_source = false

  # no external dependence
  media_foundation_enable_plugin_file_source = false
  media_foundation_enable_plugin_file_fd_source = false
  media_foundation_enable_plugin_file_fd_sink = false
  media_foundation_enable_plugin_aac_demuxer = false
  media_foundation_enable_plugin_wav_demuxer = false

  # no release (https://gitee.com/histreamer/minimp3)
  media_foundation_enable_plugin_minimp3_adapter = false
  media_foundation_enable_plugin_minimp4_demuxer = false

  # depends on std media api
  media_foundation_enable_plugin_std_stream_source = false

  # depends on std audio service
  media_foundation_enable_plugin_std_audio_capture = false
  media_foundation_enable_plugin_audio_server_sink = false

  # depends on std surface
  media_foundation_enable_plugin_std_video_surface_sink = false
  media_foundation_enable_plugin_std_video_capture = false

  media_foundation_enable_plugin_avs3_audio_decoder = false

  media_foundation_enable_recorder = false
  media_foundation_enable_video = false
  media_foundation_enable_avs3da = false

  media_foundation_enable_rm_demuxer = true
  media_foundation_enable_cook_audio_decoder = false
  media_foundation_enable_eac3_audio_decoder = false
  media_foundation_enable_truehd_audio_decoder = true
  media_foundation_enable_dts_audio_decoder = true
  media_foundation_enable_lrc_demuxer = false
  media_foundation_enable_sami_demuxer = false
  media_foundation_enable_ass_demuxer = false
  media_foundation_enable_eac3_demuxer = false
  media_foundation_enable_dtshd_demuxer = false
  media_foundation_enable_truehd_demuxer = false

  # enable ffrt task instead of pthread task
  media_foundation_enable_ffrt = false

  # configuration for histreamer created thread's stack size.
  # 0 means using system default thread stack size, other positive values will be accepted.
  config_ohos_histreamer_stack_size = 0
  hst_is_lite_sys = false
  hst_is_standard_sys = false
  hst_is_small_sys = false
  hst_is_mini_sys = false
}

if (!defined(ohos_lite) || !ohos_lite) {
  hst_is_lite_sys = false
  hst_is_standard_sys = true
} else {
  hst_is_lite_sys = true
  if (ohos_kernel_type == "liteos_m") {
    hst_is_mini_sys = true
  } else {
    hst_is_small_sys = true
  }
}

if (hst_is_standard_sys) {
  media_foundation_enable_plugin_file_source = false
  media_foundation_enable_plugin_file_fd_source = false
  media_foundation_enable_plugin_ffmpeg_adapter = true
  media_foundation_enable_plugin_http_source = false
  media_foundation_enable_plugin_audio_server_sink = false
  media_foundation_enable_recorder = true
  media_foundation_enable_plugin_file_fd_sink = false
  media_foundation_enable_plugin_std_audio_capture = false
  media_foundation_enable_plugin_std_stream_source = false
  media_foundation_enable_video = true
  media_foundation_enable_plugin_std_video_surface_sink = false
  media_foundation_enable_plugin_codec_adapter = true
}

if (hst_is_small_sys) {
  media_foundation_enable_plugin_file_source = true
  media_foundation_enable_plugin_file_fd_source = true
  media_foundation_enable_plugin_ffmpeg_adapter = true
  media_foundation_enable_plugin_http_source = true
  media_foundation_enable_plugin_hdi_adapter = true
}

if (hst_is_mini_sys) {
  media_foundation_enable_plugin_file_source = true
  media_foundation_enable_plugin_file_fd_source = true
  media_foundation_enable_plugin_ffmpeg_adapter = true
  media_foundation_enable_plugin_http_source = true
  media_foundation_enable_plugin_hdi_adapter = true
}

if (defined(global_parts_info) &&
    defined(global_parts_info.hiviewdfx_hisysevent)) {
  has_hisysevent_part = true
} else {
  has_hisysevent_part = false
}

if (defined(global_parts_info) && defined(global_parts_info.third_party_skia)) {
  has_skia = true
} else {
  has_skia = false
}