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    "graphic_surface:surface",
117    "media_foundation:media_foundation",
118  ]
119
120  external_deps = [
121    "c_utils:utils",
122    "graphic_surface:surface",
123    "hilog:libhilog",
124    "media_foundation:media_foundation",
125    "media_foundation:native_media_core",
126  ]
127  output_extension = "so"
128  subsystem_name = "multimedia"
129  part_name = "av_codec"
130}
131
132ohos_shared_library("native_media_avdemuxer") {
133  install_enable = true
134  sources = [
135    "$av_codec_root_dir/frameworks/native/capi/avdemuxer/native_avdemuxer.cpp",
136  ]
137
138  public_configs = [ ":av_codec_capi_config" ]
139
140  public_external_deps = [
141    "graphic_surface:surface",
142    "media_foundation:media_foundation",
143  ]
144
145  deps = [ "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client" ]
146
147  external_deps = [
148    "c_utils:utils",
149    "graphic_surface:surface",
150    "hilog:libhilog",
151    "media_foundation:media_foundation",
152    "media_foundation:native_media_core",
153  ]
154  output_extension = "so"
155  subsystem_name = "multimedia"
156  part_name = "av_codec"
157}
158
159ohos_shared_library("native_media_avsource") {
160  install_enable = true
161  sources = [
162    "$av_codec_root_dir/frameworks/native/capi/avsource/native_avsource.cpp",
163  ]
164
165  public_configs = [ ":av_codec_capi_config" ]
166
167  public_external_deps = [
168    "graphic_surface:surface",
169    "media_foundation:media_foundation",
170  ]
171
172  deps = [ "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client" ]
173
174  external_deps = [
175    "c_utils:utils",
176    "graphic_surface:surface",
177    "hilog:libhilog",
178    "media_foundation:media_foundation",
179    "media_foundation:native_media_core",
180  ]
181  output_extension = "so"
182  subsystem_name = "multimedia"
183  part_name = "av_codec"
184}
185
186ohos_shared_library("native_media_codecbase") {
187  install_enable = true
188  sources = [
189    "$av_codec_root_dir/frameworks/native/capi/avcodec/native_avcodec_base.cpp",
190  ]
191  if (av_codec_support_codeclist) {
192    sources += [ "$av_codec_root_dir/frameworks/native/capi/common/native_avcapability.cpp" ]
193  }
194
195  public_configs = [ ":av_codec_capi_config" ]
196
197  public_external_deps = [
198    "graphic_surface:surface",
199    "media_foundation:media_foundation",
200  ]
201
202  deps = [
203    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
204    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
205  ]
206  external_deps = [
207    "c_utils:utils",
208    "graphic_surface:surface",
209    "hilog:libhilog",
210    "media_foundation:media_foundation",
211    "media_foundation:native_media_core",
212  ]
213  output_extension = "so"
214  subsystem_name = "multimedia"
215  part_name = "av_codec"
216}
217
218ohos_shared_library("native_media_acodec") {
219  install_enable = true
220  sources = [
221    "$av_codec_root_dir/frameworks/native/capi/avcodec/native_audio_codec.cpp",
222  ]
223
224  public_configs = [ ":av_codec_capi_config" ]
225
226  public_external_deps = [
227    "graphic_surface:surface",
228    "media_foundation:media_foundation",
229  ]
230
231  deps = [
232    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
233    "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
234    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
235  ]
236
237  external_deps = [
238    "c_utils:utils",
239    "graphic_surface:surface",
240    "hilog:libhilog",
241    "media_foundation:media_foundation",
242    "media_foundation:native_media_core",
243  ]
244  if (av_codec_support_drm) {
245    external_deps += [
246      "drm_framework:drm_framework",
247      "drm_framework:native_drm",
248    ]
249  }
250  innerapi_tags = [ "ndk" ]
251  output_extension = "so"
252  subsystem_name = "multimedia"
253  part_name = "av_codec"
254}
255
256ohos_shared_library("native_media_adec") {
257  install_enable = true
258  sources = [ "$av_codec_root_dir/frameworks/native/capi/avcodec/native_audio_decoder.cpp" ]
259
260  public_configs = [ ":av_codec_capi_config" ]
261
262  public_external_deps = [
263    "graphic_surface:surface",
264    "media_foundation:media_foundation",
265  ]
266
267  deps = [
268    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
269    "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
270    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
271  ]
272
273  external_deps = [
274    "c_utils:utils",
275    "hilog:libhilog",
276    "media_foundation:media_foundation",
277    "media_foundation:native_media_core",
278  ]
279  output_extension = "so"
280  subsystem_name = "multimedia"
281  part_name = "av_codec"
282}
283
284ohos_shared_library("native_media_aenc") {
285  install_enable = true
286  sources = [ "$av_codec_root_dir/frameworks/native/capi/avcodec/native_audio_encoder.cpp" ]
287
288  public_configs = [ ":av_codec_capi_config" ]
289
290  public_external_deps = [
291    "graphic_surface:surface",
292    "media_foundation:media_foundation",
293  ]
294
295  deps = [
296    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
297    "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
298    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
299  ]
300
301  external_deps = [
302    "c_utils:utils",
303    "hilog:libhilog",
304    "media_foundation:media_foundation",
305    "media_foundation:native_media_core",
306  ]
307  output_extension = "so"
308  subsystem_name = "multimedia"
309  part_name = "av_codec"
310}
311
312ohos_shared_library("native_media_vdec") {
313  install_enable = true
314  sources = [ "$av_codec_root_dir/frameworks/native/capi/avcodec/native_video_decoder.cpp" ]
315
316  public_configs = [ ":av_codec_capi_config" ]
317
318  public_external_deps = [
319    "graphic_surface:surface",
320    "media_foundation:media_foundation",
321  ]
322
323  deps = [
324    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
325    "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
326    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
327  ]
328
329  external_deps = [
330    "c_utils:utils",
331    "graphic_surface:surface",
332    "hilog:libhilog",
333    "media_foundation:media_foundation",
334    "media_foundation:native_media_core",
335  ]
336
337  if (av_codec_support_drm) {
338    external_deps += [
339      "drm_framework:drm_framework",
340      "drm_framework:native_drm",
341    ]
342  }
343  output_extension = "so"
344  subsystem_name = "multimedia"
345  part_name = "av_codec"
346}
347
348ohos_shared_library("native_media_venc") {
349  install_enable = true
350  sources = [ "$av_codec_root_dir/frameworks/native/capi/avcodec/native_video_encoder.cpp" ]
351
352  public_configs = [ ":av_codec_capi_config" ]
353
354  public_external_deps = [
355    "graphic_surface:surface",
356    "media_foundation:media_foundation",
357  ]
358
359  deps = [
360    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
361    "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
362    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
363  ]
364
365  external_deps = [
366    "c_utils:utils",
367    "graphic_surface:surface",
368    "hilog:libhilog",
369    "media_foundation:media_foundation",
370    "media_foundation:native_media_core",
371  ]
372  output_extension = "so"
373  subsystem_name = "multimedia"
374  part_name = "av_codec"
375}
376
377ohos_shared_library("native_media_avcencinfo") {
378  install_enable = true
379  sources = [
380    "$av_codec_root_dir/frameworks/native/capi/avcencinfo/native_cencinfo.cpp",
381  ]
382
383  sanitize = av_codec_sanitize
384
385  public_configs = [ ":av_cenc_info_capi_config" ]
386
387  public_external_deps = [ "media_foundation:media_foundation" ]
388
389  deps = [
390    "$av_codec_root_dir/interfaces/inner_api/native:av_codec_client",
391    "$av_codec_root_dir/interfaces/kits/c:native_media_codecbase",
392    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
393  ]
394
395  external_deps = [
396    "c_utils:utils",
397    "hilog:libhilog",
398    "media_foundation:media_foundation",
399    "media_foundation:native_media_core",
400  ]
401  output_extension = "so"
402  innerapi_tags = [ "ndk" ]
403  subsystem_name = "multimedia"
404  part_name = "av_codec"
405}
406