• 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/interfaces",
27    "$av_codec_root_dir/services/dfx/include",
28    "$av_codec_root_dir/services/include",
29    "$av_codec_root_dir/services/services/codec/client",
30    "$av_codec_root_dir/services/services/codec/ipc",
31    "$av_codec_root_dir/services/services/codeclist/client",
32    "$av_codec_root_dir/services/services/codeclist/ipc",
33    "$av_codec_root_dir/services/services/common",
34    "$av_codec_root_dir/services/services/demuxer/client",
35    "$av_codec_root_dir/services/services/demuxer/ipc",
36    "$av_codec_root_dir/services/services/muxer/client",
37    "$av_codec_root_dir/services/services/muxer/ipc",
38    "$av_codec_root_dir/services/services/sa_avcodec/client",
39    "$av_codec_root_dir/services/services/sa_avcodec/ipc",
40    "$av_codec_root_dir/services/services/source/client",
41    "$av_codec_root_dir/services/services/source/ipc",
42    "$av_codec_root_dir/services/engine/base/include",
43    "$av_codec_root_dir/services/services/codec/server",
44    "$av_codec_root_dir/services/engine/codec/include/audio",
45    "$av_codec_root_dir/services/engine/codeclist",
46    "$av_codec_root_dir/services/engine/common/include",
47    "$av_codec_root_dir/services/utils/include",
48    "$av_codec_root_dir/../../graphic/graphic_surface/surface/include",
49    "$media_foundation_root_dir/interface/inner_api",
50    "$media_foundation_root_dir/interface/kits/c",
51  ]
52}
53
54config("av_codec_client_local_config") {
55  include_dirs = [
56    "$av_codec_root_dir/services/services/factory",
57    "$av_codec_root_dir/services/engine/factory",
58
59    "$av_codec_root_dir/services/media_engine/modules/muxer",
60    "$av_codec_root_dir/services/engine/plugin/common",
61    "$av_codec_root_dir/services/engine/plugin/core",
62    "$av_codec_root_dir/services/engine/plugin/interface",
63    "$av_codec_root_dir/services/engine/source/hst_releated",
64    "$av_codec_root_dir/services/media_engine/modules",
65    "$media_foundation_root_dir/interface/inner_api",
66  ]
67}
68
69config("av_codec_client_ipc_config") {
70  include_dirs = [
71    "$av_codec_root_dir/services/services/codec/client",
72    "$av_codec_root_dir/services/services/codec/ipc",
73    "$av_codec_root_dir/services/services/codeclist/client",
74    "$av_codec_root_dir/services/services/codeclist/ipc",
75    "$av_codec_root_dir/services/services/common",
76    "$av_codec_root_dir/services/services/demuxer/client",
77    "$av_codec_root_dir/services/services/demuxer/ipc",
78    "$av_codec_root_dir/services/services/muxer/client",
79    "$av_codec_root_dir/services/services/muxer/ipc",
80    "$av_codec_root_dir/services/services/sa_avcodec/client",
81    "$av_codec_root_dir/services/services/sa_avcodec/ipc",
82    "$av_codec_root_dir/services/services/source/client",
83    "$av_codec_root_dir/services/services/source/ipc",
84  ]
85}
86
87config("av_codec_client_public_config") {
88  include_dirs = [
89    "./",
90    "$av_codec_root_dir/frameworks/native/avcodec",
91    "$av_codec_root_dir/frameworks/native/avcodeclist",
92    "$av_codec_root_dir/frameworks/native/avdemuxer",
93    "$av_codec_root_dir/frameworks/native/avmuxer",
94    "$av_codec_root_dir/frameworks/native/avsource",
95    "$av_codec_root_dir/interfaces/kits/c",
96    "$av_codec_root_dir/services/include",
97    "$av_codec_root_dir/services/dfx/include",
98    "$av_codec_root_dir/services/utils/include",
99  ]
100
101  defines = []
102  defines += av_codec_defines
103
104  if (target_cpu == "arm64") {
105    av_codec_plugin_path = "\"/system/lib64/media/av_codec_plugins\""
106  } else {
107    av_codec_plugin_path = "\"/system/lib/media/av_codec_plugins\""
108  }
109
110  defines += [
111    "AV_CODEC_PLUGIN_PATH=${av_codec_plugin_path}",
112    "AV_CODEC_PLUGIN_FILE_TAIL=\".z.so\"",
113  ]
114
115  if (av_codec_client_support_codec) {
116    defines += [ "CLIENT_SUPPORT_CODEC" ]
117  } else {
118    defines += [ "CLIENT_UNSUPPORT_CODEC" ]
119  }
120
121  if (av_codec_enable_special_codec) {
122    defines += [ "AV_CODEC_AUDIO_VIVID_CAPACITY" ]
123  }
124}
125
126config("av_codec_client_codec_config") {
127  include_dirs = [
128    "$av_codec_root_dir/interfaces/inner_api/native",
129    "$av_codec_root_dir/interfaces/kits/c",
130    "$av_codec_root_dir/services/dfx/include",
131    "$av_codec_root_dir/services/utils/include/",
132    "$av_codec_root_dir/services/engine/base/include/",
133    "$av_codec_root_dir/services/engine/codec/include/audio/",
134    "$av_codec_root_dir/services/engine/common/include/",
135    "$av_codec_root_dir/services/media_engine/modules/media_codec/",
136    "//third_party/ffmpeg",
137  ]
138}
139
140config("av_codec_client_compile_config") {
141  cflags = [
142    "-fno-exceptions",
143    "-Wall",
144    "-fno-common",
145    "-fstack-protector-strong",
146    "-Wshadow",
147    "-FPIC",
148    "-FS",
149    "-O2",
150    "-D_FORTIFY_SOURCE=2",
151    "-Wformat=2",
152    "-Wdate-time",
153  ]
154
155  cflags_cc = [
156    "-std=c++17",
157    "-fno-rtti",
158  ]
159
160  if (target_cpu == "arm") {
161    cflags += [ "-DBINDER_IPC_32BIT" ]
162  }
163}
164
165config("av_codec_client_drm_config") {
166  include_dirs = [ "$drm_framework_root_dir/services/drm_service/ipc" ]
167}
168
169ohos_shared_library("av_codec_client") {
170  install_enable = true
171  public_configs = [
172    ":av_codec_client_local_config",
173    ":av_codec_client_ipc_config",
174    ":av_codec_client_public_config",
175    ":av_codec_packege_include",
176    ":av_codec_client_codec_config",
177    ":av_codec_client_drm_config",
178  ]
179
180  sanitize = {
181    boundary_sanitize = true
182    cfi = true
183    cfi_cross_dso = true
184    integer_overflow = true
185    ubsan = true
186    debug = false
187    blocklist = "$av_codec_root_dir/cfi_blocklist.txt"
188  }
189
190  configs = [
191    ":av_codec_packege_include",
192    ":av_codec_client_compile_config",
193    "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules_config",
194  ]
195
196  sources = [
197    "$av_codec_root_dir/frameworks/native/common/avcodec_errors.cpp",
198    "$av_codec_root_dir/services/services/common/avsharedmemory_ipc.cpp",
199    "$av_codec_root_dir/services/services/sa_avcodec/client/avcodec_client.cpp",
200    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_listener_stub.cpp",
201    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_parcel.cpp",
202    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_service_proxy.cpp",
203  ]
204  if (av_codec_support_codec) {
205    sources += [
206      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_codec_impl.cpp",
207      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_codec_inner_impl.cpp",
208      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_decoder_impl.cpp",
209      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_encoder_impl.cpp",
210      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_video_decoder_impl.cpp",
211      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_video_encoder_impl.cpp",
212      "$av_codec_root_dir/services/services/codec/client/codec_client.cpp",
213      "$av_codec_root_dir/services/services/codec/ipc/codec_listener_stub.cpp",
214      "$av_codec_root_dir/services/services/codec/ipc/codec_service_proxy.cpp",
215    ]
216  }
217  if (av_codec_support_codeclist) {
218    sources += [
219      "$av_codec_root_dir/frameworks/native/avcodeclist/avcodec_info.cpp",
220      "$av_codec_root_dir/frameworks/native/avcodeclist/avcodeclist_impl.cpp",
221      "$av_codec_root_dir/services/services/codeclist/client/codeclist_client.cpp",
222      "$av_codec_root_dir/services/services/codeclist/ipc/codeclist_service_proxy.cpp",
223      "$av_codec_root_dir/services/services/sa_avcodec/ipc/codeclist_parcel.cpp",
224    ]
225  }
226  if (av_codec_client_support_codec) {
227    sources += [
228      "$av_codec_root_dir/services/engine/codeclist/audio_codeclist_info.cpp",
229      "$av_codec_root_dir/services/engine/codeclist/codec_ability_singleton.cpp",
230      "$av_codec_root_dir/services/engine/codeclist/codeclist_builder.cpp",
231      "$av_codec_root_dir/services/engine/codeclist/codeclist_core.cpp",
232      "$av_codec_root_dir/services/services/codec/server/codec_drm_decrypt.cpp",
233      "$av_codec_root_dir/services/services/codec/server/codec_factory.cpp",
234      "$av_codec_root_dir/services/services/codec/server/codec_server.cpp",
235    ]
236  }
237  if (av_codec_support_demuxer) {
238    include_dirs = [
239      "$av_codec_root_dir/services/media_engine/modules",
240      "$av_codec_root_dir/services/media_engine/plugins",
241    ]
242
243    if (target_cpu == "arm64") {
244      av_codec_plugin_path = "\"/system/lib64/media/av_codec_plugins\""
245    } else {
246      av_codec_plugin_path = "\"/system/lib/media/av_codec_plugins\""
247    }
248
249    if (target_cpu == "arm64") {
250      oh_file_plugin_path = "\"/system/lib64/media/histreamer_plugins\""
251    } else {
252      oh_file_plugin_path = "\"/system/lib/media/histreamer_plugins\""
253    }
254
255    defines = []
256    defines += av_codec_defines
257    defines += [
258      "AV_CODEC_PLUGIN_PATH=${av_codec_plugin_path}",
259      "AV_CODEC_PLUGIN_FILE_TAIL=\".z.so\"",
260      "OH_FILE_PLUGIN_PATH=${oh_file_plugin_path}",
261    ]
262    sources += [
263      "$av_codec_root_dir/frameworks/native/avdemuxer/avdemuxer_impl.cpp",
264      "$av_codec_root_dir/frameworks/native/avsource/avsource_impl.cpp",
265    ]
266  }
267  if (av_codec_support_muxer) {
268    sources +=
269        [ "$av_codec_root_dir/frameworks/native/avmuxer/avmuxer_impl.cpp" ]
270  }
271  if (av_codec_support_muxer) {
272    sources +=
273        [ "$av_codec_root_dir/services/engine/plugin/core/plugin_loader.cpp" ]
274  }
275  deps = [
276    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
277    "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules",
278    "//third_party/bounds_checking_function:libsec_static",
279  ]
280
281  if (av_codec_client_support_codec) {
282    deps += [ "$av_codec_root_dir/services/engine/codec/audio:av_codec_audio_ffmpeg_codec" ]
283  }
284
285  if (av_codec_support_codeclist) {
286    deps += [ "$av_codec_root_dir/services/engine:av_codec_engine_package" ]
287  }
288
289  deps += [ "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules" ]
290
291  external_deps = [
292    "c_utils:utils",
293    "graphic_surface:surface",
294    "hilog:libhilog",
295    "ipc:ipc_single",
296    "media_foundation:media_foundation",
297    "samgr:samgr_proxy",
298  ]
299
300  if (av_codec_support_drm) {
301    external_deps += [ "drm_framework:drm_framework" ]
302  }
303
304  innerapi_tags = [
305    "platformsdk",
306    "sasdk",
307  ]
308
309  subsystem_name = "multimedia"
310  part_name = "av_codec"
311}
312