• 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/services/codec/server/post_processing",
45    "$av_codec_root_dir/services/engine/codec/include/audio",
46    "$av_codec_root_dir/services/engine/codeclist",
47    "$av_codec_root_dir/services/engine/common/include",
48    "$av_codec_root_dir/services/utils/include",
49  ]
50}
51
52config("av_codec_client_local_config") {
53  include_dirs = [
54    "$av_codec_root_dir/services/services/factory",
55    "$av_codec_root_dir/services/engine/factory",
56
57    "$av_codec_root_dir/services/media_engine/modules/muxer",
58    "$av_codec_root_dir/services/media_engine/modules/demuxer",
59    "$av_codec_root_dir/services/engine/plugin/common",
60    "$av_codec_root_dir/services/engine/plugin/core",
61    "$av_codec_root_dir/services/engine/plugin/interface",
62    "$av_codec_root_dir/services/engine/source/hst_releated",
63    "$av_codec_root_dir/services/media_engine/modules",
64  ]
65}
66
67config("av_codec_client_ipc_config") {
68  include_dirs = [
69    "$av_codec_root_dir/services/services/codec/client",
70    "$av_codec_root_dir/services/services/codec/ipc",
71    "$av_codec_root_dir/services/services/codeclist/client",
72    "$av_codec_root_dir/services/services/codeclist/ipc",
73    "$av_codec_root_dir/services/services/common",
74    "$av_codec_root_dir/services/services/demuxer/client",
75    "$av_codec_root_dir/services/services/demuxer/ipc",
76    "$av_codec_root_dir/services/services/muxer/client",
77    "$av_codec_root_dir/services/services/muxer/ipc",
78    "$av_codec_root_dir/services/services/sa_avcodec/client",
79    "$av_codec_root_dir/services/services/sa_avcodec/ipc",
80    "$av_codec_root_dir/services/services/source/client",
81    "$av_codec_root_dir/services/services/source/ipc",
82  ]
83}
84
85config("av_codec_client_public_config") {
86  include_dirs = [
87    "./",
88    "$av_codec_root_dir/frameworks/native/avcodec",
89    "$av_codec_root_dir/frameworks/native/avcodeclist",
90    "$av_codec_root_dir/frameworks/native/avdemuxer",
91    "$av_codec_root_dir/frameworks/native/avmuxer",
92    "$av_codec_root_dir/frameworks/native/avsource",
93    "$av_codec_root_dir/interfaces/kits/c",
94    "$av_codec_root_dir/services/include",
95    "$av_codec_root_dir/services/dfx/include",
96    "$av_codec_root_dir/services/utils/include",
97    "../../../services/services/common/adaptive_framerate_controller",
98  ]
99
100  defines = []
101  defines += av_codec_defines
102
103  if (target_cpu == "arm64" || is_emulator) {
104    av_codec_plugin_path = "\"/system/lib64/media/av_codec_plugins\""
105    av_codec_path = "\"/system/lib64\""
106  } else {
107    av_codec_plugin_path = "\"/system/lib/media/av_codec_plugins\""
108    av_codec_path = "\"/system/lib\""
109  }
110
111  defines += [
112    "AV_CODEC_PLUGIN_PATH=${av_codec_plugin_path}",
113    "AV_CODEC_PLUGIN_FILE_TAIL=\".z.so\"",
114    "AV_CODEC_PATH=${av_codec_path}",
115  ]
116
117  if (av_codec_client_support_codec) {
118    defines += [ "CLIENT_SUPPORT_CODEC" ]
119  } else {
120    defines += [ "CLIENT_UNSUPPORT_CODEC" ]
121  }
122
123  if (av_codec_enable_special_codec) {
124    defines += [ "AV_CODEC_AUDIO_VIVID_CAPACITY" ]
125  }
126}
127
128config("av_codec_suspend_client_public_config") {
129  include_dirs = [
130    "./",
131    "$av_codec_root_dir/frameworks/native/avcodec",
132    "$av_codec_root_dir/services/dfx/include",
133    "$av_codec_root_dir/services/include",
134    "$av_codec_root_dir/services/utils/include/",
135  ]
136
137  defines = []
138
139  if (target_cpu == "arm64" || is_emulator) {
140    av_codec_plugin_path = "\"/system/lib64/media/av_codec_plugins\""
141    av_codec_path = "\"/system/lib64\""
142  } else {
143    av_codec_plugin_path = "\"/system/lib/media/av_codec_plugins\""
144    av_codec_path = "\"/system/lib\""
145  }
146
147  defines += [
148    "AV_CODEC_PLUGIN_PATH=${av_codec_plugin_path}",
149    "AV_CODEC_PLUGIN_FILE_TAIL=\".z.so\"",
150    "AV_CODEC_PATH=${av_codec_path}",
151  ]
152}
153
154config("av_codec_client_codec_config") {
155  include_dirs = [
156    "$av_codec_root_dir/interfaces/inner_api/native",
157    "$av_codec_root_dir/interfaces/kits/c",
158    "$av_codec_root_dir/services/dfx/include",
159    "$av_codec_root_dir/services/drm_decryptor",
160    "$av_codec_root_dir/services/utils/include/",
161    "$av_codec_root_dir/services/engine/base/include/",
162    "$av_codec_root_dir/services/engine/codec/include/audio/",
163    "$av_codec_root_dir/services/engine/common/include/",
164    "$av_codec_root_dir/services/media_engine/modules/media_codec/",
165    "$av_codec_root_dir/services/media_engine/plugins/ffmpeg_adapter/common/",
166  ]
167}
168
169config("av_codec_client_compile_config") {
170  cflags = [
171    "-fno-exceptions",
172    "-Wall",
173    "-fno-common",
174    "-fstack-protector-strong",
175    "-Wshadow",
176    "-FPIC",
177    "-FS",
178    "-O2",
179    "-D_FORTIFY_SOURCE=2",
180    "-Wformat=2",
181    "-Wdate-time",
182  ]
183
184  cflags_cc = [
185    "-std=c++17",
186    "-fno-rtti",
187  ]
188
189  if (target_cpu == "arm") {
190    cflags += [ "-DBINDER_IPC_32BIT" ]
191  }
192}
193
194ohos_shared_library("av_codec_client") {
195  branch_protector_ret = "pac_ret"
196  install_enable = true
197  public_configs = [
198    ":av_codec_client_local_config",
199    ":av_codec_client_ipc_config",
200    ":av_codec_client_public_config",
201    ":av_codec_packege_include",
202    ":av_codec_client_codec_config",
203  ]
204
205  public_external_deps = [
206    "ffmpeg:libohosffmpeg",
207    "media_foundation:media_foundation",
208  ]
209  sanitize = av_codec_sanitize
210
211  configs = [
212    ":av_codec_packege_include",
213    ":av_codec_client_compile_config",
214    "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules_config",
215  ]
216
217  sources = [
218    "$av_codec_root_dir/frameworks/native/avcodec/avcodec_suspend.cpp",
219    "$av_codec_root_dir/frameworks/native/common/avcodec_errors.cpp",
220    "$av_codec_root_dir/services/dfx/avcodec_dfx_component.cpp",
221    "$av_codec_root_dir/services/services/common/avsharedmemory_ipc.cpp",
222    "$av_codec_root_dir/services/services/sa_avcodec/client/avcodec_client.cpp",
223    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_listener_stub.cpp",
224    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_parcel.cpp",
225    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_service_proxy.cpp",
226  ]
227  if (av_codec_support_codec) {
228    sources += [
229      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_codec_impl.cpp",
230      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_codec_inner_impl.cpp",
231      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_decoder_impl.cpp",
232      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_encoder_impl.cpp",
233      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_video_decoder_impl.cpp",
234      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_video_encoder_impl.cpp",
235      "$av_codec_root_dir/services/services/codec/client/codec_buffer_circular.cpp",
236      "$av_codec_root_dir/services/services/codec/client/codec_client.cpp",
237      "$av_codec_root_dir/services/services/codec/ipc/buffer_converter.cpp",
238      "$av_codec_root_dir/services/services/codec/ipc/codec_listener_stub.cpp",
239      "$av_codec_root_dir/services/services/codec/ipc/codec_service_proxy.cpp",
240    ]
241  }
242  if (av_codec_support_codeclist) {
243    sources += [
244      "$av_codec_root_dir/frameworks/native/avcodeclist/avcodec_info.cpp",
245      "$av_codec_root_dir/frameworks/native/avcodeclist/avcodeclist_impl.cpp",
246      "$av_codec_root_dir/services/services/codeclist/client/codeclist_client.cpp",
247      "$av_codec_root_dir/services/services/codeclist/ipc/codeclist_service_proxy.cpp",
248      "$av_codec_root_dir/services/services/sa_avcodec/ipc/codeclist_parcel.cpp",
249    ]
250  }
251  if (av_codec_client_support_codec) {
252    sources += [
253      "$av_codec_root_dir/services/drm_decryptor/codec_drm_decrypt.cpp",
254      "$av_codec_root_dir/services/engine/codeclist/audio_codeclist_info.cpp",
255      "$av_codec_root_dir/services/engine/codeclist/codec_ability_singleton.cpp",
256      "$av_codec_root_dir/services/engine/codeclist/codeclist_builder.cpp",
257      "$av_codec_root_dir/services/engine/codeclist/codeclist_core.cpp",
258      "$av_codec_root_dir/services/media_engine/plugins/ffmpeg_adapter/common/hdi_codec.cpp",
259      "$av_codec_root_dir/services/services/codec/server/codec_factory.cpp",
260      "$av_codec_root_dir/services/services/codec/server/codec_param_checker.cpp",
261      "$av_codec_root_dir/services/services/codec/server/codec_server.cpp",
262      "$av_codec_root_dir/services/services/codec/server/post_processing/dynamic_controller.cpp",
263      "$av_codec_root_dir/services/services/codec/server/post_processing/dynamic_interface.cpp",
264      "$av_codec_root_dir/services/services/codec/server/post_processing/state_machine.cpp",
265      "$av_codec_root_dir/services/services/codec/server/temporal_scalability.cpp",
266    ]
267  }
268  if (av_codec_support_demuxer) {
269    include_dirs = [
270      "$av_codec_root_dir/services/media_engine/modules",
271      "$av_codec_root_dir/services/media_engine/plugins",
272    ]
273
274    if (target_cpu == "arm64" || is_emulator) {
275      av_codec_plugin_path = "\"/system/lib64/media/av_codec_plugins\""
276    } else {
277      av_codec_plugin_path = "\"/system/lib/media/av_codec_plugins\""
278    }
279
280    if (target_cpu == "arm64" || is_emulator) {
281      oh_file_plugin_path = "\"/system/lib64/media/histreamer_plugins\""
282    } else {
283      oh_file_plugin_path = "\"/system/lib/media/histreamer_plugins\""
284    }
285
286    defines = []
287    defines += av_codec_defines
288    defines += [
289      "AV_CODEC_PLUGIN_PATH=${av_codec_plugin_path}",
290      "AV_CODEC_PLUGIN_FILE_TAIL=\".z.so\"",
291      "OH_FILE_PLUGIN_PATH=${oh_file_plugin_path}",
292    ]
293    sources += [
294      "$av_codec_root_dir/frameworks/native/avdemuxer/avdemuxer_impl.cpp",
295      "$av_codec_root_dir/frameworks/native/avsource/avsource_impl.cpp",
296    ]
297  }
298  if (av_codec_support_muxer) {
299    sources +=
300        [ "$av_codec_root_dir/frameworks/native/avmuxer/avmuxer_impl.cpp" ]
301  }
302  deps = [
303    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
304    "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules",
305  ]
306
307  if (av_codec_client_support_codec) {
308    deps += [ "$av_codec_root_dir/services/engine/codec/audio:av_codec_audio_ffmpeg_codec" ]
309  }
310
311  if (av_codec_support_codeclist) {
312    deps += [ "$av_codec_root_dir/services/engine:av_codec_engine_package" ]
313  }
314
315  deps += [
316    "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules",
317    "../../../services/services/common/adaptive_framerate_controller:adaptive_framerate_controller",
318  ]
319
320  external_deps = [
321    "bounds_checking_function:libsec_static",
322    "c_utils:utils",
323    "drivers_interface_codec:libcodec_proxy_4.0",
324    "graphic_surface:surface",
325    "hilog:libhilog",
326    "ipc:ipc_single",
327    "media_foundation:media_foundation",
328    "qos_manager:qos",
329    "samgr:samgr_proxy",
330  ]
331
332  if (av_codec_support_drm) {
333    external_deps += [ "drm_framework:drm_framework" ]
334  }
335
336  innerapi_tags = [
337    "platformsdk",
338    "sasdk",
339  ]
340
341  subsystem_name = "multimedia"
342  part_name = "av_codec"
343}
344
345ohos_shared_library("av_codec_suspend_client") {
346  branch_protector_ret = "pac_ret"
347  install_enable = true
348  public_configs = [
349    ":av_codec_client_local_config",
350    ":av_codec_client_ipc_config",
351    ":av_codec_suspend_client_public_config",
352    ":av_codec_packege_include",
353    ":av_codec_client_codec_config",
354  ]
355
356  public_external_deps = [ "media_foundation:media_foundation" ]
357  sanitize = av_codec_sanitize
358
359  configs = [
360    ":av_codec_packege_include",
361    ":av_codec_client_compile_config",
362    "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules_config",
363  ]
364
365  sources = [
366    "$av_codec_root_dir/frameworks/native/avcodec/avcodec_suspend.cpp",
367    "$av_codec_root_dir/frameworks/native/common/avcodec_errors.cpp",
368    "$av_codec_root_dir/services/dfx/avcodec_dfx_component.cpp",
369    "$av_codec_root_dir/services/services/common/avsharedmemory_ipc.cpp",
370    "$av_codec_root_dir/services/services/sa_avcodec/client/avcodec_client.cpp",
371    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_listener_stub.cpp",
372    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_parcel.cpp",
373    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_service_proxy.cpp",
374  ]
375
376  deps = [ "$av_codec_root_dir/services/dfx:av_codec_service_dfx" ]
377
378  external_deps = [
379    "c_utils:utils",
380    "hilog:libhilog",
381    "ipc:ipc_single",
382    "media_foundation:media_foundation",
383    "samgr:samgr_proxy",
384  ]
385
386  innerapi_tags = [
387    "platformsdk",
388    "sasdk",
389  ]
390
391  subsystem_name = "multimedia"
392  part_name = "av_codec"
393}
394