• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1package {
2    default_applicable_licenses: ["external_libavc_license"],
3}
4
5// Added automatically by a large-scale-change
6// See: http://go/android-license-faq
7license {
8    name: "external_libavc_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_headers {
19    name: "libavcdec_headers",
20    export_include_dirs: [
21        "common",
22        "decoder",
23    ],
24    min_sdk_version: "29",
25}
26
27cc_library_headers {
28    name: "libavcenc_headers",
29    export_include_dirs: [
30        "common",
31        "encoder",
32    ],
33    min_sdk_version: "29",
34}
35
36cc_library_static {
37    name: "libavcdec",
38    vendor_available: true,
39    host_supported: true,
40    shared_libs: [
41        "liblog",
42        "libcutils",
43    ],
44
45    cflags: [
46        "-fPIC",
47        "-O3",
48        "-Wall",
49        "-Werror",
50        "-Wno-unused-variable",
51        "-Wno-null-pointer-arithmetic",
52        // #KEEP_THREAD_ACTIVE is experimental
53        "-UKEEP_THREADS_ACTIVE",
54    ],
55
56    export_include_dirs: [
57        "common",
58        "decoder",
59    ],
60
61    srcs: [
62        "common/ih264_buf_mgr.c",
63        "common/ih264_disp_mgr.c",
64        "common/ih264_inter_pred_filters.c",
65        "common/ih264_luma_intra_pred_filters.c",
66        "common/ih264_chroma_intra_pred_filters.c",
67        "common/ih264_padding.c",
68        "common/ih264_mem_fns.c",
69        "common/ih264_deblk_edge_filters.c",
70        "common/ih264_iquant_itrans_recon.c",
71        "common/ih264_ihadamard_scaling.c",
72        "common/ih264_weighted_pred.c",
73        "common/ithread.c",
74        "decoder/ih264d_cabac.c",
75        "decoder/ih264d_parse_mb_header.c",
76        "decoder/ih264d_parse_cabac.c",
77        "decoder/ih264d_process_intra_mb.c",
78        "decoder/ih264d_inter_pred.c",
79        "decoder/ih264d_parse_bslice.c",
80        "decoder/ih264d_parse_pslice.c",
81        "decoder/ih264d_parse_islice.c",
82        "decoder/ih264d_cabac_init_tables.c",
83        "decoder/ih264d_bitstrm.c",
84        "decoder/ih264d_compute_bs.c",
85        "decoder/ih264d_deblocking.c",
86        "decoder/ih264d_parse_headers.c",
87        "decoder/ih264d_mb_utils.c",
88        "decoder/ih264d_mvpred.c",
89        "decoder/ih264d_utils.c",
90        "decoder/ih264d_process_bslice.c",
91        "decoder/ih264d_process_pslice.c",
92        "decoder/ih264d_parse_slice.c",
93        "decoder/ih264d_quant_scaling.c",
94        "decoder/ih264d_parse_cavlc.c",
95        "decoder/ih264d_dpb_mgr.c",
96        "decoder/ih264d_nal.c",
97        "decoder/ih264d_sei.c",
98        "decoder/ih264d_tables.c",
99        "decoder/ih264d_vui.c",
100        "decoder/ih264d_format_conv.c",
101        "decoder/ih264d_thread_parse_decode.c",
102        "decoder/ih264d_api.c",
103        "decoder/ih264d_thread_compute_bs.c",
104        "decoder/ih264d_function_selector_generic.c",
105    ],
106
107    arch: {
108        arm: {
109            local_include_dirs: [
110                "decoder/arm",
111                "common/arm",
112            ],
113
114            srcs: [
115                "decoder/arm/ih264d_function_selector.c",
116                "common/arm/ih264_arm_memory_barrier.s",
117            ],
118
119            cflags: [
120                "-DARM",
121
122                // These will be overriden by armv7_a_neon
123                "-DDISABLE_NEON",
124                "-DDEFAULT_ARCH=D_ARCH_ARM_NONEON",
125            ],
126
127            neon: {
128                srcs: [
129                    "decoder/arm/ih264d_function_selector_a9q.c",
130                    "common/arm/ih264_intra_pred_chroma_a9q.s",
131                    "common/arm/ih264_intra_pred_luma_16x16_a9q.s",
132                    "common/arm/ih264_intra_pred_luma_4x4_a9q.s",
133                    "common/arm/ih264_intra_pred_luma_8x8_a9q.s",
134                    "common/arm/ih264_inter_pred_chroma_a9q.s",
135                    "common/arm/ih264_inter_pred_filters_luma_horz_a9q.s",
136                    "common/arm/ih264_inter_pred_filters_luma_vert_a9q.s",
137                    "common/arm/ih264_inter_pred_luma_copy_a9q.s",
138                    "common/arm/ih264_inter_pred_luma_horz_qpel_a9q.s",
139                    "common/arm/ih264_inter_pred_luma_vert_qpel_a9q.s",
140                    "common/arm/ih264_inter_pred_luma_horz_hpel_vert_hpel_a9q.s",
141                    "common/arm/ih264_inter_pred_luma_horz_qpel_vert_qpel_a9q.s",
142                    "common/arm/ih264_inter_pred_luma_horz_qpel_vert_hpel_a9q.s",
143                    "common/arm/ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q.s",
144                    "common/arm/ih264_default_weighted_pred_a9q.s",
145                    "common/arm/ih264_weighted_pred_a9q.s",
146                    "common/arm/ih264_weighted_bi_pred_a9q.s",
147                    "common/arm/ih264_deblk_chroma_a9.s",
148                    "common/arm/ih264_deblk_luma_a9.s",
149                    "common/arm/ih264_padding_neon.s",
150                    "common/arm/ih264_iquant_itrans_recon_a9.s",
151                    "common/arm/ih264_iquant_itrans_recon_dc_a9.s",
152                    "common/arm/ih264_ihadamard_scaling_a9.s",
153                ],
154                cflags: [
155                    "-UDISABLE_NEON",
156                    "-UDEFAULT_ARCH",
157                    "-DDEFAULT_ARCH=D_ARCH_ARM_A9Q",
158                ],
159            },
160        },
161
162        arm64: {
163            cflags: [
164                "-DARMV8",
165                "-DARM",
166                "-DDEFAULT_ARCH=D_ARCH_ARMV8_GENERIC",
167            ],
168            local_include_dirs: [
169                "decoder/arm",
170                "common/armv8",
171            ],
172
173            srcs: [
174                "decoder/arm/ih264d_function_selector.c",
175                "decoder/arm/ih264d_function_selector_av8.c",
176                "common/armv8/ih264_intra_pred_chroma_av8.s",
177                "common/armv8/ih264_intra_pred_luma_16x16_av8.s",
178                "common/armv8/ih264_intra_pred_luma_4x4_av8.s",
179                "common/armv8/ih264_inter_pred_chroma_av8.s",
180                "common/armv8/ih264_inter_pred_filters_luma_horz_av8.s",
181                "common/armv8/ih264_inter_pred_filters_luma_vert_av8.s",
182                "common/armv8/ih264_inter_pred_luma_copy_av8.s",
183                "common/armv8/ih264_inter_pred_luma_horz_qpel_av8.s",
184                "common/armv8/ih264_inter_pred_luma_vert_qpel_av8.s",
185                "common/armv8/ih264_inter_pred_luma_horz_hpel_vert_hpel_av8.s",
186                "common/armv8/ih264_inter_pred_luma_horz_qpel_vert_qpel_av8.s",
187                "common/armv8/ih264_inter_pred_luma_horz_qpel_vert_hpel_av8.s",
188                "common/armv8/ih264_inter_pred_luma_horz_hpel_vert_qpel_av8.s",
189                "common/armv8/ih264_default_weighted_pred_av8.s",
190                "common/armv8/ih264_weighted_pred_av8.s",
191                "common/armv8/ih264_weighted_bi_pred_av8.s",
192                "common/armv8/ih264_deblk_chroma_av8.s",
193                "common/armv8/ih264_deblk_luma_av8.s",
194                "common/armv8/ih264_padding_neon_av8.s",
195                "common/armv8/ih264_iquant_itrans_recon_av8.s",
196                "common/armv8/ih264_iquant_itrans_recon_dc_av8.s",
197                "common/armv8/ih264_ihadamard_scaling_av8.s",
198                "common/armv8/ih264_intra_pred_luma_8x8_av8.s",
199            ],
200        },
201
202        x86: {
203            cflags: [
204                "-DX86",
205                "-msse4.2",
206                "-DDEFAULT_ARCH=D_ARCH_X86_SSE42",
207            ],
208
209            local_include_dirs: [
210                "decoder/x86",
211                "common/x86",
212            ],
213
214            srcs: [
215                "decoder/x86/ih264d_function_selector.c",
216                "decoder/x86/ih264d_function_selector_sse42.c",
217                "decoder/x86/ih264d_function_selector_ssse3.c",
218                "common/x86/ih264_inter_pred_filters_ssse3.c",
219                "common/x86/ih264_deblk_luma_ssse3.c",
220                "common/x86/ih264_deblk_chroma_ssse3.c",
221                "common/x86/ih264_padding_ssse3.c",
222                "common/x86/ih264_mem_fns_ssse3.c",
223                "common/x86/ih264_iquant_itrans_recon_dc_ssse3.c",
224                "common/x86/ih264_iquant_itrans_recon_ssse3.c",
225                "common/x86/ih264_luma_intra_pred_filters_ssse3.c",
226                "common/x86/ih264_chroma_intra_pred_filters_ssse3.c",
227                "common/x86/ih264_iquant_itrans_recon_sse42.c",
228                "common/x86/ih264_weighted_pred_sse42.c",
229                "common/x86/ih264_ihadamard_scaling_sse42.c",
230            ],
231        },
232
233        x86_64: {
234            cflags: [
235                "-DX86",
236                "-msse4.2",
237                "-DDEFAULT_ARCH=D_ARCH_X86_SSE42",
238            ],
239
240            local_include_dirs: [
241                "decoder/x86",
242                "common/x86",
243            ],
244
245            srcs: [
246                "decoder/x86/ih264d_function_selector.c",
247                "decoder/x86/ih264d_function_selector_sse42.c",
248                "decoder/x86/ih264d_function_selector_ssse3.c",
249                "common/x86/ih264_inter_pred_filters_ssse3.c",
250                "common/x86/ih264_deblk_luma_ssse3.c",
251                "common/x86/ih264_deblk_chroma_ssse3.c",
252                "common/x86/ih264_padding_ssse3.c",
253                "common/x86/ih264_mem_fns_ssse3.c",
254                "common/x86/ih264_iquant_itrans_recon_dc_ssse3.c",
255                "common/x86/ih264_iquant_itrans_recon_ssse3.c",
256                "common/x86/ih264_luma_intra_pred_filters_ssse3.c",
257                "common/x86/ih264_chroma_intra_pred_filters_ssse3.c",
258                "common/x86/ih264_iquant_itrans_recon_sse42.c",
259                "common/x86/ih264_weighted_pred_sse42.c",
260                "common/x86/ih264_ihadamard_scaling_sse42.c",
261            ],
262        },
263    },
264
265    sanitize: {
266        integer_overflow: true,
267        misc_undefined: ["bounds"],
268        cfi: true,
269        config: {
270            cfi_assembly_support: true,
271        },
272        blocklist: "libavc_blocklist.txt",
273    },
274    apex_available: [
275        "//apex_available:platform", // used by libstagefright_soft_avcdec
276        "com.android.media.swcodec",
277    ],
278    min_sdk_version: "29",
279}
280
281cc_library_static {
282    name: "libavcenc",
283    vendor_available: true,
284    host_supported: true,
285    shared_libs: [
286        "liblog",
287        "libcutils",
288    ],
289
290    cflags: [
291        "-DNDEBUG",
292        "-UHP_PL",
293        "-DN_MB_ENABLE",
294        "-fPIC",
295
296        "-O3",
297        "-Wall",
298        "-Werror",
299        "-Wno-error=constant-conversion",
300    ],
301
302    export_include_dirs: [
303        "common",
304        "encoder",
305    ],
306
307    srcs: [ //Rate Control
308        "common/ih264_resi_trans_quant.c",
309        "common/ih264_iquant_itrans_recon.c",
310        "common/ih264_ihadamard_scaling.c",
311        "common/ih264_inter_pred_filters.c",
312        "common/ih264_luma_intra_pred_filters.c",
313        "common/ih264_chroma_intra_pred_filters.c",
314        "common/ih264_padding.c",
315        "common/ih264_mem_fns.c",
316        "common/ih264_deblk_edge_filters.c",
317        "common/ih264_deblk_tables.c",
318        "common/ih264_cavlc_tables.c",
319        "common/ih264_cabac_tables.c",
320        "common/ih264_common_tables.c",
321        "common/ih264_trans_data.c",
322        "common/ih264_buf_mgr.c",
323        "common/ih264_dpb_mgr.c",
324        "common/ih264_list.c",
325        "common/ithread.c",
326        "encoder/ih264e_globals.c",
327        "encoder/ih264e_intra_modes_eval.c",
328        "encoder/ih264e_half_pel.c",
329        "encoder/ih264e_mc.c",
330        "encoder/ih264e_me.c",
331        "encoder/ih264e_rc_mem_interface.c",
332        "encoder/ih264e_time_stamp.c",
333        "encoder/ih264e_modify_frm_rate.c",
334        "encoder/ih264e_rate_control.c",
335        "encoder/ih264e_core_coding.c",
336        "encoder/ih264e_deblk.c",
337        "encoder/ih264e_api.c",
338        "encoder/ih264e_process.c",
339        "encoder/ih264e_encode.c",
340        "encoder/ih264e_utils.c",
341        "encoder/ih264e_version.c",
342        "encoder/ih264e_bitstream.c",
343        "encoder/ih264e_cavlc.c",
344        "encoder/ih264e_cabac_init.c",
345        "encoder/ih264e_cabac.c",
346        "encoder/ih264e_cabac_encode.c",
347        "encoder/ih264e_encode_header.c",
348        "encoder/ih264e_function_selector_generic.c",
349        "encoder/ih264e_fmt_conv.c",
350        "encoder/irc_rate_control_api.c",
351        "encoder/irc_bit_allocation.c",
352        "encoder/irc_cbr_buffer_control.c",
353        "encoder/irc_est_sad.c",
354        "encoder/irc_fixed_point_error_bits.c",
355        "encoder/irc_frame_info_collector.c",
356        "encoder/irc_mb_model_based.c",
357        "encoder/irc_picture_type.c",
358        "encoder/irc_rd_model.c",
359        "encoder/irc_vbr_storage_vbv.c",
360        "encoder/irc_vbr_str_prms.c",
361        "encoder/ime.c",
362        "encoder/ime_distortion_metrics.c",
363        "encoder/ih264e_sei.c",
364    ],
365
366    arch: {
367        arm: {
368            local_include_dirs: [
369                "encoder/arm",
370                "common/arm",
371            ],
372
373            srcs: [
374                "encoder/arm/ih264e_function_selector.c",
375                "common/arm/ih264_arm_memory_barrier.s",
376            ],
377
378            cflags: [
379                "-DARM",
380
381                // This will be overriden by armv7_a_neon
382                "-DDISABLE_NEON",
383            ],
384
385            neon: {
386                srcs: [
387                    "encoder/arm/ih264e_function_selector_a9q.c",
388                    "common/arm/ih264_resi_trans_quant_a9.s",
389                    "common/arm/ih264_iquant_itrans_recon_a9.s",
390                    "common/arm/ih264_iquant_itrans_recon_dc_a9.s",
391                    "common/arm/ih264_ihadamard_scaling_a9.s",
392                    "common/arm/ih264_deblk_chroma_a9.s",
393                    "common/arm/ih264_deblk_luma_a9.s",
394                    "common/arm/ih264_intra_pred_chroma_a9q.s",
395                    "common/arm/ih264_intra_pred_luma_16x16_a9q.s",
396                    "common/arm/ih264_intra_pred_luma_4x4_a9q.s",
397                    "common/arm/ih264_intra_pred_luma_8x8_a9q.s",
398                    "common/arm/ih264_inter_pred_chroma_a9q.s",
399                    "common/arm/ih264_inter_pred_filters_luma_horz_a9q.s",
400                    "common/arm/ih264_inter_pred_filters_luma_vert_a9q.s",
401                    "common/arm/ih264_inter_pred_luma_bilinear_a9q.s",
402                    "common/arm/ih264_inter_pred_luma_copy_a9q.s",
403                    "common/arm/ih264_padding_neon.s",
404                    "common/arm/ih264_mem_fns_neon.s",
405                    "encoder/arm/ih264e_evaluate_intra16x16_modes_a9q.s",
406                    "encoder/arm/ih264e_evaluate_intra4x4_modes_a9q.s",
407                    "encoder/arm/ih264e_evaluate_intra_chroma_modes_a9q.s",
408                    "encoder/arm/ih264e_half_pel.s",
409                    "encoder/arm/ih264e_fmt_conv.s",
410                    "encoder/arm/ime_distortion_metrics_a9q.s",
411                ],
412
413                cflags: [
414                    "-UDISABLE_NEON",
415                ],
416            },
417        },
418
419        arm64: {
420            cflags: [
421                "-DARMV8",
422                "-DARM",
423            ],
424
425            local_include_dirs: [
426                "encoder/arm",
427                "encoder/armv8",
428                "common/armv8",
429            ],
430
431            srcs: [
432                "encoder/arm/ih264e_function_selector.c",
433                "encoder/arm/ih264e_function_selector_av8.c",
434                "common/armv8/ih264_resi_trans_quant_av8.s",
435                "common/armv8/ih264_iquant_itrans_recon_av8.s",
436                "common/armv8/ih264_iquant_itrans_recon_dc_av8.s",
437                "common/armv8/ih264_ihadamard_scaling_av8.s",
438                "common/armv8/ih264_intra_pred_chroma_av8.s",
439                "common/armv8/ih264_intra_pred_luma_16x16_av8.s",
440                "common/armv8/ih264_intra_pred_luma_4x4_av8.s",
441                "common/armv8/ih264_intra_pred_luma_8x8_av8.s",
442                "common/armv8/ih264_inter_pred_luma_copy_av8.s",
443                "common/armv8/ih264_inter_pred_chroma_av8.s",
444                "common/armv8/ih264_inter_pred_filters_luma_horz_av8.s",
445                "common/armv8/ih264_inter_pred_filters_luma_vert_av8.s",
446                "common/armv8/ih264_padding_neon_av8.s",
447                "common/armv8/ih264_mem_fns_neon_av8.s",
448                "common/armv8/ih264_deblk_luma_av8.s",
449                "common/armv8/ih264_deblk_chroma_av8.s",
450                "encoder/armv8/ih264e_evaluate_intra16x16_modes_av8.s",
451                "encoder/armv8/ih264e_evaluate_intra_chroma_modes_av8.s",
452                "encoder/armv8/ih264e_half_pel_av8.s",
453                "encoder/armv8/ime_distortion_metrics_av8.s",
454            ],
455        },
456
457        x86: {
458            cflags: [
459                "-DX86",
460                "-msse4.2",
461            ],
462
463            local_include_dirs: [
464                "encoder/x86",
465                "common/x86",
466            ],
467
468            srcs: [
469                "encoder/x86/ih264e_function_selector.c",
470                "encoder/x86/ih264e_function_selector_sse42.c",
471                "encoder/x86/ih264e_function_selector_ssse3.c",
472                "common/x86/ih264_iquant_itrans_recon_ssse3.c",
473                "common/x86/ih264_iquant_itrans_recon_dc_ssse3.c",
474                "common/x86/ih264_ihadamard_scaling_ssse3.c",
475                "common/x86/ih264_inter_pred_filters_ssse3.c",
476                "common/x86/ih264_mem_fns_ssse3.c",
477                "common/x86/ih264_padding_ssse3.c",
478                "common/x86/ih264_luma_intra_pred_filters_ssse3.c",
479                "common/x86/ih264_chroma_intra_pred_filters_ssse3.c",
480                "common/x86/ih264_deblk_chroma_ssse3.c",
481                "common/x86/ih264_deblk_luma_ssse3.c",
482                "common/x86/ih264_iquant_itrans_recon_sse42.c",
483                "common/x86/ih264_ihadamard_scaling_sse42.c",
484                "common/x86/ih264_resi_trans_quant_sse42.c",
485                "common/x86/ih264_weighted_pred_sse42.c",
486                "encoder/x86/ih264e_half_pel_ssse3.c",
487                "encoder/x86/ih264e_intra_modes_eval_ssse3.c",
488                "encoder/x86/ime_distortion_metrics_sse42.c",
489            ],
490        },
491
492        x86_64: {
493            cflags: [
494                "-DX86",
495                "-msse4.2",
496            ],
497
498            local_include_dirs: [
499                "encoder/x86",
500                "common/x86",
501            ],
502
503            srcs: [
504                "encoder/x86/ih264e_function_selector.c",
505                "encoder/x86/ih264e_function_selector_sse42.c",
506                "encoder/x86/ih264e_function_selector_ssse3.c",
507                "common/x86/ih264_iquant_itrans_recon_ssse3.c",
508                "common/x86/ih264_iquant_itrans_recon_dc_ssse3.c",
509                "common/x86/ih264_ihadamard_scaling_ssse3.c",
510                "common/x86/ih264_inter_pred_filters_ssse3.c",
511                "common/x86/ih264_mem_fns_ssse3.c",
512                "common/x86/ih264_padding_ssse3.c",
513                "common/x86/ih264_luma_intra_pred_filters_ssse3.c",
514                "common/x86/ih264_chroma_intra_pred_filters_ssse3.c",
515                "common/x86/ih264_deblk_chroma_ssse3.c",
516                "common/x86/ih264_deblk_luma_ssse3.c",
517                "common/x86/ih264_iquant_itrans_recon_sse42.c",
518                "common/x86/ih264_ihadamard_scaling_sse42.c",
519                "common/x86/ih264_resi_trans_quant_sse42.c",
520                "common/x86/ih264_weighted_pred_sse42.c",
521                "encoder/x86/ih264e_half_pel_ssse3.c",
522                "encoder/x86/ih264e_intra_modes_eval_ssse3.c",
523                "encoder/x86/ime_distortion_metrics_sse42.c",
524            ],
525        },
526    },
527
528    sanitize: {
529        integer_overflow: true,
530        misc_undefined: ["bounds"],
531        cfi: true,
532        config: {
533            cfi_assembly_support: true,
534        },
535        blocklist: "libavc_blocklist.txt",
536    },
537    apex_available: [
538        "//apex_available:platform", //due to libstagefright_soft_avcenc
539        "com.android.media.swcodec",
540    ],
541    min_sdk_version: "29",
542}
543
544subdirs = ["test"]
545