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 "libgav1/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 "libgav1/src", 44 ], 45 46 cflags: [ 47 "-DLIBGAV1_MAX_BITDEPTH=10", 48 "-DLIBGAV1_THREADPOOL_USE_STD_MUTEX", 49 "-O2", 50 "-Wall", 51 "-Werror", 52 "-Wextra", 53 ], 54 55 local_include_dirs: [ 56 "libgav1", 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 "libgav1/src/buffer_pool.cc", 65 "libgav1/src/decoder.cc", 66 "libgav1/src/decoder_impl.cc", 67 "libgav1/src/decoder_settings.cc", 68 "libgav1/src/dsp/arm/average_blend_neon.cc", 69 "libgav1/src/dsp/arm/cdef_neon.cc", 70 "libgav1/src/dsp/arm/convolve_10bit_neon.cc", 71 "libgav1/src/dsp/arm/convolve_neon.cc", 72 "libgav1/src/dsp/arm/distance_weighted_blend_neon.cc", 73 "libgav1/src/dsp/arm/film_grain_neon.cc", 74 "libgav1/src/dsp/arm/intra_edge_neon.cc", 75 "libgav1/src/dsp/arm/intrapred_cfl_neon.cc", 76 "libgav1/src/dsp/arm/intrapred_directional_neon.cc", 77 "libgav1/src/dsp/arm/intrapred_filter_neon.cc", 78 "libgav1/src/dsp/arm/intrapred_neon.cc", 79 "libgav1/src/dsp/arm/intrapred_smooth_neon.cc", 80 "libgav1/src/dsp/arm/inverse_transform_10bit_neon.cc", 81 "libgav1/src/dsp/arm/inverse_transform_neon.cc", 82 "libgav1/src/dsp/arm/loop_filter_neon.cc", 83 "libgav1/src/dsp/arm/loop_restoration_10bit_neon.cc", 84 "libgav1/src/dsp/arm/loop_restoration_neon.cc", 85 "libgav1/src/dsp/arm/mask_blend_neon.cc", 86 "libgav1/src/dsp/arm/motion_field_projection_neon.cc", 87 "libgav1/src/dsp/arm/motion_vector_search_neon.cc", 88 "libgav1/src/dsp/arm/obmc_neon.cc", 89 "libgav1/src/dsp/arm/super_res_neon.cc", 90 "libgav1/src/dsp/arm/warp_neon.cc", 91 "libgav1/src/dsp/arm/weight_mask_neon.cc", 92 "libgav1/src/dsp/average_blend.cc", 93 "libgav1/src/dsp/cdef.cc", 94 "libgav1/src/dsp/constants.cc", 95 "libgav1/src/dsp/convolve.cc", 96 "libgav1/src/dsp/distance_weighted_blend.cc", 97 "libgav1/src/dsp/dsp.cc", 98 "libgav1/src/dsp/film_grain.cc", 99 "libgav1/src/dsp/intra_edge.cc", 100 "libgav1/src/dsp/intrapred.cc", 101 "libgav1/src/dsp/intrapred_cfl.cc", 102 "libgav1/src/dsp/intrapred_directional.cc", 103 "libgav1/src/dsp/intrapred_filter.cc", 104 "libgav1/src/dsp/intrapred_smooth.cc", 105 "libgav1/src/dsp/inverse_transform.cc", 106 "libgav1/src/dsp/loop_filter.cc", 107 "libgav1/src/dsp/loop_restoration.cc", 108 "libgav1/src/dsp/mask_blend.cc", 109 "libgav1/src/dsp/motion_field_projection.cc", 110 "libgav1/src/dsp/motion_vector_search.cc", 111 "libgav1/src/dsp/obmc.cc", 112 "libgav1/src/dsp/super_res.cc", 113 "libgav1/src/dsp/warp.cc", 114 "libgav1/src/dsp/weight_mask.cc", 115 "libgav1/src/dsp/x86/average_blend_sse4.cc", 116 "libgav1/src/dsp/x86/cdef_avx2.cc", 117 "libgav1/src/dsp/x86/cdef_sse4.cc", 118 "libgav1/src/dsp/x86/convolve_avx2.cc", 119 "libgav1/src/dsp/x86/convolve_sse4.cc", 120 "libgav1/src/dsp/x86/distance_weighted_blend_sse4.cc", 121 "libgav1/src/dsp/x86/film_grain_sse4.cc", 122 "libgav1/src/dsp/x86/intra_edge_sse4.cc", 123 "libgav1/src/dsp/x86/intrapred_cfl_sse4.cc", 124 "libgav1/src/dsp/x86/intrapred_directional_sse4.cc", 125 "libgav1/src/dsp/x86/intrapred_filter_sse4.cc", 126 "libgav1/src/dsp/x86/intrapred_smooth_sse4.cc", 127 "libgav1/src/dsp/x86/intrapred_sse4.cc", 128 "libgav1/src/dsp/x86/inverse_transform_sse4.cc", 129 "libgav1/src/dsp/x86/loop_filter_sse4.cc", 130 "libgav1/src/dsp/x86/loop_restoration_10bit_avx2.cc", 131 "libgav1/src/dsp/x86/loop_restoration_10bit_sse4.cc", 132 "libgav1/src/dsp/x86/loop_restoration_avx2.cc", 133 "libgav1/src/dsp/x86/loop_restoration_sse4.cc", 134 "libgav1/src/dsp/x86/mask_blend_sse4.cc", 135 "libgav1/src/dsp/x86/motion_field_projection_sse4.cc", 136 "libgav1/src/dsp/x86/motion_vector_search_sse4.cc", 137 "libgav1/src/dsp/x86/obmc_sse4.cc", 138 "libgav1/src/dsp/x86/super_res_sse4.cc", 139 "libgav1/src/dsp/x86/warp_sse4.cc", 140 "libgav1/src/dsp/x86/weight_mask_sse4.cc", 141 "libgav1/src/film_grain.cc", 142 "libgav1/src/frame_buffer.cc", 143 "libgav1/src/internal_frame_buffer_list.cc", 144 "libgav1/src/loop_restoration_info.cc", 145 "libgav1/src/motion_vector.cc", 146 "libgav1/src/obu_parser.cc", 147 "libgav1/src/post_filter/cdef.cc", 148 "libgav1/src/post_filter/deblock.cc", 149 "libgav1/src/post_filter/loop_restoration.cc", 150 "libgav1/src/post_filter/post_filter.cc", 151 "libgav1/src/post_filter/super_res.cc", 152 "libgav1/src/prediction_mask.cc", 153 "libgav1/src/quantizer.cc", 154 "libgav1/src/reconstruction.cc", 155 "libgav1/src/residual_buffer_pool.cc", 156 "libgav1/src/status_code.cc", 157 "libgav1/src/symbol_decoder_context.cc", 158 "libgav1/src/threading_strategy.cc", 159 "libgav1/src/tile/bitstream/mode_info.cc", 160 "libgav1/src/tile/bitstream/palette.cc", 161 "libgav1/src/tile/bitstream/partition.cc", 162 "libgav1/src/tile/bitstream/transform_size.cc", 163 "libgav1/src/tile/prediction.cc", 164 "libgav1/src/tile/tile.cc", 165 "libgav1/src/tile_scratch_buffer.cc", 166 "libgav1/src/utils/bit_reader.cc", 167 "libgav1/src/utils/block_parameters_holder.cc", 168 "libgav1/src/utils/constants.cc", 169 "libgav1/src/utils/cpu.cc", 170 "libgav1/src/utils/entropy_decoder.cc", 171 "libgav1/src/utils/executor.cc", 172 "libgav1/src/utils/logging.cc", 173 "libgav1/src/utils/raw_bit_reader.cc", 174 "libgav1/src/utils/segmentation.cc", 175 "libgav1/src/utils/segmentation_map.cc", 176 "libgav1/src/utils/threadpool.cc", 177 "libgav1/src/version.cc", 178 "libgav1/src/warp_prediction.cc", 179 "libgav1/src/yuv_buffer.cc", 180 ], 181 182 arch: { 183 arm: { 184 instruction_set: "arm", 185 }, 186 }, 187 min_sdk_version: "29", 188 apex_available: [ 189 "//apex_available:platform", 190 "com.android.media.swcodec", 191 ], 192} 193 194cc_defaults { 195 name: "libgav1_fuzzer_defaults", 196 host_supported: true, 197 native_coverage: true, 198 199 cflags: [ 200 "-DLIBGAV1_MAX_BITDEPTH=10", 201 "-DLIBGAV1_THREADPOOL_USE_STD_MUTEX", 202 ], 203 204 local_include_dirs: [ 205 "libgav1", 206 ], 207 208 srcs: [ 209 "libgav1/examples/file_reader.cc", 210 "libgav1/examples/file_reader_constants.cc", 211 "libgav1/examples/file_reader_factory.cc", 212 "libgav1/examples/ivf_parser.cc", 213 ], 214 215 static_libs: [ 216 "libgav1", 217 ], 218 219 fuzz_config: { 220 cc: fuzz_email_cc, 221 componentid: bug_component_id, 222 }, 223} 224 225cc_fuzz { 226 name: "libgav1_decoder_fuzzer", 227 defaults: ["libgav1_fuzzer_defaults"], 228 229 srcs: [ 230 "libgav1/tests/fuzzer/decoder_fuzzer.cc", 231 ], 232} 233 234cc_fuzz { 235 name: "libgav1_decoder_fuzzer_frame_parallel", 236 defaults: ["libgav1_fuzzer_defaults"], 237 238 srcs: [ 239 "libgav1/tests/fuzzer/decoder_fuzzer_frame_parallel.cc", 240 ], 241} 242 243cc_fuzz { 244 name: "libgav1_obu_parser_fuzzer", 245 defaults: ["libgav1_fuzzer_defaults"], 246 247 srcs: [ 248 "libgav1/tests/fuzzer/obu_parser_fuzzer.cc", 249 ], 250} 251