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