1da853ecaSopenharmony_ci# Copyright (c) 2023 Huawei Device Co., Ltd.
2da853ecaSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3da853ecaSopenharmony_ci# you may not use this file except in compliance with the License.
4da853ecaSopenharmony_ci# You may obtain a copy of the License at
5da853ecaSopenharmony_ci#
6da853ecaSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
7da853ecaSopenharmony_ci#
8da853ecaSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9da853ecaSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10da853ecaSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11da853ecaSopenharmony_ci# See the License for the specific language governing permissions and
12da853ecaSopenharmony_ci# limitations under the License.
13da853ecaSopenharmony_ci
14da853ecaSopenharmony_ciimport("//build/ohos.gni")
15da853ecaSopenharmony_ciimport("//foundation/multimedia/av_codec/config.gni")
16da853ecaSopenharmony_ci
17da853ecaSopenharmony_ciconfig("hcodec_public_cfg") {
18da853ecaSopenharmony_ci  include_dirs = [
19da853ecaSopenharmony_ci    "$av_codec_root_dir/services/engine/codec/video/hcodec/include",
20da853ecaSopenharmony_ci    "$av_codec_root_dir/services/engine/base/include/",
21da853ecaSopenharmony_ci    "$av_codec_root_dir/interfaces/inner_api/native/",
22da853ecaSopenharmony_ci    "$av_codec_root_dir/services/utils/include/",
23da853ecaSopenharmony_ci  ]
24da853ecaSopenharmony_ci}
25da853ecaSopenharmony_ci
26da853ecaSopenharmony_ciconfig("hcodec_cfg") {
27da853ecaSopenharmony_ci  cflags_cc = [ "-fexceptions" ]
28da853ecaSopenharmony_ci}
29da853ecaSopenharmony_ci
30da853ecaSopenharmony_ciohos_shared_library("hcodec") {
31da853ecaSopenharmony_ci  branch_protector_ret = "pac_ret"
32da853ecaSopenharmony_ci  install_enable = true
33da853ecaSopenharmony_ci  subsystem_name = "multimedia"
34da853ecaSopenharmony_ci  part_name = "av_codec"
35da853ecaSopenharmony_ci
36da853ecaSopenharmony_ci  sanitize = av_codec_sanitize
37da853ecaSopenharmony_ci
38da853ecaSopenharmony_ci  sources = [
39da853ecaSopenharmony_ci    "hcodec.cpp",
40da853ecaSopenharmony_ci    "hcodec_api.cpp",
41da853ecaSopenharmony_ci    "hcodec_dfx.cpp",
42da853ecaSopenharmony_ci    "hcodec_list.cpp",
43da853ecaSopenharmony_ci    "hcodec_state.cpp",
44da853ecaSopenharmony_ci    "hcodec_utils.cpp",
45da853ecaSopenharmony_ci    "hdecoder.cpp",
46da853ecaSopenharmony_ci    "hencoder.cpp",
47da853ecaSopenharmony_ci    "msg_handle_loop.cpp",
48da853ecaSopenharmony_ci    "state_machine.cpp",
49da853ecaSopenharmony_ci    "type_converter.cpp",
50da853ecaSopenharmony_ci  ]
51da853ecaSopenharmony_ci
52da853ecaSopenharmony_ci  public_configs = [ ":hcodec_public_cfg" ]
53da853ecaSopenharmony_ci  configs = [ ":hcodec_cfg" ]
54da853ecaSopenharmony_ci  defines = []
55da853ecaSopenharmony_ci
56da853ecaSopenharmony_ci  if (defined(av_codec_support_video_processing_engine) &&
57da853ecaSopenharmony_ci      av_codec_support_video_processing_engine) {
58da853ecaSopenharmony_ci    defines += [ "USE_VIDEO_PROCESSING_ENGINE" ]
59da853ecaSopenharmony_ci  }
60da853ecaSopenharmony_ci
61da853ecaSopenharmony_ci  include_dirs = [
62da853ecaSopenharmony_ci    "$media_foundation_root_dir/src/buffer/avbuffer/include",
63da853ecaSopenharmony_ci    "$av_codec_root_dir/../../../third_party/openmax/api/1.1.2",
64da853ecaSopenharmony_ci    "$av_codec_root_dir/../../../drivers/peripheral/codec/interfaces/include/",
65da853ecaSopenharmony_ci    "$av_codec_root_dir/../../../drivers/hdf_core/interfaces/inner_api",
66da853ecaSopenharmony_ci    "$av_codec_root_dir/../../../drivers/hdf_core/interfaces/inner_api/osal/uhdf",
67da853ecaSopenharmony_ci    "$av_codec_root_dir/../../../commonlibrary/memory_utils/libdmabufheap/include",
68da853ecaSopenharmony_ci    "$av_codec_root_dir/interfaces/inner_api/native",
69da853ecaSopenharmony_ci  ]
70da853ecaSopenharmony_ci
71da853ecaSopenharmony_ci  if (defined(av_codec_support_video_processing_engine) &&
72da853ecaSopenharmony_ci      av_codec_support_video_processing_engine) {
73da853ecaSopenharmony_ci    include_dirs += [ "$video_processing_engine_root_dir/interfaces/inner_api" ]
74da853ecaSopenharmony_ci  }
75da853ecaSopenharmony_ci
76da853ecaSopenharmony_ci  deps = [
77da853ecaSopenharmony_ci    "$av_codec_root_dir/services/engine/base:av_codec_codec_base",
78da853ecaSopenharmony_ci    "$av_codec_root_dir/services/utils:av_codec_service_utils",
79da853ecaSopenharmony_ci  ]
80da853ecaSopenharmony_ci
81da853ecaSopenharmony_ci  external_deps = [
82da853ecaSopenharmony_ci    "c_utils:utils",
83da853ecaSopenharmony_ci    "drivers_interface_codec:libcodec_proxy_3.0",
84da853ecaSopenharmony_ci    "graphic_surface:surface",
85da853ecaSopenharmony_ci    "graphic_surface:sync_fence",
86da853ecaSopenharmony_ci    "hdf_core:libhdi",
87da853ecaSopenharmony_ci    "hilog:libhilog",
88da853ecaSopenharmony_ci    "hitrace:hitrace_meter",
89da853ecaSopenharmony_ci    "init:libbegetutil",
90da853ecaSopenharmony_ci    "ipc:ipc_core",
91da853ecaSopenharmony_ci    "media_foundation:media_foundation",
92da853ecaSopenharmony_ci    "qos_manager:qos",
93da853ecaSopenharmony_ci  ]
94da853ecaSopenharmony_ci
95da853ecaSopenharmony_ci  if (defined(av_codec_support_video_processing_engine) &&
96da853ecaSopenharmony_ci      av_codec_support_video_processing_engine) {
97da853ecaSopenharmony_ci    external_deps += [ "video_processing_engine:videoprocessingengine" ]
98da853ecaSopenharmony_ci  }
99da853ecaSopenharmony_ci
100da853ecaSopenharmony_ci  if (build_variant != "user") {
101da853ecaSopenharmony_ci    defines += [ "BUILD_ENG_VERSION" ]
102da853ecaSopenharmony_ci  }
103da853ecaSopenharmony_ci}
104da853ecaSopenharmony_ci
105da853ecaSopenharmony_cigroup("hcodec_group") {
106da853ecaSopenharmony_ci  deps = [ ":hcodec" ]
107da853ecaSopenharmony_ci  if (build_variant != "user") {
108da853ecaSopenharmony_ci    deps += [ "$av_codec_root_dir/test/unittest/hcodec_test/demo:hcodec_demo" ]
109da853ecaSopenharmony_ci  }
110da853ecaSopenharmony_ci}
111