1package { 2 default_applicable_licenses: ["external_libmpeg2_license"], 3} 4 5// Added automatically by a large-scale-change 6// See: http://go/android-license-faq 7license { 8 name: "external_libmpeg2_license", 9 visibility: [":__subpackages__"], 10 license_kinds: [ 11 "SPDX-license-identifier-Apache-2.0", 12 ], 13 license_text: [ 14 "NOTICE", 15 ], 16} 17 18cc_library_static { 19 name: "libmpeg2dec", 20 vendor_available: true, 21 host_supported:true, 22 shared_libs: ["liblog", "libcutils"], 23 24 cflags: [ 25 "-D_LIB", 26 "-DMULTICORE", 27 "-fPIC", 28 29 "-O3", 30 "-DANDROID", 31 "-Werror", 32 // #KEEP_THREAD_ACTIVE is experimental 33 "-UKEEP_THREADS_ACTIVE", 34 ], 35 36 export_include_dirs: [ 37 "decoder", 38 "common", 39 ], 40 41 srcs: [ 42 "common/impeg2_buf_mgr.c", 43 "common/impeg2_disp_mgr.c", 44 "common/impeg2_format_conv.c", 45 "common/impeg2_globals.c", 46 "common/impeg2_idct.c", 47 "common/impeg2_inter_pred.c", 48 "common/impeg2_job_queue.c", 49 "common/impeg2_mem_func.c", 50 "common/ithread.c", 51 "decoder/impeg2d_api_main.c", 52 "decoder/impeg2d_bitstream.c", 53 "decoder/impeg2d_debug.c", 54 "decoder/impeg2d_dec_hdr.c", 55 "decoder/impeg2d_decoder.c", 56 "decoder/impeg2d_d_pic.c", 57 "decoder/impeg2d_function_selector_generic.c", 58 "decoder/impeg2d_globals.c", 59 "decoder/impeg2d_i_pic.c", 60 "decoder/impeg2d_mc.c", 61 "decoder/impeg2d_mv_dec.c", 62 "decoder/impeg2d_pic_proc.c", 63 "decoder/impeg2d_pnb_pic.c", 64 "decoder/impeg2d_vld.c", 65 "decoder/impeg2d_vld_tables.c", 66 "decoder/impeg2d_deinterlace.c", 67 "common/icv_sad.c", 68 "common/icv_variance.c", 69 "common/ideint.c", 70 "common/ideint_cac.c", 71 "common/ideint_debug.c", 72 "common/ideint_function_selector_generic.c", 73 "common/ideint_utils.c", 74 ], 75 76 arch: { 77 arm: { 78 local_include_dirs: [ 79 "decoder/arm", 80 "common/arm", 81 ], 82 83 srcs: [ 84 "decoder/arm/impeg2d_function_selector.c", 85 "common/arm/ideint_function_selector.c", 86 ], 87 88 neon: { 89 srcs: [ 90 "decoder/arm/impeg2d_function_selector_a9q.c", 91 "common/arm/ideint_function_selector_a9.c", 92 "common/arm/icv_sad_a9.s", 93 "common/arm/icv_variance_a9.s", 94 "common/arm/ideint_spatial_filter_a9.s", 95 "common/arm/ideint_cac_a9.s", 96 "common/arm/impeg2_format_conv.s", 97 "common/arm/impeg2_idct.s", 98 "common/arm/impeg2_inter_pred.s", 99 "common/arm/impeg2_mem_func.s", 100 ], 101 cflags: [ 102 "-UDISABLE_NEON", 103 "-UDEFAULT_ARCH", 104 "-DDEFAULT_ARCH=D_ARCH_ARM_A9Q", 105 ], 106 }, 107 108 cflags: [ 109 "-DDISABLE_NEONINTR", 110 "-DARM", 111 "-DARMGCC", 112 113 // These are overriden by armv7_a_neon 114 "-DDISABLE_NEON", 115 "-DDEFAULT_ARCH=D_ARCH_ARM_NONEON", 116 ], 117 instruction_set: "arm", 118 }, 119 120 arm64: { 121 cflags: [ 122 "-DARMV8", 123 "-DDISABLE_NEONINTR", 124 "-DARM", 125 "-DARMGCC", 126 127 "-DDEFAULT_ARCH=D_ARCH_ARMV8_GENERIC", 128 ], 129 local_include_dirs: [ 130 "decoder/arm", 131 "common/armv8", 132 ], 133 134 srcs: [ 135 "decoder/arm/impeg2d_function_selector.c", 136 "decoder/arm/impeg2d_function_selector_av8.c", 137 "common/arm/ideint_function_selector.c", 138 "common/arm/ideint_function_selector_av8.c", 139 "common/armv8/icv_sad_av8.s", 140 "common/armv8/icv_variance_av8.s", 141 "common/armv8/ideint_spatial_filter_av8.s", 142 "common/armv8/ideint_cac_av8.s", 143 "common/armv8/impeg2_neon_macros.s", 144 "common/armv8/impeg2_format_conv.s", 145 "common/armv8/impeg2_idct.s", 146 "common/armv8/impeg2_inter_pred.s", 147 "common/armv8/impeg2_mem_func.s", 148 ], 149 }, 150 151 x86: { 152 cflags: [ 153 "-DX86", 154 "-DDISABLE_AVX2", 155 "-msse4.2", 156 "-mno-avx", 157 "-DDEFAULT_ARCH=D_ARCH_X86_SSE42", 158 ], 159 160 local_include_dirs: [ 161 "decoder/x86", 162 "common/x86", 163 ], 164 165 srcs: [ 166 "decoder/x86/impeg2d_function_selector.c", 167 "decoder/x86/impeg2d_function_selector_avx2.c", 168 "decoder/x86/impeg2d_function_selector_ssse3.c", 169 "decoder/x86/impeg2d_function_selector_sse42.c", 170 "common/x86/ideint_function_selector.c", 171 "common/x86/ideint_function_selector_ssse3.c", 172 "common/x86/ideint_function_selector_sse42.c", 173 "common/x86/icv_variance_ssse3.c", 174 "common/x86/icv_sad_ssse3.c", 175 "common/x86/ideint_cac_ssse3.c", 176 "common/x86/ideint_spatial_filter_ssse3.c", 177 "common/x86/impeg2_idct_recon_sse42_intr.c", 178 "common/x86/impeg2_inter_pred_sse42_intr.c", 179 "common/x86/impeg2_mem_func_sse42_intr.c", 180 ], 181 }, 182 183 x86_64: { 184 cflags: [ 185 "-DX86", 186 "-DDISABLE_AVX2", 187 "-msse4.2", 188 "-mno-avx", 189 "-DDEFAULT_ARCH=D_ARCH_X86_SSE42", 190 ], 191 192 local_include_dirs: [ 193 "decoder/x86", 194 "common/x86", 195 ], 196 197 srcs: [ 198 "decoder/x86/impeg2d_function_selector.c", 199 "decoder/x86/impeg2d_function_selector_avx2.c", 200 "decoder/x86/impeg2d_function_selector_ssse3.c", 201 "decoder/x86/impeg2d_function_selector_sse42.c", 202 "common/x86/ideint_function_selector.c", 203 "common/x86/ideint_function_selector_ssse3.c", 204 "common/x86/ideint_function_selector_sse42.c", 205 "common/x86/icv_variance_ssse3.c", 206 "common/x86/icv_sad_ssse3.c", 207 "common/x86/ideint_cac_ssse3.c", 208 "common/x86/ideint_spatial_filter_ssse3.c", 209 "common/x86/impeg2_idct_recon_sse42_intr.c", 210 "common/x86/impeg2_inter_pred_sse42_intr.c", 211 "common/x86/impeg2_mem_func_sse42_intr.c", 212 ], 213 }, 214 }, 215 sanitize: { 216 integer_overflow: true, 217 misc_undefined: ["bounds"], 218 // Enable CFI if this becomes a shared library. 219 // cfi: true, 220 blocklist: "libmpeg2dec_blocklist.txt", 221 }, 222 apex_available: [ 223 "//apex_available:platform", 224 "com.android.media.swcodec", 225 ], 226 min_sdk_version: "29", 227} 228 229subdirs = ["test"] 230