From b8949f2157d09c4e1235fbc4af2852f05e3b4759 Mon Sep 17 00:00:00 2001 From: Laramie Leavitt Date: Tue, 1 Nov 2022 11:43:36 -0700 Subject: [PATCH] Update AOM and AVIF PiperOrigin-RevId: 485376187 Change-Id: I3b7636a30d72c1df1d6f687b74c177cb25b5e30b --- .../org_aomedia_aom/libaom.BUILD.bazel | 687 +++++------------- third_party/org_aomedia_aom/workspace.bzl | 6 +- third_party/org_aomedia_avif/workspace.bzl | 6 +- 3 files changed, 188 insertions(+), 511 deletions(-) diff --git a/third_party/org_aomedia_aom/libaom.BUILD.bazel b/third_party/org_aomedia_aom/libaom.BUILD.bazel index 9ad69d96e..a84a35a80 100644 --- a/third_party/org_aomedia_aom/libaom.BUILD.bazel +++ b/third_party/org_aomedia_aom/libaom.BUILD.bazel @@ -83,9 +83,68 @@ LIBAOM_COPTS = select({ ":arm64": [ "-DNEON_INTRINSICS", ], + # armv7 may need -fpu=neon as well. "//conditions:default": [], }) +ARCH_DICT = { + "sse": select({ + ":compiler_msvc": ["/arch:SSE"], + "//conditions:default": ["-msse"], + }), + "sse2": select({ + ":compiler_msvc": ["/arch:SSE2"], + "//conditions:default": ["-msse2"], + }), + "sse3": select({ + ":compiler_msvc": [ + "-D__SSE__", + "-D__SSE2__", + "-D__SSE3__", + ], + "//conditions:default": ["-msse3"], + }), + "ssse3": select({ + ":compiler_msvc": [ + "-D__SSE__", + "-D__SSE2__", + "-D__SSE3__", + "-D__SSSE3__", + ], + "//conditions:default": ["-mssse3"], + }), + "sse4": select({ + ":compiler_msvc": [ + "-D__SSE__", + "-D__SSE2__", + "-D__SSE3__", + "-D__SSSE3__", + "-D__SSE4__", + ], + "//conditions:default": ["-msse4"], + }), + "sse42": select({ + ":compiler_msvc": [ + "-D__SSE__", + "-D__SSE2__", + "-D__SSE3__", + "-D__SSSE3__", + "-D__SSE4__", + "-D__SSE4_1__", + "-D__SSE4_2__", + ], + "//conditions:default": ["-msse4.2"], + }), + "avx": select({ + ":compiler_msvc": ["/arch:AVX"], + "//conditions:default": ["-mavx"], + }), + "avx2": select({ + ":compiler_msvc": ["/arch:AVX2"], + "//conditions:default": ["-mavx2"], + }), +} + NASM_INCLUDES = [ "LICENSE", # To get -I./ "config/aom_config.asm", @@ -109,247 +168,67 @@ cc_library( ) # AV1 section -AV1_SRCS = [ - "av1/arg_defs.c", - "av1/av1_cx_iface.c", - "av1/av1_dx_iface.c", - "av1/common/alloccommon.c", - "av1/common/av1_inv_txfm1d.c", - "av1/common/av1_inv_txfm2d.c", - "av1/common/av1_loopfilter.c", - "av1/common/av1_rtcd.c", - "av1/common/av1_txfm.c", - "av1/common/blockd.c", - "av1/common/cdef.c", - "av1/common/cdef_block.c", - "av1/common/cfl.c", - "av1/common/convolve.c", - "av1/common/debugmodes.c", - "av1/common/entropy.c", - "av1/common/entropymode.c", - "av1/common/entropymv.c", - "av1/common/frame_buffers.c", - "av1/common/idct.c", - "av1/common/mvref_common.c", - "av1/common/obu_util.c", - # "av1/common/ppc/cfl_ppc.c", - "av1/common/pred_common.c", - "av1/common/quant_common.c", - "av1/common/reconinter.c", - "av1/common/reconintra.c", - "av1/common/resize.c", - "av1/common/restoration.c", - "av1/common/scale.c", - "av1/common/scan.c", - "av1/common/seg_common.c", - "av1/common/thread_common.c", - "av1/common/tile_common.c", - "av1/common/timing.c", - "av1/common/txb_common.c", - "av1/common/warped_motion.c", - "av1/decoder/accounting.c", - "av1/decoder/decodeframe.c", - "av1/decoder/decodemv.c", - "av1/decoder/decoder.c", - "av1/decoder/decodetxb.c", - "av1/decoder/detokenize.c", - # "av1/decoder/inspection.c", - "av1/decoder/obu.c", - "av1/encoder/allintra_vis.c", - "av1/encoder/aq_complexity.c", - "av1/encoder/aq_cyclicrefresh.c", - "av1/encoder/aq_variance.c", - "av1/encoder/av1_fwd_txfm1d.c", - "av1/encoder/av1_fwd_txfm2d.c", - "av1/encoder/av1_noise_estimate.c", - "av1/encoder/av1_quantize.c", - # "av1/encoder/av1_temporal_denoiser.c", - "av1/encoder/bitstream.c", - "av1/encoder/blockiness.c", - "av1/encoder/cnn.c", - "av1/encoder/compound_type.c", - "av1/encoder/context_tree.c", - "av1/encoder/corner_detect.c", - "av1/encoder/corner_match.c", - "av1/encoder/cost.c", - "av1/encoder/dwt.c", - "av1/encoder/encode_strategy.c", - "av1/encoder/encodeframe.c", - "av1/encoder/encodeframe_utils.c", - "av1/encoder/encodemb.c", - "av1/encoder/encodemv.c", - "av1/encoder/encoder.c", - "av1/encoder/encoder_utils.c", - "av1/encoder/encodetxb.c", - "av1/encoder/ethread.c", - "av1/encoder/extend.c", - "av1/encoder/external_partition.c", - "av1/encoder/firstpass.c", - "av1/encoder/global_motion.c", - "av1/encoder/global_motion_facade.c", - "av1/encoder/gop_structure.c", - "av1/encoder/hash.c", - "av1/encoder/hash_motion.c", - "av1/encoder/hybrid_fwd_txfm.c", - "av1/encoder/interp_search.c", - "av1/encoder/intra_mode_search.c", - "av1/encoder/level.c", - "av1/encoder/lookahead.c", - "av1/encoder/mcomp.c", - "av1/encoder/ml.c", - "av1/encoder/motion_search_facade.c", - "av1/encoder/mv_prec.c", - "av1/encoder/nonrd_pickmode.c", - "av1/encoder/optical_flow.c", - "av1/encoder/palette.c", - "av1/encoder/partition_search.c", - "av1/encoder/partition_strategy.c", - "av1/encoder/pass2_strategy.c", - "av1/encoder/pickcdef.c", - "av1/encoder/picklpf.c", - "av1/encoder/pickrst.c", - "av1/encoder/ransac.c", - "av1/encoder/ratectrl.c", - "av1/encoder/rd.c", - "av1/encoder/rdopt.c", - "av1/encoder/reconinter_enc.c", - "av1/encoder/segmentation.c", - "av1/encoder/sparse_linear_solver.c", - "av1/encoder/speed_features.c", - "av1/encoder/superres_scale.c", - "av1/encoder/svc_layercontext.c", - "av1/encoder/temporal_filter.c", - "av1/encoder/thirdpass.c", - "av1/encoder/tokenize.c", - "av1/encoder/tpl_model.c", - # "av1/encoder/tune_butteraugli.c", - # "av1/encoder/tune_vmaf.c", - "av1/encoder/tx_search.c", - "av1/encoder/txb_rdopt.c", - "av1/encoder/var_based_part.c", - "av1/encoder/wedge_utils.c", -] + select({ - ":arm64": [ - "av1/encoder/arm/neon/ml_neon.c", - "av1/encoder/arm/neon/rdopt_neon.c", - "av1/encoder/arm/neon/quantize_neon.c", - "av1/encoder/arm/neon/av1_fwd_txfm2d_neon.c", - "av1/encoder/arm/neon/picksrt_neon.c", - # "av1/encoder/arm/neon/av1_temporal_denoiser_neon.c", - "av1/encoder/arm/neon/hybrid_fwd_txfm_neon.c", - "av1/encoder/arm/neon/highbd_fwd_txfm_neon.c", - "av1/encoder/arm/neon/av1_error_neon.c", - "av1/encoder/arm/neon/encodetxb_neon.c", - "av1/common/arm/av1_txfm_neon.c", - "av1/common/arm/blend_a64_vmask_neon.c", - "av1/common/arm/blend_a64_hmask_neon.c", - "av1/common/arm/cfl_neon.c", - "av1/common/arm/av1_inv_txfm_neon.c", - "av1/common/arm/wiener_convolve_neon.c", - "av1/common/arm/reconinter_neon.c", - "av1/common/arm/warp_plane_neon.c", - "av1/common/arm/convolve_neon.c", - "av1/common/arm/resize_neon.c", - "av1/common/arm/jnt_convolve_neon.c", - "av1/common/arm/selfguided_neon.c", - "av1/common/arm/reconintra_neon.c", - "av1/common/arm/highbd_inv_txfm_neon.c", - "av1/common/cdef_block_neon.c", +AV1_SRCS = glob( + include = [ + "av1/*.c", + "av1/common/*.c", + "av1/decoder/*.c", + "av1/encoder/*.c", + ], + exclude = [ + "av1/decoder/inspection.c", + "av1/encoder/av1_temporal_denoiser.c", + "av1/encoder/tune_butteraugli.c", + "av1/encoder/tune_vmaf.c", ], +) + select({ + ":arm64": glob( + include = [ + "av1/common/arm/*.c", + "av1/decoder/arm/neon/*.c", + "av1/encoder/arm/neon/*.c", + ], + exclude = [ + "av1/encoder/arm/neon/av1_temporal_denoiser_neon.c", + ], + ), "//conditions:default": [], }) -AV1_SRCS_SSE = [ - "av1/common/cdef_block_sse2.c", - "av1/common/cdef_block_sse4.c", - "av1/common/cdef_block_ssse3.c", - "av1/common/x86/highbd_inv_txfm_sse4.c", - "av1/common/x86/wiener_convolve_sse2.c", - "av1/common/x86/av1_convolve_horiz_rs_sse4.c", - "av1/common/x86/resize_ssse3.c", - "av1/common/x86/av1_inv_txfm_ssse3.c", - "av1/common/x86/cfl_sse2.c", - "av1/common/x86/selfguided_sse4.c", - "av1/common/x86/cfl_ssse3.c", - "av1/common/x86/jnt_convolve_ssse3.c", - "av1/common/x86/warp_plane_sse4.c", - "av1/common/x86/highbd_convolve_2d_ssse3.c", - "av1/common/x86/highbd_jnt_convolve_sse4.c", - "av1/common/x86/reconinter_ssse3.c", - "av1/common/x86/reconinter_sse4.c", - "av1/common/x86/highbd_warp_plane_sse4.c", - "av1/common/x86/jnt_convolve_sse2.c", - "av1/common/x86/intra_edge_sse4.c", - "av1/common/x86/highbd_wiener_convolve_ssse3.c", - "av1/common/x86/av1_convolve_scale_sse4.c", - "av1/common/x86/convolve_sse2.c", - "av1/common/x86/filterintra_sse4.c", - "av1/common/x86/highbd_convolve_2d_sse4.c", - "av1/common/x86/convolve_2d_sse2.c", - "av1/common/x86/av1_txfm_sse4.c", - "av1/common/x86/warp_plane_sse2.c", - "av1/encoder/x86/av1_fwd_txfm_sse2.c", - "av1/encoder/x86/av1_highbd_quantize_sse4.c", - "av1/encoder/x86/encodetxb_sse4.c", - "av1/encoder/x86/reconinter_enc_ssse3.c", - "av1/encoder/x86/highbd_fwd_txfm_sse4.c", - "av1/encoder/x86/wedge_utils_sse2.c", - "av1/encoder/x86/reconinter_enc_sse2.c", - "av1/encoder/x86/corner_match_sse4.c", - "av1/encoder/x86/pickrst_sse4.c", - "av1/encoder/x86/temporal_filter_sse2.c", - "av1/encoder/x86/av1_fwd_txfm1d_sse4.c", - "av1/encoder/x86/encodetxb_sse2.c", - "av1/encoder/x86/av1_k_means_sse2.c", - "av1/encoder/x86/av1_quantize_sse2.c", - "av1/encoder/x86/ml_sse3.c", - "av1/encoder/x86/av1_fwd_txfm2d_sse4.c", - "av1/encoder/x86/highbd_block_error_intrin_sse2.c", - "av1/encoder/x86/hash_sse42.c", - # "av1/encoder/x86/av1_temporal_denoiser_sse2.c", - "av1/encoder/x86/rdopt_sse4.c", - "av1/encoder/x86/highbd_temporal_filter_sse2.c", -] +AV1_ASM = glob(["av1/encoder/x86/*.asm"]) -AV1_SRCS_AVX2 = [ - "av1/common/cdef_block_avx2.c", - "av1/common/x86/highbd_convolve_2d_avx2.c", - "av1/common/x86/av1_inv_txfm_avx2.c", - "av1/common/x86/cfl_avx2.c", - "av1/common/x86/reconinter_avx2.c", - "av1/common/x86/highbd_warp_affine_avx2.c", - "av1/common/x86/wiener_convolve_avx2.c", - "av1/common/x86/warp_plane_avx2.c", - "av1/common/x86/convolve_2d_avx2.c", - "av1/common/x86/highbd_jnt_convolve_avx2.c", - "av1/common/x86/convolve_avx2.c", - "av1/common/x86/selfguided_avx2.c", - "av1/common/x86/jnt_convolve_avx2.c", - "av1/common/x86/highbd_wiener_convolve_avx2.c", - "av1/common/x86/highbd_inv_txfm_avx2.c", - "av1/encoder/x86/rdopt_avx2.c", - "av1/encoder/x86/temporal_filter_avx2.c", - "av1/encoder/x86/av1_fwd_txfm2d_avx2.c", - "av1/encoder/x86/error_intrin_avx2.c", - "av1/encoder/x86/cnn_avx2.c", - "av1/encoder/x86/wedge_utils_avx2.c", - "av1/encoder/x86/highbd_temporal_filter_avx2.c", - "av1/encoder/x86/highbd_block_error_intrin_avx2.c", - "av1/encoder/x86/pickrst_avx2.c", - "av1/encoder/x86/corner_match_avx2.c", - "av1/encoder/x86/highbd_fwd_txfm_avx2.c", - "av1/encoder/x86/av1_quantize_avx2.c", - "av1/encoder/x86/av1_highbd_quantize_avx2.c", - "av1/encoder/x86/av1_k_means_avx2.c", - "av1/encoder/x86/encodetxb_avx2.c", -] - -AV1_ASM = [ - "av1/encoder/x86/av1_quantize_ssse3_x86_64.asm", - "av1/encoder/x86/dct_sse2.asm", - "av1/encoder/x86/av1_ssim_opt_x86_64.asm", - "av1/encoder/x86/error_sse2.asm", -] +AV1_SRC_PATTERNS = { + "sse2": [ + "av1/encoder/x86/*_sse2.c", + "av1/common/x86/*_sse2.c", + ], + "sse3": [ + "av1/encoder/x86/*_sse3.c", + "av1/common/x86/*_sse3.c", + ], + "ssse3": [ + "av1/encoder/x86/*_ssse3.c", + "av1/common/x86/*_ssse3.c", + ], + "sse4": [ + "av1/encoder/x86/*_sse4.c", + "av1/common/x86/*_sse4.c", + ], + "sse42": [ + "av1/encoder/x86/*_sse42.c", + "av1/common/x86/*_sse42.c", + ], + "avx": [ + "av1/encoder/x86/*_avx.c", + "av1/common/x86/*_avx.c", + "third_party/SVT-AV1/*.h", + ], + "avx2": [ + "av1/encoder/x86/*_avx2.c", + "av1/common/x86/*_avx2.c", + "third_party/SVT-AV1/*.h", + ], +} cc_library( name = "av1", @@ -370,9 +249,7 @@ cc_library( ":arm64": [], "//conditions:default": [ ":av1_x86_asm", - ":av1_x86_sse", - ":av1_x86_avx2", - ], + ] + [":av1_x86_{x}".format(x = x) for x in AV1_SRC_PATTERNS.keys()], }), alwayslink = 1, ) @@ -385,198 +262,47 @@ nasm_library( alwayslink = 1, ) -cc_library( - name = "av1_x86_sse", - srcs = AV1_SRCS_SSE, - copts = LIBAOM_COPTS + select({ - ":compiler_msvc": [ - # Set up /arch:SSE4.2, which does not exist. - "-D__SSE__", - "-D__SSE2__", - "-D__SSE3__", - "-D__SSSE3__", - "-D__SSE4_1__", - "-D__SSE4_2__", +[ + cc_library( + name = "av1_x86_{arch}".format(arch = arch), + srcs = glob( + include = AV1_SRC_PATTERNS[arch], + exclude = [ + "av1/encoder/x86/av1_temporal_denoiser_sse2.c", + ], + ), + copts = LIBAOM_COPTS + ARCH_DICT[arch], + textual_hdrs = LIBAOM_HEADERS, + deps = [ + ":config", + ":vector", ], - "//conditions:default": ["-msse4.2"], - }), - textual_hdrs = LIBAOM_HEADERS, - deps = [ - ":config", - ":vector", - ], - alwayslink = 1, -) - -cc_library( - name = "av1_x86_avx2", - srcs = AV1_SRCS_AVX2, - copts = LIBAOM_COPTS + select({ - ":compiler_msvc": ["/arch:AVX2"], - "//conditions:default": ["-mavx2"], - }), - textual_hdrs = LIBAOM_HEADERS, - deps = [ - ":config", - ":vector", - ], - alwayslink = 1, -) + alwayslink = 1, + ) + for arch in AV1_SRC_PATTERNS.keys() +] # DSP section -DSP_SRCS = [ - "aom_dsp/aom_convolve.c", - "aom_dsp/aom_dsp_rtcd.c", - "aom_dsp/avg.c", - "aom_dsp/binary_codes_reader.c", - "aom_dsp/binary_codes_writer.c", - "aom_dsp/bitreader.c", - "aom_dsp/bitreader_buffer.c", - "aom_dsp/bitwriter.c", - "aom_dsp/bitwriter_buffer.c", - "aom_dsp/blend_a64_hmask.c", - "aom_dsp/blend_a64_mask.c", - "aom_dsp/blend_a64_vmask.c", - "aom_dsp/blk_sse_sum.c", - # "aom_dsp/butteraugli.c", - "aom_dsp/entcode.c", - "aom_dsp/entdec.c", - "aom_dsp/entenc.c", - "aom_dsp/fastssim.c", - "aom_dsp/fft.c", - "aom_dsp/fwd_txfm.c", - "aom_dsp/grain_synthesis.c", - "aom_dsp/grain_table.c", - "aom_dsp/intrapred.c", - "aom_dsp/loopfilter.c", - "aom_dsp/noise_model.c", - "aom_dsp/noise_util.c", - "aom_dsp/odintrin.c", - "aom_dsp/psnr.c", - "aom_dsp/psnrhvs.c", - "aom_dsp/quantize.c", - "aom_dsp/sad.c", - "aom_dsp/sad_av1.c", - "aom_dsp/sse.c", - "aom_dsp/ssim.c", - "aom_dsp/subtract.c", - "aom_dsp/sum_squares.c", - "aom_dsp/variance.c", - # "aom_dsp/vmaf.c", - "aom_dsp/x86/aom_asm_stubs.c", -] + select({ - ":arm64": [ - "aom_dsp/arm/aom_convolve_copy_neon.c", - "aom_dsp/arm/avg_neon.c", - "aom_dsp/arm/blend_a64_mask_neon.c", - "aom_dsp/arm/fwd_txfm_neon.c", - "aom_dsp/arm/hadamard_neon.c", - "aom_dsp/arm/intrapred_neon.c", - "aom_dsp/arm/loopfilter_neon.c", - "aom_dsp/arm/sad4d_neon.c", - "aom_dsp/arm/sad_neon.c", - "aom_dsp/arm/sse_neon.c", - "aom_dsp/arm/subpel_variance_neon.c", - "aom_dsp/arm/subtract_neon.c", - "aom_dsp/arm/sum_squares_neon.c", - "aom_dsp/arm/variance_neon.c", +DSP_SRCS = glob( + include = ["aom_dsp/*.c"], + exclude = [ + "aom_dsp/butteraugli.c", + "aom_dsp/vmaf.c", ], - "//conditions:default": [], +) + select({ + ":arm64": glob(["aom_dsp/arm/*_neon.c"]), + "//conditions:default": ["aom_dsp/x86/aom_asm_stubs.c"], }) -DSP_SRCS_SSE = [ - "aom_dsp/x86/adaptive_quantize_sse2.c", - "aom_dsp/x86/aom_convolve_copy_sse2.c", - "aom_dsp/x86/aom_subpixel_8t_intrin_sse2.c", - "aom_dsp/x86/aom_subpixel_8t_intrin_ssse3.c", - "aom_dsp/x86/avg_intrin_sse2.c", - "aom_dsp/x86/blend_a64_hmask_sse4.c", - "aom_dsp/x86/blend_a64_mask_sse4.c", - "aom_dsp/x86/blend_a64_vmask_sse4.c", - "aom_dsp/x86/blk_sse_sum_sse2.c", - "aom_dsp/x86/fft_sse2.c", - "aom_dsp/x86/fwd_txfm_sse2.c", - "aom_dsp/x86/highbd_adaptive_quantize_sse2.c", - "aom_dsp/x86/highbd_convolve_sse2.c", - "aom_dsp/x86/highbd_convolve_ssse3.c", - "aom_dsp/x86/highbd_intrapred_sse2.c", - "aom_dsp/x86/highbd_loopfilter_sse2.c", - "aom_dsp/x86/highbd_quantize_intrin_sse2.c", - "aom_dsp/x86/highbd_subtract_sse2.c", - "aom_dsp/x86/highbd_variance_sse2.c", - "aom_dsp/x86/highbd_variance_sse4.c", - "aom_dsp/x86/intrapred_sse2.c", - "aom_dsp/x86/intrapred_ssse3.c", - "aom_dsp/x86/jnt_sad_ssse3.c", - "aom_dsp/x86/jnt_variance_ssse3.c", - "aom_dsp/x86/loopfilter_sse2.c", - "aom_dsp/x86/masked_sad4d_ssse3.c", - "aom_dsp/x86/masked_sad_intrin_ssse3.c", - "aom_dsp/x86/masked_variance_intrin_ssse3.c", - "aom_dsp/x86/obmc_sad_sse4.c", - "aom_dsp/x86/obmc_variance_sse4.c", - "aom_dsp/x86/quantize_sse2.c", - "aom_dsp/x86/quantize_ssse3.c", - "aom_dsp/x86/sse_sse4.c", - "aom_dsp/x86/sum_squares_sse2.c", - "aom_dsp/x86/variance_impl_ssse3.c", - "aom_dsp/x86/variance_sse2.c", -] +DSP_ASM = glob(["aom_dsp/x86/*.asm"]) -DSP_SRCS_AVX = [ - "aom_dsp/x86/aom_quantize_avx.c", -] - -DSP_SRCS_AVX2 = [ - "aom_dsp/x86/adaptive_quantize_avx2.c", - "aom_dsp/x86/aom_convolve_copy_avx2.c", - "aom_dsp/x86/aom_subpixel_8t_intrin_avx2.c", - "aom_dsp/x86/avg_intrin_avx2.c", - "aom_dsp/x86/blend_a64_mask_avx2.c", - "aom_dsp/x86/blk_sse_sum_avx2.c", - "aom_dsp/x86/fft_avx2.c", - "aom_dsp/x86/highbd_adaptive_quantize_avx2.c", - "aom_dsp/x86/highbd_convolve_avx2.c", - "aom_dsp/x86/highbd_loopfilter_avx2.c", - "aom_dsp/x86/highbd_quantize_intrin_avx2.c", - "aom_dsp/x86/highbd_variance_avx2.c", - "aom_dsp/x86/intrapred_avx2.c", - "aom_dsp/x86/masked_sad_intrin_avx2.c", - "aom_dsp/x86/obmc_sad_avx2.c", - "aom_dsp/x86/obmc_variance_avx2.c", - "aom_dsp/x86/sad4d_avx2.c", - "aom_dsp/x86/sad_avx2.c", - "aom_dsp/x86/sad_highbd_avx2.c", - "aom_dsp/x86/sad_impl_avx2.c", - "aom_dsp/x86/sse_avx2.c", - "aom_dsp/x86/subtract_avx2.c", - "aom_dsp/x86/sum_squares_avx2.c", - "aom_dsp/x86/variance_avx2.c", - "aom_dsp/x86/variance_impl_avx2.c", -] - -DSP_ASM = [ - "aom_dsp/x86/aom_high_subpixel_8t_sse2.asm", - "aom_dsp/x86/aom_high_subpixel_bilinear_sse2.asm", - "aom_dsp/x86/aom_subpixel_8t_sse2.asm", - "aom_dsp/x86/aom_subpixel_8t_ssse3.asm", - "aom_dsp/x86/aom_subpixel_bilinear_sse2.asm", - "aom_dsp/x86/aom_subpixel_bilinear_ssse3.asm", - "aom_dsp/x86/fwd_txfm_ssse3_x86_64.asm", - "aom_dsp/x86/highbd_intrapred_asm_sse2.asm", - "aom_dsp/x86/highbd_sad4d_sse2.asm", - "aom_dsp/x86/highbd_sad_sse2.asm", - "aom_dsp/x86/highbd_subpel_variance_impl_sse2.asm", - "aom_dsp/x86/highbd_variance_impl_sse2.asm", - "aom_dsp/x86/intrapred_asm_sse2.asm", - "aom_dsp/x86/inv_wht_sse2.asm", - "aom_dsp/x86/quantize_ssse3_x86_64.asm", - "aom_dsp/x86/sad4d_sse2.asm", - "aom_dsp/x86/sad_sse2.asm", - "aom_dsp/x86/ssim_sse2_x86_64.asm", - "aom_dsp/x86/subpel_variance_sse2.asm", - "aom_dsp/x86/subtract_sse2.asm", -] +DSP_SRC_PATTERNS = { + "sse2": ["aom_dsp/x86/*_sse2.c"], + "ssse3": ["aom_dsp/x86/*_ssse3.c"], + "sse4": ["aom_dsp/x86/*_sse4.c"], + "avx": ["aom_dsp/x86/*_avx.c"], + "avx2": ["aom_dsp/x86/*_avx2.c"], +} cc_library( name = "dsp", @@ -585,14 +311,13 @@ cc_library( textual_hdrs = LIBAOM_HEADERS, deps = [ ":config", + ":fastfeat", + ":vector", ] + select({ ":arm64": [], "//conditions:default": [ ":dsp_x86_asm", - ":dsp_x86_avx2", - ":dsp_x86_avx", - ":dsp_x86_sse", - ], + ] + [":dsp_x86_{x}".format(x = x) for x in DSP_SRC_PATTERNS.keys()], }), alwayslink = 1, ) @@ -605,66 +330,31 @@ nasm_library( alwayslink = 1, ) -cc_library( - name = "dsp_x86_sse", - srcs = DSP_SRCS_SSE, - copts = LIBAOM_COPTS + select({ - ":compiler_msvc": [ - # Set up /arch:SSE4.1, which does not exist. - "-D__SSE__", - "-D__SSE2__", - "-D__SSE3__", - "-D__SSSE3__", - "-D__SSE4_1__", +[ + cc_library( + name = "dsp_x86_{arch}".format(arch = arch), + srcs = glob(DSP_SRC_PATTERNS[arch]), + copts = LIBAOM_COPTS + ARCH_DICT[arch], + textual_hdrs = LIBAOM_HEADERS, + deps = [ + ":config", ], - "//conditions:default": ["-msse4.1"], - }), - textual_hdrs = LIBAOM_HEADERS, - deps = [":config"], - alwayslink = 1, -) - -cc_library( - name = "dsp_x86_avx", - srcs = DSP_SRCS_AVX, - copts = LIBAOM_COPTS + select({ - ":compiler_msvc": ["/arch:AVX"], - "//conditions:default": ["-mavx"], - }), - textual_hdrs = LIBAOM_HEADERS, - deps = [":config"], - alwayslink = 1, -) - -cc_library( - name = "dsp_x86_avx2", - srcs = DSP_SRCS_AVX2, - copts = LIBAOM_COPTS + select({ - ":compiler_msvc": ["/arch:AVX2"], - "//conditions:default": ["-mavx2"], - }), - textual_hdrs = LIBAOM_HEADERS, - deps = [":config"], - alwayslink = 1, -) - -# Other -SCALE_SRCS = [ - "aom_scale/aom_scale_rtcd.c", - "aom_scale/generic/aom_scale.c", - "aom_scale/generic/gen_scalers.c", - "aom_scale/generic/yv12config.c", - "aom_scale/generic/yv12extend.c", + alwayslink = 1, + ) + for arch in DSP_SRC_PATTERNS.keys() ] -SCALE_HDRS = [ - "aom_scale/aom_scale.h", -] +# Other cc_library( name = "scale", - srcs = SCALE_SRCS, - hdrs = SCALE_HDRS, + srcs = glob([ + "aom_scale/*.c", + "aom_scale/generic/*.c", + ]), + hdrs = [ + "aom_scale/aom_scale.h", + ], copts = LIBAOM_COPTS, textual_hdrs = LIBAOM_HEADERS, deps = [ @@ -674,13 +364,8 @@ cc_library( alwayslink = 1, ) -CODEC_SRCS = [ +CODEC_SRCS = glob(["aom/src/*.c"]) + [ "config/aom_config.c", - "aom/src/aom_codec.c", - "aom/src/aom_decoder.c", - "aom/src/aom_encoder.c", - "aom/src/aom_image.c", - "aom/src/aom_integer.c", "aom_util/aom_thread.c", "aom_util/debug_util.c", ] + select({ @@ -690,19 +375,10 @@ CODEC_SRCS = [ "//conditions:default": [], }) -CODEC_HDRS = [ - "aom/aom.h", - "aom/aom_codec.h", - "aom/aom_decoder.h", - "aom/aom_encoder.h", - "aom/aom_external_partition.h", - "aom/aom_frame_buffer.h", - "aom/aom_image.h", - "aom/aom_integer.h", - "aom/aomcx.h", - "aom/aomdx.h", - "aom/internal/aom_codec_internal.h", - "aom/internal/aom_image_internal.h", +CODEC_HDRS = glob([ + "aom/internal/*.h", + "aom/*.h", +]) + [ "aom_util/aom_thread.h", "aom_util/debug_util.h", ] + select({ @@ -744,10 +420,11 @@ nasm_library( cc_library( name = "mem", - srcs = [ + srcs = glob([ + "aom_mem/*.c", + "aom_mem/include/*.h", + ]) + [ "aom/aom_integer.h", - "aom_mem/aom_mem.c", - "aom_mem/include/aom_mem_intrnl.h", ], hdrs = [ "aom_mem/aom_mem.h", @@ -897,8 +574,8 @@ RTCD_CMD = select({ cmd = (RTCD_CMD + " ".join([ "--config=$(location config/aom_config.h)", "--sym={sym} $(location {script})".format( - sym = tag, script = script, + sym = tag, ), "> $(OUTS)", ])), diff --git a/third_party/org_aomedia_aom/workspace.bzl b/third_party/org_aomedia_aom/workspace.bzl index e52b68d16..511d2087e 100644 --- a/third_party/org_aomedia_aom/workspace.bzl +++ b/third_party/org_aomedia_aom/workspace.bzl @@ -25,11 +25,11 @@ def repo(): third_party_http_archive, name = "org_aomedia_aom", urls = [ - "https://storage.googleapis.com/tensorstore-bazel-mirror/aomedia.googlesource.com/aom/+archive/287164de79516c25c8c84fd544f67752c170082a.tar.gz", - # "https://aomedia.googlesource.com/aom/+archive/287164de79516c25c8c84fd544f67752c170082a.tar.gz", + "https://storage.googleapis.com/tensorstore-bazel-mirror/aomedia.googlesource.com/aom/+archive/d730cef03ac754f2b6a233e926cd925d8ce8de81.tar.gz", # main(2022-11-01) + # "https://aomedia.googlesource.com/aom/+archive/d730cef03ac754f2b6a233e926cd925d8ce8de81.tar.gz ], # googlesource does not cache archive files; the sha256 is only valid for the mirror. - sha256 = "7508dcde9e260621862639fb6a2d3154bcbd10e65d43f107595c6a6aaed55455", + sha256 = "7f87960be61edb846e25b7d10e4e41aef6d652f62270e19172e7cafae9b536ad", build_file = Label("//third_party:org_aomedia_aom/libaom.BUILD.bazel"), cmake_name = "aom", cmake_languages = ["ASM"], diff --git a/third_party/org_aomedia_avif/workspace.bzl b/third_party/org_aomedia_avif/workspace.bzl index 11b9fc580..c43adb7ec 100644 --- a/third_party/org_aomedia_avif/workspace.bzl +++ b/third_party/org_aomedia_avif/workspace.bzl @@ -26,10 +26,10 @@ def repo(): third_party_http_archive, name = "org_aomedia_avif", urls = [ - "https://github.com/AOMediaCodec/libavif/archive/cd0bb358f83d01867f0fa53079470043618c9af5.tar.gz", # main(2022-09-30) + "https://github.com/AOMediaCodec/libavif/archive/88d98ec7a85d6eebbe6ee3630b0701d3d7fcff7b.tar.gz", # main(2022-11-01) ], - sha256 = "7ebef5d60279671dcc8d13ebaba2ab8b2580a2a9e2bb0e9aaa72fd8083ff49c3", - strip_prefix = "libavif-cd0bb358f83d01867f0fa53079470043618c9af5", + sha256 = "7dc8c044b36d72c496eb6d48e9f03675505dbc7ae05b6b12d51a6f09fddaa0f3", + strip_prefix = "libavif-88d98ec7a85d6eebbe6ee3630b0701d3d7fcff7b", build_file = Label("//third_party:org_aomedia_avif/libavif.BUILD.bazel"), system_build_file = Label("//third_party:org_aomedia_avif/system.BUILD.bazel"), cmake_name = "AVIF",