• 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  ]
98
99  defines = []
100  defines += av_codec_defines
101
102  if (target_cpu == "arm64" || is_emulator) {
103    av_codec_plugin_path = "\"/system/lib64/media/av_codec_plugins\""
104    av_codec_path = "\"/system/lib64\""
105  } else {
106    av_codec_plugin_path = "\"/system/lib/media/av_codec_plugins\""
107    av_codec_path = "\"/system/lib\""
108  }
109
110  defines += [
111    "AV_CODEC_PLUGIN_PATH=${av_codec_plugin_path}",
112    "AV_CODEC_PLUGIN_FILE_TAIL=\".z.so\"",
113    "AV_CODEC_PATH=${av_codec_path}",
114  ]
115
116  if (av_codec_client_support_codec) {
117    defines += [ "CLIENT_SUPPORT_CODEC" ]
118  } else {
119    defines += [ "CLIENT_UNSUPPORT_CODEC" ]
120  }
121
122  if (av_codec_enable_special_codec) {
123    defines += [ "AV_CODEC_AUDIO_VIVID_CAPACITY" ]
124  }
125}
126
127config("av_codec_client_codec_config") {
128  include_dirs = [
129    "$av_codec_root_dir/interfaces/inner_api/native",
130    "$av_codec_root_dir/interfaces/kits/c",
131    "$av_codec_root_dir/services/dfx/include",
132    "$av_codec_root_dir/services/drm_decryptor",
133    "$av_codec_root_dir/services/utils/include/",
134    "$av_codec_root_dir/services/engine/base/include/",
135    "$av_codec_root_dir/services/engine/codec/include/audio/",
136    "$av_codec_root_dir/services/engine/common/include/",
137    "$av_codec_root_dir/services/media_engine/modules/media_codec/",
138    "$av_codec_root_dir/services/media_engine/plugins/ffmpeg_adapter/common/",
139  ]
140}
141
142config("av_codec_client_compile_config") {
143  cflags = [
144    "-fno-exceptions",
145    "-Wall",
146    "-fno-common",
147    "-fstack-protector-strong",
148    "-Wshadow",
149    "-FPIC",
150    "-FS",
151    "-O2",
152    "-D_FORTIFY_SOURCE=2",
153    "-Wformat=2",
154    "-Wdate-time",
155  ]
156
157  cflags_cc = [
158    "-std=c++17",
159    "-fno-rtti",
160  ]
161
162  if (target_cpu == "arm") {
163    cflags += [ "-DBINDER_IPC_32BIT" ]
164  }
165}
166
167ohos_shared_library("av_codec_client") {
168  branch_protector_ret = "pac_ret"
169  install_enable = true
170  public_configs = [
171    ":av_codec_client_local_config",
172    ":av_codec_client_ipc_config",
173    ":av_codec_client_public_config",
174    ":av_codec_packege_include",
175    ":av_codec_client_codec_config",
176  ]
177
178  public_external_deps = [
179    "ffmpeg:libohosffmpeg",
180    "media_foundation:media_foundation",
181  ]
182  sanitize = av_codec_sanitize
183
184  configs = [
185    ":av_codec_packege_include",
186    ":av_codec_client_compile_config",
187    "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules_config",
188  ]
189
190  sources = [
191    "$av_codec_root_dir/frameworks/native/common/avcodec_errors.cpp",
192    "$av_codec_root_dir/services/dfx/avcodec_dfx_component.cpp",
193    "$av_codec_root_dir/services/services/common/avsharedmemory_ipc.cpp",
194    "$av_codec_root_dir/services/services/sa_avcodec/client/avcodec_client.cpp",
195    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_listener_stub.cpp",
196    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_parcel.cpp",
197    "$av_codec_root_dir/services/services/sa_avcodec/ipc/avcodec_service_proxy.cpp",
198  ]
199  if (av_codec_support_codec) {
200    sources += [
201      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_codec_impl.cpp",
202      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_codec_inner_impl.cpp",
203      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_decoder_impl.cpp",
204      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_audio_encoder_impl.cpp",
205      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_video_decoder_impl.cpp",
206      "$av_codec_root_dir/frameworks/native/avcodec/avcodec_video_encoder_impl.cpp",
207      "$av_codec_root_dir/services/services/codec/client/codec_client.cpp",
208      "$av_codec_root_dir/services/services/codec/ipc/buffer_converter.cpp",
209      "$av_codec_root_dir/services/services/codec/ipc/codec_listener_stub.cpp",
210      "$av_codec_root_dir/services/services/codec/ipc/codec_service_proxy.cpp",
211    ]
212  }
213  if (av_codec_support_codeclist) {
214    sources += [
215      "$av_codec_root_dir/frameworks/native/avcodeclist/avcodec_info.cpp",
216      "$av_codec_root_dir/frameworks/native/avcodeclist/avcodeclist_impl.cpp",
217      "$av_codec_root_dir/services/services/codeclist/client/codeclist_client.cpp",
218      "$av_codec_root_dir/services/services/codeclist/ipc/codeclist_service_proxy.cpp",
219      "$av_codec_root_dir/services/services/sa_avcodec/ipc/codeclist_parcel.cpp",
220    ]
221  }
222  if (av_codec_client_support_codec) {
223    sources += [
224      "$av_codec_root_dir/services/drm_decryptor/codec_drm_decrypt.cpp",
225      "$av_codec_root_dir/services/engine/codeclist/audio_codeclist_info.cpp",
226      "$av_codec_root_dir/services/engine/codeclist/codec_ability_singleton.cpp",
227      "$av_codec_root_dir/services/engine/codeclist/codeclist_builder.cpp",
228      "$av_codec_root_dir/services/engine/codeclist/codeclist_core.cpp",
229      "$av_codec_root_dir/services/media_engine/plugins/ffmpeg_adapter/common/hdi_codec.cpp",
230      "$av_codec_root_dir/services/services/codec/server/codec_factory.cpp",
231      "$av_codec_root_dir/services/services/codec/server/codec_param_checker.cpp",
232      "$av_codec_root_dir/services/services/codec/server/codec_server.cpp",
233      "$av_codec_root_dir/services/services/codec/server/post_processing/dynamic_controller.cpp",
234      "$av_codec_root_dir/services/services/codec/server/post_processing/dynamic_interface.cpp",
235      "$av_codec_root_dir/services/services/codec/server/post_processing/state_machine.cpp",
236      "$av_codec_root_dir/services/services/codec/server/temporal_scalability.cpp",
237    ]
238  }
239  if (av_codec_support_demuxer) {
240    include_dirs = [
241      "$av_codec_root_dir/services/media_engine/modules",
242      "$av_codec_root_dir/services/media_engine/plugins",
243    ]
244
245    if (target_cpu == "arm64" || is_emulator) {
246      av_codec_plugin_path = "\"/system/lib64/media/av_codec_plugins\""
247    } else {
248      av_codec_plugin_path = "\"/system/lib/media/av_codec_plugins\""
249    }
250
251    if (target_cpu == "arm64" || is_emulator) {
252      oh_file_plugin_path = "\"/system/lib64/media/histreamer_plugins\""
253    } else {
254      oh_file_plugin_path = "\"/system/lib/media/histreamer_plugins\""
255    }
256
257    defines = []
258    defines += av_codec_defines
259    defines += [
260      "AV_CODEC_PLUGIN_PATH=${av_codec_plugin_path}",
261      "AV_CODEC_PLUGIN_FILE_TAIL=\".z.so\"",
262      "OH_FILE_PLUGIN_PATH=${oh_file_plugin_path}",
263    ]
264    sources += [
265      "$av_codec_root_dir/frameworks/native/avdemuxer/avdemuxer_impl.cpp",
266      "$av_codec_root_dir/frameworks/native/avsource/avsource_impl.cpp",
267    ]
268  }
269  if (av_codec_support_muxer) {
270    sources +=
271        [ "$av_codec_root_dir/frameworks/native/avmuxer/avmuxer_impl.cpp" ]
272  }
273  deps = [
274    "$av_codec_root_dir/services/dfx:av_codec_service_dfx",
275    "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules",
276  ]
277
278  if (av_codec_client_support_codec) {
279    deps += [ "$av_codec_root_dir/services/engine/codec/audio:av_codec_audio_ffmpeg_codec" ]
280  }
281
282  if (av_codec_support_codeclist) {
283    deps += [ "$av_codec_root_dir/services/engine:av_codec_engine_package" ]
284  }
285
286  deps += [ "$av_codec_root_dir/services/media_engine/modules:av_codec_media_engine_modules" ]
287
288  external_deps = [
289    "bounds_checking_function:libsec_static",
290    "c_utils:utils",
291    "drivers_interface_codec:libcodec_proxy_3.0",
292    "graphic_surface:surface",
293    "hilog:libhilog",
294    "ipc:ipc_single",
295    "media_foundation:media_foundation",
296    "qos_manager:qos",
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