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