• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2023 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package {
16    default_applicable_licenses: ["external_libdav1d_license"],
17}
18
19license {
20    name: "external_libdav1d_license",
21    visibility: [":__subpackages__"],
22    license_kinds: [
23        "SPDX-license-identifier-Apache-2.0",
24    ],
25    license_text: [
26        "LICENSE",
27    ],
28}
29
30cc_defaults {
31    name: "libdav1d_defaults",
32    host_supported: true,
33    vendor_available: true,
34
35    export_include_dirs: [
36        "include",
37    ],
38
39    local_include_dirs: [
40        "include",
41        "include/common",
42        "include/dav1d",
43        "src",
44    ],
45
46    cflags: [
47        "-D_FILE_OFFSET_BITS=64",
48        "-D_ISOC99_SOURCE",
49        "-Wall",
50        "-Werror",
51        "-Werror=vla",
52        "-Wextra",
53        "-Winvalid-pch",
54        "-Wno-error=unused-parameter",
55        "-Wno-incompatible-pointer-types",
56        "-Wno-missing-field-initializers",
57        "-Wundef",
58        "-fPIC",
59        "-ffast-math",
60        "-std=c99",
61    ],
62
63    arch: {
64        arm64: {
65            local_include_dirs: [
66                "config/arm64",
67                "src/arm",
68            ],
69        },
70
71        arm: {
72            local_include_dirs: [
73                "config/arm32",
74                "src/arm",
75            ],
76        },
77
78        x86_64: {
79            local_include_dirs: [
80                "config/x86_64",
81                "src/x86",
82            ],
83        },
84
85        x86: {
86            local_include_dirs: [
87                "config/x86_32",
88                "src/x86",
89            ],
90        },
91
92        riscv64: {
93            local_include_dirs: [
94                "config/riscv64",
95            ],
96        },
97    },
98
99    sanitize: {
100        integer_overflow: true,
101        misc_undefined: ["bounds"],
102        cfi: true,
103        config: {
104            cfi_assembly_support: true,
105        },
106        blocklist: "libdav1d_blocklist.txt",
107    },
108
109    min_sdk_version: "29",
110    apex_available: [
111        "//apex_available:platform",
112        "com.android.media.swcodec",
113    ],
114}
115
116libdav1d_tmpl_srcs = [
117    "src/cdef_apply_tmpl.c",
118    "src/cdef_tmpl.c",
119    "src/fg_apply_tmpl.c",
120    "src/filmgrain_tmpl.c",
121    "src/ipred_prepare_tmpl.c",
122    "src/ipred_tmpl.c",
123    "src/itx_tmpl.c",
124    "src/lf_apply_tmpl.c",
125    "src/loopfilter_tmpl.c",
126    "src/looprestoration_tmpl.c",
127    "src/lr_apply_tmpl.c",
128    "src/mc_tmpl.c",
129    "src/recon_tmpl.c",
130]
131
132cc_library_static {
133    name: "libdav1d_8bit",
134    defaults: [
135        "libdav1d_defaults",
136    ],
137    cflags: [
138        "-DBITDEPTH=8",
139    ],
140    srcs: libdav1d_tmpl_srcs,
141
142    arch: {
143        arm64: {
144            srcs: [
145                "src/arm/64/cdef.S",
146                "src/arm/64/filmgrain.S",
147                "src/arm/64/ipred.S",
148                "src/arm/64/itx.S",
149                "src/arm/64/loopfilter.S",
150                "src/arm/64/looprestoration.S",
151                "src/arm/64/mc.S",
152            ],
153        },
154
155        arm: {
156            srcs: [
157                "src/arm/32/cdef.S",
158                "src/arm/32/filmgrain.S",
159                "src/arm/32/ipred.S",
160                "src/arm/32/itx.S",
161                "src/arm/32/loopfilter.S",
162                "src/arm/32/looprestoration.S",
163                "src/arm/32/mc.S",
164            ],
165        },
166    },
167}
168
169cc_library_static {
170    name: "libdav1d_16bit",
171    defaults: [
172        "libdav1d_defaults",
173    ],
174    cflags: [
175        "-DBITDEPTH=16",
176    ],
177    srcs: libdav1d_tmpl_srcs,
178
179    arch: {
180        arm64: {
181            srcs: [
182                "src/arm/64/cdef16.S",
183                "src/arm/64/filmgrain16.S",
184                "src/arm/64/ipred16.S",
185                "src/arm/64/itx16.S",
186                "src/arm/64/loopfilter16.S",
187                "src/arm/64/looprestoration16.S",
188                "src/arm/64/mc16.S",
189            ],
190        },
191
192        arm: {
193            srcs: [
194                "src/arm/32/cdef16.S",
195                "src/arm/32/filmgrain16.S",
196                "src/arm/32/ipred16.S",
197                "src/arm/32/itx16.S",
198                "src/arm/32/loopfilter16.S",
199                "src/arm/32/looprestoration16.S",
200                "src/arm/32/mc16.S",
201            ],
202        },
203    },
204}
205
206cc_library_static {
207    name: "libdav1d",
208    defaults: [
209        "libdav1d_defaults",
210    ],
211
212    srcs: [
213        "src/cdf.c",
214        "src/cpu.c",
215        "src/data.c",
216        "src/decode.c",
217        "src/dequant_tables.c",
218        "src/getbits.c",
219        "src/intra_edge.c",
220        "src/itx_1d.c",
221        "src/lf_mask.c",
222        "src/lib.c",
223        "src/log.c",
224        "src/mem.c",
225        "src/msac.c",
226        "src/obu.c",
227        "src/pal.c",
228        "src/picture.c",
229        "src/qm.c",
230        "src/ref.c",
231        "src/refmvs.c",
232        "src/scan.c",
233        "src/tables.c",
234        "src/thread_task.c",
235        "src/warpmv.c",
236        "src/wedge.c",
237    ],
238
239    arch: {
240        arm64: {
241            srcs: [
242                "src/arm/64/looprestoration_common.S",
243                "src/arm/64/msac.S",
244                "src/arm/64/refmvs.S",
245                "src/arm/cpu.c",
246            ],
247        },
248
249        arm: {
250            srcs: [
251                "src/arm/32/looprestoration_common.S",
252                "src/arm/32/msac.S",
253                "src/arm/32/refmvs.S",
254                "src/arm/cpu.c",
255            ],
256        },
257
258        x86_64: {
259            srcs: [
260                "src/x86/cpu.c",
261            ],
262        },
263
264        x86: {
265            srcs: [
266                "src/x86/cpu.c",
267            ],
268        },
269    },
270
271    whole_static_libs: [
272        "libdav1d_8bit",
273        "libdav1d_16bit",
274    ],
275}
276
277cc_defaults {
278    name: "dav1d_test_defaults",
279    host_supported: true,
280
281    cflags: [
282        "-Wno-error=unused-parameter",
283    ],
284
285    local_include_dirs: [
286        "include",
287        "include/common",
288        "include/dav1d",
289        "src",
290        "tests/libfuzzer",
291        "tools",
292        "tools/input",
293        "tools/output",
294    ],
295
296    arch: {
297        arm64: {
298            local_include_dirs: [
299                "config/arm64",
300            ],
301
302        },
303        arm: {
304            local_include_dirs: [
305                "config/arm32",
306            ],
307
308        },
309        x86_64: {
310            local_include_dirs: [
311                "config/x86_64",
312            ],
313
314        },
315        x86: {
316            local_include_dirs: [
317                "config/x86_32",
318            ],
319
320        },
321        riscv64: {
322            local_include_dirs: [
323                "config/riscv64",
324            ],
325
326        },
327    },
328
329    static_libs: [
330        "libdav1d",
331    ],
332}
333
334cc_defaults {
335    name: "dav1d_fuzzer_defaults",
336    defaults: [
337        "dav1d_test_defaults",
338    ],
339    srcs: [
340        "tests/libfuzzer/dav1d_fuzzer.c",
341    ],
342
343    fuzz_config: {
344        cc: ["kyslov@google.com"],
345        componentid: 25690,
346    },
347}
348
349cc_fuzz {
350    name: "dav1d_fuzzer",
351    defaults: [
352        "dav1d_fuzzer_defaults",
353    ],
354}
355
356cc_fuzz {
357    name: "dav1d_fuzzer_mt",
358    defaults: [
359        "dav1d_fuzzer_defaults",
360    ],
361
362    cflags: [
363        "-DDAV1D_MT_FUZZING=1",
364    ],
365}
366
367cc_binary {
368    name: "dav1d",
369    defaults: [
370        "dav1d_test_defaults",
371    ],
372
373    srcs: [
374        "tools/dav1d.c",
375        "tools/dav1d_cli_parse.c",
376        "tools/input/annexb.c",
377        "tools/input/input.c",
378        "tools/input/ivf.c",
379        "tools/input/section5.c",
380        "tools/output/md5.c",
381        "tools/output/null.c",
382        "tools/output/output.c",
383        "tools/output/y4m2.c",
384        "tools/output/yuv.c",
385    ],
386}
387