xref: /aosp_15_r20/external/libavc/Android.bp (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
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: "libmvcdec_headers",
29    export_include_dirs: [
30        "common",
31        "common/mvc",
32        "decoder",
33        "decoder/mvc",
34    ],
35    min_sdk_version: "29",
36}
37
38cc_library_headers {
39    name: "libsvcenc_headers",
40    export_include_dirs: [
41        "common",
42        "common/svc",
43        "encoder",
44        "encoder/svc",
45    ],
46    min_sdk_version: "29",
47}
48
49cc_library_headers {
50    name: "libsvcdec_headers",
51    export_include_dirs: [
52        "common",
53        "common/svc",
54        "decoder",
55        "decoder/svc",
56    ],
57    min_sdk_version: "29",
58}
59
60cc_library_headers {
61    name: "libavcenc_headers",
62    export_include_dirs: [
63        "common",
64        "encoder",
65    ],
66    min_sdk_version: "29",
67}
68
69cc_defaults {
70    name: "libavc_enc_defaults",
71    vendor_available: true,
72    host_supported: true,
73    shared_libs: [
74        "liblog",
75        "libcutils",
76    ],
77    cflags: [
78        "-DNDEBUG",
79        "-UHP_PL",
80        "-DN_MB_ENABLE",
81        "-fPIC",
82        "-O3",
83        "-Wall",
84        "-Werror",
85        "-Wno-error=constant-conversion",
86    ],
87    arch: {
88        arm: {
89            local_include_dirs: [
90                "common/arm",
91                "encoder/arm",
92            ],
93
94            cflags: [
95                "-DARM",
96            ],
97        },
98
99        arm64: {
100            cflags: [
101                "-DARMV8",
102                "-DARM",
103            ],
104            local_include_dirs: [
105                "common/arm",
106                "common/armv8",
107                "encoder/arm",
108                "encoder/armv8",
109            ],
110        },
111
112        riscv64: {
113            local_include_dirs: [
114                "common/riscv",
115                "encoder/riscv",
116            ],
117        },
118
119        x86: {
120            cflags: [
121                "-DX86",
122                "-msse4.2",
123            ],
124
125            local_include_dirs: [
126                "common/x86",
127                "encoder/x86",
128            ],
129        },
130
131        x86_64: {
132            cflags: [
133                "-DX86",
134                "-msse4.2",
135            ],
136
137            local_include_dirs: [
138                "common/x86",
139                "encoder/x86",
140            ],
141        },
142    },
143
144    sanitize: {
145        integer_overflow: true,
146        misc_undefined: ["bounds"],
147        cfi: true,
148        config: {
149            cfi_assembly_support: true,
150        },
151        blocklist: "libavc_blocklist.txt",
152    },
153}
154
155cc_defaults {
156    name: "libavc_dec_defaults",
157    cflags: [
158        "-fPIC",
159        "-O3",
160        "-Wall",
161        "-Werror",
162        "-Wno-unused-variable",
163        "-Wno-null-pointer-arithmetic",
164        // #KEEP_THREAD_ACTIVE is experimental
165        "-UKEEP_THREADS_ACTIVE",
166    ],
167    vendor_available: true,
168    host_supported: true,
169    shared_libs: [
170        "liblog",
171        "libcutils",
172    ],
173
174    arch: {
175        arm: {
176            local_include_dirs: [
177                "common/arm",
178                "decoder/arm",
179            ],
180            cflags: [
181                "-DARM",
182                "-DDEFAULT_ARCH=D_ARCH_ARM_A9Q",
183            ],
184        },
185
186        arm64: {
187            cflags: [
188                "-DARMV8",
189                "-DARM",
190                "-DDEFAULT_ARCH=D_ARCH_ARMV8_GENERIC",
191            ],
192            local_include_dirs: [
193                "common/armv8",
194                "decoder/arm",
195            ],
196        },
197
198        riscv64: {
199            local_include_dirs: [
200                "common/riscv",
201            ],
202        },
203
204        x86: {
205            cflags: [
206                "-DX86",
207                "-msse4.2",
208                "-DDEFAULT_ARCH=D_ARCH_X86_SSE42",
209            ],
210
211            local_include_dirs: [
212                "common/x86",
213                "decoder/x86",
214            ],
215        },
216
217        x86_64: {
218            cflags: [
219                "-DX86",
220                "-msse4.2",
221                "-DDEFAULT_ARCH=D_ARCH_X86_SSE42",
222            ],
223
224            local_include_dirs: [
225                "common/x86",
226                "decoder/x86",
227            ],
228        },
229    },
230
231    sanitize: {
232        integer_overflow: true,
233        misc_undefined: ["bounds"],
234        cfi: true,
235        config: {
236            cfi_assembly_support: true,
237        },
238    },
239}
240
241cc_library_static {
242    name: "libavcdec",
243    defaults: ["libavc_dec_defaults"],
244
245    export_include_dirs: [
246        "common",
247        "decoder",
248    ],
249
250    srcs: [
251        "common/ih264_buf_mgr.c",
252        "common/ih264_chroma_intra_pred_filters.c",
253        "common/ih264_deblk_edge_filters.c",
254        "common/ih264_disp_mgr.c",
255        "common/ih264_ihadamard_scaling.c",
256        "common/ih264_inter_pred_filters.c",
257        "common/ih264_iquant_itrans_recon.c",
258        "common/ih264_luma_intra_pred_filters.c",
259        "common/ih264_mem_fns.c",
260        "common/ih264_padding.c",
261        "common/ih264_weighted_pred.c",
262        "common/ithread.c",
263        "decoder/ih264d_api.c",
264        "decoder/ih264d_bitstrm.c",
265        "decoder/ih264d_cabac.c",
266        "decoder/ih264d_cabac_init_tables.c",
267        "decoder/ih264d_compute_bs.c",
268        "decoder/ih264d_deblocking.c",
269        "decoder/ih264d_dpb_mgr.c",
270        "decoder/ih264d_format_conv.c",
271        "decoder/ih264d_function_selector_generic.c",
272        "decoder/ih264d_inter_pred.c",
273        "decoder/ih264d_mb_utils.c",
274        "decoder/ih264d_mvpred.c",
275        "decoder/ih264d_nal.c",
276        "decoder/ih264d_parse_bslice.c",
277        "decoder/ih264d_parse_cabac.c",
278        "decoder/ih264d_parse_cavlc.c",
279        "decoder/ih264d_parse_headers.c",
280        "decoder/ih264d_parse_islice.c",
281        "decoder/ih264d_parse_mb_header.c",
282        "decoder/ih264d_parse_pslice.c",
283        "decoder/ih264d_parse_slice.c",
284        "decoder/ih264d_process_bslice.c",
285        "decoder/ih264d_process_intra_mb.c",
286        "decoder/ih264d_process_pslice.c",
287        "decoder/ih264d_quant_scaling.c",
288        "decoder/ih264d_sei.c",
289        "decoder/ih264d_tables.c",
290        "decoder/ih264d_thread_compute_bs.c",
291        "decoder/ih264d_thread_parse_decode.c",
292        "decoder/ih264d_utils.c",
293        "decoder/ih264d_vui.c",
294    ],
295
296    arch: {
297        arm: {
298            srcs: [
299                "common/arm/ih264_arm_memory_barrier.s",
300                "decoder/arm/ih264d_function_selector.c",
301                "common/arm/ih264_deblk_chroma_a9.s",
302                "common/arm/ih264_deblk_luma_a9.s",
303                "common/arm/ih264_default_weighted_pred_a9q.s",
304                "common/arm/ih264_ihadamard_scaling_a9.s",
305                "common/arm/ih264_inter_pred_chroma_a9q.s",
306                "common/arm/ih264_inter_pred_filters_luma_horz_a9q.s",
307                "common/arm/ih264_inter_pred_filters_luma_vert_a9q.s",
308                "common/arm/ih264_inter_pred_luma_copy_a9q.s",
309                "common/arm/ih264_inter_pred_luma_horz_hpel_vert_hpel_a9q.s",
310                "common/arm/ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q.s",
311                "common/arm/ih264_inter_pred_luma_horz_qpel_a9q.s",
312                "common/arm/ih264_inter_pred_luma_horz_qpel_vert_hpel_a9q.s",
313                "common/arm/ih264_inter_pred_luma_horz_qpel_vert_qpel_a9q.s",
314                "common/arm/ih264_inter_pred_luma_vert_qpel_a9q.s",
315                "common/arm/ih264_intra_pred_chroma_a9q.s",
316                "common/arm/ih264_intra_pred_luma_16x16_a9q.s",
317                "common/arm/ih264_intra_pred_luma_4x4_a9q.s",
318                "common/arm/ih264_intra_pred_luma_8x8_a9q.s",
319                "common/arm/ih264_iquant_itrans_recon_a9.s",
320                "common/arm/ih264_iquant_itrans_recon_dc_a9.s",
321                "common/arm/ih264_padding_neon.s",
322                "common/arm/ih264_weighted_bi_pred_a9q.s",
323                "common/arm/ih264_weighted_pred_a9q.s",
324                "decoder/arm/ih264d_function_selector_a9q.c",
325            ],
326        },
327
328        arm64: {
329            srcs: [
330                "common/armv8/ih264_deblk_chroma_av8.s",
331                "common/armv8/ih264_deblk_luma_av8.s",
332                "common/armv8/ih264_default_weighted_pred_av8.s",
333                "common/armv8/ih264_ihadamard_scaling_av8.s",
334                "common/armv8/ih264_inter_pred_chroma_av8.s",
335                "common/armv8/ih264_inter_pred_filters_luma_horz_av8.s",
336                "common/armv8/ih264_inter_pred_filters_luma_vert_av8.s",
337                "common/armv8/ih264_inter_pred_luma_copy_av8.s",
338                "common/armv8/ih264_inter_pred_luma_horz_hpel_vert_hpel_av8.s",
339                "common/armv8/ih264_inter_pred_luma_horz_hpel_vert_qpel_av8.s",
340                "common/armv8/ih264_inter_pred_luma_horz_qpel_av8.s",
341                "common/armv8/ih264_inter_pred_luma_horz_qpel_vert_hpel_av8.s",
342                "common/armv8/ih264_inter_pred_luma_horz_qpel_vert_qpel_av8.s",
343                "common/armv8/ih264_inter_pred_luma_vert_qpel_av8.s",
344                "common/armv8/ih264_intra_pred_chroma_av8.s",
345                "common/armv8/ih264_intra_pred_luma_16x16_av8.s",
346                "common/armv8/ih264_intra_pred_luma_4x4_av8.s",
347                "common/armv8/ih264_intra_pred_luma_8x8_av8.s",
348                "common/armv8/ih264_iquant_itrans_recon_av8.s",
349                "common/armv8/ih264_iquant_itrans_recon_dc_av8.s",
350                "common/armv8/ih264_padding_neon_av8.s",
351                "common/armv8/ih264_weighted_bi_pred_av8.s",
352                "common/armv8/ih264_weighted_pred_av8.s",
353                "decoder/arm/ih264d_function_selector.c",
354                "decoder/arm/ih264d_function_selector_av8.c",
355            ],
356        },
357
358        riscv64: {
359            local_include_dirs: [
360                "common/riscv",
361            ],
362            srcs: [
363                "decoder/riscv/ih264d_function_selector.c",
364            ],
365        },
366
367        x86: {
368            srcs: [
369                "common/x86/ih264_chroma_intra_pred_filters_ssse3.c",
370                "common/x86/ih264_deblk_chroma_ssse3.c",
371                "common/x86/ih264_deblk_luma_ssse3.c",
372                "common/x86/ih264_ihadamard_scaling_sse42.c",
373                "common/x86/ih264_inter_pred_filters_ssse3.c",
374                "common/x86/ih264_iquant_itrans_recon_dc_ssse3.c",
375                "common/x86/ih264_iquant_itrans_recon_sse42.c",
376                "common/x86/ih264_iquant_itrans_recon_ssse3.c",
377                "common/x86/ih264_luma_intra_pred_filters_ssse3.c",
378                "common/x86/ih264_mem_fns_ssse3.c",
379                "common/x86/ih264_padding_ssse3.c",
380                "common/x86/ih264_weighted_pred_sse42.c",
381                "decoder/x86/ih264d_function_selector.c",
382                "decoder/x86/ih264d_function_selector_sse42.c",
383                "decoder/x86/ih264d_function_selector_ssse3.c",
384            ],
385        },
386
387        x86_64: {
388            srcs: [
389                "common/x86/ih264_chroma_intra_pred_filters_ssse3.c",
390                "common/x86/ih264_deblk_chroma_ssse3.c",
391                "common/x86/ih264_deblk_luma_ssse3.c",
392                "common/x86/ih264_ihadamard_scaling_sse42.c",
393                "common/x86/ih264_inter_pred_filters_ssse3.c",
394                "common/x86/ih264_iquant_itrans_recon_dc_ssse3.c",
395                "common/x86/ih264_iquant_itrans_recon_sse42.c",
396                "common/x86/ih264_iquant_itrans_recon_ssse3.c",
397                "common/x86/ih264_luma_intra_pred_filters_ssse3.c",
398                "common/x86/ih264_mem_fns_ssse3.c",
399                "common/x86/ih264_padding_ssse3.c",
400                "common/x86/ih264_weighted_pred_sse42.c",
401                "decoder/x86/ih264d_function_selector.c",
402                "decoder/x86/ih264d_function_selector_sse42.c",
403                "decoder/x86/ih264d_function_selector_ssse3.c",
404            ],
405        },
406    },
407
408    sanitize: {
409        blocklist: "libavc_blocklist.txt",
410    },
411    apex_available: [
412        "//apex_available:platform", // used by libstagefright_soft_avcdec
413        "com.android.media.swcodec",
414    ],
415    min_sdk_version: "29",
416}
417
418cc_library_static {
419    name: "libmvcdec",
420    defaults: ["libavc_dec_defaults"],
421    whole_static_libs: [
422        "libavcdec",
423    ],
424
425    export_include_dirs: [
426        "common",
427        "common/mvc",
428        "decoder",
429        "decoder/mvc",
430    ],
431
432    srcs: [
433        "decoder/mvc/imvcd_api.c",
434        "decoder/mvc/imvcd_api_utils.c",
435        "decoder/mvc/imvcd_dpb_manager.c",
436        "decoder/mvc/imvcd_error_handler.c",
437        "decoder/mvc/imvcd_nalu_parser.c",
438        "decoder/mvc/imvcd_slice_functions.c",
439        "decoder/mvc/imvcd_utils.c",
440    ],
441}
442
443cc_library_static {
444    name: "libavcenc",
445    defaults: ["libavc_enc_defaults"],
446
447    export_include_dirs: [
448        "common",
449        "encoder",
450    ],
451
452    srcs: [ //Rate Control
453        "common/ih264_buf_mgr.c",
454        "common/ih264_cabac_tables.c",
455        "common/ih264_cavlc_tables.c",
456        "common/ih264_chroma_intra_pred_filters.c",
457        "common/ih264_common_tables.c",
458        "common/ih264_deblk_edge_filters.c",
459        "common/ih264_deblk_tables.c",
460        "common/ih264_dpb_mgr.c",
461        "common/ih264_ihadamard_scaling.c",
462        "common/ih264_inter_pred_filters.c",
463        "common/ih264_iquant_itrans_recon.c",
464        "common/ih264_list.c",
465        "common/ih264_luma_intra_pred_filters.c",
466        "common/ih264_mem_fns.c",
467        "common/ih264_padding.c",
468        "common/ih264_resi_trans_quant.c",
469        "common/ih264_trans_data.c",
470        "common/ithread.c",
471        "encoder/ih264e_api.c",
472        "encoder/ih264e_bitstream.c",
473        "encoder/ih264e_cabac.c",
474        "encoder/ih264e_cabac_encode.c",
475        "encoder/ih264e_cabac_init.c",
476        "encoder/ih264e_cavlc.c",
477        "encoder/ih264e_core_coding.c",
478        "encoder/ih264e_deblk.c",
479        "encoder/ih264e_encode.c",
480        "encoder/ih264e_encode_header.c",
481        "encoder/ih264e_fmt_conv.c",
482        "encoder/ih264e_function_selector_generic.c",
483        "encoder/ih264e_globals.c",
484        "encoder/ih264e_half_pel.c",
485        "encoder/ih264e_intra_modes_eval.c",
486        "encoder/ih264e_mc.c",
487        "encoder/ih264e_me.c",
488        "encoder/ih264e_modify_frm_rate.c",
489        "encoder/ih264e_process.c",
490        "encoder/ih264e_rate_control.c",
491        "encoder/ih264e_rc_mem_interface.c",
492        "encoder/ih264e_sei.c",
493        "encoder/ih264e_time_stamp.c",
494        "encoder/ih264e_utils.c",
495        "encoder/ih264e_version.c",
496        "encoder/ime.c",
497        "encoder/ime_distortion_metrics.c",
498        "encoder/irc_bit_allocation.c",
499        "encoder/irc_cbr_buffer_control.c",
500        "encoder/irc_est_sad.c",
501        "encoder/irc_fixed_point_error_bits.c",
502        "encoder/irc_frame_info_collector.c",
503        "encoder/irc_mb_model_based.c",
504        "encoder/irc_picture_type.c",
505        "encoder/irc_rate_control_api.c",
506        "encoder/irc_rd_model.c",
507        "encoder/irc_vbr_storage_vbv.c",
508        "encoder/irc_vbr_str_prms.c",
509        "encoder/psnr.c",
510    ],
511
512    arch: {
513        arm: {
514            srcs: [
515                "common/arm/ih264_arm_memory_barrier.s",
516                "encoder/arm/ih264e_function_selector.c",
517                "common/arm/ih264_deblk_chroma_a9.s",
518                "common/arm/ih264_deblk_luma_a9.s",
519                "common/arm/ih264_ihadamard_scaling_a9.s",
520                "common/arm/ih264_inter_pred_chroma_a9q.s",
521                "common/arm/ih264_inter_pred_filters_luma_horz_a9q.s",
522                "common/arm/ih264_inter_pred_filters_luma_vert_a9q.s",
523                "common/arm/ih264_inter_pred_luma_bilinear_a9q.s",
524                "common/arm/ih264_inter_pred_luma_copy_a9q.s",
525                "common/arm/ih264_intra_pred_chroma_a9q.s",
526                "common/arm/ih264_intra_pred_luma_16x16_a9q.s",
527                "common/arm/ih264_intra_pred_luma_4x4_a9q.s",
528                "common/arm/ih264_intra_pred_luma_8x8_a9q.s",
529                "common/arm/ih264_iquant_itrans_recon_a9.s",
530                "common/arm/ih264_iquant_itrans_recon_dc_a9.s",
531                "common/arm/ih264_mem_fns_neon.s",
532                "common/arm/ih264_padding_neon.s",
533                "common/arm/ih264_resi_trans_quant_a9.s",
534                "encoder/arm/ih264e_evaluate_intra16x16_modes_a9q.s",
535                "encoder/arm/ih264e_evaluate_intra4x4_modes_a9q.s",
536                "encoder/arm/ih264e_evaluate_intra_chroma_modes_a9q.s",
537                "encoder/arm/ih264e_fmt_conv.s",
538                "encoder/arm/ih264e_function_selector_a9q.c",
539                "encoder/arm/ih264e_half_pel.s",
540                "encoder/arm/ime_distortion_metrics_a9q.s",
541            ],
542        },
543
544        arm64: {
545            srcs: [
546                "common/armv8/ih264_deblk_chroma_av8.s",
547                "common/armv8/ih264_deblk_luma_av8.s",
548                "common/armv8/ih264_ihadamard_scaling_av8.s",
549                "common/armv8/ih264_inter_pred_chroma_av8.s",
550                "common/armv8/ih264_inter_pred_filters_luma_horz_av8.s",
551                "common/armv8/ih264_inter_pred_filters_luma_vert_av8.s",
552                "common/armv8/ih264_inter_pred_luma_copy_av8.s",
553                "common/armv8/ih264_intra_pred_chroma_av8.s",
554                "common/armv8/ih264_intra_pred_luma_16x16_av8.s",
555                "common/armv8/ih264_intra_pred_luma_4x4_av8.s",
556                "common/armv8/ih264_intra_pred_luma_8x8_av8.s",
557                "common/armv8/ih264_iquant_itrans_recon_av8.s",
558                "common/armv8/ih264_iquant_itrans_recon_dc_av8.s",
559                "common/armv8/ih264_mem_fns_neon_av8.s",
560                "common/armv8/ih264_padding_neon_av8.s",
561                "common/armv8/ih264_resi_trans_quant_av8.s",
562                "encoder/arm/ih264e_function_selector.c",
563                "encoder/arm/ih264e_function_selector_av8.c",
564                "encoder/armv8/ih264e_evaluate_intra16x16_modes_av8.s",
565                "encoder/armv8/ih264e_evaluate_intra_chroma_modes_av8.s",
566                "encoder/armv8/ih264e_half_pel_av8.s",
567                "encoder/armv8/ime_distortion_metrics_av8.s",
568            ],
569        },
570
571        riscv64: {
572            srcs: [
573                "encoder/riscv/ih264e_function_selector.c",
574            ],
575        },
576
577        x86: {
578            srcs: [
579                "common/x86/ih264_chroma_intra_pred_filters_ssse3.c",
580                "common/x86/ih264_deblk_chroma_ssse3.c",
581                "common/x86/ih264_deblk_luma_ssse3.c",
582                "common/x86/ih264_ihadamard_scaling_sse42.c",
583                "common/x86/ih264_ihadamard_scaling_ssse3.c",
584                "common/x86/ih264_inter_pred_filters_ssse3.c",
585                "common/x86/ih264_iquant_itrans_recon_dc_ssse3.c",
586                "common/x86/ih264_iquant_itrans_recon_sse42.c",
587                "common/x86/ih264_iquant_itrans_recon_ssse3.c",
588                "common/x86/ih264_luma_intra_pred_filters_ssse3.c",
589                "common/x86/ih264_mem_fns_ssse3.c",
590                "common/x86/ih264_padding_ssse3.c",
591                "common/x86/ih264_resi_trans_quant_sse42.c",
592                "common/x86/ih264_weighted_pred_sse42.c",
593                "encoder/x86/ih264e_function_selector.c",
594                "encoder/x86/ih264e_function_selector_sse42.c",
595                "encoder/x86/ih264e_function_selector_ssse3.c",
596                "encoder/x86/ih264e_half_pel_ssse3.c",
597                "encoder/x86/ih264e_intra_modes_eval_ssse3.c",
598                "encoder/x86/ime_distortion_metrics_sse42.c",
599            ],
600        },
601
602        x86_64: {
603            srcs: [
604                "common/x86/ih264_chroma_intra_pred_filters_ssse3.c",
605                "common/x86/ih264_deblk_chroma_ssse3.c",
606                "common/x86/ih264_deblk_luma_ssse3.c",
607                "common/x86/ih264_ihadamard_scaling_sse42.c",
608                "common/x86/ih264_ihadamard_scaling_ssse3.c",
609                "common/x86/ih264_inter_pred_filters_ssse3.c",
610                "common/x86/ih264_iquant_itrans_recon_dc_ssse3.c",
611                "common/x86/ih264_iquant_itrans_recon_sse42.c",
612                "common/x86/ih264_iquant_itrans_recon_ssse3.c",
613                "common/x86/ih264_luma_intra_pred_filters_ssse3.c",
614                "common/x86/ih264_mem_fns_ssse3.c",
615                "common/x86/ih264_padding_ssse3.c",
616                "common/x86/ih264_resi_trans_quant_sse42.c",
617                "common/x86/ih264_weighted_pred_sse42.c",
618                "encoder/x86/ih264e_function_selector.c",
619                "encoder/x86/ih264e_function_selector_sse42.c",
620                "encoder/x86/ih264e_function_selector_ssse3.c",
621                "encoder/x86/ih264e_half_pel_ssse3.c",
622                "encoder/x86/ih264e_intra_modes_eval_ssse3.c",
623                "encoder/x86/ime_distortion_metrics_sse42.c",
624            ],
625        },
626    },
627
628    apex_available: [
629        "//apex_available:platform", //due to libstagefright_soft_avcenc
630        "com.android.media.swcodec",
631    ],
632    min_sdk_version: "29",
633}
634
635cc_library_static {
636    name: "libsvcenc",
637    defaults: ["libavc_enc_defaults"],
638    whole_static_libs: [
639        "libavcenc",
640    ],
641
642    export_include_dirs: [
643        "common",
644        "common/svc",
645        "encoder",
646        "encoder/svc",
647    ],
648
649    srcs: [
650        "common/svc/isvc_cabac_tables.c",
651        "common/svc/isvc_common_tables.c",
652        "common/svc/isvc_intra_resample.c",
653        "common/svc/isvc_iquant_itrans_recon.c",
654        "common/svc/isvc_mem_fns.c",
655        "common/svc/isvc_resi_trans_quant.c",
656        "encoder/svc/irc_svc_rate_control_api.c",
657        "encoder/svc/isvce_api.c",
658        "encoder/svc/isvce_cabac.c",
659        "encoder/svc/isvce_cabac_encode.c",
660        "encoder/svc/isvce_cabac_init.c",
661        "encoder/svc/isvce_cavlc.c",
662        "encoder/svc/isvce_core_coding.c",
663        "encoder/svc/isvce_deblk.c",
664        "encoder/svc/isvce_downscaler.c",
665        "encoder/svc/isvce_encode.c",
666        "encoder/svc/isvce_encode_header.c",
667        "encoder/svc/isvce_fmt_conv.c",
668        "encoder/svc/isvce_function_selector_generic.c",
669        "encoder/svc/isvce_globals.c",
670        "encoder/svc/isvce_ibl_eval.c",
671        "encoder/svc/isvce_ilp_mv.c",
672        "encoder/svc/isvce_intra_modes_eval.c",
673        "encoder/svc/isvce_mc.c",
674        "encoder/svc/isvce_me.c",
675        "encoder/svc/isvce_mode_stat_visualiser.c",
676        "encoder/svc/isvce_nalu_stat_aggregator.c",
677        "encoder/svc/isvce_process.c",
678        "encoder/svc/isvce_rate_control.c",
679        "encoder/svc/isvce_rc_mem_interface.c",
680        "encoder/svc/isvce_rc_utils.c",
681        "encoder/svc/isvce_residual_pred.c",
682        "encoder/svc/isvce_sub_pic_rc.c",
683        "encoder/svc/isvce_utils.c",
684    ],
685
686    arch: {
687        arm: {
688            local_include_dirs: [
689                "common/arm/svc",
690                "encoder/arm/svc",
691            ],
692
693            srcs: [
694                "encoder/arm/svc/isvce_function_selector.c",
695                "common/arm/svc/isvc_intra_sampling_neon.c",
696                "common/arm/svc/isvc_iquant_itrans_recon_neon.c",
697                "common/arm/svc/isvc_mem_fns_neon.c",
698                "common/arm/svc/isvc_resi_trans_quant_neon.c",
699                "encoder/arm/svc/isvce_downscaler_neon.c",
700                "encoder/arm/svc/isvce_function_selector_a9q.c",
701                "encoder/arm/svc/isvce_rc_utils_neon.c",
702                "encoder/arm/svc/isvce_residual_pred_neon.c",
703            ],
704        },
705
706        arm64: {
707            local_include_dirs: [
708                "encoder/arm/svc",
709                "common/arm/svc",
710            ],
711
712            srcs: [
713                "common/arm/svc/isvc_intra_sampling_neon.c",
714                "common/arm/svc/isvc_iquant_itrans_recon_neon.c",
715                "common/arm/svc/isvc_mem_fns_neon.c",
716                "common/arm/svc/isvc_resi_trans_quant_neon.c",
717                "encoder/arm/svc/isvce_downscaler_neon.c",
718                "encoder/arm/svc/isvce_function_selector.c",
719                "encoder/arm/svc/isvce_function_selector_av8.c",
720                "encoder/arm/svc/isvce_rc_utils_neon.c",
721                "encoder/arm/svc/isvce_residual_pred_neon.c",
722            ],
723        },
724
725        riscv64: {
726            local_include_dirs: [
727                "encoder/riscv/svc",
728            ],
729
730            srcs: [
731                "encoder/riscv/svc/isvce_function_selector.c",
732            ],
733        },
734
735        x86: {
736            local_include_dirs: [
737                "common/x86/svc",
738                "encoder/x86/svc",
739            ],
740
741            srcs: [
742                "common/x86/svc/isvc_intra_resample_sse42.c",
743                "common/x86/svc/isvc_iquant_itrans_recon_dc_ssse3.c",
744                "common/x86/svc/isvc_iquant_itrans_recon_sse42.c",
745                "common/x86/svc/isvc_iquant_itrans_recon_ssse3.c",
746                "common/x86/svc/isvc_mem_fns_sse42.c",
747                "common/x86/svc/isvc_mem_fns_ssse3.c",
748                "common/x86/svc/isvc_padding_ssse3.c",
749                "common/x86/svc/isvc_resi_trans_quant_sse42.c",
750                "encoder/x86/svc/isvce_downscaler_sse42.c",
751                "encoder/x86/svc/isvce_function_selector.c",
752                "encoder/x86/svc/isvce_function_selector_sse42.c",
753                "encoder/x86/svc/isvce_function_selector_ssse3.c",
754                "encoder/x86/svc/isvce_rc_utils_sse42.c",
755                "encoder/x86/svc/isvce_residual_pred_sse42.c",
756            ],
757        },
758
759        x86_64: {
760            local_include_dirs: [
761                "common/x86/svc",
762                "encoder/x86/svc",
763            ],
764
765            srcs: [
766                "common/x86/svc/isvc_intra_resample_sse42.c",
767                "common/x86/svc/isvc_iquant_itrans_recon_dc_ssse3.c",
768                "common/x86/svc/isvc_iquant_itrans_recon_sse42.c",
769                "common/x86/svc/isvc_iquant_itrans_recon_ssse3.c",
770                "common/x86/svc/isvc_mem_fns_sse42.c",
771                "common/x86/svc/isvc_mem_fns_ssse3.c",
772                "common/x86/svc/isvc_padding_ssse3.c",
773                "common/x86/svc/isvc_resi_trans_quant_sse42.c",
774                "encoder/x86/svc/isvce_downscaler_sse42.c",
775                "encoder/x86/svc/isvce_function_selector.c",
776                "encoder/x86/svc/isvce_function_selector_sse42.c",
777                "encoder/x86/svc/isvce_function_selector_ssse3.c",
778                "encoder/x86/svc/isvce_rc_utils_sse42.c",
779                "encoder/x86/svc/isvce_residual_pred_sse42.c",
780            ],
781        },
782    },
783}
784
785cc_library_static {
786    name: "libsvcdec",
787    defaults: ["libavc_dec_defaults"],
788    whole_static_libs: [
789        "libavcdec",
790    ],
791
792    export_include_dirs: [
793        "common",
794        "common/svc",
795        "decoder",
796        "decoder/svc",
797    ],
798
799    srcs: [
800        "decoder/svc/isvcd_api.c",
801        "decoder/svc/isvcd_cabac.c",
802        "decoder/svc/isvcd_cabac_init_tables.c",
803        "decoder/svc/isvcd_compute_bs.c",
804        "decoder/svc/isvcd_function_selector_generic.c",
805        "decoder/svc/isvcd_ii_pred.c",
806        "decoder/svc/isvcd_intra_resamp.c",
807        "decoder/svc/isvcd_iquant_itrans.c",
808        "decoder/svc/isvcd_iquant_itrans_residual.c",
809        "decoder/svc/isvcd_iquant_itrans_residual_recon.c",
810        "decoder/svc/isvcd_mb_utils.c",
811        "decoder/svc/isvcd_mode_mv_resamp.c",
812        "decoder/svc/isvcd_nal.c",
813        "decoder/svc/isvcd_nal_parse.c",
814        "decoder/svc/isvcd_parse_cavlc.c",
815        "decoder/svc/isvcd_parse_ebslice.c",
816        "decoder/svc/isvcd_parse_eislice.c",
817        "decoder/svc/isvcd_parse_epslice.c",
818        "decoder/svc/isvcd_parse_headers.c",
819        "decoder/svc/isvcd_parse_slice.c",
820        "decoder/svc/isvcd_pred_residual_recon.c",
821        "decoder/svc/isvcd_process_ebslice.c",
822        "decoder/svc/isvcd_process_epslice.c",
823        "decoder/svc/isvcd_residual_resamp.c",
824        "decoder/svc/isvcd_thread_compute_bs.c",
825        "decoder/svc/isvcd_thread_parse_decode.c",
826        "decoder/svc/isvcd_utils.c",
827        "decoder/svc/isvcd_vui.c",
828    ],
829
830    arch: {
831        arm: {
832            srcs: [
833                "decoder/arm/svc/isvcd_function_selector.c",
834                "decoder/arm/svc/isvcd_function_selector_neon.c",
835                "decoder/arm/svc/isvcd_intra_resamp_neon.c",
836                "decoder/arm/svc/isvcd_iquant_itrans_neon.c",
837                "decoder/arm/svc/isvcd_iquant_itrans_residual_neon.c",
838                "decoder/arm/svc/isvcd_iquant_itrans_residual_recon_neon.c",
839                "decoder/arm/svc/isvcd_pred_residual_recon_neon.c",
840                "decoder/arm/svc/isvcd_residual_resamp_neon.c",
841            ],
842        },
843
844        arm64: {
845            srcs: [
846                "decoder/arm/svc/isvcd_function_selector.c",
847                "decoder/arm/svc/isvcd_function_selector_neon.c",
848                "decoder/arm/svc/isvcd_intra_resamp_neon.c",
849                "decoder/arm/svc/isvcd_iquant_itrans_neon.c",
850                "decoder/arm/svc/isvcd_iquant_itrans_residual_neon.c",
851                "decoder/arm/svc/isvcd_iquant_itrans_residual_recon_neon.c",
852                "decoder/arm/svc/isvcd_pred_residual_recon_neon.c",
853                "decoder/arm/svc/isvcd_residual_resamp_neon.c",
854            ],
855        },
856
857        riscv64: {
858            local_include_dirs: [
859                "decoder/riscv/svc",
860            ],
861
862            srcs: [
863                "decoder/riscv/svc/isvcd_function_selector.c",
864            ],
865        },
866        x86: {
867            srcs: [
868                "decoder/x86/svc/isvcd_function_selector.c",
869                "decoder/x86/svc/isvcd_function_selector_sse42.c",
870                "decoder/x86/svc/isvcd_intra_resamp_sse42.c",
871                "decoder/x86/svc/isvcd_iquant_itrans_residual_recon_sse42.c",
872                "decoder/x86/svc/isvcd_iquant_itrans_residual_sse42.c",
873                "decoder/x86/svc/isvcd_iquant_itrans_sse42.c",
874                "decoder/x86/svc/isvcd_pred_residual_recon_sse42.c",
875                "decoder/x86/svc/isvcd_residual_resamp_sse42.c",
876            ],
877        },
878
879        x86_64: {
880            srcs: [
881                "decoder/x86/svc/isvcd_function_selector.c",
882                "decoder/x86/svc/isvcd_function_selector_sse42.c",
883                "decoder/x86/svc/isvcd_intra_resamp_sse42.c",
884                "decoder/x86/svc/isvcd_iquant_itrans_residual_recon_sse42.c",
885                "decoder/x86/svc/isvcd_iquant_itrans_residual_sse42.c",
886                "decoder/x86/svc/isvcd_iquant_itrans_sse42.c",
887                "decoder/x86/svc/isvcd_pred_residual_recon_sse42.c",
888                "decoder/x86/svc/isvcd_residual_resamp_sse42.c",
889            ],
890        },
891    },
892}
893