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