• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2019 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_libgav1_license"],
17}
18
19// Added automatically by a large-scale-change
20// See: http://go/android-license-faq
21license {
22    name: "external_libgav1_license",
23    visibility: [":__subpackages__"],
24    license_kinds: [
25        "SPDX-license-identifier-Apache-2.0",
26    ],
27    license_text: [
28        "LICENSE",
29    ],
30}
31
32bug_component_id = 324837
33
34fuzz_email_cc = ["jzern@google.com"]
35
36cc_library_static {
37    name: "libgav1",
38    host_supported: true,
39    vendor_available: true,
40
41    export_include_dirs: [
42        ".",
43        "src",
44    ],
45
46    cflags: [
47        "-DLIBGAV1_MAX_BITDEPTH=12",
48        "-DLIBGAV1_THREADPOOL_USE_STD_MUTEX",
49        "-O2",
50        "-Wall",
51        "-Werror",
52        "-Wextra",
53    ],
54
55    local_include_dirs: [
56        ".",
57    ],
58
59    // Note: if optimizations are required for x86 the avx2 & sse4 files should
60    // be split to their own targets to receive the correct flagging. All files
61    // in the library can be built for any target without producing empty
62    // object files.
63    srcs: [
64        "src/buffer_pool.cc",
65        "src/decoder.cc",
66        "src/decoder_impl.cc",
67        "src/decoder_settings.cc",
68        "src/dsp/arm/average_blend_neon.cc",
69        "src/dsp/arm/cdef_neon.cc",
70        "src/dsp/arm/convolve_10bit_neon.cc",
71        "src/dsp/arm/convolve_neon.cc",
72        "src/dsp/arm/distance_weighted_blend_neon.cc",
73        "src/dsp/arm/film_grain_neon.cc",
74        "src/dsp/arm/intra_edge_neon.cc",
75        "src/dsp/arm/intrapred_cfl_neon.cc",
76        "src/dsp/arm/intrapred_directional_neon.cc",
77        "src/dsp/arm/intrapred_filter_neon.cc",
78        "src/dsp/arm/intrapred_neon.cc",
79        "src/dsp/arm/intrapred_smooth_neon.cc",
80        "src/dsp/arm/inverse_transform_10bit_neon.cc",
81        "src/dsp/arm/inverse_transform_neon.cc",
82        "src/dsp/arm/loop_filter_10bit_neon.cc",
83        "src/dsp/arm/loop_filter_neon.cc",
84        "src/dsp/arm/loop_restoration_10bit_neon.cc",
85        "src/dsp/arm/loop_restoration_neon.cc",
86        "src/dsp/arm/mask_blend_neon.cc",
87        "src/dsp/arm/motion_field_projection_neon.cc",
88        "src/dsp/arm/motion_vector_search_neon.cc",
89        "src/dsp/arm/obmc_neon.cc",
90        "src/dsp/arm/super_res_neon.cc",
91        "src/dsp/arm/warp_neon.cc",
92        "src/dsp/arm/weight_mask_neon.cc",
93        "src/dsp/average_blend.cc",
94        "src/dsp/cdef.cc",
95        "src/dsp/constants.cc",
96        "src/dsp/convolve.cc",
97        "src/dsp/distance_weighted_blend.cc",
98        "src/dsp/dsp.cc",
99        "src/dsp/film_grain.cc",
100        "src/dsp/intra_edge.cc",
101        "src/dsp/intrapred.cc",
102        "src/dsp/intrapred_cfl.cc",
103        "src/dsp/intrapred_directional.cc",
104        "src/dsp/intrapred_filter.cc",
105        "src/dsp/intrapred_smooth.cc",
106        "src/dsp/inverse_transform.cc",
107        "src/dsp/loop_filter.cc",
108        "src/dsp/loop_restoration.cc",
109        "src/dsp/mask_blend.cc",
110        "src/dsp/motion_field_projection.cc",
111        "src/dsp/motion_vector_search.cc",
112        "src/dsp/obmc.cc",
113        "src/dsp/super_res.cc",
114        "src/dsp/warp.cc",
115        "src/dsp/weight_mask.cc",
116        "src/dsp/x86/average_blend_sse4.cc",
117        "src/dsp/x86/cdef_avx2.cc",
118        "src/dsp/x86/cdef_sse4.cc",
119        "src/dsp/x86/convolve_avx2.cc",
120        "src/dsp/x86/convolve_sse4.cc",
121        "src/dsp/x86/distance_weighted_blend_sse4.cc",
122        "src/dsp/x86/film_grain_sse4.cc",
123        "src/dsp/x86/intra_edge_sse4.cc",
124        "src/dsp/x86/intrapred_cfl_sse4.cc",
125        "src/dsp/x86/intrapred_directional_sse4.cc",
126        "src/dsp/x86/intrapred_filter_sse4.cc",
127        "src/dsp/x86/intrapred_smooth_sse4.cc",
128        "src/dsp/x86/intrapred_sse4.cc",
129        "src/dsp/x86/inverse_transform_sse4.cc",
130        "src/dsp/x86/loop_filter_sse4.cc",
131        "src/dsp/x86/loop_restoration_10bit_avx2.cc",
132        "src/dsp/x86/loop_restoration_10bit_sse4.cc",
133        "src/dsp/x86/loop_restoration_avx2.cc",
134        "src/dsp/x86/loop_restoration_sse4.cc",
135        "src/dsp/x86/mask_blend_sse4.cc",
136        "src/dsp/x86/motion_field_projection_sse4.cc",
137        "src/dsp/x86/motion_vector_search_sse4.cc",
138        "src/dsp/x86/obmc_sse4.cc",
139        "src/dsp/x86/super_res_sse4.cc",
140        "src/dsp/x86/warp_sse4.cc",
141        "src/dsp/x86/weight_mask_sse4.cc",
142        "src/film_grain.cc",
143        "src/frame_buffer.cc",
144        "src/internal_frame_buffer_list.cc",
145        "src/loop_restoration_info.cc",
146        "src/motion_vector.cc",
147        "src/obu_parser.cc",
148        "src/post_filter/cdef.cc",
149        "src/post_filter/deblock.cc",
150        "src/post_filter/loop_restoration.cc",
151        "src/post_filter/post_filter.cc",
152        "src/post_filter/super_res.cc",
153        "src/prediction_mask.cc",
154        "src/quantizer.cc",
155        "src/reconstruction.cc",
156        "src/residual_buffer_pool.cc",
157        "src/status_code.cc",
158        "src/symbol_decoder_context.cc",
159        "src/threading_strategy.cc",
160        "src/tile/bitstream/mode_info.cc",
161        "src/tile/bitstream/palette.cc",
162        "src/tile/bitstream/partition.cc",
163        "src/tile/bitstream/transform_size.cc",
164        "src/tile/prediction.cc",
165        "src/tile/tile.cc",
166        "src/tile_scratch_buffer.cc",
167        "src/utils/bit_reader.cc",
168        "src/utils/block_parameters_holder.cc",
169        "src/utils/constants.cc",
170        "src/utils/cpu.cc",
171        "src/utils/entropy_decoder.cc",
172        "src/utils/executor.cc",
173        "src/utils/logging.cc",
174        "src/utils/raw_bit_reader.cc",
175        "src/utils/segmentation.cc",
176        "src/utils/segmentation_map.cc",
177        "src/utils/threadpool.cc",
178        "src/version.cc",
179        "src/warp_prediction.cc",
180        "src/yuv_buffer.cc",
181    ],
182
183    arch: {
184        arm: {
185            instruction_set: "arm",
186        },
187    },
188    min_sdk_version: "29",
189    apex_available: [
190        "//apex_available:platform",
191        "com.android.media.swcodec",
192    ],
193}
194
195// Helper library that only contains the bitstream parser.
196cc_library_static {
197    name: "libgav1_parser",
198    host_supported: true,
199    vendor_available: true,
200
201    export_include_dirs: [
202        ".",
203        "src",
204    ],
205
206    cflags: [
207        "-DLIBGAV1_MAX_BITDEPTH=12",
208        "-DLIBGAV1_THREADPOOL_USE_STD_MUTEX",
209        "-O2",
210        "-Wall",
211        "-Werror",
212        "-Wextra",
213    ],
214
215    srcs: [
216        "src/buffer_pool.cc",
217        "src/frame_buffer.cc",
218        "src/internal_frame_buffer_list.cc",
219        "src/obu_parser.cc",
220        "src/quantizer.cc",
221        "src/status_code.cc",
222        "src/symbol_decoder_context.cc",
223        "src/utils/bit_reader.cc",
224        "src/utils/constants.cc",
225        "src/utils/logging.cc",
226        "src/utils/raw_bit_reader.cc",
227        "src/utils/segmentation.cc",
228        "src/utils/segmentation_map.cc",
229        "src/yuv_buffer.cc",
230    ],
231}
232
233cc_defaults {
234    name: "libgav1_fuzzer_defaults",
235    host_supported: true,
236    native_coverage: true,
237
238    cflags: [
239        "-DLIBGAV1_ENABLE_LOGGING=0",
240        "-DLIBGAV1_EXAMPLES_ENABLE_LOGGING=0",
241        "-DLIBGAV1_MAX_BITDEPTH=12",
242        "-DLIBGAV1_THREADPOOL_USE_STD_MUTEX",
243    ],
244
245    local_include_dirs: [
246        ".",
247    ],
248
249    srcs: [
250        "examples/file_reader.cc",
251        "examples/file_reader_constants.cc",
252        "examples/file_reader_factory.cc",
253        "examples/ivf_parser.cc",
254    ],
255
256    static_libs: [
257        "libgav1",
258    ],
259
260    fuzz_config: {
261        cc: fuzz_email_cc,
262        componentid: bug_component_id,
263        hotlists: [
264            "2100854",
265        ],
266        description: "The fuzzer targets the APIs of libgav1",
267        vector: "remote",
268        service_privilege: "constrained",
269        users: "multi_user",
270        fuzzed_code_usage: "shipped",
271    },
272}
273
274cc_fuzz {
275    name: "libgav1_decoder_fuzzer",
276    defaults: ["libgav1_fuzzer_defaults"],
277
278    srcs: [
279        "tests/fuzzer/decoder_fuzzer.cc",
280    ],
281}
282
283cc_fuzz {
284    name: "libgav1_decoder_fuzzer_frame_parallel",
285    defaults: ["libgav1_fuzzer_defaults"],
286
287    srcs: [
288        "tests/fuzzer/decoder_fuzzer_frame_parallel.cc",
289    ],
290}
291
292cc_fuzz {
293    name: "libgav1_obu_parser_fuzzer",
294    defaults: ["libgav1_fuzzer_defaults"],
295
296    srcs: [
297        "tests/fuzzer/obu_parser_fuzzer.cc",
298    ],
299}
300