• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (C) 2023 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import("//build/ohos.gni")
15import("//foundation/multimedia/av_codec/config.gni")
16
17config("av_codec_packege_include") {
18  include_dirs = [
19    "$av_codec_root_dir/frameworks/native/avcodec",
20    "$av_codec_root_dir/frameworks/native/avcodeclist",
21    "$av_codec_root_dir/frameworks/native/avdemuxer",
22    "$av_codec_root_dir/frameworks/native/avmuxer",
23    "$av_codec_root_dir/frameworks/native/avsource",
24    "$av_codec_root_dir/interfaces/inner_api/native",
25    "$av_codec_root_dir/interfaces/kits/c",
26    "$av_codec_root_dir/services/dfx/include",
27    "$av_codec_root_dir/services/include",
28    "$av_codec_root_dir/services/services/codec/client",
29    "$av_codec_root_dir/services/services/codec/ipc",
30    "$av_codec_root_dir/services/services/codeclist/client",
31    "$av_codec_root_dir/services/services/codeclist/ipc",
32    "$av_codec_root_dir/services/services/common",
33    "$av_codec_root_dir/services/services/demuxer/client",
34    "$av_codec_root_dir/services/services/demuxer/ipc",
35    "$av_codec_root_dir/services/services/muxer/client",
36    "$av_codec_root_dir/services/services/muxer/ipc",
37    "$av_codec_root_dir/services/services/sa_avcodec/client",
38    "$av_codec_root_dir/services/services/sa_avcodec/ipc",
39    "$av_codec_root_dir/services/services/source/client",
40    "$av_codec_root_dir/services/services/source/ipc",
41    "$av_codec_root_dir/services/engine/base/include",
42    "$av_codec_root_dir/services/services/codec/server",
43    "$av_codec_root_dir/services/engine/codec/include/audio",
44    "$av_codec_root_dir/services/engine/codeclist",
45    "$av_codec_root_dir/services/engine/common/include",
46    "$av_codec_root_dir/services/utils/include",
47    "$av_codec_root_dir/../../graphic/graphic_2d/frameworks/surface/include",
48  ]
49}
50
51config("av_codec_client_local_config") {
52  include_dirs = [
53    "$av_codec_root_dir/services/services/factory",
54    "$av_codec_root_dir/services/engine/factory",
55
56    "$av_codec_root_dir/services/engine/muxer",
57    "$av_codec_root_dir/services/engine/plugin/common",
58    "$av_codec_root_dir/services/engine/plugin/core",
59    "$av_codec_root_dir/services/engine/plugin/interface",
60    "$av_codec_root_dir/services/engine/source/hst_releated",
61  ]
62}
63
64config("av_codec_client_ipc_config") {
65  include_dirs = [
66    "$av_codec_root_dir/services/services/codec/client",
67    "$av_codec_root_dir/services/services/codec/ipc",
68    "$av_codec_root_dir/services/services/codeclist/client",
69    "$av_codec_root_dir/services/services/codeclist/ipc",
70    "$av_codec_root_dir/services/services/common",
71    "$av_codec_root_dir/services/services/demuxer/client",
72    "$av_codec_root_dir/services/services/demuxer/ipc",
73    "$av_codec_root_dir/services/services/muxer/client",
74    "$av_codec_root_dir/services/services/muxer/ipc",
75    "$av_codec_root_dir/services/services/sa_avcodec/client",
76    "$av_codec_root_dir/services/services/sa_avcodec/ipc",
77    "$av_codec_root_dir/services/services/source/client",
78    "$av_codec_root_dir/services/services/source/ipc",
79  ]
80}
81
82config("av_codec_source") {
83  include_dirs = [
84    "$av_codec_root_dir/services/engine/source",
85    "$av_codec_root_dir/services/engine/source/hst_releated",
86    "$av_codec_root_dir/services/engine/base/include",
87    "//third_party/ffmpeg",
88  ]
89
90  if (target_cpu == "arm64") {
91    av_codec_plugin_path = "\"/system/lib64/media/av_codec_plugins\""
92  } else {
93    av_codec_plugin_path = "\"/system/lib/media/av_codec_plugins\""
94  }
95
96  if (target_cpu == "arm64") {
97    oh_file_plugin_path = "\"/system/lib64/media/histreamer_plugins\""
98  } else {
99    oh_file_plugin_path = "\"/system/lib/media/histreamer_plugins\""
100  }
101
102  defines = []
103  defines += av_codec_defines
104  defines += [
105    "AV_CODEC_PLUGIN_PATH=${av_codec_plugin_path}",
106    "AV_CODEC_PLUGIN_FILE_TAIL=\".z.so\"",
107    "OH_FILE_PLUGIN_PATH=${oh_file_plugin_path}",
108  ]
109}
110
111config("av_codec_demuxer") {
112  include_dirs = [
113    "$av_codec_root_dir/services/engine/plugin/common",
114    "$av_codec_root_dir/services/engine/plugin/core",
115    "$av_codec_root_dir/services/engine/plugin/interface",
116    "$av_codec_root_dir/services/engine/source/hst_releated",
117    "//third_party/ffmpeg",
118  ]
119}
120
121config("av_codec_client_public_config") {
122  include_dirs = [
123    "./",
124    "$av_codec_root_dir/frameworks/native/avcodec",
125    "$av_codec_root_dir/frameworks/native/avcodeclist",
126    "$av_codec_root_dir/frameworks/native/avdemuxer",
127    "$av_codec_root_dir/frameworks/native/avmuxer",
128    "$av_codec_root_dir/frameworks/native/avsource",
129    "$av_codec_root_dir/interfaces/kits/c",
130    "$av_codec_root_dir/services/include",
131    "$av_codec_root_dir/services/dfx/include",
132    "$av_codec_root_dir/services/utils/include",
133  ]
134
135  cflags = [
136    "-fno-exceptions",
137    "-Wall",
138    "-fno-common",
139    "-fstack-protector-strong",
140    "-Wshadow",
141    "-FPIC",
142    "-FS",
143    "-O2",
144    "-D_FORTIFY_SOURCE=2",
145    "-Wformat=2",
146    "-Wdate-time",
147  ]
148
149  cflags_cc = [
150    "-std=c++17",
151    "-fno-rtti",
152  ]
153
154  if (target_cpu == "arm") {
155    cflags += [ "-DBINDER_IPC_32BIT" ]
156  }
157
158  defines = []
159  defines += av_codec_defines
160
161  if (target_cpu == "arm64") {
162    av_codec_plugin_path = "\"/system/lib64/media/av_codec_plugins\""
163  } else {
164    av_codec_plugin_path = "\"/system/lib/media/av_codec_plugins\""
165  }
166
167  defines += [
168    "AV_CODEC_PLUGIN_PATH=${av_codec_plugin_path}",
169    "AV_CODEC_PLUGIN_FILE_TAIL=\".z.so\"",
170  ]
171
172  if (av_codec_client_support_codec) {
173    defines += [ "CLIENT_SUPPORT_CODEC" ]
174  } else {
175    defines += [ "CLIENT_UNSUPPORT_CODEC" ]
176  }
177}
178
179config("av_codec_client_codec_config") {
180  include_dirs = [
181    "$av_codec_root_dir/interfaces/inner_api/native",
182    "$av_codec_root_dir/interfaces/kits/c",
183    "$av_codec_root_dir/services/dfx/include",
184    "$av_codec_root_dir/services/utils/include/",
185    "$av_codec_root_dir/services/engine/base/include/",
186    "$av_codec_root_dir/services/engine/codec/include/audio/",
187    "$av_codec_root_dir/services/engine/common/include/",
188    "//third_party/ffmpeg",
189  ]
190}
191
192ohos_shared_library("av_codec_client") {
193  install_enable = true
194  public_configs = [
195    ":av_codec_client_local_config",
196    ":av_codec_client_ipc_config",
197    ":av_codec_client_public_config",
198    ":av_codec_packege_include",
199    ":av_codec_client_codec_config",
200  ]
201
202  sanitize = {
203    cfi = true
204    cfi_cross_dso = true
205    debug = false
206  }
207
208  configs = [ ":av_codec_packege_include" ]
209
210  sources = [
211    "$av_codec_root_dir/frameworks/native/common/avcodec_errors.cpp",
212    "$av_codec_root_dir/services/services/common/avsharedmemory_ipc.cpp",
213    "$av_codec_root_dir/services/services/sa_avcodec/client/avcodec_client.cpp",
214    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_listener_stub.cpp",
215    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_parcel.cpp",
216    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_service_proxy.cpp",
217  ]
218  if (av_codec_support_codec) {
219    sources += [
220      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_decoder_impl.cpp",
221      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_encoder_impl.cpp",
222      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_video_decoder_impl.cpp",
223      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_video_encoder_impl.cpp",
224      "$av_codec_root_dir/services/services/codec/client/codec_client.cpp",
225      "$av_codec_root_dir/services/services/codec/ipc/codec_listener_stub.cpp",
226      "$av_codec_root_dir/services/services/codec/ipc/codec_service_proxy.cpp",
227    ]
228  }
229  if (av_codec_support_codeclist) {
230    sources += [
231      "$av_codec_root_dir/frameworks/native/avcodeclist/avcodec_info.cpp",
232      "$av_codec_root_dir/frameworks/native/avcodeclist/avcodeclist_impl.cpp",
233      "$av_codec_root_dir/services/services/codeclist/client/codeclist_client.cpp",
234      "$av_codec_root_dir/services/services/codeclist/ipc/codeclist_service_proxy.cpp",
235      "$av_codec_root_dir/services/services/sa_avcodec/ipc/codeclist_parcel.cpp",
236    ]
237  }
238  if (av_codec_client_support_codec) {
239    sources += [
240      "$av_codec_root_dir/services/engine/codeclist/audio_codeclist_info.cpp",
241      "$av_codec_root_dir/services/engine/codeclist/codec_ability_singleton.cpp",
242      "$av_codec_root_dir/services/engine/codeclist/codeclist_builder.cpp",
243      "$av_codec_root_dir/services/engine/codeclist/codeclist_core.cpp",
244      "$av_codec_root_dir/services/services/codec/server/codec_factory.cpp",
245      "$av_codec_root_dir/services/services/codec/server/codec_server.cpp",
246    ]
247  }
248  if (av_codec_support_demuxer) {
249    public_configs += [ ":av_codec_demuxer" ]
250    sources += [
251      "$av_codec_root_dir/frameworks/native/avdemuxer/avdemuxer_impl.cpp",
252      "$av_codec_root_dir/services/engine/demuxer/demuxer_engine_impl.cpp",
253      "$av_codec_root_dir/services/engine/plugin/core/demuxer.cpp",
254      "$av_codec_root_dir/services/engine/plugin/core/demuxer_factory.cpp",
255    ]
256  }
257  if (av_codec_support_source) {
258    public_configs += [ ":av_codec_source" ]
259    sources += [
260      "$av_codec_root_dir/frameworks/native/avsource/avsource_impl.cpp",
261      "$av_codec_root_dir/services/engine/source/hst_releated/media_source.cpp",
262      "$av_codec_root_dir/services/engine/source/hst_releated/plugin_buffer.cpp",
263      "$av_codec_root_dir/services/engine/source/source.cpp",
264      "$av_codec_root_dir/services/engine/source/source_engine_impl.cpp",
265    ]
266  }
267  if (av_codec_support_muxer) {
268    sources += [
269      "$av_codec_root_dir/frameworks/native/avmuxer/avmuxer_impl.cpp",
270      "$av_codec_root_dir/services/engine/muxer/muxer_buffer_pool.cpp",
271      "$av_codec_root_dir/services/engine/muxer/muxer_engine_impl.cpp",
272      "$av_codec_root_dir/services/engine/plugin/core/muxer.cpp",
273      "$av_codec_root_dir/services/engine/plugin/core/muxer_factory.cpp",
274    ]
275  }
276  if (av_codec_support_demuxer || av_codec_support_muxer) {
277    sources +=
278        [ "$av_codec_root_dir/services/engine/plugin/core/plugin_loader.cpp" ]
279  }
280  deps = [
281    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
282    "$av_codec_root_dir/services/utils:av_codec_format",
283    "//third_party/bounds_checking_function:libsec_static",
284  ]
285
286  if (av_codec_client_support_codec) {
287    deps += [ "$av_codec_root_dir/services/engine/codec/audio:av_codec_audio_ffmpeg_codec" ]
288  }
289
290  if (av_codec_support_codeclist) {
291    deps += [ "$av_codec_root_dir/services/engine:av_codec_engine_package" ]
292  }
293
294  external_deps = [
295    "c_utils:utils",
296    "graphic_2d:surface",
297    "hilog:libhilog",
298    "ipc:ipc_single",
299    "samgr:samgr_proxy",
300  ]
301
302  subsystem_name = "multimedia"
303  part_name = "av_codec"
304}
305