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
17group("capi_packages") {
18  deps = []
19  if (av_codec_support_capi) {
20    deps += [
21      "$av_codec_root_dir/interfaces/kits/c:native_media_acodec",
22      "$av_codec_root_dir/interfaces/kits/c:native_media_adec",
23      "$av_codec_root_dir/interfaces/kits/c:native_media_aenc",
24      "$av_codec_root_dir/interfaces/kits/c:native_media_avcencinfo",
25      "$av_codec_root_dir/interfaces/kits/c:native_media_avdemuxer",
26      "$av_codec_root_dir/interfaces/kits/c:native_media_avmuxer",
27      "$av_codec_root_dir/interfaces/kits/c:native_media_avsource",
28      "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
29      "$av_codec_root_dir/interfaces/kits/c:native_media_vdec",
30      "$av_codec_root_dir/interfaces/kits/c:native_media_venc",
31    ]
32  }
33}
34
35config("av_codec_capi_config") {
36  include_dirs = [
37    "$av_codec_root_dir/frameworks/native/capi/common",
38    "$av_codec_root_dir/interfaces/inner_api/native",
39    "$av_codec_root_dir/interfaces/kits/c",
40    "$av_codec_root_dir/services/dfx/include",
41    "$av_codec_root_dir/services/utils/include",
42    "$drm_framework_root_dir/interfaces/kits/c/drm_capi",
43    "$drm_framework_root_dir/interfaces/kits/c/drm_capi/common",
44    "$drm_framework_root_dir/interfaces/kits/c/drm_capi/include",
45  ]
46
47  cflags = [
48    "-fno-exceptions",
49    "-Wall",
50    "-fno-common",
51    "-fstack-protector-all",
52    "-Wshadow",
53    "-FPIC",
54    "-FS",
55    "-O2",
56    "-D_FORTIFY_SOURCE=2",
57    "-Wformat=2",
58    "-Wdate-time",
59  ]
60
61  cflags_cc = [
62    "-std=c++17",
63    "-fno-rtti",
64  ]
65
66  defines = []
67  if (av_codec_support_drm) {
68    defines += [ "SUPPORT_DRM" ]
69  }
70}
71
72config("av_cenc_info_capi_config") {
73  include_dirs = [
74    "$av_codec_root_dir/frameworks/native/capi/common",
75    "$av_codec_root_dir/interfaces/inner_api/native",
76    "$av_codec_root_dir/interfaces/kits/c",
77    "$av_codec_root_dir/services/dfx/include",
78    "$av_codec_root_dir/services/utils/include",
79  ]
80
81  cflags = [
82    "-fno-exceptions",
83    "-Wall",
84    "-fno-common",
85    "-fstack-protector-all",
86    "-Wshadow",
87    "-FPIC",
88    "-FS",
89    "-O2",
90    "-D_FORTIFY_SOURCE=2",
91    "-Wformat=2",
92    "-Wdate-time",
93  ]
94
95  cflags_cc = [
96    "-std=c++17",
97    "-fno-rtti",
98  ]
99
100  defines = []
101}
102
103ohos_shared_library("native_media_avmuxer") {
104  install_enable = true
105  sources =
106      [ "$av_codec_root_dir/frameworks/native/capi/avmuxer/native_avmuxer.cpp" ]
107
108  public_configs = [ ":av_codec_capi_config" ]
109
110  deps = [
111    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
112    "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
113  ]
114
115  public_external_deps = [
116    "drm_framework:native_drm",
117    "graphic_surface:surface",
118    "media_foundation:media_foundation",
119  ]
120
121  external_deps = [
122    "c_utils:utils",
123    "graphic_surface:surface",
124    "hilog:libhilog",
125    "media_foundation:media_foundation",
126    "media_foundation:native_media_core",
127  ]
128  output_extension = "so"
129  subsystem_name = "multimedia"
130  part_name = "av_codec"
131}
132
133ohos_shared_library("native_media_avdemuxer") {
134  install_enable = true
135  sources = [
136    "$av_codec_root_dir/frameworks/native/capi/avdemuxer/native_avdemuxer.cpp",
137  ]
138
139  public_configs = [ ":av_codec_capi_config" ]
140
141  public_external_deps = [
142    "drm_framework:native_drm",
143    "graphic_surface:surface",
144    "media_foundation:media_foundation",
145  ]
146
147  deps = [ "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client" ]
148
149  external_deps = [
150    "c_utils:utils",
151    "graphic_surface:surface",
152    "hilog:libhilog",
153    "media_foundation:media_foundation",
154    "media_foundation:native_media_core",
155  ]
156  output_extension = "so"
157  subsystem_name = "multimedia"
158  part_name = "av_codec"
159}
160
161ohos_shared_library("native_media_avsource") {
162  install_enable = true
163  sources = [
164    "$av_codec_root_dir/frameworks/native/capi/avsource/native_avsource.cpp",
165  ]
166
167  public_configs = [ ":av_codec_capi_config" ]
168
169  public_external_deps = [
170    "drm_framework:native_drm",
171    "graphic_surface:surface",
172    "media_foundation:media_foundation",
173  ]
174
175  deps = [ "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client" ]
176
177  external_deps = [
178    "c_utils:utils",
179    "graphic_surface:surface",
180    "hilog:libhilog",
181    "media_foundation:media_foundation",
182    "media_foundation:native_media_core",
183  ]
184  output_extension = "so"
185  subsystem_name = "multimedia"
186  part_name = "av_codec"
187}
188
189ohos_shared_library("native_media_codecbase") {
190  install_enable = true
191  sources = [
192    "$av_codec_root_dir/frameworks/native/capi/avcodec/native_avcodec_base.cpp",
193  ]
194  if (av_codec_support_codeclist) {
195    sources += [ "$av_codec_root_dir/frameworks/native/capi/common/native_avcapability.cpp" ]
196  }
197
198  public_configs = [ ":av_codec_capi_config" ]
199
200  public_external_deps = [
201    "drm_framework:native_drm",
202    "graphic_surface:surface",
203    "media_foundation:media_foundation",
204  ]
205
206  deps = [
207    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
208    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
209  ]
210  external_deps = [
211    "c_utils:utils",
212    "graphic_surface:surface",
213    "hilog:libhilog",
214    "media_foundation:media_foundation",
215    "media_foundation:native_media_core",
216  ]
217  output_extension = "so"
218  subsystem_name = "multimedia"
219  part_name = "av_codec"
220}
221
222ohos_shared_library("native_media_acodec") {
223  install_enable = true
224  sources = [
225    "$av_codec_root_dir/frameworks/native/capi/avcodec/native_audio_codec.cpp",
226  ]
227
228  public_configs = [ ":av_codec_capi_config" ]
229
230  public_external_deps = [
231    "drm_framework:native_drm",
232    "graphic_surface:surface",
233    "media_foundation:media_foundation",
234  ]
235
236  deps = [
237    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
238    "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
239    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
240  ]
241
242  external_deps = [
243    "c_utils:utils",
244    "graphic_surface:surface",
245    "hilog:libhilog",
246    "media_foundation:media_foundation",
247    "media_foundation:native_media_core",
248  ]
249  if (av_codec_support_drm) {
250    external_deps += [
251      "drm_framework:drm_framework",
252      "drm_framework:native_drm",
253    ]
254  }
255  innerapi_tags = [ "ndk" ]
256  output_extension = "so"
257  subsystem_name = "multimedia"
258  part_name = "av_codec"
259}
260
261ohos_shared_library("native_media_adec") {
262  install_enable = true
263  sources = [ "$av_codec_root_dir/frameworks/native/capi/avcodec/native_audio_decoder.cpp" ]
264
265  public_configs = [ ":av_codec_capi_config" ]
266
267  public_external_deps = [
268    "drm_framework:native_drm",
269    "graphic_surface:surface",
270    "media_foundation:media_foundation",
271  ]
272
273  deps = [
274    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
275    "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
276    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
277  ]
278
279  external_deps = [
280    "c_utils:utils",
281    "hilog:libhilog",
282    "media_foundation:media_foundation",
283    "media_foundation:native_media_core",
284  ]
285  output_extension = "so"
286  subsystem_name = "multimedia"
287  part_name = "av_codec"
288}
289
290ohos_shared_library("native_media_aenc") {
291  install_enable = true
292  sources = [ "$av_codec_root_dir/frameworks/native/capi/avcodec/native_audio_encoder.cpp" ]
293
294  public_configs = [ ":av_codec_capi_config" ]
295
296  public_external_deps = [
297    "drm_framework:native_drm",
298    "graphic_surface:surface",
299    "media_foundation:media_foundation",
300  ]
301
302  deps = [
303    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
304    "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
305    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
306  ]
307
308  external_deps = [
309    "c_utils:utils",
310    "hilog:libhilog",
311    "media_foundation:media_foundation",
312    "media_foundation:native_media_core",
313  ]
314  output_extension = "so"
315  subsystem_name = "multimedia"
316  part_name = "av_codec"
317}
318
319ohos_shared_library("native_media_vdec") {
320  install_enable = true
321  sources = [ "$av_codec_root_dir/frameworks/native/capi/avcodec/native_video_decoder.cpp" ]
322
323  public_configs = [ ":av_codec_capi_config" ]
324
325  public_external_deps = [
326    "drm_framework:native_drm",
327    "graphic_surface:surface",
328    "media_foundation:media_foundation",
329  ]
330
331  deps = [
332    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
333    "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
334    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
335  ]
336
337  external_deps = [
338    "c_utils:utils",
339    "graphic_surface:surface",
340    "hilog:libhilog",
341    "media_foundation:media_foundation",
342    "media_foundation:native_media_core",
343  ]
344
345  if (av_codec_support_drm) {
346    external_deps += [
347      "drm_framework:drm_framework",
348      "drm_framework:native_drm",
349    ]
350  }
351  output_extension = "so"
352  subsystem_name = "multimedia"
353  part_name = "av_codec"
354}
355
356ohos_shared_library("native_media_venc") {
357  install_enable = true
358  sources = [ "$av_codec_root_dir/frameworks/native/capi/avcodec/native_video_encoder.cpp" ]
359
360  public_configs = [ ":av_codec_capi_config" ]
361
362  public_external_deps = [
363    "drm_framework:native_drm",
364    "graphic_surface:surface",
365    "media_foundation:media_foundation",
366  ]
367
368  deps = [
369    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
370    "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
371    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
372  ]
373
374  external_deps = [
375    "c_utils:utils",
376    "graphic_surface:surface",
377    "hilog:libhilog",
378    "media_foundation:media_foundation",
379    "media_foundation:native_media_core",
380  ]
381  output_extension = "so"
382  subsystem_name = "multimedia"
383  part_name = "av_codec"
384}
385
386ohos_shared_library("native_media_avcencinfo") {
387  install_enable = true
388  sources = [
389    "$av_codec_root_dir/frameworks/native/capi/avcencinfo/native_cencinfo.cpp",
390  ]
391
392  sanitize = av_codec_sanitize
393
394  public_configs = [ ":av_cenc_info_capi_config" ]
395
396  public_external_deps = [ "media_foundation:media_foundation" ]
397
398  deps = [
399    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
400    "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
401    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
402  ]
403
404  external_deps = [
405    "c_utils:utils",
406    "hilog:libhilog",
407    "media_foundation:media_foundation",
408    "media_foundation:native_media_core",
409  ]
410  output_extension = "so"
411  innerapi_tags = [ "ndk" ]
412  subsystem_name = "multimedia"
413  part_name = "av_codec"
414}
415