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