Update aom to commit id f5bdeac22930ff4c6b219be49c843db35970b918

This commit is contained in:
trav90 2018-10-18 06:04:57 -05:00 committed by Roy Tam
commit 2ab8fcbfd1
370 changed files with 56185 additions and 32026 deletions

View file

@ -218,7 +218,7 @@ AOMDecoder::IsSupportedCodec(const nsAString& aCodecType)
// for a specific aom commit hash so sites can check
// compatibility.
auto version = NS_ConvertASCIItoUTF16("av1.experimental.");
version.AppendLiteral("aadbb0251996c8ebb8310567bea330ab7ae9abe4");
version.AppendLiteral("f5bdeac22930ff4c6b219be49c843db35970b918");
return aCodecType.EqualsLiteral("av1") ||
aCodecType.Equals(version);
}

View file

@ -10,4 +10,4 @@ The upstream aom git repository is:
https://aomedia.googlesource.com/aom
The git commit ID used was aadbb0251996c8ebb8310567bea330ab7ae9abe4.
The git commit ID used was f5bdeac22930ff4c6b219be49c843db35970b918.

View file

@ -68,6 +68,7 @@
.equ CONFIG_HIGHBITDEPTH , 1
.equ CONFIG_EXPERIMENTAL , 0
.equ CONFIG_SIZE_LIMIT , 1
.equ CONFIG_COLORSPACE_HEADERS , 0
.equ CONFIG_FP_MB_STATS , 0
.equ CONFIG_CDEF , 1
.equ CONFIG_VAR_TX , 1
@ -90,6 +91,10 @@
.equ CONFIG_WEDGE , 1
.equ CONFIG_COMPOUND_SEGMENT , 1
.equ CONFIG_EXT_REFS , 1
.equ CONFIG_ALTREF2 , 0
.equ CONFIG_SPEED_REFS , 0
.equ CONFIG_GF_GROUPS , 0
.equ CONFIG_FLEX_REFS , 0
.equ CONFIG_GLOBAL_MOTION , 1
.equ CONFIG_NEW_QUANT , 0
.equ CONFIG_SUPERTX , 0
@ -104,6 +109,7 @@
.equ CONFIG_WARPED_MOTION , 1
.equ CONFIG_Q_ADAPT_PROBS , 0
.equ CONFIG_BITSTREAM_DEBUG , 0
.equ CONFIG_INTER_STATS_ONLY , 0
.equ CONFIG_ALT_INTRA , 1
.equ CONFIG_PALETTE , 1
.equ CONFIG_PALETTE_DELTA_ENCODING , 0
@ -112,6 +118,9 @@
.equ CONFIG_PVQ , 0
.equ CONFIG_CFL , 0
.equ CONFIG_XIPHRC , 0
.equ CONFIG_DCT_ONLY , 0
.equ CONFIG_DAALA_DCT4 , 0
.equ CONFIG_DAALA_DCT8 , 0
.equ CONFIG_CB4X4 , 1
.equ CONFIG_CHROMA_2X2 , 0
.equ CONFIG_CHROMA_SUB8X8 , 1
@ -120,11 +129,8 @@
.equ CONFIG_EXT_DELTA_Q , 1
.equ CONFIG_ADAPT_SCAN , 0
.equ CONFIG_FILTER_7BIT , 1
.equ CONFIG_PARALLEL_DEBLOCKING , 0
.equ CONFIG_PARALLEL_DEBLOCKING_15TAP , 0
.equ CONFIG_PARALLEL_DEBLOCKING , 1
.equ CONFIG_LOOPFILTERING_ACROSS_TILES , 1
.equ CONFIG_TILE_GROUPS , 1
.equ CONFIG_EC_ADAPT , 1
.equ CONFIG_TEMPMV_SIGNALING , 1
.equ CONFIG_RD_DEBUG , 0
.equ CONFIG_REFERENCE_BUFFER , 1
@ -132,6 +138,7 @@
.equ CONFIG_ENTROPY_STATS , 0
.equ CONFIG_MASKED_TX , 0
.equ CONFIG_DEPENDENT_HORZTILES , 0
.equ CONFIG_DIST_8X8 , 0
.equ CONFIG_DAALA_DIST , 0
.equ CONFIG_TRIPRED , 0
.equ CONFIG_PALETTE_THROUGHPUT , 1
@ -144,7 +151,17 @@
.equ CONFIG_COMPOUND_SINGLEREF , 0
.equ CONFIG_AOM_QM , 0
.equ CONFIG_ONE_SIDED_COMPOUND , 1
.equ CONFIG_SMOOTH_HV , 0
.equ CONFIG_EXT_COMP_REFS , 0
.equ CONFIG_SMOOTH_HV , 1
.equ CONFIG_VAR_REFS , 0
.equ CONFIG_RECT_INTRA_PRED , 1
.equ CONFIG_LGT , 0
.equ CONFIG_SBL_SYMBOL , 0
.equ CONFIG_NCOBMC_ADAPT_WEIGHT , 0
.equ CONFIG_BGSPRITE , 0
.equ CONFIG_VAR_TX_NO_TX_MODE , 0
.equ CONFIG_MRC_TX , 0
.equ CONFIG_LPF_DIRECT , 0
.equ CONFIG_UV_LVL , 0
.equ CONFIG_ANALYZER , 0
.section .note.GNU-stack,"",%progbits

View file

@ -9,7 +9,7 @@
/* This file automatically generated by configure. Do not edit! */
#ifndef AOM_CONFIG_H
#define AOM_CONFIG_H
#define RESTRICT
#define RESTRICT
#define INLINE inline
#define ARCH_ARM 0
#define ARCH_MIPS 0
@ -78,6 +78,7 @@
#define CONFIG_HIGHBITDEPTH 1
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_COLORSPACE_HEADERS 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_CDEF 1
#define CONFIG_VAR_TX 1
@ -100,6 +101,10 @@
#define CONFIG_WEDGE 1
#define CONFIG_COMPOUND_SEGMENT 1
#define CONFIG_EXT_REFS 1
#define CONFIG_ALTREF2 0
#define CONFIG_SPEED_REFS 0
#define CONFIG_GF_GROUPS 0
#define CONFIG_FLEX_REFS 0
#define CONFIG_GLOBAL_MOTION 1
#define CONFIG_NEW_QUANT 0
#define CONFIG_SUPERTX 0
@ -114,6 +119,7 @@
#define CONFIG_WARPED_MOTION 1
#define CONFIG_Q_ADAPT_PROBS 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_INTER_STATS_ONLY 0
#define CONFIG_ALT_INTRA 1
#define CONFIG_PALETTE 1
#define CONFIG_PALETTE_DELTA_ENCODING 0
@ -122,6 +128,9 @@
#define CONFIG_PVQ 0
#define CONFIG_CFL 0
#define CONFIG_XIPHRC 0
#define CONFIG_DCT_ONLY 0
#define CONFIG_DAALA_DCT4 0
#define CONFIG_DAALA_DCT8 0
#define CONFIG_CB4X4 1
#define CONFIG_CHROMA_2X2 0
#define CONFIG_CHROMA_SUB8X8 1
@ -130,11 +139,8 @@
#define CONFIG_EXT_DELTA_Q 1
#define CONFIG_ADAPT_SCAN 0
#define CONFIG_FILTER_7BIT 1
#define CONFIG_PARALLEL_DEBLOCKING 0
#define CONFIG_PARALLEL_DEBLOCKING_15TAP 0
#define CONFIG_PARALLEL_DEBLOCKING 1
#define CONFIG_LOOPFILTERING_ACROSS_TILES 1
#define CONFIG_TILE_GROUPS 1
#define CONFIG_EC_ADAPT 1
#define CONFIG_TEMPMV_SIGNALING 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_REFERENCE_BUFFER 1
@ -142,6 +148,7 @@
#define CONFIG_ENTROPY_STATS 0
#define CONFIG_MASKED_TX 0
#define CONFIG_DEPENDENT_HORZTILES 0
#define CONFIG_DIST_8X8 0
#define CONFIG_DAALA_DIST 0
#define CONFIG_TRIPRED 0
#define CONFIG_PALETTE_THROUGHPUT 1
@ -154,8 +161,18 @@
#define CONFIG_COMPOUND_SINGLEREF 0
#define CONFIG_AOM_QM 0
#define CONFIG_ONE_SIDED_COMPOUND 1
#define CONFIG_SMOOTH_HV 0
#define CONFIG_EXT_COMP_REFS 0
#define CONFIG_SMOOTH_HV 1
#define CONFIG_VAR_REFS 0
#define CONFIG_RECT_INTRA_PRED 1
#define CONFIG_LGT 0
#define CONFIG_SBL_SYMBOL 0
#define CONFIG_NCOBMC_ADAPT_WEIGHT 0
#define CONFIG_BGSPRITE 0
#define CONFIG_VAR_TX_NO_TX_MODE 0
#define CONFIG_MRC_TX 0
#define CONFIG_LPF_DIRECT 0
#define CONFIG_UV_LVL 0
#define CONFIG_ANALYZER 0
#define DECODE_WIDTH_LIMIT 8192
#define DECODE_HEIGHT_LIMIT 4608

File diff suppressed because it is too large Load diff

View file

@ -12,6 +12,7 @@
*/
#include "aom/aom_integer.h"
#include "aom_dsp/txfm_common.h"
#include "av1/common/common.h"
#include "av1/common/enums.h"
#include "av1/common/quant_common.h"
@ -24,6 +25,7 @@ struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct txfm_param;
struct aom_variance_vtable;
struct search_site_config;
struct mv;
@ -62,46 +64,46 @@ int av1_diamond_search_sad_c(struct macroblock *x, const struct search_site_conf
void av1_fdct8x8_quant_c(const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_fdct8x8_quant av1_fdct8x8_quant_c
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x16 av1_fht16x16_c
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x32 av1_fht16x32_c
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x4 av1_fht16x4_c
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x8 av1_fht16x8_c
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x16 av1_fht32x16_c
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x32 av1_fht32x32_c
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x8 av1_fht32x8_c
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x16 av1_fht4x16_c
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x4 av1_fht4x4_c
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x8 av1_fht4x8_c
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x16 av1_fht8x16_c
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x32 av1_fht8x32_c
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x4 av1_fht8x4_c
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x8 av1_fht8x8_c
int av1_full_range_search_c(const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv);
@ -116,15 +118,33 @@ void av1_fwd_idtx_c(const int16_t *src_diff, tran_low_t *coeff, int stride, int
void av1_fwd_txfm2d_16x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x16 av1_fwd_txfm2d_16x16_c
void av1_fwd_txfm2d_16x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x32 av1_fwd_txfm2d_16x32_c
void av1_fwd_txfm2d_16x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x8 av1_fwd_txfm2d_16x8_c
void av1_fwd_txfm2d_32x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_32x16 av1_fwd_txfm2d_32x16_c
void av1_fwd_txfm2d_32x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_32x32 av1_fwd_txfm2d_32x32_c
void av1_fwd_txfm2d_4x4_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_4x4 av1_fwd_txfm2d_4x4_c
void av1_fwd_txfm2d_4x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_4x8 av1_fwd_txfm2d_4x8_c
void av1_fwd_txfm2d_64x64_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_64x64 av1_fwd_txfm2d_64x64_c
void av1_fwd_txfm2d_8x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x16 av1_fwd_txfm2d_8x16_c
void av1_fwd_txfm2d_8x4_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x4 av1_fwd_txfm2d_8x4_c
void av1_fwd_txfm2d_8x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x8 av1_fwd_txfm2d_8x8_c
@ -167,88 +187,46 @@ void av1_highbd_convolve_init_c(void);
void av1_highbd_convolve_vert_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
#define av1_highbd_convolve_vert av1_highbd_convolve_vert_c
void av1_highbd_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x16 av1_highbd_fht16x16_c
void av1_highbd_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x32 av1_highbd_fht16x32_c
void av1_highbd_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x4 av1_highbd_fht16x4_c
void av1_highbd_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x8 av1_highbd_fht16x8_c
void av1_highbd_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x16 av1_highbd_fht32x16_c
void av1_highbd_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x32 av1_highbd_fht32x32_c
void av1_highbd_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x8 av1_highbd_fht32x8_c
void av1_highbd_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x16 av1_highbd_fht4x16_c
void av1_highbd_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x4 av1_highbd_fht4x4_c
void av1_highbd_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x8 av1_highbd_fht4x8_c
void av1_highbd_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x16 av1_highbd_fht8x16_c
void av1_highbd_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x32 av1_highbd_fht8x32_c
void av1_highbd_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x4 av1_highbd_fht8x4_c
void av1_highbd_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x8 av1_highbd_fht8x8_c
void av1_highbd_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
#define av1_highbd_fwht4x4 av1_highbd_fwht4x4_c
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type, int bd);
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_highbd_iht16x16_256_add av1_highbd_iht16x16_256_add_c
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x32_512_add av1_highbd_iht16x32_512_add_c
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x4_64_add av1_highbd_iht16x4_64_add_c
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x8_128_add av1_highbd_iht16x8_128_add_c
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x16_512_add av1_highbd_iht32x16_512_add_c
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x8_256_add av1_highbd_iht32x8_256_add_c
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x16_64_add av1_highbd_iht4x16_64_add_c
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x4_16_add av1_highbd_iht4x4_16_add_c
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x8_32_add av1_highbd_iht4x8_32_add_c
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x16_128_add av1_highbd_iht8x16_128_add_c
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x32_256_add av1_highbd_iht8x32_256_add_c
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x4_32_add av1_highbd_iht8x4_32_add_c
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x8_64_add av1_highbd_iht8x8_64_add_c
void av1_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
@ -260,63 +238,81 @@ void av1_highbd_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, in
void av1_highbd_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
#define av1_highbd_temporal_filter_apply av1_highbd_temporal_filter_apply_c
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
#define av1_highbd_warp_affine av1_highbd_warp_affine_c
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_iht16x16_256_add av1_iht16x16_256_add_c
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x32_512_add av1_iht16x32_512_add_c
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x4_64_add av1_iht16x4_64_add_c
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x8_128_add av1_iht16x8_128_add_c
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht32x16_512_add av1_iht32x16_512_add_c
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_iht32x32_1024_add av1_iht32x32_1024_add_c
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht32x8_256_add av1_iht32x8_256_add_c
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x16_64_add av1_iht4x16_64_add_c
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x4_16_add av1_iht4x4_16_add_c
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x8_32_add av1_iht4x8_32_add_c
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x16_128_add av1_iht8x16_128_add_c
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x32_256_add av1_iht8x32_256_add_c
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x4_32_add av1_iht8x4_32_add_c
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x8_64_add av1_iht8x8_64_add_c
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c
void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_4x4 av1_inv_txfm2d_add_4x4_c
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x8 av1_inv_txfm2d_add_8x8_c
@ -335,7 +331,7 @@ void av1_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int
void av1_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
#define av1_temporal_filter_apply av1_temporal_filter_apply_c
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
#define av1_warp_affine av1_warp_affine_c
void av1_wedge_compute_delta_squares_c(int16_t *d, const int16_t *a, const int16_t *b, int N);

View file

@ -68,6 +68,7 @@
.equ CONFIG_HIGHBITDEPTH , 1
.equ CONFIG_EXPERIMENTAL , 0
.equ CONFIG_SIZE_LIMIT , 1
.equ CONFIG_COLORSPACE_HEADERS , 0
.equ CONFIG_FP_MB_STATS , 0
.equ CONFIG_CDEF , 1
.equ CONFIG_VAR_TX , 1
@ -90,6 +91,10 @@
.equ CONFIG_WEDGE , 1
.equ CONFIG_COMPOUND_SEGMENT , 1
.equ CONFIG_EXT_REFS , 1
.equ CONFIG_ALTREF2 , 0
.equ CONFIG_SPEED_REFS , 0
.equ CONFIG_GF_GROUPS , 0
.equ CONFIG_FLEX_REFS , 0
.equ CONFIG_GLOBAL_MOTION , 1
.equ CONFIG_NEW_QUANT , 0
.equ CONFIG_SUPERTX , 0
@ -104,6 +109,7 @@
.equ CONFIG_WARPED_MOTION , 1
.equ CONFIG_Q_ADAPT_PROBS , 0
.equ CONFIG_BITSTREAM_DEBUG , 0
.equ CONFIG_INTER_STATS_ONLY , 0
.equ CONFIG_ALT_INTRA , 1
.equ CONFIG_PALETTE , 1
.equ CONFIG_PALETTE_DELTA_ENCODING , 0
@ -112,6 +118,9 @@
.equ CONFIG_PVQ , 0
.equ CONFIG_CFL , 0
.equ CONFIG_XIPHRC , 0
.equ CONFIG_DCT_ONLY , 0
.equ CONFIG_DAALA_DCT4 , 0
.equ CONFIG_DAALA_DCT8 , 0
.equ CONFIG_CB4X4 , 1
.equ CONFIG_CHROMA_2X2 , 0
.equ CONFIG_CHROMA_SUB8X8 , 1
@ -120,11 +129,8 @@
.equ CONFIG_EXT_DELTA_Q , 1
.equ CONFIG_ADAPT_SCAN , 0
.equ CONFIG_FILTER_7BIT , 1
.equ CONFIG_PARALLEL_DEBLOCKING , 0
.equ CONFIG_PARALLEL_DEBLOCKING_15TAP , 0
.equ CONFIG_PARALLEL_DEBLOCKING , 1
.equ CONFIG_LOOPFILTERING_ACROSS_TILES , 1
.equ CONFIG_TILE_GROUPS , 1
.equ CONFIG_EC_ADAPT , 1
.equ CONFIG_TEMPMV_SIGNALING , 1
.equ CONFIG_RD_DEBUG , 0
.equ CONFIG_REFERENCE_BUFFER , 1
@ -132,6 +138,7 @@
.equ CONFIG_ENTROPY_STATS , 0
.equ CONFIG_MASKED_TX , 0
.equ CONFIG_DEPENDENT_HORZTILES , 0
.equ CONFIG_DIST_8X8 , 0
.equ CONFIG_DAALA_DIST , 0
.equ CONFIG_TRIPRED , 0
.equ CONFIG_PALETTE_THROUGHPUT , 1
@ -144,7 +151,17 @@
.equ CONFIG_COMPOUND_SINGLEREF , 0
.equ CONFIG_AOM_QM , 0
.equ CONFIG_ONE_SIDED_COMPOUND , 1
.equ CONFIG_SMOOTH_HV , 0
.equ CONFIG_EXT_COMP_REFS , 0
.equ CONFIG_SMOOTH_HV , 1
.equ CONFIG_VAR_REFS , 0
.equ CONFIG_RECT_INTRA_PRED , 1
.equ CONFIG_LGT , 0
.equ CONFIG_SBL_SYMBOL , 0
.equ CONFIG_NCOBMC_ADAPT_WEIGHT , 0
.equ CONFIG_BGSPRITE , 0
.equ CONFIG_VAR_TX_NO_TX_MODE , 0
.equ CONFIG_MRC_TX , 0
.equ CONFIG_LPF_DIRECT , 0
.equ CONFIG_UV_LVL , 0
.equ CONFIG_ANALYZER , 0
.section .note.GNU-stack,"",%progbits

View file

@ -9,7 +9,7 @@
/* This file automatically generated by configure. Do not edit! */
#ifndef AOM_CONFIG_H
#define AOM_CONFIG_H
#define RESTRICT
#define RESTRICT
#define INLINE inline
#define ARCH_ARM 1
#define ARCH_MIPS 0
@ -78,6 +78,7 @@
#define CONFIG_HIGHBITDEPTH 1
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_COLORSPACE_HEADERS 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_CDEF 1
#define CONFIG_VAR_TX 1
@ -100,6 +101,10 @@
#define CONFIG_WEDGE 1
#define CONFIG_COMPOUND_SEGMENT 1
#define CONFIG_EXT_REFS 1
#define CONFIG_ALTREF2 0
#define CONFIG_SPEED_REFS 0
#define CONFIG_GF_GROUPS 0
#define CONFIG_FLEX_REFS 0
#define CONFIG_GLOBAL_MOTION 1
#define CONFIG_NEW_QUANT 0
#define CONFIG_SUPERTX 0
@ -114,6 +119,7 @@
#define CONFIG_WARPED_MOTION 1
#define CONFIG_Q_ADAPT_PROBS 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_INTER_STATS_ONLY 0
#define CONFIG_ALT_INTRA 1
#define CONFIG_PALETTE 1
#define CONFIG_PALETTE_DELTA_ENCODING 0
@ -122,6 +128,9 @@
#define CONFIG_PVQ 0
#define CONFIG_CFL 0
#define CONFIG_XIPHRC 0
#define CONFIG_DCT_ONLY 0
#define CONFIG_DAALA_DCT4 0
#define CONFIG_DAALA_DCT8 0
#define CONFIG_CB4X4 1
#define CONFIG_CHROMA_2X2 0
#define CONFIG_CHROMA_SUB8X8 1
@ -130,11 +139,8 @@
#define CONFIG_EXT_DELTA_Q 1
#define CONFIG_ADAPT_SCAN 0
#define CONFIG_FILTER_7BIT 1
#define CONFIG_PARALLEL_DEBLOCKING 0
#define CONFIG_PARALLEL_DEBLOCKING_15TAP 0
#define CONFIG_PARALLEL_DEBLOCKING 1
#define CONFIG_LOOPFILTERING_ACROSS_TILES 1
#define CONFIG_TILE_GROUPS 1
#define CONFIG_EC_ADAPT 1
#define CONFIG_TEMPMV_SIGNALING 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_REFERENCE_BUFFER 1
@ -142,6 +148,7 @@
#define CONFIG_ENTROPY_STATS 0
#define CONFIG_MASKED_TX 0
#define CONFIG_DEPENDENT_HORZTILES 0
#define CONFIG_DIST_8X8 0
#define CONFIG_DAALA_DIST 0
#define CONFIG_TRIPRED 0
#define CONFIG_PALETTE_THROUGHPUT 1
@ -154,8 +161,18 @@
#define CONFIG_COMPOUND_SINGLEREF 0
#define CONFIG_AOM_QM 0
#define CONFIG_ONE_SIDED_COMPOUND 1
#define CONFIG_SMOOTH_HV 0
#define CONFIG_EXT_COMP_REFS 0
#define CONFIG_SMOOTH_HV 1
#define CONFIG_VAR_REFS 0
#define CONFIG_RECT_INTRA_PRED 1
#define CONFIG_LGT 0
#define CONFIG_SBL_SYMBOL 0
#define CONFIG_NCOBMC_ADAPT_WEIGHT 0
#define CONFIG_BGSPRITE 0
#define CONFIG_VAR_TX_NO_TX_MODE 0
#define CONFIG_MRC_TX 0
#define CONFIG_LPF_DIRECT 0
#define CONFIG_UV_LVL 0
#define CONFIG_ANALYZER 0
#define DECODE_WIDTH_LIMIT 8192
#define DECODE_HEIGHT_LIMIT 4608

File diff suppressed because it is too large Load diff

View file

@ -12,6 +12,7 @@
*/
#include "aom/aom_integer.h"
#include "aom_dsp/txfm_common.h"
#include "av1/common/common.h"
#include "av1/common/enums.h"
#include "av1/common/quant_common.h"
@ -24,6 +25,7 @@ struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct txfm_param;
struct aom_variance_vtable;
struct search_site_config;
struct mv;
@ -66,46 +68,46 @@ int av1_diamond_search_sad_c(struct macroblock *x, const struct search_site_conf
void av1_fdct8x8_quant_c(const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_fdct8x8_quant av1_fdct8x8_quant_c
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x16 av1_fht16x16_c
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x32 av1_fht16x32_c
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x4 av1_fht16x4_c
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x8 av1_fht16x8_c
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x16 av1_fht32x16_c
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x32 av1_fht32x32_c
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x8 av1_fht32x8_c
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x16 av1_fht4x16_c
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x4 av1_fht4x4_c
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x8 av1_fht4x8_c
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x16 av1_fht8x16_c
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x32 av1_fht8x32_c
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x4 av1_fht8x4_c
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x8 av1_fht8x8_c
int av1_full_range_search_c(const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv);
@ -120,15 +122,33 @@ void av1_fwd_idtx_c(const int16_t *src_diff, tran_low_t *coeff, int stride, int
void av1_fwd_txfm2d_16x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x16 av1_fwd_txfm2d_16x16_c
void av1_fwd_txfm2d_16x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x32 av1_fwd_txfm2d_16x32_c
void av1_fwd_txfm2d_16x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x8 av1_fwd_txfm2d_16x8_c
void av1_fwd_txfm2d_32x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_32x16 av1_fwd_txfm2d_32x16_c
void av1_fwd_txfm2d_32x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_32x32 av1_fwd_txfm2d_32x32_c
void av1_fwd_txfm2d_4x4_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_4x4 av1_fwd_txfm2d_4x4_c
void av1_fwd_txfm2d_4x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_4x8 av1_fwd_txfm2d_4x8_c
void av1_fwd_txfm2d_64x64_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_64x64 av1_fwd_txfm2d_64x64_c
void av1_fwd_txfm2d_8x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x16 av1_fwd_txfm2d_8x16_c
void av1_fwd_txfm2d_8x4_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x4 av1_fwd_txfm2d_8x4_c
void av1_fwd_txfm2d_8x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x8 av1_fwd_txfm2d_8x8_c
@ -171,88 +191,46 @@ void av1_highbd_convolve_init_c(void);
void av1_highbd_convolve_vert_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
#define av1_highbd_convolve_vert av1_highbd_convolve_vert_c
void av1_highbd_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x16 av1_highbd_fht16x16_c
void av1_highbd_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x32 av1_highbd_fht16x32_c
void av1_highbd_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x4 av1_highbd_fht16x4_c
void av1_highbd_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x8 av1_highbd_fht16x8_c
void av1_highbd_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x16 av1_highbd_fht32x16_c
void av1_highbd_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x32 av1_highbd_fht32x32_c
void av1_highbd_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x8 av1_highbd_fht32x8_c
void av1_highbd_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x16 av1_highbd_fht4x16_c
void av1_highbd_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x4 av1_highbd_fht4x4_c
void av1_highbd_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x8 av1_highbd_fht4x8_c
void av1_highbd_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x16 av1_highbd_fht8x16_c
void av1_highbd_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x32 av1_highbd_fht8x32_c
void av1_highbd_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x4 av1_highbd_fht8x4_c
void av1_highbd_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x8 av1_highbd_fht8x8_c
void av1_highbd_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
#define av1_highbd_fwht4x4 av1_highbd_fwht4x4_c
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type, int bd);
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_highbd_iht16x16_256_add av1_highbd_iht16x16_256_add_c
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x32_512_add av1_highbd_iht16x32_512_add_c
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x4_64_add av1_highbd_iht16x4_64_add_c
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x8_128_add av1_highbd_iht16x8_128_add_c
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x16_512_add av1_highbd_iht32x16_512_add_c
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x8_256_add av1_highbd_iht32x8_256_add_c
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x16_64_add av1_highbd_iht4x16_64_add_c
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x4_16_add av1_highbd_iht4x4_16_add_c
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x8_32_add av1_highbd_iht4x8_32_add_c
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x16_128_add av1_highbd_iht8x16_128_add_c
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x32_256_add av1_highbd_iht8x32_256_add_c
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x4_32_add av1_highbd_iht8x4_32_add_c
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x8_64_add av1_highbd_iht8x8_64_add_c
void av1_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
@ -264,63 +242,81 @@ void av1_highbd_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, in
void av1_highbd_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
#define av1_highbd_temporal_filter_apply av1_highbd_temporal_filter_apply_c
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
#define av1_highbd_warp_affine av1_highbd_warp_affine_c
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_iht16x16_256_add av1_iht16x16_256_add_c
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x32_512_add av1_iht16x32_512_add_c
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x4_64_add av1_iht16x4_64_add_c
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x8_128_add av1_iht16x8_128_add_c
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht32x16_512_add av1_iht32x16_512_add_c
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_iht32x32_1024_add av1_iht32x32_1024_add_c
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht32x8_256_add av1_iht32x8_256_add_c
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x16_64_add av1_iht4x16_64_add_c
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x4_16_add av1_iht4x4_16_add_c
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x8_32_add av1_iht4x8_32_add_c
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x16_128_add av1_iht8x16_128_add_c
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x32_256_add av1_iht8x32_256_add_c
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x4_32_add av1_iht8x4_32_add_c
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x8_64_add av1_iht8x8_64_add_c
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c
void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_4x4 av1_inv_txfm2d_add_4x4_c
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x8 av1_inv_txfm2d_add_8x8_c
@ -339,7 +335,7 @@ void av1_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int
void av1_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
#define av1_temporal_filter_apply av1_temporal_filter_apply_c
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
#define av1_warp_affine av1_warp_affine_c
void av1_wedge_compute_delta_squares_c(int16_t *d, const int16_t *a, const int16_t *b, int N);

View file

@ -1,146 +1,163 @@
%define ARCH_ARM 0
%define ARCH_MIPS 0
%define ARCH_X86 1
%define ARCH_X86_64 0
%define HAVE_NEON 0
%define HAVE_NEON_ASM 0
%define HAVE_MIPS32 0
%define HAVE_DSPR2 0
%define HAVE_MSA 0
%define HAVE_MIPS64 0
%define HAVE_MMX 1
%define HAVE_SSE 1
%define HAVE_SSE2 1
%define HAVE_SSE3 1
%define HAVE_SSSE3 1
%define HAVE_SSE4_1 1
%define HAVE_AVX 1
%define HAVE_AVX2 1
%define HAVE_AOM_PORTS 1
%define HAVE_FEXCEPT 1
%define HAVE_PTHREAD_H 1
%define HAVE_WXWIDGETS 0
%define CONFIG_DEPENDENCY_TRACKING 1
%define CONFIG_EXTERNAL_BUILD 1
%define CONFIG_INSTALL_DOCS 1
%define CONFIG_INSTALL_BINS 1
%define CONFIG_INSTALL_LIBS 1
%define CONFIG_INSTALL_SRCS 0
%define CONFIG_DEBUG 0
%define CONFIG_GPROF 0
%define CONFIG_GCOV 0
%define CONFIG_RVCT 0
%define CONFIG_GCC 1
%define CONFIG_MSVS 0
%define CONFIG_PIC 1
%define CONFIG_BIG_ENDIAN 0
%define CONFIG_CODEC_SRCS 0
%define CONFIG_DEBUG_LIBS 0
%define CONFIG_RUNTIME_CPU_DETECT 1
%define CONFIG_POSTPROC 1
%define CONFIG_MULTITHREAD 1
%define CONFIG_INTERNAL_STATS 0
%define CONFIG_AV1_ENCODER 1
%define CONFIG_AV1_DECODER 1
%define CONFIG_AV1 1
%define CONFIG_STATIC_MSVCRT 0
%define CONFIG_SPATIAL_RESAMPLING 1
%define CONFIG_REALTIME_ONLY 0
%define CONFIG_ONTHEFLY_BITPACKING 0
%define CONFIG_ERROR_CONCEALMENT 0
%define CONFIG_SHARED 0
%define CONFIG_STATIC 1
%define CONFIG_SMALL 0
%define CONFIG_POSTPROC_VISUALIZER 0
%define CONFIG_OS_SUPPORT 1
%define CONFIG_UNIT_TESTS 0
%define CONFIG_WEBM_IO 1
%define CONFIG_LIBYUV 1
%define CONFIG_ACCOUNTING 0
%define CONFIG_INSPECTION 0
%define CONFIG_DECODE_PERF_TESTS 0
%define CONFIG_ENCODE_PERF_TESTS 0
%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
%define CONFIG_LOWBITDEPTH 1
%define CONFIG_HIGHBITDEPTH 1
%define CONFIG_EXPERIMENTAL 0
%define CONFIG_SIZE_LIMIT 1
%define CONFIG_FP_MB_STATS 0
%define CONFIG_CDEF 1
%define CONFIG_VAR_TX 1
%define CONFIG_RECT_TX 1
%define CONFIG_RECT_TX_EXT 0
%define CONFIG_TPL_MV 0
%define CONFIG_DUAL_FILTER 1
%define CONFIG_CONVOLVE_ROUND 0
%define CONFIG_COMPOUND_ROUND 0
%define CONFIG_EXT_TX 1
%define CONFIG_DPCM_INTRA 0
%define CONFIG_TX64X64 0
%define CONFIG_EXT_INTRA 1
%define CONFIG_INTRA_INTERP 0
%define CONFIG_FILTER_INTRA 0
%define CONFIG_INTRA_EDGE 0
%define CONFIG_INTRABC 0
%define CONFIG_EXT_INTER 1
%define CONFIG_INTERINTRA 1
%define CONFIG_WEDGE 1
%define CONFIG_COMPOUND_SEGMENT 1
%define CONFIG_EXT_REFS 1
%define CONFIG_GLOBAL_MOTION 1
%define CONFIG_NEW_QUANT 0
%define CONFIG_SUPERTX 0
%define CONFIG_ANS 0
%define CONFIG_LOOP_RESTORATION 0
%define CONFIG_EXT_PARTITION 0
%define CONFIG_EXT_PARTITION_TYPES 0
%define CONFIG_UNPOISON_PARTITION_CTX 0
%define CONFIG_EXT_TILE 0
%define CONFIG_MOTION_VAR 1
%define CONFIG_NCOBMC 0
%define CONFIG_WARPED_MOTION 1
%define CONFIG_Q_ADAPT_PROBS 0
%define CONFIG_BITSTREAM_DEBUG 0
%define CONFIG_ALT_INTRA 1
%define CONFIG_PALETTE 1
%define CONFIG_PALETTE_DELTA_ENCODING 0
%define CONFIG_RAWBITS 0
%define CONFIG_EC_SMALLMUL 1
%define CONFIG_PVQ 0
%define CONFIG_CFL 0
%define CONFIG_XIPHRC 0
%define CONFIG_CB4X4 1
%define CONFIG_CHROMA_2X2 0
%define CONFIG_CHROMA_SUB8X8 1
%define CONFIG_FRAME_SIZE 0
%define CONFIG_DELTA_Q 1
%define CONFIG_EXT_DELTA_Q 1
%define CONFIG_ADAPT_SCAN 0
%define CONFIG_FILTER_7BIT 1
%define CONFIG_PARALLEL_DEBLOCKING 0
%define CONFIG_PARALLEL_DEBLOCKING_15TAP 0
%define CONFIG_LOOPFILTERING_ACROSS_TILES 1
%define CONFIG_TILE_GROUPS 1
%define CONFIG_EC_ADAPT 1
%define CONFIG_TEMPMV_SIGNALING 1
%define CONFIG_RD_DEBUG 0
%define CONFIG_REFERENCE_BUFFER 1
%define CONFIG_COEF_INTERLEAVE 0
%define CONFIG_ENTROPY_STATS 0
%define CONFIG_MASKED_TX 0
%define CONFIG_DEPENDENT_HORZTILES 0
%define CONFIG_DAALA_DIST 0
%define CONFIG_TRIPRED 0
%define CONFIG_PALETTE_THROUGHPUT 1
%define CONFIG_REF_ADAPT 0
%define CONFIG_LV_MAP 0
%define CONFIG_TXK_SEL 0
%define CONFIG_MV_COMPRESS 1
%define CONFIG_FRAME_SUPERRES 0
%define CONFIG_NEW_MULTISYMBOL 0
%define CONFIG_COMPOUND_SINGLEREF 0
%define CONFIG_AOM_QM 0
%define CONFIG_ONE_SIDED_COMPOUND 1
%define CONFIG_SMOOTH_HV 0
%define CONFIG_VAR_REFS 0
%define CONFIG_ANALYZER 0
ARCH_ARM equ 0
ARCH_MIPS equ 0
ARCH_X86 equ 1
ARCH_X86_64 equ 0
HAVE_NEON equ 0
HAVE_NEON_ASM equ 0
HAVE_MIPS32 equ 0
HAVE_DSPR2 equ 0
HAVE_MSA equ 0
HAVE_MIPS64 equ 0
HAVE_MMX equ 1
HAVE_SSE equ 1
HAVE_SSE2 equ 1
HAVE_SSE3 equ 1
HAVE_SSSE3 equ 1
HAVE_SSE4_1 equ 1
HAVE_AVX equ 1
HAVE_AVX2 equ 1
HAVE_AOM_PORTS equ 1
HAVE_FEXCEPT equ 1
HAVE_PTHREAD_H equ 1
HAVE_WXWIDGETS equ 0
CONFIG_DEPENDENCY_TRACKING equ 1
CONFIG_EXTERNAL_BUILD equ 1
CONFIG_INSTALL_DOCS equ 1
CONFIG_INSTALL_BINS equ 1
CONFIG_INSTALL_LIBS equ 1
CONFIG_INSTALL_SRCS equ 0
CONFIG_DEBUG equ 0
CONFIG_GPROF equ 0
CONFIG_GCOV equ 0
CONFIG_RVCT equ 0
CONFIG_GCC equ 1
CONFIG_MSVS equ 0
CONFIG_PIC equ 1
CONFIG_BIG_ENDIAN equ 0
CONFIG_CODEC_SRCS equ 0
CONFIG_DEBUG_LIBS equ 0
CONFIG_RUNTIME_CPU_DETECT equ 1
CONFIG_POSTPROC equ 1
CONFIG_MULTITHREAD equ 1
CONFIG_INTERNAL_STATS equ 0
CONFIG_AV1_ENCODER equ 1
CONFIG_AV1_DECODER equ 1
CONFIG_AV1 equ 1
CONFIG_STATIC_MSVCRT equ 0
CONFIG_SPATIAL_RESAMPLING equ 1
CONFIG_REALTIME_ONLY equ 0
CONFIG_ONTHEFLY_BITPACKING equ 0
CONFIG_ERROR_CONCEALMENT equ 0
CONFIG_SHARED equ 0
CONFIG_STATIC equ 1
CONFIG_SMALL equ 0
CONFIG_POSTPROC_VISUALIZER equ 0
CONFIG_OS_SUPPORT equ 1
CONFIG_UNIT_TESTS equ 0
CONFIG_WEBM_IO equ 1
CONFIG_LIBYUV equ 1
CONFIG_ACCOUNTING equ 0
CONFIG_INSPECTION equ 0
CONFIG_DECODE_PERF_TESTS equ 0
CONFIG_ENCODE_PERF_TESTS equ 0
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
CONFIG_LOWBITDEPTH equ 1
CONFIG_HIGHBITDEPTH equ 1
CONFIG_EXPERIMENTAL equ 0
CONFIG_SIZE_LIMIT equ 1
CONFIG_COLORSPACE_HEADERS equ 0
CONFIG_FP_MB_STATS equ 0
CONFIG_CDEF equ 1
CONFIG_VAR_TX equ 1
CONFIG_RECT_TX equ 1
CONFIG_RECT_TX_EXT equ 0
CONFIG_TPL_MV equ 0
CONFIG_DUAL_FILTER equ 1
CONFIG_CONVOLVE_ROUND equ 0
CONFIG_COMPOUND_ROUND equ 0
CONFIG_EXT_TX equ 1
CONFIG_DPCM_INTRA equ 0
CONFIG_TX64X64 equ 0
CONFIG_EXT_INTRA equ 1
CONFIG_INTRA_INTERP equ 0
CONFIG_FILTER_INTRA equ 0
CONFIG_INTRA_EDGE equ 0
CONFIG_INTRABC equ 0
CONFIG_EXT_INTER equ 1
CONFIG_INTERINTRA equ 1
CONFIG_WEDGE equ 1
CONFIG_COMPOUND_SEGMENT equ 1
CONFIG_EXT_REFS equ 1
CONFIG_ALTREF2 equ 0
CONFIG_SPEED_REFS equ 0
CONFIG_GF_GROUPS equ 0
CONFIG_FLEX_REFS equ 0
CONFIG_GLOBAL_MOTION equ 1
CONFIG_NEW_QUANT equ 0
CONFIG_SUPERTX equ 0
CONFIG_ANS equ 0
CONFIG_LOOP_RESTORATION equ 0
CONFIG_EXT_PARTITION equ 0
CONFIG_EXT_PARTITION_TYPES equ 0
CONFIG_UNPOISON_PARTITION_CTX equ 0
CONFIG_EXT_TILE equ 0
CONFIG_MOTION_VAR equ 1
CONFIG_NCOBMC equ 0
CONFIG_WARPED_MOTION equ 1
CONFIG_Q_ADAPT_PROBS equ 0
CONFIG_BITSTREAM_DEBUG equ 0
CONFIG_INTER_STATS_ONLY equ 0
CONFIG_ALT_INTRA equ 1
CONFIG_PALETTE equ 1
CONFIG_PALETTE_DELTA_ENCODING equ 0
CONFIG_RAWBITS equ 0
CONFIG_EC_SMALLMUL equ 1
CONFIG_PVQ equ 0
CONFIG_CFL equ 0
CONFIG_XIPHRC equ 0
CONFIG_DCT_ONLY equ 0
CONFIG_DAALA_DCT4 equ 0
CONFIG_DAALA_DCT8 equ 0
CONFIG_CB4X4 equ 1
CONFIG_CHROMA_2X2 equ 0
CONFIG_CHROMA_SUB8X8 equ 1
CONFIG_FRAME_SIZE equ 0
CONFIG_DELTA_Q equ 1
CONFIG_EXT_DELTA_Q equ 1
CONFIG_ADAPT_SCAN equ 0
CONFIG_FILTER_7BIT equ 1
CONFIG_PARALLEL_DEBLOCKING equ 1
CONFIG_LOOPFILTERING_ACROSS_TILES equ 1
CONFIG_TEMPMV_SIGNALING equ 1
CONFIG_RD_DEBUG equ 0
CONFIG_REFERENCE_BUFFER equ 1
CONFIG_COEF_INTERLEAVE equ 0
CONFIG_ENTROPY_STATS equ 0
CONFIG_MASKED_TX equ 0
CONFIG_DEPENDENT_HORZTILES equ 0
CONFIG_DIST_8X8 equ 0
CONFIG_DAALA_DIST equ 0
CONFIG_TRIPRED equ 0
CONFIG_PALETTE_THROUGHPUT equ 1
CONFIG_REF_ADAPT equ 0
CONFIG_LV_MAP equ 0
CONFIG_TXK_SEL equ 0
CONFIG_MV_COMPRESS equ 1
CONFIG_FRAME_SUPERRES equ 0
CONFIG_NEW_MULTISYMBOL equ 0
CONFIG_COMPOUND_SINGLEREF equ 0
CONFIG_AOM_QM equ 0
CONFIG_ONE_SIDED_COMPOUND equ 1
CONFIG_EXT_COMP_REFS equ 0
CONFIG_SMOOTH_HV equ 1
CONFIG_VAR_REFS equ 0
CONFIG_RECT_INTRA_PRED equ 1
CONFIG_LGT equ 0
CONFIG_SBL_SYMBOL equ 0
CONFIG_NCOBMC_ADAPT_WEIGHT equ 0
CONFIG_BGSPRITE equ 0
CONFIG_VAR_TX_NO_TX_MODE equ 0
CONFIG_MRC_TX equ 0
CONFIG_LPF_DIRECT equ 0
CONFIG_UV_LVL equ 0
CONFIG_ANALYZER equ 0

View file

@ -9,7 +9,7 @@
/* This file automatically generated by configure. Do not edit! */
#ifndef AOM_CONFIG_H
#define AOM_CONFIG_H
#define RESTRICT
#define RESTRICT
#define INLINE inline
#define ARCH_ARM 0
#define ARCH_MIPS 0
@ -78,6 +78,7 @@
#define CONFIG_HIGHBITDEPTH 1
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_COLORSPACE_HEADERS 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_CDEF 1
#define CONFIG_VAR_TX 1
@ -100,6 +101,10 @@
#define CONFIG_WEDGE 1
#define CONFIG_COMPOUND_SEGMENT 1
#define CONFIG_EXT_REFS 1
#define CONFIG_ALTREF2 0
#define CONFIG_SPEED_REFS 0
#define CONFIG_GF_GROUPS 0
#define CONFIG_FLEX_REFS 0
#define CONFIG_GLOBAL_MOTION 1
#define CONFIG_NEW_QUANT 0
#define CONFIG_SUPERTX 0
@ -114,6 +119,7 @@
#define CONFIG_WARPED_MOTION 1
#define CONFIG_Q_ADAPT_PROBS 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_INTER_STATS_ONLY 0
#define CONFIG_ALT_INTRA 1
#define CONFIG_PALETTE 1
#define CONFIG_PALETTE_DELTA_ENCODING 0
@ -122,6 +128,9 @@
#define CONFIG_PVQ 0
#define CONFIG_CFL 0
#define CONFIG_XIPHRC 0
#define CONFIG_DCT_ONLY 0
#define CONFIG_DAALA_DCT4 0
#define CONFIG_DAALA_DCT8 0
#define CONFIG_CB4X4 1
#define CONFIG_CHROMA_2X2 0
#define CONFIG_CHROMA_SUB8X8 1
@ -130,11 +139,8 @@
#define CONFIG_EXT_DELTA_Q 1
#define CONFIG_ADAPT_SCAN 0
#define CONFIG_FILTER_7BIT 1
#define CONFIG_PARALLEL_DEBLOCKING 0
#define CONFIG_PARALLEL_DEBLOCKING_15TAP 0
#define CONFIG_PARALLEL_DEBLOCKING 1
#define CONFIG_LOOPFILTERING_ACROSS_TILES 1
#define CONFIG_TILE_GROUPS 1
#define CONFIG_EC_ADAPT 1
#define CONFIG_TEMPMV_SIGNALING 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_REFERENCE_BUFFER 1
@ -142,6 +148,7 @@
#define CONFIG_ENTROPY_STATS 0
#define CONFIG_MASKED_TX 0
#define CONFIG_DEPENDENT_HORZTILES 0
#define CONFIG_DIST_8X8 0
#define CONFIG_DAALA_DIST 0
#define CONFIG_TRIPRED 0
#define CONFIG_PALETTE_THROUGHPUT 1
@ -154,8 +161,18 @@
#define CONFIG_COMPOUND_SINGLEREF 0
#define CONFIG_AOM_QM 0
#define CONFIG_ONE_SIDED_COMPOUND 1
#define CONFIG_SMOOTH_HV 0
#define CONFIG_EXT_COMP_REFS 0
#define CONFIG_SMOOTH_HV 1
#define CONFIG_VAR_REFS 0
#define CONFIG_RECT_INTRA_PRED 1
#define CONFIG_LGT 0
#define CONFIG_SBL_SYMBOL 0
#define CONFIG_NCOBMC_ADAPT_WEIGHT 0
#define CONFIG_BGSPRITE 0
#define CONFIG_VAR_TX_NO_TX_MODE 0
#define CONFIG_MRC_TX 0
#define CONFIG_LPF_DIRECT 0
#define CONFIG_UV_LVL 0
#define CONFIG_ANALYZER 0
#define DECODE_WIDTH_LIMIT 8192
#define DECODE_HEIGHT_LIMIT 4608

File diff suppressed because it is too large Load diff

View file

@ -12,6 +12,7 @@
*/
#include "aom/aom_integer.h"
#include "aom_dsp/txfm_common.h"
#include "av1/common/common.h"
#include "av1/common/enums.h"
#include "av1/common/quant_common.h"
@ -24,6 +25,7 @@ struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct txfm_param;
struct aom_variance_vtable;
struct search_site_config;
struct mv;
@ -60,7 +62,8 @@ void aom_clpf_hblock_hbd_sse4_1(uint16_t *dst, const uint16_t *src, int dstride,
RTCD_EXTERN void (*aom_clpf_hblock_hbd)(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
int64_t av1_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
#define av1_block_error av1_block_error_c
int64_t av1_block_error_avx2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
RTCD_EXTERN int64_t (*av1_block_error)(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
void av1_convolve_horiz_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
void av1_convolve_horiz_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
@ -76,59 +79,59 @@ int av1_diamond_search_sad_c(struct macroblock *x, const struct search_site_conf
void av1_fdct8x8_quant_c(const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_fdct8x8_quant av1_fdct8x8_quant_c
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_avx2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht16x16)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x16_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht16x16)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x32_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht16x32)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht16x32)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x4 av1_fht16x4_c
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht16x8)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht16x8)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht32x16)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht32x16)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_avx2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht32x32)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht32x32)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x8 av1_fht32x8_c
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x16 av1_fht4x16_c
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht4x4)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht4x4)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht4x8)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht4x8)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht8x16)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht8x16)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x32 av1_fht8x32_c
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x4_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht8x4)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht8x4)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht8x8)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht8x8)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
int av1_full_range_search_c(const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv);
#define av1_full_range_search av1_full_range_search_c
@ -145,6 +148,15 @@ void av1_fwd_txfm2d_16x16_c(const int16_t *input, int32_t *output, int stride, i
void av1_fwd_txfm2d_16x16_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_16x16)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_16x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x32 av1_fwd_txfm2d_16x32_c
void av1_fwd_txfm2d_16x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x8 av1_fwd_txfm2d_16x8_c
void av1_fwd_txfm2d_32x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_32x16 av1_fwd_txfm2d_32x16_c
void av1_fwd_txfm2d_32x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_32x32_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_32x32)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
@ -153,10 +165,19 @@ void av1_fwd_txfm2d_4x4_c(const int16_t *input, int32_t *output, int stride, int
void av1_fwd_txfm2d_4x4_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_4x4)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_4x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_4x8 av1_fwd_txfm2d_4x8_c
void av1_fwd_txfm2d_64x64_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_64x64_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_64x64)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_8x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x16 av1_fwd_txfm2d_8x16_c
void av1_fwd_txfm2d_8x4_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x4 av1_fwd_txfm2d_8x4_c
void av1_fwd_txfm2d_8x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_8x8_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_8x8)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
@ -204,89 +225,46 @@ void av1_highbd_convolve_vert_c(const uint16_t *src, int src_stride, uint16_t *d
void av1_highbd_convolve_vert_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
RTCD_EXTERN void (*av1_highbd_convolve_vert)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
void av1_highbd_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x16 av1_highbd_fht16x16_c
void av1_highbd_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x32 av1_highbd_fht16x32_c
void av1_highbd_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x4 av1_highbd_fht16x4_c
void av1_highbd_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x8 av1_highbd_fht16x8_c
void av1_highbd_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x16 av1_highbd_fht32x16_c
void av1_highbd_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x32 av1_highbd_fht32x32_c
void av1_highbd_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x8 av1_highbd_fht32x8_c
void av1_highbd_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x16 av1_highbd_fht4x16_c
void av1_highbd_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_highbd_fht4x4_sse4_1(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_highbd_fht4x4)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_highbd_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x8 av1_highbd_fht4x8_c
void av1_highbd_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x16 av1_highbd_fht8x16_c
void av1_highbd_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x32 av1_highbd_fht8x32_c
void av1_highbd_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x4 av1_highbd_fht8x4_c
void av1_highbd_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x8 av1_highbd_fht8x8_c
void av1_highbd_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
#define av1_highbd_fwht4x4 av1_highbd_fwht4x4_c
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type, int bd);
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_highbd_iht16x16_256_add av1_highbd_iht16x16_256_add_c
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x32_512_add av1_highbd_iht16x32_512_add_c
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x4_64_add av1_highbd_iht16x4_64_add_c
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x8_128_add av1_highbd_iht16x8_128_add_c
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x16_512_add av1_highbd_iht32x16_512_add_c
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x8_256_add av1_highbd_iht32x8_256_add_c
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x16_64_add av1_highbd_iht4x16_64_add_c
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x4_16_add av1_highbd_iht4x4_16_add_c
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x8_32_add av1_highbd_iht4x8_32_add_c
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x16_128_add av1_highbd_iht8x16_128_add_c
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x32_256_add av1_highbd_iht8x32_256_add_c
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x4_32_add av1_highbd_iht8x4_32_add_c
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x8_64_add av1_highbd_iht8x8_64_add_c
void av1_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
@ -294,71 +272,81 @@ void av1_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int
void av1_highbd_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_quantize_fp_sse4_1(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
RTCD_EXTERN void (*av1_highbd_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
#define av1_highbd_temporal_filter_apply av1_highbd_temporal_filter_apply_c
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_ssse3(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_ssse3(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_avx2(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
RTCD_EXTERN void (*av1_iht16x16_256_add)(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x16_256_add_avx2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht16x16_256_add)(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x32_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht16x32_512_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x32_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht16x32_512_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x4_64_add av1_iht16x4_64_add_c
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x8_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht16x8_128_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x8_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht16x8_128_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x16_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht32x16_512_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht32x16_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht32x16_512_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_iht32x32_1024_add av1_iht32x32_1024_add_c
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht32x8_256_add av1_iht32x8_256_add_c
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x16_64_add av1_iht4x16_64_add_c
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x8_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht4x8_32_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x8_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht4x8_32_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x16_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht8x16_128_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x16_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht8x16_128_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x32_256_add av1_iht8x32_256_add_c
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x4_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht8x4_32_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x4_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht8x4_32_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht8x8_64_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht8x8_64_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_16x16_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_16x16)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_32x32_avx2(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_32x32)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
@ -367,9 +355,18 @@ void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride
void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
@ -383,19 +380,21 @@ void av1_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_b
void av1_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
RTCD_EXTERN void (*av1_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_quantize_fp_32x32 av1_quantize_fp_32x32_c
void av1_quantize_fp_32x32_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
RTCD_EXTERN void (*av1_quantize_fp_32x32)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
void av1_temporal_filter_apply_sse2(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
RTCD_EXTERN void (*av1_temporal_filter_apply)(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_sse2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_ssse3(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_sse2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_ssse3(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_wedge_compute_delta_squares_c(int16_t *d, const int16_t *a, const int16_t *b, int N);
void av1_wedge_compute_delta_squares_sse2(int16_t *d, const int16_t *a, const int16_t *b, int N);
@ -493,6 +492,8 @@ static void setup_rtcd_internal(void)
if (flags & HAS_SSE2) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_sse2;
if (flags & HAS_SSSE3) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_ssse3;
if (flags & HAS_SSE4_1) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_sse4_1;
av1_block_error = av1_block_error_c;
if (flags & HAS_AVX2) av1_block_error = av1_block_error_avx2;
av1_convolve_horiz = av1_convolve_horiz_c;
if (flags & HAS_SSSE3) av1_convolve_horiz = av1_convolve_horiz_ssse3;
av1_convolve_vert = av1_convolve_vert_c;
@ -540,10 +541,9 @@ static void setup_rtcd_internal(void)
if (flags & HAS_SSE4_1) av1_highbd_convolve_init = av1_highbd_convolve_init_sse4_1;
av1_highbd_convolve_vert = av1_highbd_convolve_vert_c;
if (flags & HAS_SSE4_1) av1_highbd_convolve_vert = av1_highbd_convolve_vert_sse4_1;
av1_highbd_fht4x4 = av1_highbd_fht4x4_c;
if (flags & HAS_SSE4_1) av1_highbd_fht4x4 = av1_highbd_fht4x4_sse4_1;
av1_highbd_quantize_fp = av1_highbd_quantize_fp_c;
if (flags & HAS_SSE4_1) av1_highbd_quantize_fp = av1_highbd_quantize_fp_sse4_1;
if (flags & HAS_AVX2) av1_highbd_quantize_fp = av1_highbd_quantize_fp_avx2;
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
if (flags & HAS_SSSE3) av1_highbd_warp_affine = av1_highbd_warp_affine_ssse3;
av1_iht16x16_256_add = av1_iht16x16_256_add_c;
@ -577,6 +577,9 @@ static void setup_rtcd_internal(void)
if (flags & HAS_SSSE3) av1_lowbd_convolve_init = av1_lowbd_convolve_init_ssse3;
av1_quantize_fp = av1_quantize_fp_c;
if (flags & HAS_SSE2) av1_quantize_fp = av1_quantize_fp_sse2;
if (flags & HAS_AVX2) av1_quantize_fp = av1_quantize_fp_avx2;
av1_quantize_fp_32x32 = av1_quantize_fp_32x32_c;
if (flags & HAS_AVX2) av1_quantize_fp_32x32 = av1_quantize_fp_32x32_avx2;
av1_temporal_filter_apply = av1_temporal_filter_apply_c;
if (flags & HAS_SSE2) av1_temporal_filter_apply = av1_temporal_filter_apply_sse2;
av1_warp_affine = av1_warp_affine_c;

View file

@ -1,146 +1,163 @@
%define ARCH_ARM 0
%define ARCH_MIPS 0
%define ARCH_X86 0
%define ARCH_X86_64 1
%define HAVE_NEON 0
%define HAVE_NEON_ASM 0
%define HAVE_MIPS32 0
%define HAVE_DSPR2 0
%define HAVE_MSA 0
%define HAVE_MIPS64 0
%define HAVE_MMX 1
%define HAVE_SSE 1
%define HAVE_SSE2 1
%define HAVE_SSE3 1
%define HAVE_SSSE3 1
%define HAVE_SSE4_1 1
%define HAVE_AVX 1
%define HAVE_AVX2 1
%define HAVE_AOM_PORTS 1
%define HAVE_FEXCEPT 1
%define HAVE_PTHREAD_H 1
%define HAVE_WXWIDGETS 0
%define CONFIG_DEPENDENCY_TRACKING 1
%define CONFIG_EXTERNAL_BUILD 1
%define CONFIG_INSTALL_DOCS 1
%define CONFIG_INSTALL_BINS 1
%define CONFIG_INSTALL_LIBS 1
%define CONFIG_INSTALL_SRCS 0
%define CONFIG_DEBUG 0
%define CONFIG_GPROF 0
%define CONFIG_GCOV 0
%define CONFIG_RVCT 0
%define CONFIG_GCC 1
%define CONFIG_MSVS 0
%define CONFIG_PIC 1
%define CONFIG_BIG_ENDIAN 0
%define CONFIG_CODEC_SRCS 0
%define CONFIG_DEBUG_LIBS 0
%define CONFIG_RUNTIME_CPU_DETECT 1
%define CONFIG_POSTPROC 1
%define CONFIG_MULTITHREAD 1
%define CONFIG_INTERNAL_STATS 0
%define CONFIG_AV1_ENCODER 1
%define CONFIG_AV1_DECODER 1
%define CONFIG_AV1 1
%define CONFIG_STATIC_MSVCRT 0
%define CONFIG_SPATIAL_RESAMPLING 1
%define CONFIG_REALTIME_ONLY 0
%define CONFIG_ONTHEFLY_BITPACKING 0
%define CONFIG_ERROR_CONCEALMENT 0
%define CONFIG_SHARED 0
%define CONFIG_STATIC 1
%define CONFIG_SMALL 0
%define CONFIG_POSTPROC_VISUALIZER 0
%define CONFIG_OS_SUPPORT 1
%define CONFIG_UNIT_TESTS 0
%define CONFIG_WEBM_IO 1
%define CONFIG_LIBYUV 1
%define CONFIG_ACCOUNTING 0
%define CONFIG_INSPECTION 0
%define CONFIG_DECODE_PERF_TESTS 0
%define CONFIG_ENCODE_PERF_TESTS 0
%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
%define CONFIG_LOWBITDEPTH 1
%define CONFIG_HIGHBITDEPTH 1
%define CONFIG_EXPERIMENTAL 0
%define CONFIG_SIZE_LIMIT 1
%define CONFIG_FP_MB_STATS 0
%define CONFIG_CDEF 1
%define CONFIG_VAR_TX 1
%define CONFIG_RECT_TX 1
%define CONFIG_RECT_TX_EXT 0
%define CONFIG_TPL_MV 0
%define CONFIG_DUAL_FILTER 1
%define CONFIG_CONVOLVE_ROUND 0
%define CONFIG_COMPOUND_ROUND 0
%define CONFIG_EXT_TX 1
%define CONFIG_DPCM_INTRA 0
%define CONFIG_TX64X64 0
%define CONFIG_EXT_INTRA 1
%define CONFIG_INTRA_INTERP 0
%define CONFIG_FILTER_INTRA 0
%define CONFIG_INTRA_EDGE 0
%define CONFIG_INTRABC 0
%define CONFIG_EXT_INTER 1
%define CONFIG_INTERINTRA 1
%define CONFIG_WEDGE 1
%define CONFIG_COMPOUND_SEGMENT 1
%define CONFIG_EXT_REFS 1
%define CONFIG_GLOBAL_MOTION 1
%define CONFIG_NEW_QUANT 0
%define CONFIG_SUPERTX 0
%define CONFIG_ANS 0
%define CONFIG_LOOP_RESTORATION 0
%define CONFIG_EXT_PARTITION 0
%define CONFIG_EXT_PARTITION_TYPES 0
%define CONFIG_UNPOISON_PARTITION_CTX 0
%define CONFIG_EXT_TILE 0
%define CONFIG_MOTION_VAR 1
%define CONFIG_NCOBMC 0
%define CONFIG_WARPED_MOTION 1
%define CONFIG_Q_ADAPT_PROBS 0
%define CONFIG_BITSTREAM_DEBUG 0
%define CONFIG_ALT_INTRA 1
%define CONFIG_PALETTE 1
%define CONFIG_PALETTE_DELTA_ENCODING 0
%define CONFIG_RAWBITS 0
%define CONFIG_EC_SMALLMUL 1
%define CONFIG_PVQ 0
%define CONFIG_CFL 0
%define CONFIG_XIPHRC 0
%define CONFIG_CB4X4 1
%define CONFIG_CHROMA_2X2 0
%define CONFIG_CHROMA_SUB8X8 1
%define CONFIG_FRAME_SIZE 0
%define CONFIG_DELTA_Q 1
%define CONFIG_EXT_DELTA_Q 1
%define CONFIG_ADAPT_SCAN 0
%define CONFIG_FILTER_7BIT 1
%define CONFIG_PARALLEL_DEBLOCKING 0
%define CONFIG_PARALLEL_DEBLOCKING_15TAP 0
%define CONFIG_LOOPFILTERING_ACROSS_TILES 1
%define CONFIG_TILE_GROUPS 1
%define CONFIG_EC_ADAPT 1
%define CONFIG_TEMPMV_SIGNALING 1
%define CONFIG_RD_DEBUG 0
%define CONFIG_REFERENCE_BUFFER 1
%define CONFIG_COEF_INTERLEAVE 0
%define CONFIG_ENTROPY_STATS 0
%define CONFIG_MASKED_TX 0
%define CONFIG_DEPENDENT_HORZTILES 0
%define CONFIG_DAALA_DIST 0
%define CONFIG_TRIPRED 0
%define CONFIG_PALETTE_THROUGHPUT 1
%define CONFIG_REF_ADAPT 0
%define CONFIG_LV_MAP 0
%define CONFIG_TXK_SEL 0
%define CONFIG_MV_COMPRESS 1
%define CONFIG_FRAME_SUPERRES 0
%define CONFIG_NEW_MULTISYMBOL 0
%define CONFIG_COMPOUND_SINGLEREF 0
%define CONFIG_AOM_QM 0
%define CONFIG_ONE_SIDED_COMPOUND 1
%define CONFIG_SMOOTH_HV 0
%define CONFIG_VAR_REFS 0
%define CONFIG_ANALYZER 0
ARCH_ARM equ 0
ARCH_MIPS equ 0
ARCH_X86 equ 0
ARCH_X86_64 equ 1
HAVE_NEON equ 0
HAVE_NEON_ASM equ 0
HAVE_MIPS32 equ 0
HAVE_DSPR2 equ 0
HAVE_MSA equ 0
HAVE_MIPS64 equ 0
HAVE_MMX equ 1
HAVE_SSE equ 1
HAVE_SSE2 equ 1
HAVE_SSE3 equ 1
HAVE_SSSE3 equ 1
HAVE_SSE4_1 equ 1
HAVE_AVX equ 1
HAVE_AVX2 equ 1
HAVE_AOM_PORTS equ 1
HAVE_FEXCEPT equ 1
HAVE_PTHREAD_H equ 1
HAVE_WXWIDGETS equ 0
CONFIG_DEPENDENCY_TRACKING equ 1
CONFIG_EXTERNAL_BUILD equ 1
CONFIG_INSTALL_DOCS equ 1
CONFIG_INSTALL_BINS equ 1
CONFIG_INSTALL_LIBS equ 1
CONFIG_INSTALL_SRCS equ 0
CONFIG_DEBUG equ 0
CONFIG_GPROF equ 0
CONFIG_GCOV equ 0
CONFIG_RVCT equ 0
CONFIG_GCC equ 1
CONFIG_MSVS equ 0
CONFIG_PIC equ 1
CONFIG_BIG_ENDIAN equ 0
CONFIG_CODEC_SRCS equ 0
CONFIG_DEBUG_LIBS equ 0
CONFIG_RUNTIME_CPU_DETECT equ 1
CONFIG_POSTPROC equ 1
CONFIG_MULTITHREAD equ 1
CONFIG_INTERNAL_STATS equ 0
CONFIG_AV1_ENCODER equ 1
CONFIG_AV1_DECODER equ 1
CONFIG_AV1 equ 1
CONFIG_STATIC_MSVCRT equ 0
CONFIG_SPATIAL_RESAMPLING equ 1
CONFIG_REALTIME_ONLY equ 0
CONFIG_ONTHEFLY_BITPACKING equ 0
CONFIG_ERROR_CONCEALMENT equ 0
CONFIG_SHARED equ 0
CONFIG_STATIC equ 1
CONFIG_SMALL equ 0
CONFIG_POSTPROC_VISUALIZER equ 0
CONFIG_OS_SUPPORT equ 1
CONFIG_UNIT_TESTS equ 0
CONFIG_WEBM_IO equ 1
CONFIG_LIBYUV equ 1
CONFIG_ACCOUNTING equ 0
CONFIG_INSPECTION equ 0
CONFIG_DECODE_PERF_TESTS equ 0
CONFIG_ENCODE_PERF_TESTS equ 0
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
CONFIG_LOWBITDEPTH equ 1
CONFIG_HIGHBITDEPTH equ 1
CONFIG_EXPERIMENTAL equ 0
CONFIG_SIZE_LIMIT equ 1
CONFIG_COLORSPACE_HEADERS equ 0
CONFIG_FP_MB_STATS equ 0
CONFIG_CDEF equ 1
CONFIG_VAR_TX equ 1
CONFIG_RECT_TX equ 1
CONFIG_RECT_TX_EXT equ 0
CONFIG_TPL_MV equ 0
CONFIG_DUAL_FILTER equ 1
CONFIG_CONVOLVE_ROUND equ 0
CONFIG_COMPOUND_ROUND equ 0
CONFIG_EXT_TX equ 1
CONFIG_DPCM_INTRA equ 0
CONFIG_TX64X64 equ 0
CONFIG_EXT_INTRA equ 1
CONFIG_INTRA_INTERP equ 0
CONFIG_FILTER_INTRA equ 0
CONFIG_INTRA_EDGE equ 0
CONFIG_INTRABC equ 0
CONFIG_EXT_INTER equ 1
CONFIG_INTERINTRA equ 1
CONFIG_WEDGE equ 1
CONFIG_COMPOUND_SEGMENT equ 1
CONFIG_EXT_REFS equ 1
CONFIG_ALTREF2 equ 0
CONFIG_SPEED_REFS equ 0
CONFIG_GF_GROUPS equ 0
CONFIG_FLEX_REFS equ 0
CONFIG_GLOBAL_MOTION equ 1
CONFIG_NEW_QUANT equ 0
CONFIG_SUPERTX equ 0
CONFIG_ANS equ 0
CONFIG_LOOP_RESTORATION equ 0
CONFIG_EXT_PARTITION equ 0
CONFIG_EXT_PARTITION_TYPES equ 0
CONFIG_UNPOISON_PARTITION_CTX equ 0
CONFIG_EXT_TILE equ 0
CONFIG_MOTION_VAR equ 1
CONFIG_NCOBMC equ 0
CONFIG_WARPED_MOTION equ 1
CONFIG_Q_ADAPT_PROBS equ 0
CONFIG_BITSTREAM_DEBUG equ 0
CONFIG_INTER_STATS_ONLY equ 0
CONFIG_ALT_INTRA equ 1
CONFIG_PALETTE equ 1
CONFIG_PALETTE_DELTA_ENCODING equ 0
CONFIG_RAWBITS equ 0
CONFIG_EC_SMALLMUL equ 1
CONFIG_PVQ equ 0
CONFIG_CFL equ 0
CONFIG_XIPHRC equ 0
CONFIG_DCT_ONLY equ 0
CONFIG_DAALA_DCT4 equ 0
CONFIG_DAALA_DCT8 equ 0
CONFIG_CB4X4 equ 1
CONFIG_CHROMA_2X2 equ 0
CONFIG_CHROMA_SUB8X8 equ 1
CONFIG_FRAME_SIZE equ 0
CONFIG_DELTA_Q equ 1
CONFIG_EXT_DELTA_Q equ 1
CONFIG_ADAPT_SCAN equ 0
CONFIG_FILTER_7BIT equ 1
CONFIG_PARALLEL_DEBLOCKING equ 1
CONFIG_LOOPFILTERING_ACROSS_TILES equ 1
CONFIG_TEMPMV_SIGNALING equ 1
CONFIG_RD_DEBUG equ 0
CONFIG_REFERENCE_BUFFER equ 1
CONFIG_COEF_INTERLEAVE equ 0
CONFIG_ENTROPY_STATS equ 0
CONFIG_MASKED_TX equ 0
CONFIG_DEPENDENT_HORZTILES equ 0
CONFIG_DIST_8X8 equ 0
CONFIG_DAALA_DIST equ 0
CONFIG_TRIPRED equ 0
CONFIG_PALETTE_THROUGHPUT equ 1
CONFIG_REF_ADAPT equ 0
CONFIG_LV_MAP equ 0
CONFIG_TXK_SEL equ 0
CONFIG_MV_COMPRESS equ 1
CONFIG_FRAME_SUPERRES equ 0
CONFIG_NEW_MULTISYMBOL equ 0
CONFIG_COMPOUND_SINGLEREF equ 0
CONFIG_AOM_QM equ 0
CONFIG_ONE_SIDED_COMPOUND equ 1
CONFIG_EXT_COMP_REFS equ 0
CONFIG_SMOOTH_HV equ 1
CONFIG_VAR_REFS equ 0
CONFIG_RECT_INTRA_PRED equ 1
CONFIG_LGT equ 0
CONFIG_SBL_SYMBOL equ 0
CONFIG_NCOBMC_ADAPT_WEIGHT equ 0
CONFIG_BGSPRITE equ 0
CONFIG_VAR_TX_NO_TX_MODE equ 0
CONFIG_MRC_TX equ 0
CONFIG_LPF_DIRECT equ 0
CONFIG_UV_LVL equ 0
CONFIG_ANALYZER equ 0

View file

@ -9,7 +9,7 @@
/* This file automatically generated by configure. Do not edit! */
#ifndef AOM_CONFIG_H
#define AOM_CONFIG_H
#define RESTRICT
#define RESTRICT
#define INLINE inline
#define ARCH_ARM 0
#define ARCH_MIPS 0
@ -78,6 +78,7 @@
#define CONFIG_HIGHBITDEPTH 1
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_COLORSPACE_HEADERS 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_CDEF 1
#define CONFIG_VAR_TX 1
@ -100,6 +101,10 @@
#define CONFIG_WEDGE 1
#define CONFIG_COMPOUND_SEGMENT 1
#define CONFIG_EXT_REFS 1
#define CONFIG_ALTREF2 0
#define CONFIG_SPEED_REFS 0
#define CONFIG_GF_GROUPS 0
#define CONFIG_FLEX_REFS 0
#define CONFIG_GLOBAL_MOTION 1
#define CONFIG_NEW_QUANT 0
#define CONFIG_SUPERTX 0
@ -114,6 +119,7 @@
#define CONFIG_WARPED_MOTION 1
#define CONFIG_Q_ADAPT_PROBS 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_INTER_STATS_ONLY 0
#define CONFIG_ALT_INTRA 1
#define CONFIG_PALETTE 1
#define CONFIG_PALETTE_DELTA_ENCODING 0
@ -122,6 +128,9 @@
#define CONFIG_PVQ 0
#define CONFIG_CFL 0
#define CONFIG_XIPHRC 0
#define CONFIG_DCT_ONLY 0
#define CONFIG_DAALA_DCT4 0
#define CONFIG_DAALA_DCT8 0
#define CONFIG_CB4X4 1
#define CONFIG_CHROMA_2X2 0
#define CONFIG_CHROMA_SUB8X8 1
@ -130,11 +139,8 @@
#define CONFIG_EXT_DELTA_Q 1
#define CONFIG_ADAPT_SCAN 0
#define CONFIG_FILTER_7BIT 1
#define CONFIG_PARALLEL_DEBLOCKING 0
#define CONFIG_PARALLEL_DEBLOCKING_15TAP 0
#define CONFIG_PARALLEL_DEBLOCKING 1
#define CONFIG_LOOPFILTERING_ACROSS_TILES 1
#define CONFIG_TILE_GROUPS 1
#define CONFIG_EC_ADAPT 1
#define CONFIG_TEMPMV_SIGNALING 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_REFERENCE_BUFFER 1
@ -142,6 +148,7 @@
#define CONFIG_ENTROPY_STATS 0
#define CONFIG_MASKED_TX 0
#define CONFIG_DEPENDENT_HORZTILES 0
#define CONFIG_DIST_8X8 0
#define CONFIG_DAALA_DIST 0
#define CONFIG_TRIPRED 0
#define CONFIG_PALETTE_THROUGHPUT 1
@ -154,8 +161,18 @@
#define CONFIG_COMPOUND_SINGLEREF 0
#define CONFIG_AOM_QM 0
#define CONFIG_ONE_SIDED_COMPOUND 1
#define CONFIG_SMOOTH_HV 0
#define CONFIG_EXT_COMP_REFS 0
#define CONFIG_SMOOTH_HV 1
#define CONFIG_VAR_REFS 0
#define CONFIG_RECT_INTRA_PRED 1
#define CONFIG_LGT 0
#define CONFIG_SBL_SYMBOL 0
#define CONFIG_NCOBMC_ADAPT_WEIGHT 0
#define CONFIG_BGSPRITE 0
#define CONFIG_VAR_TX_NO_TX_MODE 0
#define CONFIG_MRC_TX 0
#define CONFIG_LPF_DIRECT 0
#define CONFIG_UV_LVL 0
#define CONFIG_ANALYZER 0
#define DECODE_WIDTH_LIMIT 8192
#define DECODE_HEIGHT_LIMIT 4608

File diff suppressed because it is too large Load diff

View file

@ -12,6 +12,7 @@
*/
#include "aom/aom_integer.h"
#include "aom_dsp/txfm_common.h"
#include "av1/common/common.h"
#include "av1/common/enums.h"
#include "av1/common/quant_common.h"
@ -24,6 +25,7 @@ struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct txfm_param;
struct aom_variance_vtable;
struct search_site_config;
struct mv;
@ -60,7 +62,8 @@ void aom_clpf_hblock_hbd_sse4_1(uint16_t *dst, const uint16_t *src, int dstride,
RTCD_EXTERN void (*aom_clpf_hblock_hbd)(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
int64_t av1_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
#define av1_block_error av1_block_error_c
int64_t av1_block_error_avx2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
RTCD_EXTERN int64_t (*av1_block_error)(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
void av1_convolve_horiz_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
void av1_convolve_horiz_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
@ -76,58 +79,58 @@ int av1_diamond_search_sad_c(struct macroblock *x, const struct search_site_conf
void av1_fdct8x8_quant_c(const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_fdct8x8_quant av1_fdct8x8_quant_c
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_avx2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht16x16)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x16_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht16x16)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x32_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x32 av1_fht16x32_sse2
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x4 av1_fht16x4_c
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x8 av1_fht16x8_sse2
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x16 av1_fht32x16_sse2
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_avx2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht32x32)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht32x32)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x8 av1_fht32x8_c
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x16 av1_fht4x16_c
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x4 av1_fht4x4_sse2
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x8 av1_fht4x8_sse2
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x16 av1_fht8x16_sse2
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x32 av1_fht8x32_c
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x4_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x4 av1_fht8x4_sse2
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x8 av1_fht8x8_sse2
int av1_full_range_search_c(const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv);
@ -145,6 +148,15 @@ void av1_fwd_txfm2d_16x16_c(const int16_t *input, int32_t *output, int stride, i
void av1_fwd_txfm2d_16x16_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_16x16)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_16x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x32 av1_fwd_txfm2d_16x32_c
void av1_fwd_txfm2d_16x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x8 av1_fwd_txfm2d_16x8_c
void av1_fwd_txfm2d_32x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_32x16 av1_fwd_txfm2d_32x16_c
void av1_fwd_txfm2d_32x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_32x32_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_32x32)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
@ -153,10 +165,19 @@ void av1_fwd_txfm2d_4x4_c(const int16_t *input, int32_t *output, int stride, int
void av1_fwd_txfm2d_4x4_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_4x4)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_4x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_4x8 av1_fwd_txfm2d_4x8_c
void av1_fwd_txfm2d_64x64_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_64x64_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_64x64)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_8x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x16 av1_fwd_txfm2d_8x16_c
void av1_fwd_txfm2d_8x4_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x4 av1_fwd_txfm2d_8x4_c
void av1_fwd_txfm2d_8x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_8x8_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_8x8)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
@ -210,89 +231,46 @@ void av1_highbd_convolve_vert_c(const uint16_t *src, int src_stride, uint16_t *d
void av1_highbd_convolve_vert_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
RTCD_EXTERN void (*av1_highbd_convolve_vert)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
void av1_highbd_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x16 av1_highbd_fht16x16_c
void av1_highbd_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x32 av1_highbd_fht16x32_c
void av1_highbd_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x4 av1_highbd_fht16x4_c
void av1_highbd_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x8 av1_highbd_fht16x8_c
void av1_highbd_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x16 av1_highbd_fht32x16_c
void av1_highbd_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x32 av1_highbd_fht32x32_c
void av1_highbd_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x8 av1_highbd_fht32x8_c
void av1_highbd_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x16 av1_highbd_fht4x16_c
void av1_highbd_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_highbd_fht4x4_sse4_1(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_highbd_fht4x4)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_highbd_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x8 av1_highbd_fht4x8_c
void av1_highbd_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x16 av1_highbd_fht8x16_c
void av1_highbd_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x32 av1_highbd_fht8x32_c
void av1_highbd_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x4 av1_highbd_fht8x4_c
void av1_highbd_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x8 av1_highbd_fht8x8_c
void av1_highbd_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
#define av1_highbd_fwht4x4 av1_highbd_fwht4x4_c
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type, int bd);
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_highbd_iht16x16_256_add av1_highbd_iht16x16_256_add_c
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x32_512_add av1_highbd_iht16x32_512_add_c
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x4_64_add av1_highbd_iht16x4_64_add_c
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x8_128_add av1_highbd_iht16x8_128_add_c
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x16_512_add av1_highbd_iht32x16_512_add_c
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x8_256_add av1_highbd_iht32x8_256_add_c
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x16_64_add av1_highbd_iht4x16_64_add_c
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x4_16_add av1_highbd_iht4x4_16_add_c
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x8_32_add av1_highbd_iht4x8_32_add_c
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x16_128_add av1_highbd_iht8x16_128_add_c
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x32_256_add av1_highbd_iht8x32_256_add_c
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x4_32_add av1_highbd_iht8x4_32_add_c
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x8_64_add av1_highbd_iht8x8_64_add_c
void av1_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
@ -300,71 +278,81 @@ void av1_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int
void av1_highbd_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_quantize_fp_sse4_1(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
RTCD_EXTERN void (*av1_highbd_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
#define av1_highbd_temporal_filter_apply av1_highbd_temporal_filter_apply_c
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_ssse3(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_ssse3(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_avx2(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
RTCD_EXTERN void (*av1_iht16x16_256_add)(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x16_256_add_avx2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht16x16_256_add)(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x32_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x32_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x32_512_add av1_iht16x32_512_add_sse2
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x4_64_add av1_iht16x4_64_add_c
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x8_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x8_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x8_128_add av1_iht16x8_128_add_sse2
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x16_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht32x16_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht32x16_512_add av1_iht32x16_512_add_sse2
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_iht32x32_1024_add av1_iht32x32_1024_add_c
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht32x8_256_add av1_iht32x8_256_add_c
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x16_64_add av1_iht4x16_64_add_c
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x4_16_add av1_iht4x4_16_add_sse2
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x8_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x8_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x8_32_add av1_iht4x8_32_add_sse2
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x16_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x16_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x16_128_add av1_iht8x16_128_add_sse2
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x32_256_add av1_iht8x32_256_add_c
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x4_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x4_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x4_32_add av1_iht8x4_32_add_sse2
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x8_64_add av1_iht8x8_64_add_sse2
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_16x16_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_16x16)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_32x32_avx2(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_32x32)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
@ -373,9 +361,18 @@ void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride
void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
@ -389,19 +386,21 @@ void av1_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_b
void av1_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_quantize_fp av1_quantize_fp_sse2
void av1_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
RTCD_EXTERN void (*av1_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_quantize_fp_32x32 av1_quantize_fp_32x32_c
void av1_quantize_fp_32x32_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
RTCD_EXTERN void (*av1_quantize_fp_32x32)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
void av1_temporal_filter_apply_sse2(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
#define av1_temporal_filter_apply av1_temporal_filter_apply_sse2
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_sse2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_ssse3(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_sse2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_ssse3(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_wedge_compute_delta_squares_c(int16_t *d, const int16_t *a, const int16_t *b, int N);
void av1_wedge_compute_delta_squares_sse2(int16_t *d, const int16_t *a, const int16_t *b, int N);
@ -495,6 +494,8 @@ static void setup_rtcd_internal(void)
aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_sse2;
if (flags & HAS_SSSE3) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_ssse3;
if (flags & HAS_SSE4_1) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_sse4_1;
av1_block_error = av1_block_error_c;
if (flags & HAS_AVX2) av1_block_error = av1_block_error_avx2;
av1_convolve_horiz = av1_convolve_horiz_c;
if (flags & HAS_SSSE3) av1_convolve_horiz = av1_convolve_horiz_ssse3;
av1_convolve_vert = av1_convolve_vert_c;
@ -522,10 +523,9 @@ static void setup_rtcd_internal(void)
if (flags & HAS_SSE4_1) av1_highbd_convolve_init = av1_highbd_convolve_init_sse4_1;
av1_highbd_convolve_vert = av1_highbd_convolve_vert_c;
if (flags & HAS_SSE4_1) av1_highbd_convolve_vert = av1_highbd_convolve_vert_sse4_1;
av1_highbd_fht4x4 = av1_highbd_fht4x4_c;
if (flags & HAS_SSE4_1) av1_highbd_fht4x4 = av1_highbd_fht4x4_sse4_1;
av1_highbd_quantize_fp = av1_highbd_quantize_fp_c;
if (flags & HAS_SSE4_1) av1_highbd_quantize_fp = av1_highbd_quantize_fp_sse4_1;
if (flags & HAS_AVX2) av1_highbd_quantize_fp = av1_highbd_quantize_fp_avx2;
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
if (flags & HAS_SSSE3) av1_highbd_warp_affine = av1_highbd_warp_affine_ssse3;
av1_iht16x16_256_add = av1_iht16x16_256_add_sse2;
@ -540,6 +540,10 @@ static void setup_rtcd_internal(void)
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_sse4_1;
av1_lowbd_convolve_init = av1_lowbd_convolve_init_c;
if (flags & HAS_SSSE3) av1_lowbd_convolve_init = av1_lowbd_convolve_init_ssse3;
av1_quantize_fp = av1_quantize_fp_sse2;
if (flags & HAS_AVX2) av1_quantize_fp = av1_quantize_fp_avx2;
av1_quantize_fp_32x32 = av1_quantize_fp_32x32_c;
if (flags & HAS_AVX2) av1_quantize_fp_32x32 = av1_quantize_fp_32x32_avx2;
av1_warp_affine = av1_warp_affine_sse2;
if (flags & HAS_SSSE3) av1_warp_affine = av1_warp_affine_ssse3;
compute_cross_correlation = compute_cross_correlation_c;

View file

@ -1,146 +1,163 @@
%define ARCH_ARM 0
%define ARCH_MIPS 0
%define ARCH_X86 0
%define ARCH_X86_64 1
%define HAVE_NEON 0
%define HAVE_NEON_ASM 0
%define HAVE_MIPS32 0
%define HAVE_DSPR2 0
%define HAVE_MSA 0
%define HAVE_MIPS64 0
%define HAVE_MMX 1
%define HAVE_SSE 1
%define HAVE_SSE2 1
%define HAVE_SSE3 1
%define HAVE_SSSE3 1
%define HAVE_SSE4_1 1
%define HAVE_AVX 1
%define HAVE_AVX2 1
%define HAVE_AOM_PORTS 1
%define HAVE_FEXCEPT 1
%define HAVE_PTHREAD_H 1
%define HAVE_WXWIDGETS 0
%define CONFIG_DEPENDENCY_TRACKING 1
%define CONFIG_EXTERNAL_BUILD 1
%define CONFIG_INSTALL_DOCS 1
%define CONFIG_INSTALL_BINS 1
%define CONFIG_INSTALL_LIBS 1
%define CONFIG_INSTALL_SRCS 0
%define CONFIG_DEBUG 0
%define CONFIG_GPROF 0
%define CONFIG_GCOV 0
%define CONFIG_RVCT 0
%define CONFIG_GCC 1
%define CONFIG_MSVS 0
%define CONFIG_PIC 1
%define CONFIG_BIG_ENDIAN 0
%define CONFIG_CODEC_SRCS 0
%define CONFIG_DEBUG_LIBS 0
%define CONFIG_RUNTIME_CPU_DETECT 1
%define CONFIG_POSTPROC 1
%define CONFIG_MULTITHREAD 1
%define CONFIG_INTERNAL_STATS 0
%define CONFIG_AV1_ENCODER 1
%define CONFIG_AV1_DECODER 1
%define CONFIG_AV1 1
%define CONFIG_STATIC_MSVCRT 0
%define CONFIG_SPATIAL_RESAMPLING 1
%define CONFIG_REALTIME_ONLY 0
%define CONFIG_ONTHEFLY_BITPACKING 0
%define CONFIG_ERROR_CONCEALMENT 0
%define CONFIG_SHARED 0
%define CONFIG_STATIC 1
%define CONFIG_SMALL 0
%define CONFIG_POSTPROC_VISUALIZER 0
%define CONFIG_OS_SUPPORT 1
%define CONFIG_UNIT_TESTS 0
%define CONFIG_WEBM_IO 1
%define CONFIG_LIBYUV 1
%define CONFIG_ACCOUNTING 0
%define CONFIG_INSPECTION 0
%define CONFIG_DECODE_PERF_TESTS 0
%define CONFIG_ENCODE_PERF_TESTS 0
%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
%define CONFIG_LOWBITDEPTH 1
%define CONFIG_HIGHBITDEPTH 1
%define CONFIG_EXPERIMENTAL 0
%define CONFIG_SIZE_LIMIT 1
%define CONFIG_FP_MB_STATS 0
%define CONFIG_CDEF 1
%define CONFIG_VAR_TX 1
%define CONFIG_RECT_TX 1
%define CONFIG_RECT_TX_EXT 0
%define CONFIG_TPL_MV 0
%define CONFIG_DUAL_FILTER 1
%define CONFIG_CONVOLVE_ROUND 0
%define CONFIG_COMPOUND_ROUND 0
%define CONFIG_EXT_TX 1
%define CONFIG_DPCM_INTRA 0
%define CONFIG_TX64X64 0
%define CONFIG_EXT_INTRA 1
%define CONFIG_INTRA_INTERP 0
%define CONFIG_FILTER_INTRA 0
%define CONFIG_INTRA_EDGE 0
%define CONFIG_INTRABC 0
%define CONFIG_EXT_INTER 1
%define CONFIG_INTERINTRA 1
%define CONFIG_WEDGE 1
%define CONFIG_COMPOUND_SEGMENT 1
%define CONFIG_EXT_REFS 1
%define CONFIG_GLOBAL_MOTION 1
%define CONFIG_NEW_QUANT 0
%define CONFIG_SUPERTX 0
%define CONFIG_ANS 0
%define CONFIG_LOOP_RESTORATION 0
%define CONFIG_EXT_PARTITION 0
%define CONFIG_EXT_PARTITION_TYPES 0
%define CONFIG_UNPOISON_PARTITION_CTX 0
%define CONFIG_EXT_TILE 0
%define CONFIG_MOTION_VAR 1
%define CONFIG_NCOBMC 0
%define CONFIG_WARPED_MOTION 1
%define CONFIG_Q_ADAPT_PROBS 0
%define CONFIG_BITSTREAM_DEBUG 0
%define CONFIG_ALT_INTRA 1
%define CONFIG_PALETTE 1
%define CONFIG_PALETTE_DELTA_ENCODING 0
%define CONFIG_RAWBITS 0
%define CONFIG_EC_SMALLMUL 1
%define CONFIG_PVQ 0
%define CONFIG_CFL 0
%define CONFIG_XIPHRC 0
%define CONFIG_CB4X4 1
%define CONFIG_CHROMA_2X2 0
%define CONFIG_CHROMA_SUB8X8 1
%define CONFIG_FRAME_SIZE 0
%define CONFIG_DELTA_Q 1
%define CONFIG_EXT_DELTA_Q 1
%define CONFIG_ADAPT_SCAN 0
%define CONFIG_FILTER_7BIT 1
%define CONFIG_PARALLEL_DEBLOCKING 0
%define CONFIG_PARALLEL_DEBLOCKING_15TAP 0
%define CONFIG_LOOPFILTERING_ACROSS_TILES 1
%define CONFIG_TILE_GROUPS 1
%define CONFIG_EC_ADAPT 1
%define CONFIG_TEMPMV_SIGNALING 1
%define CONFIG_RD_DEBUG 0
%define CONFIG_REFERENCE_BUFFER 1
%define CONFIG_COEF_INTERLEAVE 0
%define CONFIG_ENTROPY_STATS 0
%define CONFIG_MASKED_TX 0
%define CONFIG_DEPENDENT_HORZTILES 0
%define CONFIG_DAALA_DIST 0
%define CONFIG_TRIPRED 0
%define CONFIG_PALETTE_THROUGHPUT 1
%define CONFIG_REF_ADAPT 0
%define CONFIG_LV_MAP 0
%define CONFIG_TXK_SEL 0
%define CONFIG_MV_COMPRESS 1
%define CONFIG_FRAME_SUPERRES 0
%define CONFIG_NEW_MULTISYMBOL 0
%define CONFIG_COMPOUND_SINGLEREF 0
%define CONFIG_AOM_QM 0
%define CONFIG_ONE_SIDED_COMPOUND 1
%define CONFIG_SMOOTH_HV 0
%define CONFIG_VAR_REFS 0
%define CONFIG_ANALYZER 0
ARCH_ARM equ 0
ARCH_MIPS equ 0
ARCH_X86 equ 0
ARCH_X86_64 equ 1
HAVE_NEON equ 0
HAVE_NEON_ASM equ 0
HAVE_MIPS32 equ 0
HAVE_DSPR2 equ 0
HAVE_MSA equ 0
HAVE_MIPS64 equ 0
HAVE_MMX equ 1
HAVE_SSE equ 1
HAVE_SSE2 equ 1
HAVE_SSE3 equ 1
HAVE_SSSE3 equ 1
HAVE_SSE4_1 equ 1
HAVE_AVX equ 1
HAVE_AVX2 equ 1
HAVE_AOM_PORTS equ 1
HAVE_FEXCEPT equ 1
HAVE_PTHREAD_H equ 1
HAVE_WXWIDGETS equ 0
CONFIG_DEPENDENCY_TRACKING equ 1
CONFIG_EXTERNAL_BUILD equ 1
CONFIG_INSTALL_DOCS equ 1
CONFIG_INSTALL_BINS equ 1
CONFIG_INSTALL_LIBS equ 1
CONFIG_INSTALL_SRCS equ 0
CONFIG_DEBUG equ 0
CONFIG_GPROF equ 0
CONFIG_GCOV equ 0
CONFIG_RVCT equ 0
CONFIG_GCC equ 1
CONFIG_MSVS equ 0
CONFIG_PIC equ 1
CONFIG_BIG_ENDIAN equ 0
CONFIG_CODEC_SRCS equ 0
CONFIG_DEBUG_LIBS equ 0
CONFIG_RUNTIME_CPU_DETECT equ 1
CONFIG_POSTPROC equ 1
CONFIG_MULTITHREAD equ 1
CONFIG_INTERNAL_STATS equ 0
CONFIG_AV1_ENCODER equ 1
CONFIG_AV1_DECODER equ 1
CONFIG_AV1 equ 1
CONFIG_STATIC_MSVCRT equ 0
CONFIG_SPATIAL_RESAMPLING equ 1
CONFIG_REALTIME_ONLY equ 0
CONFIG_ONTHEFLY_BITPACKING equ 0
CONFIG_ERROR_CONCEALMENT equ 0
CONFIG_SHARED equ 0
CONFIG_STATIC equ 1
CONFIG_SMALL equ 0
CONFIG_POSTPROC_VISUALIZER equ 0
CONFIG_OS_SUPPORT equ 1
CONFIG_UNIT_TESTS equ 0
CONFIG_WEBM_IO equ 1
CONFIG_LIBYUV equ 1
CONFIG_ACCOUNTING equ 0
CONFIG_INSPECTION equ 0
CONFIG_DECODE_PERF_TESTS equ 0
CONFIG_ENCODE_PERF_TESTS equ 0
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
CONFIG_LOWBITDEPTH equ 1
CONFIG_HIGHBITDEPTH equ 1
CONFIG_EXPERIMENTAL equ 0
CONFIG_SIZE_LIMIT equ 1
CONFIG_COLORSPACE_HEADERS equ 0
CONFIG_FP_MB_STATS equ 0
CONFIG_CDEF equ 1
CONFIG_VAR_TX equ 1
CONFIG_RECT_TX equ 1
CONFIG_RECT_TX_EXT equ 0
CONFIG_TPL_MV equ 0
CONFIG_DUAL_FILTER equ 1
CONFIG_CONVOLVE_ROUND equ 0
CONFIG_COMPOUND_ROUND equ 0
CONFIG_EXT_TX equ 1
CONFIG_DPCM_INTRA equ 0
CONFIG_TX64X64 equ 0
CONFIG_EXT_INTRA equ 1
CONFIG_INTRA_INTERP equ 0
CONFIG_FILTER_INTRA equ 0
CONFIG_INTRA_EDGE equ 0
CONFIG_INTRABC equ 0
CONFIG_EXT_INTER equ 1
CONFIG_INTERINTRA equ 1
CONFIG_WEDGE equ 1
CONFIG_COMPOUND_SEGMENT equ 1
CONFIG_EXT_REFS equ 1
CONFIG_ALTREF2 equ 0
CONFIG_SPEED_REFS equ 0
CONFIG_GF_GROUPS equ 0
CONFIG_FLEX_REFS equ 0
CONFIG_GLOBAL_MOTION equ 1
CONFIG_NEW_QUANT equ 0
CONFIG_SUPERTX equ 0
CONFIG_ANS equ 0
CONFIG_LOOP_RESTORATION equ 0
CONFIG_EXT_PARTITION equ 0
CONFIG_EXT_PARTITION_TYPES equ 0
CONFIG_UNPOISON_PARTITION_CTX equ 0
CONFIG_EXT_TILE equ 0
CONFIG_MOTION_VAR equ 1
CONFIG_NCOBMC equ 0
CONFIG_WARPED_MOTION equ 1
CONFIG_Q_ADAPT_PROBS equ 0
CONFIG_BITSTREAM_DEBUG equ 0
CONFIG_INTER_STATS_ONLY equ 0
CONFIG_ALT_INTRA equ 1
CONFIG_PALETTE equ 1
CONFIG_PALETTE_DELTA_ENCODING equ 0
CONFIG_RAWBITS equ 0
CONFIG_EC_SMALLMUL equ 1
CONFIG_PVQ equ 0
CONFIG_CFL equ 0
CONFIG_XIPHRC equ 0
CONFIG_DCT_ONLY equ 0
CONFIG_DAALA_DCT4 equ 0
CONFIG_DAALA_DCT8 equ 0
CONFIG_CB4X4 equ 1
CONFIG_CHROMA_2X2 equ 0
CONFIG_CHROMA_SUB8X8 equ 1
CONFIG_FRAME_SIZE equ 0
CONFIG_DELTA_Q equ 1
CONFIG_EXT_DELTA_Q equ 1
CONFIG_ADAPT_SCAN equ 0
CONFIG_FILTER_7BIT equ 1
CONFIG_PARALLEL_DEBLOCKING equ 1
CONFIG_LOOPFILTERING_ACROSS_TILES equ 1
CONFIG_TEMPMV_SIGNALING equ 1
CONFIG_RD_DEBUG equ 0
CONFIG_REFERENCE_BUFFER equ 1
CONFIG_COEF_INTERLEAVE equ 0
CONFIG_ENTROPY_STATS equ 0
CONFIG_MASKED_TX equ 0
CONFIG_DEPENDENT_HORZTILES equ 0
CONFIG_DIST_8X8 equ 0
CONFIG_DAALA_DIST equ 0
CONFIG_TRIPRED equ 0
CONFIG_PALETTE_THROUGHPUT equ 1
CONFIG_REF_ADAPT equ 0
CONFIG_LV_MAP equ 0
CONFIG_TXK_SEL equ 0
CONFIG_MV_COMPRESS equ 1
CONFIG_FRAME_SUPERRES equ 0
CONFIG_NEW_MULTISYMBOL equ 0
CONFIG_COMPOUND_SINGLEREF equ 0
CONFIG_AOM_QM equ 0
CONFIG_ONE_SIDED_COMPOUND equ 1
CONFIG_EXT_COMP_REFS equ 0
CONFIG_SMOOTH_HV equ 1
CONFIG_VAR_REFS equ 0
CONFIG_RECT_INTRA_PRED equ 1
CONFIG_LGT equ 0
CONFIG_SBL_SYMBOL equ 0
CONFIG_NCOBMC_ADAPT_WEIGHT equ 0
CONFIG_BGSPRITE equ 0
CONFIG_VAR_TX_NO_TX_MODE equ 0
CONFIG_MRC_TX equ 0
CONFIG_LPF_DIRECT equ 0
CONFIG_UV_LVL equ 0
CONFIG_ANALYZER equ 0

View file

@ -9,7 +9,7 @@
/* This file automatically generated by configure. Do not edit! */
#ifndef AOM_CONFIG_H
#define AOM_CONFIG_H
#define RESTRICT
#define RESTRICT
#define INLINE inline
#define ARCH_ARM 0
#define ARCH_MIPS 0
@ -78,6 +78,7 @@
#define CONFIG_HIGHBITDEPTH 1
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_COLORSPACE_HEADERS 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_CDEF 1
#define CONFIG_VAR_TX 1
@ -100,6 +101,10 @@
#define CONFIG_WEDGE 1
#define CONFIG_COMPOUND_SEGMENT 1
#define CONFIG_EXT_REFS 1
#define CONFIG_ALTREF2 0
#define CONFIG_SPEED_REFS 0
#define CONFIG_GF_GROUPS 0
#define CONFIG_FLEX_REFS 0
#define CONFIG_GLOBAL_MOTION 1
#define CONFIG_NEW_QUANT 0
#define CONFIG_SUPERTX 0
@ -114,6 +119,7 @@
#define CONFIG_WARPED_MOTION 1
#define CONFIG_Q_ADAPT_PROBS 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_INTER_STATS_ONLY 0
#define CONFIG_ALT_INTRA 1
#define CONFIG_PALETTE 1
#define CONFIG_PALETTE_DELTA_ENCODING 0
@ -122,6 +128,9 @@
#define CONFIG_PVQ 0
#define CONFIG_CFL 0
#define CONFIG_XIPHRC 0
#define CONFIG_DCT_ONLY 0
#define CONFIG_DAALA_DCT4 0
#define CONFIG_DAALA_DCT8 0
#define CONFIG_CB4X4 1
#define CONFIG_CHROMA_2X2 0
#define CONFIG_CHROMA_SUB8X8 1
@ -130,11 +139,8 @@
#define CONFIG_EXT_DELTA_Q 1
#define CONFIG_ADAPT_SCAN 0
#define CONFIG_FILTER_7BIT 1
#define CONFIG_PARALLEL_DEBLOCKING 0
#define CONFIG_PARALLEL_DEBLOCKING_15TAP 0
#define CONFIG_PARALLEL_DEBLOCKING 1
#define CONFIG_LOOPFILTERING_ACROSS_TILES 1
#define CONFIG_TILE_GROUPS 1
#define CONFIG_EC_ADAPT 1
#define CONFIG_TEMPMV_SIGNALING 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_REFERENCE_BUFFER 1
@ -142,6 +148,7 @@
#define CONFIG_ENTROPY_STATS 0
#define CONFIG_MASKED_TX 0
#define CONFIG_DEPENDENT_HORZTILES 0
#define CONFIG_DIST_8X8 0
#define CONFIG_DAALA_DIST 0
#define CONFIG_TRIPRED 0
#define CONFIG_PALETTE_THROUGHPUT 1
@ -154,8 +161,18 @@
#define CONFIG_COMPOUND_SINGLEREF 0
#define CONFIG_AOM_QM 0
#define CONFIG_ONE_SIDED_COMPOUND 1
#define CONFIG_SMOOTH_HV 0
#define CONFIG_EXT_COMP_REFS 0
#define CONFIG_SMOOTH_HV 1
#define CONFIG_VAR_REFS 0
#define CONFIG_RECT_INTRA_PRED 1
#define CONFIG_LGT 0
#define CONFIG_SBL_SYMBOL 0
#define CONFIG_NCOBMC_ADAPT_WEIGHT 0
#define CONFIG_BGSPRITE 0
#define CONFIG_VAR_TX_NO_TX_MODE 0
#define CONFIG_MRC_TX 0
#define CONFIG_LPF_DIRECT 0
#define CONFIG_UV_LVL 0
#define CONFIG_ANALYZER 0
#define DECODE_WIDTH_LIMIT 8192
#define DECODE_HEIGHT_LIMIT 4608

File diff suppressed because it is too large Load diff

View file

@ -12,6 +12,7 @@
*/
#include "aom/aom_integer.h"
#include "aom_dsp/txfm_common.h"
#include "av1/common/common.h"
#include "av1/common/enums.h"
#include "av1/common/quant_common.h"
@ -24,6 +25,7 @@ struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct txfm_param;
struct aom_variance_vtable;
struct search_site_config;
struct mv;
@ -60,7 +62,8 @@ void aom_clpf_hblock_hbd_sse4_1(uint16_t *dst, const uint16_t *src, int dstride,
RTCD_EXTERN void (*aom_clpf_hblock_hbd)(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
int64_t av1_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
#define av1_block_error av1_block_error_c
int64_t av1_block_error_avx2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
RTCD_EXTERN int64_t (*av1_block_error)(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
void av1_convolve_horiz_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
void av1_convolve_horiz_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
@ -76,58 +79,58 @@ int av1_diamond_search_sad_c(struct macroblock *x, const struct search_site_conf
void av1_fdct8x8_quant_c(const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_fdct8x8_quant av1_fdct8x8_quant_c
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_avx2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht16x16)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x16_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht16x16)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x32_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x32 av1_fht16x32_sse2
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x4 av1_fht16x4_c
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x8 av1_fht16x8_sse2
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x16 av1_fht32x16_sse2
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_avx2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht32x32)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht32x32)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x8 av1_fht32x8_c
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x16 av1_fht4x16_c
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x4 av1_fht4x4_sse2
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x8 av1_fht4x8_sse2
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x16 av1_fht8x16_sse2
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x32 av1_fht8x32_c
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x4_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x4 av1_fht8x4_sse2
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x8 av1_fht8x8_sse2
int av1_full_range_search_c(const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv);
@ -145,6 +148,15 @@ void av1_fwd_txfm2d_16x16_c(const int16_t *input, int32_t *output, int stride, i
void av1_fwd_txfm2d_16x16_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_16x16)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_16x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x32 av1_fwd_txfm2d_16x32_c
void av1_fwd_txfm2d_16x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x8 av1_fwd_txfm2d_16x8_c
void av1_fwd_txfm2d_32x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_32x16 av1_fwd_txfm2d_32x16_c
void av1_fwd_txfm2d_32x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_32x32_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_32x32)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
@ -153,10 +165,19 @@ void av1_fwd_txfm2d_4x4_c(const int16_t *input, int32_t *output, int stride, int
void av1_fwd_txfm2d_4x4_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_4x4)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_4x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_4x8 av1_fwd_txfm2d_4x8_c
void av1_fwd_txfm2d_64x64_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_64x64_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_64x64)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_8x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x16 av1_fwd_txfm2d_8x16_c
void av1_fwd_txfm2d_8x4_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x4 av1_fwd_txfm2d_8x4_c
void av1_fwd_txfm2d_8x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_8x8_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_8x8)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
@ -210,89 +231,46 @@ void av1_highbd_convolve_vert_c(const uint16_t *src, int src_stride, uint16_t *d
void av1_highbd_convolve_vert_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
RTCD_EXTERN void (*av1_highbd_convolve_vert)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
void av1_highbd_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x16 av1_highbd_fht16x16_c
void av1_highbd_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x32 av1_highbd_fht16x32_c
void av1_highbd_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x4 av1_highbd_fht16x4_c
void av1_highbd_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x8 av1_highbd_fht16x8_c
void av1_highbd_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x16 av1_highbd_fht32x16_c
void av1_highbd_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x32 av1_highbd_fht32x32_c
void av1_highbd_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x8 av1_highbd_fht32x8_c
void av1_highbd_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x16 av1_highbd_fht4x16_c
void av1_highbd_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_highbd_fht4x4_sse4_1(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_highbd_fht4x4)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_highbd_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x8 av1_highbd_fht4x8_c
void av1_highbd_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x16 av1_highbd_fht8x16_c
void av1_highbd_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x32 av1_highbd_fht8x32_c
void av1_highbd_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x4 av1_highbd_fht8x4_c
void av1_highbd_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x8 av1_highbd_fht8x8_c
void av1_highbd_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
#define av1_highbd_fwht4x4 av1_highbd_fwht4x4_c
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type, int bd);
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_highbd_iht16x16_256_add av1_highbd_iht16x16_256_add_c
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x32_512_add av1_highbd_iht16x32_512_add_c
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x4_64_add av1_highbd_iht16x4_64_add_c
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x8_128_add av1_highbd_iht16x8_128_add_c
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x16_512_add av1_highbd_iht32x16_512_add_c
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x8_256_add av1_highbd_iht32x8_256_add_c
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x16_64_add av1_highbd_iht4x16_64_add_c
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x4_16_add av1_highbd_iht4x4_16_add_c
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x8_32_add av1_highbd_iht4x8_32_add_c
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x16_128_add av1_highbd_iht8x16_128_add_c
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x32_256_add av1_highbd_iht8x32_256_add_c
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x4_32_add av1_highbd_iht8x4_32_add_c
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x8_64_add av1_highbd_iht8x8_64_add_c
void av1_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
@ -300,71 +278,81 @@ void av1_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int
void av1_highbd_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_quantize_fp_sse4_1(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
RTCD_EXTERN void (*av1_highbd_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
#define av1_highbd_temporal_filter_apply av1_highbd_temporal_filter_apply_c
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_ssse3(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_ssse3(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_avx2(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
RTCD_EXTERN void (*av1_iht16x16_256_add)(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x16_256_add_avx2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht16x16_256_add)(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x32_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x32_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x32_512_add av1_iht16x32_512_add_sse2
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x4_64_add av1_iht16x4_64_add_c
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x8_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x8_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x8_128_add av1_iht16x8_128_add_sse2
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x16_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht32x16_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht32x16_512_add av1_iht32x16_512_add_sse2
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_iht32x32_1024_add av1_iht32x32_1024_add_c
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht32x8_256_add av1_iht32x8_256_add_c
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x16_64_add av1_iht4x16_64_add_c
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x4_16_add av1_iht4x4_16_add_sse2
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x8_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x8_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x8_32_add av1_iht4x8_32_add_sse2
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x16_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x16_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x16_128_add av1_iht8x16_128_add_sse2
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x32_256_add av1_iht8x32_256_add_c
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x4_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x4_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x4_32_add av1_iht8x4_32_add_sse2
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x8_64_add av1_iht8x8_64_add_sse2
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_16x16_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_16x16)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_32x32_avx2(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_32x32)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
@ -373,9 +361,18 @@ void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride
void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
@ -389,19 +386,21 @@ void av1_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_b
void av1_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_quantize_fp av1_quantize_fp_sse2
void av1_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
RTCD_EXTERN void (*av1_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_quantize_fp_32x32 av1_quantize_fp_32x32_c
void av1_quantize_fp_32x32_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
RTCD_EXTERN void (*av1_quantize_fp_32x32)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
void av1_temporal_filter_apply_sse2(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
#define av1_temporal_filter_apply av1_temporal_filter_apply_sse2
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_sse2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_ssse3(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_sse2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_ssse3(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_wedge_compute_delta_squares_c(int16_t *d, const int16_t *a, const int16_t *b, int N);
void av1_wedge_compute_delta_squares_sse2(int16_t *d, const int16_t *a, const int16_t *b, int N);
@ -495,6 +494,8 @@ static void setup_rtcd_internal(void)
aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_sse2;
if (flags & HAS_SSSE3) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_ssse3;
if (flags & HAS_SSE4_1) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_sse4_1;
av1_block_error = av1_block_error_c;
if (flags & HAS_AVX2) av1_block_error = av1_block_error_avx2;
av1_convolve_horiz = av1_convolve_horiz_c;
if (flags & HAS_SSSE3) av1_convolve_horiz = av1_convolve_horiz_ssse3;
av1_convolve_vert = av1_convolve_vert_c;
@ -522,10 +523,9 @@ static void setup_rtcd_internal(void)
if (flags & HAS_SSE4_1) av1_highbd_convolve_init = av1_highbd_convolve_init_sse4_1;
av1_highbd_convolve_vert = av1_highbd_convolve_vert_c;
if (flags & HAS_SSE4_1) av1_highbd_convolve_vert = av1_highbd_convolve_vert_sse4_1;
av1_highbd_fht4x4 = av1_highbd_fht4x4_c;
if (flags & HAS_SSE4_1) av1_highbd_fht4x4 = av1_highbd_fht4x4_sse4_1;
av1_highbd_quantize_fp = av1_highbd_quantize_fp_c;
if (flags & HAS_SSE4_1) av1_highbd_quantize_fp = av1_highbd_quantize_fp_sse4_1;
if (flags & HAS_AVX2) av1_highbd_quantize_fp = av1_highbd_quantize_fp_avx2;
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
if (flags & HAS_SSSE3) av1_highbd_warp_affine = av1_highbd_warp_affine_ssse3;
av1_iht16x16_256_add = av1_iht16x16_256_add_sse2;
@ -540,6 +540,10 @@ static void setup_rtcd_internal(void)
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_sse4_1;
av1_lowbd_convolve_init = av1_lowbd_convolve_init_c;
if (flags & HAS_SSSE3) av1_lowbd_convolve_init = av1_lowbd_convolve_init_ssse3;
av1_quantize_fp = av1_quantize_fp_sse2;
if (flags & HAS_AVX2) av1_quantize_fp = av1_quantize_fp_avx2;
av1_quantize_fp_32x32 = av1_quantize_fp_32x32_c;
if (flags & HAS_AVX2) av1_quantize_fp_32x32 = av1_quantize_fp_32x32_avx2;
av1_warp_affine = av1_warp_affine_sse2;
if (flags & HAS_SSSE3) av1_warp_affine = av1_warp_affine_ssse3;
compute_cross_correlation = compute_cross_correlation_c;

View file

@ -1,146 +1,163 @@
%define ARCH_ARM 0
%define ARCH_MIPS 0
%define ARCH_X86 1
%define ARCH_X86_64 0
%define HAVE_NEON 0
%define HAVE_NEON_ASM 0
%define HAVE_MIPS32 0
%define HAVE_DSPR2 0
%define HAVE_MSA 0
%define HAVE_MIPS64 0
%define HAVE_MMX 1
%define HAVE_SSE 1
%define HAVE_SSE2 1
%define HAVE_SSE3 1
%define HAVE_SSSE3 1
%define HAVE_SSE4_1 1
%define HAVE_AVX 1
%define HAVE_AVX2 1
%define HAVE_AOM_PORTS 1
%define HAVE_FEXCEPT 1
%define HAVE_PTHREAD_H 0
%define HAVE_WXWIDGETS 0
%define CONFIG_DEPENDENCY_TRACKING 1
%define CONFIG_EXTERNAL_BUILD 1
%define CONFIG_INSTALL_DOCS 1
%define CONFIG_INSTALL_BINS 1
%define CONFIG_INSTALL_LIBS 1
%define CONFIG_INSTALL_SRCS 0
%define CONFIG_DEBUG 0
%define CONFIG_GPROF 0
%define CONFIG_GCOV 0
%define CONFIG_RVCT 0
%define CONFIG_GCC 1
%define CONFIG_MSVS 0
%define CONFIG_PIC 1
%define CONFIG_BIG_ENDIAN 0
%define CONFIG_CODEC_SRCS 0
%define CONFIG_DEBUG_LIBS 0
%define CONFIG_RUNTIME_CPU_DETECT 1
%define CONFIG_POSTPROC 1
%define CONFIG_MULTITHREAD 1
%define CONFIG_INTERNAL_STATS 0
%define CONFIG_AV1_ENCODER 1
%define CONFIG_AV1_DECODER 1
%define CONFIG_AV1 1
%define CONFIG_STATIC_MSVCRT 0
%define CONFIG_SPATIAL_RESAMPLING 1
%define CONFIG_REALTIME_ONLY 0
%define CONFIG_ONTHEFLY_BITPACKING 0
%define CONFIG_ERROR_CONCEALMENT 0
%define CONFIG_SHARED 0
%define CONFIG_STATIC 1
%define CONFIG_SMALL 0
%define CONFIG_POSTPROC_VISUALIZER 0
%define CONFIG_OS_SUPPORT 1
%define CONFIG_UNIT_TESTS 0
%define CONFIG_WEBM_IO 1
%define CONFIG_LIBYUV 1
%define CONFIG_ACCOUNTING 0
%define CONFIG_INSPECTION 0
%define CONFIG_DECODE_PERF_TESTS 0
%define CONFIG_ENCODE_PERF_TESTS 0
%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
%define CONFIG_LOWBITDEPTH 1
%define CONFIG_HIGHBITDEPTH 1
%define CONFIG_EXPERIMENTAL 0
%define CONFIG_SIZE_LIMIT 1
%define CONFIG_FP_MB_STATS 0
%define CONFIG_CDEF 1
%define CONFIG_VAR_TX 1
%define CONFIG_RECT_TX 1
%define CONFIG_RECT_TX_EXT 0
%define CONFIG_TPL_MV 0
%define CONFIG_DUAL_FILTER 1
%define CONFIG_CONVOLVE_ROUND 0
%define CONFIG_COMPOUND_ROUND 0
%define CONFIG_EXT_TX 1
%define CONFIG_DPCM_INTRA 0
%define CONFIG_TX64X64 0
%define CONFIG_EXT_INTRA 1
%define CONFIG_INTRA_INTERP 0
%define CONFIG_FILTER_INTRA 0
%define CONFIG_INTRA_EDGE 0
%define CONFIG_INTRABC 0
%define CONFIG_EXT_INTER 1
%define CONFIG_INTERINTRA 1
%define CONFIG_WEDGE 1
%define CONFIG_COMPOUND_SEGMENT 1
%define CONFIG_EXT_REFS 1
%define CONFIG_GLOBAL_MOTION 1
%define CONFIG_NEW_QUANT 0
%define CONFIG_SUPERTX 0
%define CONFIG_ANS 0
%define CONFIG_LOOP_RESTORATION 0
%define CONFIG_EXT_PARTITION 0
%define CONFIG_EXT_PARTITION_TYPES 0
%define CONFIG_UNPOISON_PARTITION_CTX 0
%define CONFIG_EXT_TILE 0
%define CONFIG_MOTION_VAR 1
%define CONFIG_NCOBMC 0
%define CONFIG_WARPED_MOTION 1
%define CONFIG_Q_ADAPT_PROBS 0
%define CONFIG_BITSTREAM_DEBUG 0
%define CONFIG_ALT_INTRA 1
%define CONFIG_PALETTE 1
%define CONFIG_PALETTE_DELTA_ENCODING 0
%define CONFIG_RAWBITS 0
%define CONFIG_EC_SMALLMUL 1
%define CONFIG_PVQ 0
%define CONFIG_CFL 0
%define CONFIG_XIPHRC 0
%define CONFIG_CB4X4 1
%define CONFIG_CHROMA_2X2 0
%define CONFIG_CHROMA_SUB8X8 1
%define CONFIG_FRAME_SIZE 0
%define CONFIG_DELTA_Q 1
%define CONFIG_EXT_DELTA_Q 1
%define CONFIG_ADAPT_SCAN 0
%define CONFIG_FILTER_7BIT 1
%define CONFIG_PARALLEL_DEBLOCKING 0
%define CONFIG_PARALLEL_DEBLOCKING_15TAP 0
%define CONFIG_LOOPFILTERING_ACROSS_TILES 1
%define CONFIG_TILE_GROUPS 1
%define CONFIG_EC_ADAPT 1
%define CONFIG_TEMPMV_SIGNALING 1
%define CONFIG_RD_DEBUG 0
%define CONFIG_REFERENCE_BUFFER 1
%define CONFIG_COEF_INTERLEAVE 0
%define CONFIG_ENTROPY_STATS 0
%define CONFIG_MASKED_TX 0
%define CONFIG_DEPENDENT_HORZTILES 0
%define CONFIG_DAALA_DIST 0
%define CONFIG_TRIPRED 0
%define CONFIG_PALETTE_THROUGHPUT 1
%define CONFIG_REF_ADAPT 0
%define CONFIG_LV_MAP 0
%define CONFIG_TXK_SEL 0
%define CONFIG_MV_COMPRESS 1
%define CONFIG_FRAME_SUPERRES 0
%define CONFIG_NEW_MULTISYMBOL 0
%define CONFIG_COMPOUND_SINGLEREF 0
%define CONFIG_AOM_QM 0
%define CONFIG_ONE_SIDED_COMPOUND 1
%define CONFIG_SMOOTH_HV 0
%define CONFIG_VAR_REFS 0
%define CONFIG_ANALYZER 0
ARCH_ARM equ 0
ARCH_MIPS equ 0
ARCH_X86 equ 1
ARCH_X86_64 equ 0
HAVE_NEON equ 0
HAVE_NEON_ASM equ 0
HAVE_MIPS32 equ 0
HAVE_DSPR2 equ 0
HAVE_MSA equ 0
HAVE_MIPS64 equ 0
HAVE_MMX equ 1
HAVE_SSE equ 1
HAVE_SSE2 equ 1
HAVE_SSE3 equ 1
HAVE_SSSE3 equ 1
HAVE_SSE4_1 equ 1
HAVE_AVX equ 1
HAVE_AVX2 equ 1
HAVE_AOM_PORTS equ 1
HAVE_FEXCEPT equ 1
HAVE_PTHREAD_H equ 0
HAVE_WXWIDGETS equ 0
CONFIG_DEPENDENCY_TRACKING equ 1
CONFIG_EXTERNAL_BUILD equ 1
CONFIG_INSTALL_DOCS equ 1
CONFIG_INSTALL_BINS equ 1
CONFIG_INSTALL_LIBS equ 1
CONFIG_INSTALL_SRCS equ 0
CONFIG_DEBUG equ 0
CONFIG_GPROF equ 0
CONFIG_GCOV equ 0
CONFIG_RVCT equ 0
CONFIG_GCC equ 0
CONFIG_MSVS equ 1
CONFIG_PIC equ 1
CONFIG_BIG_ENDIAN equ 0
CONFIG_CODEC_SRCS equ 0
CONFIG_DEBUG_LIBS equ 0
CONFIG_RUNTIME_CPU_DETECT equ 1
CONFIG_POSTPROC equ 1
CONFIG_MULTITHREAD equ 1
CONFIG_INTERNAL_STATS equ 0
CONFIG_AV1_ENCODER equ 1
CONFIG_AV1_DECODER equ 1
CONFIG_AV1 equ 1
CONFIG_STATIC_MSVCRT equ 0
CONFIG_SPATIAL_RESAMPLING equ 1
CONFIG_REALTIME_ONLY equ 0
CONFIG_ONTHEFLY_BITPACKING equ 0
CONFIG_ERROR_CONCEALMENT equ 0
CONFIG_SHARED equ 0
CONFIG_STATIC equ 1
CONFIG_SMALL equ 0
CONFIG_POSTPROC_VISUALIZER equ 0
CONFIG_OS_SUPPORT equ 1
CONFIG_UNIT_TESTS equ 0
CONFIG_WEBM_IO equ 1
CONFIG_LIBYUV equ 1
CONFIG_ACCOUNTING equ 0
CONFIG_INSPECTION equ 0
CONFIG_DECODE_PERF_TESTS equ 0
CONFIG_ENCODE_PERF_TESTS equ 0
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
CONFIG_LOWBITDEPTH equ 1
CONFIG_HIGHBITDEPTH equ 1
CONFIG_EXPERIMENTAL equ 0
CONFIG_SIZE_LIMIT equ 1
CONFIG_COLORSPACE_HEADERS equ 0
CONFIG_FP_MB_STATS equ 0
CONFIG_CDEF equ 1
CONFIG_VAR_TX equ 1
CONFIG_RECT_TX equ 1
CONFIG_RECT_TX_EXT equ 0
CONFIG_TPL_MV equ 0
CONFIG_DUAL_FILTER equ 1
CONFIG_CONVOLVE_ROUND equ 0
CONFIG_COMPOUND_ROUND equ 0
CONFIG_EXT_TX equ 1
CONFIG_DPCM_INTRA equ 0
CONFIG_TX64X64 equ 0
CONFIG_EXT_INTRA equ 1
CONFIG_INTRA_INTERP equ 0
CONFIG_FILTER_INTRA equ 0
CONFIG_INTRA_EDGE equ 0
CONFIG_INTRABC equ 0
CONFIG_EXT_INTER equ 1
CONFIG_INTERINTRA equ 1
CONFIG_WEDGE equ 1
CONFIG_COMPOUND_SEGMENT equ 1
CONFIG_EXT_REFS equ 1
CONFIG_ALTREF2 equ 0
CONFIG_SPEED_REFS equ 0
CONFIG_GF_GROUPS equ 0
CONFIG_FLEX_REFS equ 0
CONFIG_GLOBAL_MOTION equ 1
CONFIG_NEW_QUANT equ 0
CONFIG_SUPERTX equ 0
CONFIG_ANS equ 0
CONFIG_LOOP_RESTORATION equ 0
CONFIG_EXT_PARTITION equ 0
CONFIG_EXT_PARTITION_TYPES equ 0
CONFIG_UNPOISON_PARTITION_CTX equ 0
CONFIG_EXT_TILE equ 0
CONFIG_MOTION_VAR equ 1
CONFIG_NCOBMC equ 0
CONFIG_WARPED_MOTION equ 1
CONFIG_Q_ADAPT_PROBS equ 0
CONFIG_BITSTREAM_DEBUG equ 0
CONFIG_INTER_STATS_ONLY equ 0
CONFIG_ALT_INTRA equ 1
CONFIG_PALETTE equ 1
CONFIG_PALETTE_DELTA_ENCODING equ 0
CONFIG_RAWBITS equ 0
CONFIG_EC_SMALLMUL equ 1
CONFIG_PVQ equ 0
CONFIG_CFL equ 0
CONFIG_XIPHRC equ 0
CONFIG_DCT_ONLY equ 0
CONFIG_DAALA_DCT4 equ 0
CONFIG_DAALA_DCT8 equ 0
CONFIG_CB4X4 equ 1
CONFIG_CHROMA_2X2 equ 0
CONFIG_CHROMA_SUB8X8 equ 1
CONFIG_FRAME_SIZE equ 0
CONFIG_DELTA_Q equ 1
CONFIG_EXT_DELTA_Q equ 1
CONFIG_ADAPT_SCAN equ 0
CONFIG_FILTER_7BIT equ 1
CONFIG_PARALLEL_DEBLOCKING equ 1
CONFIG_LOOPFILTERING_ACROSS_TILES equ 1
CONFIG_TEMPMV_SIGNALING equ 1
CONFIG_RD_DEBUG equ 0
CONFIG_REFERENCE_BUFFER equ 1
CONFIG_COEF_INTERLEAVE equ 0
CONFIG_ENTROPY_STATS equ 0
CONFIG_MASKED_TX equ 0
CONFIG_DEPENDENT_HORZTILES equ 0
CONFIG_DIST_8X8 equ 0
CONFIG_DAALA_DIST equ 0
CONFIG_TRIPRED equ 0
CONFIG_PALETTE_THROUGHPUT equ 1
CONFIG_REF_ADAPT equ 0
CONFIG_LV_MAP equ 0
CONFIG_TXK_SEL equ 0
CONFIG_MV_COMPRESS equ 1
CONFIG_FRAME_SUPERRES equ 0
CONFIG_NEW_MULTISYMBOL equ 0
CONFIG_COMPOUND_SINGLEREF equ 0
CONFIG_AOM_QM equ 0
CONFIG_ONE_SIDED_COMPOUND equ 1
CONFIG_EXT_COMP_REFS equ 0
CONFIG_SMOOTH_HV equ 1
CONFIG_VAR_REFS equ 0
CONFIG_RECT_INTRA_PRED equ 1
CONFIG_LGT equ 0
CONFIG_SBL_SYMBOL equ 0
CONFIG_NCOBMC_ADAPT_WEIGHT equ 0
CONFIG_BGSPRITE equ 0
CONFIG_VAR_TX_NO_TX_MODE equ 0
CONFIG_MRC_TX equ 0
CONFIG_LPF_DIRECT equ 0
CONFIG_UV_LVL equ 0
CONFIG_ANALYZER equ 0

View file

@ -9,8 +9,8 @@
/* This file automatically generated by configure. Do not edit! */
#ifndef AOM_CONFIG_H
#define AOM_CONFIG_H
#define RESTRICT
#define INLINE inline
#define RESTRICT
#define INLINE __forceinline
#define ARCH_ARM 0
#define ARCH_MIPS 0
#define ARCH_X86 1
@ -43,8 +43,8 @@
#define CONFIG_GPROF 0
#define CONFIG_GCOV 0
#define CONFIG_RVCT 0
#define CONFIG_GCC 1
#define CONFIG_MSVS 0
#define CONFIG_GCC 0
#define CONFIG_MSVS 1
#define CONFIG_PIC 1
#define CONFIG_BIG_ENDIAN 0
#define CONFIG_CODEC_SRCS 0
@ -78,6 +78,7 @@
#define CONFIG_HIGHBITDEPTH 1
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_COLORSPACE_HEADERS 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_CDEF 1
#define CONFIG_VAR_TX 1
@ -100,6 +101,10 @@
#define CONFIG_WEDGE 1
#define CONFIG_COMPOUND_SEGMENT 1
#define CONFIG_EXT_REFS 1
#define CONFIG_ALTREF2 0
#define CONFIG_SPEED_REFS 0
#define CONFIG_GF_GROUPS 0
#define CONFIG_FLEX_REFS 0
#define CONFIG_GLOBAL_MOTION 1
#define CONFIG_NEW_QUANT 0
#define CONFIG_SUPERTX 0
@ -114,6 +119,7 @@
#define CONFIG_WARPED_MOTION 1
#define CONFIG_Q_ADAPT_PROBS 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_INTER_STATS_ONLY 0
#define CONFIG_ALT_INTRA 1
#define CONFIG_PALETTE 1
#define CONFIG_PALETTE_DELTA_ENCODING 0
@ -122,6 +128,9 @@
#define CONFIG_PVQ 0
#define CONFIG_CFL 0
#define CONFIG_XIPHRC 0
#define CONFIG_DCT_ONLY 0
#define CONFIG_DAALA_DCT4 0
#define CONFIG_DAALA_DCT8 0
#define CONFIG_CB4X4 1
#define CONFIG_CHROMA_2X2 0
#define CONFIG_CHROMA_SUB8X8 1
@ -130,11 +139,8 @@
#define CONFIG_EXT_DELTA_Q 1
#define CONFIG_ADAPT_SCAN 0
#define CONFIG_FILTER_7BIT 1
#define CONFIG_PARALLEL_DEBLOCKING 0
#define CONFIG_PARALLEL_DEBLOCKING_15TAP 0
#define CONFIG_PARALLEL_DEBLOCKING 1
#define CONFIG_LOOPFILTERING_ACROSS_TILES 1
#define CONFIG_TILE_GROUPS 1
#define CONFIG_EC_ADAPT 1
#define CONFIG_TEMPMV_SIGNALING 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_REFERENCE_BUFFER 1
@ -142,6 +148,7 @@
#define CONFIG_ENTROPY_STATS 0
#define CONFIG_MASKED_TX 0
#define CONFIG_DEPENDENT_HORZTILES 0
#define CONFIG_DIST_8X8 0
#define CONFIG_DAALA_DIST 0
#define CONFIG_TRIPRED 0
#define CONFIG_PALETTE_THROUGHPUT 1
@ -154,8 +161,18 @@
#define CONFIG_COMPOUND_SINGLEREF 0
#define CONFIG_AOM_QM 0
#define CONFIG_ONE_SIDED_COMPOUND 1
#define CONFIG_SMOOTH_HV 0
#define CONFIG_EXT_COMP_REFS 0
#define CONFIG_SMOOTH_HV 1
#define CONFIG_VAR_REFS 0
#define CONFIG_RECT_INTRA_PRED 1
#define CONFIG_LGT 0
#define CONFIG_SBL_SYMBOL 0
#define CONFIG_NCOBMC_ADAPT_WEIGHT 0
#define CONFIG_BGSPRITE 0
#define CONFIG_VAR_TX_NO_TX_MODE 0
#define CONFIG_MRC_TX 0
#define CONFIG_LPF_DIRECT 0
#define CONFIG_UV_LVL 0
#define CONFIG_ANALYZER 0
#define DECODE_WIDTH_LIMIT 8192
#define DECODE_HEIGHT_LIMIT 4608

File diff suppressed because it is too large Load diff

View file

@ -12,6 +12,7 @@
*/
#include "aom/aom_integer.h"
#include "aom_dsp/txfm_common.h"
#include "av1/common/common.h"
#include "av1/common/enums.h"
#include "av1/common/quant_common.h"
@ -24,6 +25,7 @@ struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct txfm_param;
struct aom_variance_vtable;
struct search_site_config;
struct mv;
@ -60,7 +62,8 @@ void aom_clpf_hblock_hbd_sse4_1(uint16_t *dst, const uint16_t *src, int dstride,
RTCD_EXTERN void (*aom_clpf_hblock_hbd)(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
int64_t av1_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
#define av1_block_error av1_block_error_c
int64_t av1_block_error_avx2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
RTCD_EXTERN int64_t (*av1_block_error)(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
void av1_convolve_horiz_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
void av1_convolve_horiz_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
@ -76,59 +79,59 @@ int av1_diamond_search_sad_c(struct macroblock *x, const struct search_site_conf
void av1_fdct8x8_quant_c(const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_fdct8x8_quant av1_fdct8x8_quant_c
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_avx2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht16x16)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x16_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht16x16)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x32_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht16x32)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht16x32)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x4 av1_fht16x4_c
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht16x8)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht16x8)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht32x16)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht32x16)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_avx2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht32x32)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht32x32)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x8 av1_fht32x8_c
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x16 av1_fht4x16_c
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht4x4)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht4x4)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht4x8)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht4x8)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht8x16)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht8x16)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x32 av1_fht8x32_c
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x4_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht8x4)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht8x4)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht8x8)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht8x8)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
int av1_full_range_search_c(const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv);
#define av1_full_range_search av1_full_range_search_c
@ -145,6 +148,15 @@ void av1_fwd_txfm2d_16x16_c(const int16_t *input, int32_t *output, int stride, i
void av1_fwd_txfm2d_16x16_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_16x16)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_16x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x32 av1_fwd_txfm2d_16x32_c
void av1_fwd_txfm2d_16x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x8 av1_fwd_txfm2d_16x8_c
void av1_fwd_txfm2d_32x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_32x16 av1_fwd_txfm2d_32x16_c
void av1_fwd_txfm2d_32x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_32x32_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_32x32)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
@ -153,10 +165,19 @@ void av1_fwd_txfm2d_4x4_c(const int16_t *input, int32_t *output, int stride, int
void av1_fwd_txfm2d_4x4_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_4x4)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_4x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_4x8 av1_fwd_txfm2d_4x8_c
void av1_fwd_txfm2d_64x64_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_64x64_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_64x64)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_8x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x16 av1_fwd_txfm2d_8x16_c
void av1_fwd_txfm2d_8x4_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x4 av1_fwd_txfm2d_8x4_c
void av1_fwd_txfm2d_8x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_8x8_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_8x8)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
@ -204,89 +225,46 @@ void av1_highbd_convolve_vert_c(const uint16_t *src, int src_stride, uint16_t *d
void av1_highbd_convolve_vert_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
RTCD_EXTERN void (*av1_highbd_convolve_vert)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
void av1_highbd_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x16 av1_highbd_fht16x16_c
void av1_highbd_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x32 av1_highbd_fht16x32_c
void av1_highbd_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x4 av1_highbd_fht16x4_c
void av1_highbd_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x8 av1_highbd_fht16x8_c
void av1_highbd_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x16 av1_highbd_fht32x16_c
void av1_highbd_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x32 av1_highbd_fht32x32_c
void av1_highbd_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x8 av1_highbd_fht32x8_c
void av1_highbd_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x16 av1_highbd_fht4x16_c
void av1_highbd_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_highbd_fht4x4_sse4_1(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_highbd_fht4x4)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_highbd_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x8 av1_highbd_fht4x8_c
void av1_highbd_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x16 av1_highbd_fht8x16_c
void av1_highbd_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x32 av1_highbd_fht8x32_c
void av1_highbd_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x4 av1_highbd_fht8x4_c
void av1_highbd_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x8 av1_highbd_fht8x8_c
void av1_highbd_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
#define av1_highbd_fwht4x4 av1_highbd_fwht4x4_c
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type, int bd);
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_highbd_iht16x16_256_add av1_highbd_iht16x16_256_add_c
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x32_512_add av1_highbd_iht16x32_512_add_c
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x4_64_add av1_highbd_iht16x4_64_add_c
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x8_128_add av1_highbd_iht16x8_128_add_c
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x16_512_add av1_highbd_iht32x16_512_add_c
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x8_256_add av1_highbd_iht32x8_256_add_c
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x16_64_add av1_highbd_iht4x16_64_add_c
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x4_16_add av1_highbd_iht4x4_16_add_c
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x8_32_add av1_highbd_iht4x8_32_add_c
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x16_128_add av1_highbd_iht8x16_128_add_c
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x32_256_add av1_highbd_iht8x32_256_add_c
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x4_32_add av1_highbd_iht8x4_32_add_c
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x8_64_add av1_highbd_iht8x8_64_add_c
void av1_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
@ -294,71 +272,81 @@ void av1_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int
void av1_highbd_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_quantize_fp_sse4_1(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
RTCD_EXTERN void (*av1_highbd_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
#define av1_highbd_temporal_filter_apply av1_highbd_temporal_filter_apply_c
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_ssse3(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_ssse3(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_avx2(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
RTCD_EXTERN void (*av1_iht16x16_256_add)(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x16_256_add_avx2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht16x16_256_add)(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x32_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht16x32_512_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x32_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht16x32_512_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x4_64_add av1_iht16x4_64_add_c
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x8_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht16x8_128_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x8_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht16x8_128_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x16_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht32x16_512_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht32x16_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht32x16_512_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_iht32x32_1024_add av1_iht32x32_1024_add_c
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht32x8_256_add av1_iht32x8_256_add_c
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x16_64_add av1_iht4x16_64_add_c
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x8_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht4x8_32_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x8_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht4x8_32_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x16_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht8x16_128_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x16_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht8x16_128_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x32_256_add av1_iht8x32_256_add_c
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x4_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht8x4_32_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x4_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht8x4_32_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
RTCD_EXTERN void (*av1_iht8x8_64_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht8x8_64_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_16x16_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_16x16)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_32x32_avx2(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_32x32)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
@ -367,9 +355,18 @@ void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride
void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
@ -383,19 +380,21 @@ void av1_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_b
void av1_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
RTCD_EXTERN void (*av1_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_quantize_fp_32x32 av1_quantize_fp_32x32_c
void av1_quantize_fp_32x32_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
RTCD_EXTERN void (*av1_quantize_fp_32x32)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
void av1_temporal_filter_apply_sse2(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
RTCD_EXTERN void (*av1_temporal_filter_apply)(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_sse2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_ssse3(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_sse2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_ssse3(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_wedge_compute_delta_squares_c(int16_t *d, const int16_t *a, const int16_t *b, int N);
void av1_wedge_compute_delta_squares_sse2(int16_t *d, const int16_t *a, const int16_t *b, int N);
@ -493,6 +492,8 @@ static void setup_rtcd_internal(void)
if (flags & HAS_SSE2) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_sse2;
if (flags & HAS_SSSE3) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_ssse3;
if (flags & HAS_SSE4_1) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_sse4_1;
av1_block_error = av1_block_error_c;
if (flags & HAS_AVX2) av1_block_error = av1_block_error_avx2;
av1_convolve_horiz = av1_convolve_horiz_c;
if (flags & HAS_SSSE3) av1_convolve_horiz = av1_convolve_horiz_ssse3;
av1_convolve_vert = av1_convolve_vert_c;
@ -540,10 +541,9 @@ static void setup_rtcd_internal(void)
if (flags & HAS_SSE4_1) av1_highbd_convolve_init = av1_highbd_convolve_init_sse4_1;
av1_highbd_convolve_vert = av1_highbd_convolve_vert_c;
if (flags & HAS_SSE4_1) av1_highbd_convolve_vert = av1_highbd_convolve_vert_sse4_1;
av1_highbd_fht4x4 = av1_highbd_fht4x4_c;
if (flags & HAS_SSE4_1) av1_highbd_fht4x4 = av1_highbd_fht4x4_sse4_1;
av1_highbd_quantize_fp = av1_highbd_quantize_fp_c;
if (flags & HAS_SSE4_1) av1_highbd_quantize_fp = av1_highbd_quantize_fp_sse4_1;
if (flags & HAS_AVX2) av1_highbd_quantize_fp = av1_highbd_quantize_fp_avx2;
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
if (flags & HAS_SSSE3) av1_highbd_warp_affine = av1_highbd_warp_affine_ssse3;
av1_iht16x16_256_add = av1_iht16x16_256_add_c;
@ -577,6 +577,9 @@ static void setup_rtcd_internal(void)
if (flags & HAS_SSSE3) av1_lowbd_convolve_init = av1_lowbd_convolve_init_ssse3;
av1_quantize_fp = av1_quantize_fp_c;
if (flags & HAS_SSE2) av1_quantize_fp = av1_quantize_fp_sse2;
if (flags & HAS_AVX2) av1_quantize_fp = av1_quantize_fp_avx2;
av1_quantize_fp_32x32 = av1_quantize_fp_32x32_c;
if (flags & HAS_AVX2) av1_quantize_fp_32x32 = av1_quantize_fp_32x32_avx2;
av1_temporal_filter_apply = av1_temporal_filter_apply_c;
if (flags & HAS_SSE2) av1_temporal_filter_apply = av1_temporal_filter_apply_sse2;
av1_warp_affine = av1_warp_affine_c;

View file

@ -0,0 +1,163 @@
ARCH_ARM equ 0
ARCH_MIPS equ 0
ARCH_X86 equ 1
ARCH_X86_64 equ 0
HAVE_NEON equ 0
HAVE_NEON_ASM equ 0
HAVE_MIPS32 equ 0
HAVE_DSPR2 equ 0
HAVE_MSA equ 0
HAVE_MIPS64 equ 0
HAVE_MMX equ 1
HAVE_SSE equ 1
HAVE_SSE2 equ 1
HAVE_SSE3 equ 1
HAVE_SSSE3 equ 1
HAVE_SSE4_1 equ 1
HAVE_AVX equ 1
HAVE_AVX2 equ 1
HAVE_AOM_PORTS equ 1
HAVE_FEXCEPT equ 1
HAVE_PTHREAD_H equ 0
HAVE_WXWIDGETS equ 0
CONFIG_DEPENDENCY_TRACKING equ 1
CONFIG_EXTERNAL_BUILD equ 1
CONFIG_INSTALL_DOCS equ 1
CONFIG_INSTALL_BINS equ 1
CONFIG_INSTALL_LIBS equ 1
CONFIG_INSTALL_SRCS equ 0
CONFIG_DEBUG equ 0
CONFIG_GPROF equ 0
CONFIG_GCOV equ 0
CONFIG_RVCT equ 0
CONFIG_GCC equ 1
CONFIG_MSVS equ 0
CONFIG_PIC equ 1
CONFIG_BIG_ENDIAN equ 0
CONFIG_CODEC_SRCS equ 0
CONFIG_DEBUG_LIBS equ 0
CONFIG_RUNTIME_CPU_DETECT equ 1
CONFIG_POSTPROC equ 1
CONFIG_MULTITHREAD equ 1
CONFIG_INTERNAL_STATS equ 0
CONFIG_AV1_ENCODER equ 1
CONFIG_AV1_DECODER equ 1
CONFIG_AV1 equ 1
CONFIG_STATIC_MSVCRT equ 0
CONFIG_SPATIAL_RESAMPLING equ 1
CONFIG_REALTIME_ONLY equ 0
CONFIG_ONTHEFLY_BITPACKING equ 0
CONFIG_ERROR_CONCEALMENT equ 0
CONFIG_SHARED equ 0
CONFIG_STATIC equ 1
CONFIG_SMALL equ 0
CONFIG_POSTPROC_VISUALIZER equ 0
CONFIG_OS_SUPPORT equ 1
CONFIG_UNIT_TESTS equ 0
CONFIG_WEBM_IO equ 1
CONFIG_LIBYUV equ 1
CONFIG_ACCOUNTING equ 0
CONFIG_INSPECTION equ 0
CONFIG_DECODE_PERF_TESTS equ 0
CONFIG_ENCODE_PERF_TESTS equ 0
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
CONFIG_LOWBITDEPTH equ 1
CONFIG_HIGHBITDEPTH equ 1
CONFIG_EXPERIMENTAL equ 0
CONFIG_SIZE_LIMIT equ 1
CONFIG_COLORSPACE_HEADERS equ 0
CONFIG_FP_MB_STATS equ 0
CONFIG_CDEF equ 1
CONFIG_VAR_TX equ 1
CONFIG_RECT_TX equ 1
CONFIG_RECT_TX_EXT equ 0
CONFIG_TPL_MV equ 0
CONFIG_DUAL_FILTER equ 1
CONFIG_CONVOLVE_ROUND equ 0
CONFIG_COMPOUND_ROUND equ 0
CONFIG_EXT_TX equ 1
CONFIG_DPCM_INTRA equ 0
CONFIG_TX64X64 equ 0
CONFIG_EXT_INTRA equ 1
CONFIG_INTRA_INTERP equ 0
CONFIG_FILTER_INTRA equ 0
CONFIG_INTRA_EDGE equ 0
CONFIG_INTRABC equ 0
CONFIG_EXT_INTER equ 1
CONFIG_INTERINTRA equ 1
CONFIG_WEDGE equ 1
CONFIG_COMPOUND_SEGMENT equ 1
CONFIG_EXT_REFS equ 1
CONFIG_ALTREF2 equ 0
CONFIG_SPEED_REFS equ 0
CONFIG_GF_GROUPS equ 0
CONFIG_FLEX_REFS equ 0
CONFIG_GLOBAL_MOTION equ 1
CONFIG_NEW_QUANT equ 0
CONFIG_SUPERTX equ 0
CONFIG_ANS equ 0
CONFIG_LOOP_RESTORATION equ 0
CONFIG_EXT_PARTITION equ 0
CONFIG_EXT_PARTITION_TYPES equ 0
CONFIG_UNPOISON_PARTITION_CTX equ 0
CONFIG_EXT_TILE equ 0
CONFIG_MOTION_VAR equ 1
CONFIG_NCOBMC equ 0
CONFIG_WARPED_MOTION equ 1
CONFIG_Q_ADAPT_PROBS equ 0
CONFIG_BITSTREAM_DEBUG equ 0
CONFIG_INTER_STATS_ONLY equ 0
CONFIG_ALT_INTRA equ 1
CONFIG_PALETTE equ 1
CONFIG_PALETTE_DELTA_ENCODING equ 0
CONFIG_RAWBITS equ 0
CONFIG_EC_SMALLMUL equ 1
CONFIG_PVQ equ 0
CONFIG_CFL equ 0
CONFIG_XIPHRC equ 0
CONFIG_DCT_ONLY equ 0
CONFIG_DAALA_DCT4 equ 0
CONFIG_DAALA_DCT8 equ 0
CONFIG_CB4X4 equ 1
CONFIG_CHROMA_2X2 equ 0
CONFIG_CHROMA_SUB8X8 equ 1
CONFIG_FRAME_SIZE equ 0
CONFIG_DELTA_Q equ 1
CONFIG_EXT_DELTA_Q equ 1
CONFIG_ADAPT_SCAN equ 0
CONFIG_FILTER_7BIT equ 1
CONFIG_PARALLEL_DEBLOCKING equ 1
CONFIG_LOOPFILTERING_ACROSS_TILES equ 1
CONFIG_TEMPMV_SIGNALING equ 1
CONFIG_RD_DEBUG equ 0
CONFIG_REFERENCE_BUFFER equ 1
CONFIG_COEF_INTERLEAVE equ 0
CONFIG_ENTROPY_STATS equ 0
CONFIG_MASKED_TX equ 0
CONFIG_DEPENDENT_HORZTILES equ 0
CONFIG_DIST_8X8 equ 0
CONFIG_DAALA_DIST equ 0
CONFIG_TRIPRED equ 0
CONFIG_PALETTE_THROUGHPUT equ 1
CONFIG_REF_ADAPT equ 0
CONFIG_LV_MAP equ 0
CONFIG_TXK_SEL equ 0
CONFIG_MV_COMPRESS equ 1
CONFIG_FRAME_SUPERRES equ 0
CONFIG_NEW_MULTISYMBOL equ 0
CONFIG_COMPOUND_SINGLEREF equ 0
CONFIG_AOM_QM equ 0
CONFIG_ONE_SIDED_COMPOUND equ 1
CONFIG_EXT_COMP_REFS equ 0
CONFIG_SMOOTH_HV equ 1
CONFIG_VAR_REFS equ 0
CONFIG_RECT_INTRA_PRED equ 1
CONFIG_LGT equ 0
CONFIG_SBL_SYMBOL equ 0
CONFIG_NCOBMC_ADAPT_WEIGHT equ 0
CONFIG_BGSPRITE equ 0
CONFIG_VAR_TX_NO_TX_MODE equ 0
CONFIG_MRC_TX equ 0
CONFIG_LPF_DIRECT equ 0
CONFIG_UV_LVL equ 0
CONFIG_ANALYZER equ 0

View file

@ -0,0 +1,11 @@
/* Copyright (c) 2016, Alliance for Open Media. All rights reserved. */
/* */
/* This source code is subject to the terms of the BSD 2 Clause License and */
/* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License */
/* was not distributed with this source code in the LICENSE file, you can */
/* obtain it at www.aomedia.org/license/software. If the Alliance for Open */
/* Media Patent License 1.0 was not distributed with this source code in the */
/* PATENTS file, you can obtain it at www.aomedia.org/license/patent. */
#include "aom/aom_codec.h"
static const char* const cfg = "--target=x86-win32-gcc --enable-external-build --disable-examples --disable-docs --disable-unit-tests --size-limit=8192x4608 --enable-pic --enable-postproc --as=yasm";
const char *aom_codec_build_config(void) {return cfg;}

View file

@ -0,0 +1,179 @@
/* Copyright (c) 2016, Alliance for Open Media. All rights reserved. */
/* */
/* This source code is subject to the terms of the BSD 2 Clause License and */
/* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License */
/* was not distributed with this source code in the LICENSE file, you can */
/* obtain it at www.aomedia.org/license/software. If the Alliance for Open */
/* Media Patent License 1.0 was not distributed with this source code in the */
/* PATENTS file, you can obtain it at www.aomedia.org/license/patent. */
/* This file automatically generated by configure. Do not edit! */
#ifndef AOM_CONFIG_H
#define AOM_CONFIG_H
#define RESTRICT
#define INLINE inline
#define ARCH_ARM 0
#define ARCH_MIPS 0
#define ARCH_X86 1
#define ARCH_X86_64 0
#define HAVE_NEON 0
#define HAVE_NEON_ASM 0
#define HAVE_MIPS32 0
#define HAVE_DSPR2 0
#define HAVE_MSA 0
#define HAVE_MIPS64 0
#define HAVE_MMX 1
#define HAVE_SSE 1
#define HAVE_SSE2 1
#define HAVE_SSE3 1
#define HAVE_SSSE3 1
#define HAVE_SSE4_1 1
#define HAVE_AVX 1
#define HAVE_AVX2 1
#define HAVE_AOM_PORTS 1
#define HAVE_FEXCEPT 1
#define HAVE_PTHREAD_H 0
#define HAVE_WXWIDGETS 0
#define CONFIG_DEPENDENCY_TRACKING 1
#define CONFIG_EXTERNAL_BUILD 1
#define CONFIG_INSTALL_DOCS 1
#define CONFIG_INSTALL_BINS 1
#define CONFIG_INSTALL_LIBS 1
#define CONFIG_INSTALL_SRCS 0
#define CONFIG_DEBUG 0
#define CONFIG_GPROF 0
#define CONFIG_GCOV 0
#define CONFIG_RVCT 0
#define CONFIG_GCC 1
#define CONFIG_MSVS 0
#define CONFIG_PIC 1
#define CONFIG_BIG_ENDIAN 0
#define CONFIG_CODEC_SRCS 0
#define CONFIG_DEBUG_LIBS 0
#define CONFIG_RUNTIME_CPU_DETECT 1
#define CONFIG_POSTPROC 1
#define CONFIG_MULTITHREAD 1
#define CONFIG_INTERNAL_STATS 0
#define CONFIG_AV1_ENCODER 1
#define CONFIG_AV1_DECODER 1
#define CONFIG_AV1 1
#define CONFIG_STATIC_MSVCRT 0
#define CONFIG_SPATIAL_RESAMPLING 1
#define CONFIG_REALTIME_ONLY 0
#define CONFIG_ONTHEFLY_BITPACKING 0
#define CONFIG_ERROR_CONCEALMENT 0
#define CONFIG_SHARED 0
#define CONFIG_STATIC 1
#define CONFIG_SMALL 0
#define CONFIG_POSTPROC_VISUALIZER 0
#define CONFIG_OS_SUPPORT 1
#define CONFIG_UNIT_TESTS 0
#define CONFIG_WEBM_IO 1
#define CONFIG_LIBYUV 1
#define CONFIG_ACCOUNTING 0
#define CONFIG_INSPECTION 0
#define CONFIG_DECODE_PERF_TESTS 0
#define CONFIG_ENCODE_PERF_TESTS 0
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_LOWBITDEPTH 1
#define CONFIG_HIGHBITDEPTH 1
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_COLORSPACE_HEADERS 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_CDEF 1
#define CONFIG_VAR_TX 1
#define CONFIG_RECT_TX 1
#define CONFIG_RECT_TX_EXT 0
#define CONFIG_TPL_MV 0
#define CONFIG_DUAL_FILTER 1
#define CONFIG_CONVOLVE_ROUND 0
#define CONFIG_COMPOUND_ROUND 0
#define CONFIG_EXT_TX 1
#define CONFIG_DPCM_INTRA 0
#define CONFIG_TX64X64 0
#define CONFIG_EXT_INTRA 1
#define CONFIG_INTRA_INTERP 0
#define CONFIG_FILTER_INTRA 0
#define CONFIG_INTRA_EDGE 0
#define CONFIG_INTRABC 0
#define CONFIG_EXT_INTER 1
#define CONFIG_INTERINTRA 1
#define CONFIG_WEDGE 1
#define CONFIG_COMPOUND_SEGMENT 1
#define CONFIG_EXT_REFS 1
#define CONFIG_ALTREF2 0
#define CONFIG_SPEED_REFS 0
#define CONFIG_GF_GROUPS 0
#define CONFIG_FLEX_REFS 0
#define CONFIG_GLOBAL_MOTION 1
#define CONFIG_NEW_QUANT 0
#define CONFIG_SUPERTX 0
#define CONFIG_ANS 0
#define CONFIG_LOOP_RESTORATION 0
#define CONFIG_EXT_PARTITION 0
#define CONFIG_EXT_PARTITION_TYPES 0
#define CONFIG_UNPOISON_PARTITION_CTX 0
#define CONFIG_EXT_TILE 0
#define CONFIG_MOTION_VAR 1
#define CONFIG_NCOBMC 0
#define CONFIG_WARPED_MOTION 1
#define CONFIG_Q_ADAPT_PROBS 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_INTER_STATS_ONLY 0
#define CONFIG_ALT_INTRA 1
#define CONFIG_PALETTE 1
#define CONFIG_PALETTE_DELTA_ENCODING 0
#define CONFIG_RAWBITS 0
#define CONFIG_EC_SMALLMUL 1
#define CONFIG_PVQ 0
#define CONFIG_CFL 0
#define CONFIG_XIPHRC 0
#define CONFIG_DCT_ONLY 0
#define CONFIG_DAALA_DCT4 0
#define CONFIG_DAALA_DCT8 0
#define CONFIG_CB4X4 1
#define CONFIG_CHROMA_2X2 0
#define CONFIG_CHROMA_SUB8X8 1
#define CONFIG_FRAME_SIZE 0
#define CONFIG_DELTA_Q 1
#define CONFIG_EXT_DELTA_Q 1
#define CONFIG_ADAPT_SCAN 0
#define CONFIG_FILTER_7BIT 1
#define CONFIG_PARALLEL_DEBLOCKING 1
#define CONFIG_LOOPFILTERING_ACROSS_TILES 1
#define CONFIG_TEMPMV_SIGNALING 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_REFERENCE_BUFFER 1
#define CONFIG_COEF_INTERLEAVE 0
#define CONFIG_ENTROPY_STATS 0
#define CONFIG_MASKED_TX 0
#define CONFIG_DEPENDENT_HORZTILES 0
#define CONFIG_DIST_8X8 0
#define CONFIG_DAALA_DIST 0
#define CONFIG_TRIPRED 0
#define CONFIG_PALETTE_THROUGHPUT 1
#define CONFIG_REF_ADAPT 0
#define CONFIG_LV_MAP 0
#define CONFIG_TXK_SEL 0
#define CONFIG_MV_COMPRESS 1
#define CONFIG_FRAME_SUPERRES 0
#define CONFIG_NEW_MULTISYMBOL 0
#define CONFIG_COMPOUND_SINGLEREF 0
#define CONFIG_AOM_QM 0
#define CONFIG_ONE_SIDED_COMPOUND 1
#define CONFIG_EXT_COMP_REFS 0
#define CONFIG_SMOOTH_HV 1
#define CONFIG_VAR_REFS 0
#define CONFIG_RECT_INTRA_PRED 1
#define CONFIG_LGT 0
#define CONFIG_SBL_SYMBOL 0
#define CONFIG_NCOBMC_ADAPT_WEIGHT 0
#define CONFIG_BGSPRITE 0
#define CONFIG_VAR_TX_NO_TX_MODE 0
#define CONFIG_MRC_TX 0
#define CONFIG_LPF_DIRECT 0
#define CONFIG_UV_LVL 0
#define CONFIG_ANALYZER 0
#define DECODE_WIDTH_LIMIT 8192
#define DECODE_HEIGHT_LIMIT 4608
#endif /* AOM_CONFIG_H */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,78 @@
#ifndef AOM_SCALE_RTCD_H_
#define AOM_SCALE_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
struct yv12_buffer_config;
#ifdef __cplusplus
extern "C" {
#endif
void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf);
#define aom_extend_frame_borders aom_extend_frame_borders_c
void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf);
#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c
void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf);
#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c
void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c
void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c
void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c
void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c
void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c
void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c
void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c
void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
#define aom_yv12_copy_frame aom_yv12_copy_frame_c
void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
#define aom_yv12_copy_u aom_yv12_copy_u_c
void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
#define aom_yv12_copy_v aom_yv12_copy_v_c
void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
#define aom_yv12_copy_y aom_yv12_copy_y_c
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf);
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
void aom_scale_rtcd(void);
#ifdef RTCD_C
#include "aom_ports/x86.h"
static void setup_rtcd_internal(void)
{
int flags = x86_simd_caps();
(void)flags;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -0,0 +1,639 @@
#ifndef AOM_RTCD_H_
#define AOM_RTCD_H_
#ifdef RTCD_C
#define RTCD_EXTERN
#else
#define RTCD_EXTERN extern
#endif
/*
* AV1
*/
#include "aom/aom_integer.h"
#include "aom_dsp/txfm_common.h"
#include "av1/common/common.h"
#include "av1/common/enums.h"
#include "av1/common/quant_common.h"
#include "av1/common/filter.h"
#include "av1/common/convolve.h"
#include "av1/common/av1_txfm.h"
#include "av1/common/odintrin.h"
struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct txfm_param;
struct aom_variance_vtable;
struct search_site_config;
struct mv;
union int_mv;
struct yv12_buffer_config;
typedef uint16_t od_dering_in;
#ifdef __cplusplus
extern "C" {
#endif
void aom_clpf_block_c(uint8_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_block_sse2(uint8_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_block_ssse3(uint8_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_block_sse4_1(uint8_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
RTCD_EXTERN void (*aom_clpf_block)(uint8_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_block_hbd_c(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_block_hbd_sse2(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_block_hbd_ssse3(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_block_hbd_sse4_1(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
RTCD_EXTERN void (*aom_clpf_block_hbd)(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_hblock_c(uint8_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_hblock_sse2(uint8_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_hblock_ssse3(uint8_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_hblock_sse4_1(uint8_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
RTCD_EXTERN void (*aom_clpf_hblock)(uint8_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_hblock_hbd_c(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_hblock_hbd_sse2(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_hblock_hbd_ssse3(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
void aom_clpf_hblock_hbd_sse4_1(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
RTCD_EXTERN void (*aom_clpf_hblock_hbd)(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
int64_t av1_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
int64_t av1_block_error_avx2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
RTCD_EXTERN int64_t (*av1_block_error)(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
void av1_convolve_horiz_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
void av1_convolve_horiz_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
RTCD_EXTERN void (*av1_convolve_horiz)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
void av1_convolve_vert_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
void av1_convolve_vert_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
RTCD_EXTERN void (*av1_convolve_vert)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
int av1_diamond_search_sad_c(struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv);
#define av1_diamond_search_sad av1_diamond_search_sad_c
void av1_fdct8x8_quant_c(const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_fdct8x8_quant av1_fdct8x8_quant_c
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x16_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht16x16)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht16x32)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x4 av1_fht16x4_c
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht16x8)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht32x16)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht32x32)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x8 av1_fht32x8_c
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x16 av1_fht4x16_c
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht4x4)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht4x8)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht8x16)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x32 av1_fht8x32_c
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht8x4)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht8x8)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
int av1_full_range_search_c(const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv);
#define av1_full_range_search av1_full_range_search_c
int av1_full_search_sad_c(const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv);
int av1_full_search_sadx3(const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv);
int av1_full_search_sadx8(const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv);
RTCD_EXTERN int (*av1_full_search_sad)(const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv);
void av1_fwd_idtx_c(const int16_t *src_diff, tran_low_t *coeff, int stride, int bs, int tx_type);
#define av1_fwd_idtx av1_fwd_idtx_c
void av1_fwd_txfm2d_16x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_16x16_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_16x16)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_16x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x32 av1_fwd_txfm2d_16x32_c
void av1_fwd_txfm2d_16x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x8 av1_fwd_txfm2d_16x8_c
void av1_fwd_txfm2d_32x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_32x16 av1_fwd_txfm2d_32x16_c
void av1_fwd_txfm2d_32x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_32x32_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_32x32)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_4x4_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_4x4_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_4x4)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_4x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_4x8 av1_fwd_txfm2d_4x8_c
void av1_fwd_txfm2d_64x64_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_64x64_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_64x64)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_8x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x16 av1_fwd_txfm2d_8x16_c
void av1_fwd_txfm2d_8x4_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x4 av1_fwd_txfm2d_8x4_c
void av1_fwd_txfm2d_8x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_8x8_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_8x8)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
#define av1_fwht4x4 av1_fwht4x4_c
int64_t av1_highbd_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz, int bd);
int64_t av1_highbd_block_error_sse2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz, int bd);
RTCD_EXTERN int64_t (*av1_highbd_block_error)(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz, int bd);
void av1_highbd_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
#define av1_highbd_convolve8 av1_highbd_convolve8_c
void av1_highbd_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
#define av1_highbd_convolve8_avg av1_highbd_convolve8_avg_c
void av1_highbd_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
#define av1_highbd_convolve8_avg_horiz av1_highbd_convolve8_avg_horiz_c
void av1_highbd_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
#define av1_highbd_convolve8_avg_vert av1_highbd_convolve8_avg_vert_c
void av1_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_c
void av1_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_c
void av1_highbd_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c
void av1_highbd_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c
void av1_highbd_convolve_horiz_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
void av1_highbd_convolve_horiz_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
RTCD_EXTERN void (*av1_highbd_convolve_horiz)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
void av1_highbd_convolve_init_c(void);
void av1_highbd_convolve_init_sse4_1(void);
RTCD_EXTERN void (*av1_highbd_convolve_init)(void);
void av1_highbd_convolve_vert_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
void av1_highbd_convolve_vert_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
RTCD_EXTERN void (*av1_highbd_convolve_vert)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
void av1_highbd_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
#define av1_highbd_fwht4x4 av1_highbd_fwht4x4_c
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_highbd_iht16x16_256_add av1_highbd_iht16x16_256_add_c
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x32_512_add av1_highbd_iht16x32_512_add_c
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x4_64_add av1_highbd_iht16x4_64_add_c
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x8_128_add av1_highbd_iht16x8_128_add_c
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x16_512_add av1_highbd_iht32x16_512_add_c
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x8_256_add av1_highbd_iht32x8_256_add_c
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x16_64_add av1_highbd_iht4x16_64_add_c
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x4_16_add av1_highbd_iht4x4_16_add_c
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x8_32_add av1_highbd_iht4x8_32_add_c
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x16_128_add av1_highbd_iht8x16_128_add_c
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x32_256_add av1_highbd_iht8x32_256_add_c
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x4_32_add av1_highbd_iht8x4_32_add_c
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x8_64_add av1_highbd_iht8x8_64_add_c
void av1_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
#define av1_highbd_quantize_b av1_highbd_quantize_b_c
void av1_highbd_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_quantize_fp_sse4_1(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
RTCD_EXTERN void (*av1_highbd_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
#define av1_highbd_temporal_filter_apply av1_highbd_temporal_filter_apply_c
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_ssse3(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x16_256_add_avx2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht16x16_256_add)(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x32_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht16x32_512_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x4_64_add av1_iht16x4_64_add_c
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x8_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht16x8_128_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht32x16_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht32x16_512_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_iht32x32_1024_add av1_iht32x32_1024_add_c
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht32x8_256_add av1_iht32x8_256_add_c
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x16_64_add av1_iht4x16_64_add_c
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht4x4_16_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x8_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht4x8_32_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x16_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht8x16_128_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x32_256_add av1_iht8x32_256_add_c
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x4_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht8x4_32_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht8x8_64_add)(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_16x16_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_16x16)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_32x32_avx2(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_32x32)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_lowbd_convolve_init_c(void);
void av1_lowbd_convolve_init_ssse3(void);
RTCD_EXTERN void (*av1_lowbd_convolve_init)(void);
void av1_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
#define av1_quantize_b av1_quantize_b_c
void av1_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
RTCD_EXTERN void (*av1_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_32x32_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
RTCD_EXTERN void (*av1_quantize_fp_32x32)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
void av1_temporal_filter_apply_sse2(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
RTCD_EXTERN void (*av1_temporal_filter_apply)(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_sse2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_ssse3(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_wedge_compute_delta_squares_c(int16_t *d, const int16_t *a, const int16_t *b, int N);
void av1_wedge_compute_delta_squares_sse2(int16_t *d, const int16_t *a, const int16_t *b, int N);
RTCD_EXTERN void (*av1_wedge_compute_delta_squares)(int16_t *d, const int16_t *a, const int16_t *b, int N);
int av1_wedge_sign_from_residuals_c(const int16_t *ds, const uint8_t *m, int N, int64_t limit);
int av1_wedge_sign_from_residuals_sse2(const int16_t *ds, const uint8_t *m, int N, int64_t limit);
RTCD_EXTERN int (*av1_wedge_sign_from_residuals)(const int16_t *ds, const uint8_t *m, int N, int64_t limit);
uint64_t av1_wedge_sse_from_residuals_c(const int16_t *r1, const int16_t *d, const uint8_t *m, int N);
uint64_t av1_wedge_sse_from_residuals_sse2(const int16_t *r1, const int16_t *d, const uint8_t *m, int N);
RTCD_EXTERN uint64_t (*av1_wedge_sse_from_residuals)(const int16_t *r1, const int16_t *d, const uint8_t *m, int N);
double compute_cross_correlation_c(unsigned char *im1, int stride1, int x1, int y1, unsigned char *im2, int stride2, int x2, int y2);
double compute_cross_correlation_sse4_1(unsigned char *im1, int stride1, int x1, int y1, unsigned char *im2, int stride2, int x2, int y2);
RTCD_EXTERN double (*compute_cross_correlation)(unsigned char *im1, int stride1, int x1, int y1, unsigned char *im2, int stride2, int x2, int y2);
void copy_4x4_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_4x4_16bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_4x4_16bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_4x4_16bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint16_t *src, int sstride);
RTCD_EXTERN void (*copy_4x4_16bit_to_16bit)(uint16_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_4x4_16bit_to_8bit_c(uint8_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_4x4_16bit_to_8bit_sse2(uint8_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_4x4_16bit_to_8bit_ssse3(uint8_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_4x4_16bit_to_8bit_sse4_1(uint8_t *dst, int dstride, const uint16_t *src, int sstride);
RTCD_EXTERN void (*copy_4x4_16bit_to_8bit)(uint8_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_8x8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_8x8_16bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_8x8_16bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_8x8_16bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint16_t *src, int sstride);
RTCD_EXTERN void (*copy_8x8_16bit_to_16bit)(uint16_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_8x8_16bit_to_8bit_c(uint8_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_8x8_16bit_to_8bit_sse2(uint8_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_8x8_16bit_to_8bit_ssse3(uint8_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_8x8_16bit_to_8bit_sse4_1(uint8_t *dst, int dstride, const uint16_t *src, int sstride);
RTCD_EXTERN void (*copy_8x8_16bit_to_8bit)(uint8_t *dst, int dstride, const uint16_t *src, int sstride);
void copy_rect8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
void copy_rect8_16bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
void copy_rect8_16bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
void copy_rect8_16bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
RTCD_EXTERN void (*copy_rect8_16bit_to_16bit)(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
void copy_rect8_8bit_to_16bit_c(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
void copy_rect8_8bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
void copy_rect8_8bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
void copy_rect8_8bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
RTCD_EXTERN void (*copy_rect8_8bit_to_16bit)(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
int od_dir_find8_c(const od_dering_in *img, int stride, int32_t *var, int coeff_shift);
int od_dir_find8_sse2(const od_dering_in *img, int stride, int32_t *var, int coeff_shift);
int od_dir_find8_ssse3(const od_dering_in *img, int stride, int32_t *var, int coeff_shift);
int od_dir_find8_sse4_1(const od_dering_in *img, int stride, int32_t *var, int coeff_shift);
RTCD_EXTERN int (*od_dir_find8)(const od_dering_in *img, int stride, int32_t *var, int coeff_shift);
void od_filter_dering_direction_4x4_c(uint16_t *y, int ystride, const uint16_t *in, int threshold, int dir, int damping);
void od_filter_dering_direction_4x4_sse2(uint16_t *y, int ystride, const uint16_t *in, int threshold, int dir, int damping);
void od_filter_dering_direction_4x4_ssse3(uint16_t *y, int ystride, const uint16_t *in, int threshold, int dir, int damping);
void od_filter_dering_direction_4x4_sse4_1(uint16_t *y, int ystride, const uint16_t *in, int threshold, int dir, int damping);
RTCD_EXTERN void (*od_filter_dering_direction_4x4)(uint16_t *y, int ystride, const uint16_t *in, int threshold, int dir, int damping);
void od_filter_dering_direction_8x8_c(uint16_t *y, int ystride, const uint16_t *in, int threshold, int dir, int damping);
void od_filter_dering_direction_8x8_sse2(uint16_t *y, int ystride, const uint16_t *in, int threshold, int dir, int damping);
void od_filter_dering_direction_8x8_ssse3(uint16_t *y, int ystride, const uint16_t *in, int threshold, int dir, int damping);
void od_filter_dering_direction_8x8_sse4_1(uint16_t *y, int ystride, const uint16_t *in, int threshold, int dir, int damping);
RTCD_EXTERN void (*od_filter_dering_direction_8x8)(uint16_t *y, int ystride, const uint16_t *in, int threshold, int dir, int damping);
void aom_rtcd(void);
#ifdef RTCD_C
#include "aom_ports/x86.h"
static void setup_rtcd_internal(void)
{
int flags = x86_simd_caps();
(void)flags;
aom_clpf_block = aom_clpf_block_c;
if (flags & HAS_SSE2) aom_clpf_block = aom_clpf_block_sse2;
if (flags & HAS_SSSE3) aom_clpf_block = aom_clpf_block_ssse3;
if (flags & HAS_SSE4_1) aom_clpf_block = aom_clpf_block_sse4_1;
aom_clpf_block_hbd = aom_clpf_block_hbd_c;
if (flags & HAS_SSE2) aom_clpf_block_hbd = aom_clpf_block_hbd_sse2;
if (flags & HAS_SSSE3) aom_clpf_block_hbd = aom_clpf_block_hbd_ssse3;
if (flags & HAS_SSE4_1) aom_clpf_block_hbd = aom_clpf_block_hbd_sse4_1;
aom_clpf_hblock = aom_clpf_hblock_c;
if (flags & HAS_SSE2) aom_clpf_hblock = aom_clpf_hblock_sse2;
if (flags & HAS_SSSE3) aom_clpf_hblock = aom_clpf_hblock_ssse3;
if (flags & HAS_SSE4_1) aom_clpf_hblock = aom_clpf_hblock_sse4_1;
aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_c;
if (flags & HAS_SSE2) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_sse2;
if (flags & HAS_SSSE3) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_ssse3;
if (flags & HAS_SSE4_1) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_sse4_1;
av1_block_error = av1_block_error_c;
if (flags & HAS_AVX2) av1_block_error = av1_block_error_avx2;
av1_convolve_horiz = av1_convolve_horiz_c;
if (flags & HAS_SSSE3) av1_convolve_horiz = av1_convolve_horiz_ssse3;
av1_convolve_vert = av1_convolve_vert_c;
if (flags & HAS_SSSE3) av1_convolve_vert = av1_convolve_vert_ssse3;
av1_fht16x16 = av1_fht16x16_c;
if (flags & HAS_SSE2) av1_fht16x16 = av1_fht16x16_sse2;
if (flags & HAS_AVX2) av1_fht16x16 = av1_fht16x16_avx2;
av1_fht16x32 = av1_fht16x32_c;
if (flags & HAS_SSE2) av1_fht16x32 = av1_fht16x32_sse2;
av1_fht16x8 = av1_fht16x8_c;
if (flags & HAS_SSE2) av1_fht16x8 = av1_fht16x8_sse2;
av1_fht32x16 = av1_fht32x16_c;
if (flags & HAS_SSE2) av1_fht32x16 = av1_fht32x16_sse2;
av1_fht32x32 = av1_fht32x32_c;
if (flags & HAS_SSE2) av1_fht32x32 = av1_fht32x32_sse2;
if (flags & HAS_AVX2) av1_fht32x32 = av1_fht32x32_avx2;
av1_fht4x4 = av1_fht4x4_c;
if (flags & HAS_SSE2) av1_fht4x4 = av1_fht4x4_sse2;
av1_fht4x8 = av1_fht4x8_c;
if (flags & HAS_SSE2) av1_fht4x8 = av1_fht4x8_sse2;
av1_fht8x16 = av1_fht8x16_c;
if (flags & HAS_SSE2) av1_fht8x16 = av1_fht8x16_sse2;
av1_fht8x4 = av1_fht8x4_c;
if (flags & HAS_SSE2) av1_fht8x4 = av1_fht8x4_sse2;
av1_fht8x8 = av1_fht8x8_c;
if (flags & HAS_SSE2) av1_fht8x8 = av1_fht8x8_sse2;
av1_full_search_sad = av1_full_search_sad_c;
if (flags & HAS_SSE3) av1_full_search_sad = av1_full_search_sadx3;
if (flags & HAS_SSE4_1) av1_full_search_sad = av1_full_search_sadx8;
av1_fwd_txfm2d_16x16 = av1_fwd_txfm2d_16x16_c;
if (flags & HAS_SSE4_1) av1_fwd_txfm2d_16x16 = av1_fwd_txfm2d_16x16_sse4_1;
av1_fwd_txfm2d_32x32 = av1_fwd_txfm2d_32x32_c;
if (flags & HAS_SSE4_1) av1_fwd_txfm2d_32x32 = av1_fwd_txfm2d_32x32_sse4_1;
av1_fwd_txfm2d_4x4 = av1_fwd_txfm2d_4x4_c;
if (flags & HAS_SSE4_1) av1_fwd_txfm2d_4x4 = av1_fwd_txfm2d_4x4_sse4_1;
av1_fwd_txfm2d_64x64 = av1_fwd_txfm2d_64x64_c;
if (flags & HAS_SSE4_1) av1_fwd_txfm2d_64x64 = av1_fwd_txfm2d_64x64_sse4_1;
av1_fwd_txfm2d_8x8 = av1_fwd_txfm2d_8x8_c;
if (flags & HAS_SSE4_1) av1_fwd_txfm2d_8x8 = av1_fwd_txfm2d_8x8_sse4_1;
av1_highbd_block_error = av1_highbd_block_error_c;
if (flags & HAS_SSE2) av1_highbd_block_error = av1_highbd_block_error_sse2;
av1_highbd_convolve_horiz = av1_highbd_convolve_horiz_c;
if (flags & HAS_SSE4_1) av1_highbd_convolve_horiz = av1_highbd_convolve_horiz_sse4_1;
av1_highbd_convolve_init = av1_highbd_convolve_init_c;
if (flags & HAS_SSE4_1) av1_highbd_convolve_init = av1_highbd_convolve_init_sse4_1;
av1_highbd_convolve_vert = av1_highbd_convolve_vert_c;
if (flags & HAS_SSE4_1) av1_highbd_convolve_vert = av1_highbd_convolve_vert_sse4_1;
av1_highbd_quantize_fp = av1_highbd_quantize_fp_c;
if (flags & HAS_SSE4_1) av1_highbd_quantize_fp = av1_highbd_quantize_fp_sse4_1;
if (flags & HAS_AVX2) av1_highbd_quantize_fp = av1_highbd_quantize_fp_avx2;
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
if (flags & HAS_SSSE3) av1_highbd_warp_affine = av1_highbd_warp_affine_ssse3;
av1_iht16x16_256_add = av1_iht16x16_256_add_c;
if (flags & HAS_SSE2) av1_iht16x16_256_add = av1_iht16x16_256_add_sse2;
if (flags & HAS_AVX2) av1_iht16x16_256_add = av1_iht16x16_256_add_avx2;
av1_iht16x32_512_add = av1_iht16x32_512_add_c;
if (flags & HAS_SSE2) av1_iht16x32_512_add = av1_iht16x32_512_add_sse2;
av1_iht16x8_128_add = av1_iht16x8_128_add_c;
if (flags & HAS_SSE2) av1_iht16x8_128_add = av1_iht16x8_128_add_sse2;
av1_iht32x16_512_add = av1_iht32x16_512_add_c;
if (flags & HAS_SSE2) av1_iht32x16_512_add = av1_iht32x16_512_add_sse2;
av1_iht4x4_16_add = av1_iht4x4_16_add_c;
if (flags & HAS_SSE2) av1_iht4x4_16_add = av1_iht4x4_16_add_sse2;
av1_iht4x8_32_add = av1_iht4x8_32_add_c;
if (flags & HAS_SSE2) av1_iht4x8_32_add = av1_iht4x8_32_add_sse2;
av1_iht8x16_128_add = av1_iht8x16_128_add_c;
if (flags & HAS_SSE2) av1_iht8x16_128_add = av1_iht8x16_128_add_sse2;
av1_iht8x4_32_add = av1_iht8x4_32_add_c;
if (flags & HAS_SSE2) av1_iht8x4_32_add = av1_iht8x4_32_add_sse2;
av1_iht8x8_64_add = av1_iht8x8_64_add_c;
if (flags & HAS_SSE2) av1_iht8x8_64_add = av1_iht8x8_64_add_sse2;
av1_inv_txfm2d_add_16x16 = av1_inv_txfm2d_add_16x16_c;
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_16x16 = av1_inv_txfm2d_add_16x16_sse4_1;
av1_inv_txfm2d_add_32x32 = av1_inv_txfm2d_add_32x32_c;
if (flags & HAS_AVX2) av1_inv_txfm2d_add_32x32 = av1_inv_txfm2d_add_32x32_avx2;
av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_c;
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_sse4_1;
av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_c;
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_sse4_1;
av1_lowbd_convolve_init = av1_lowbd_convolve_init_c;
if (flags & HAS_SSSE3) av1_lowbd_convolve_init = av1_lowbd_convolve_init_ssse3;
av1_quantize_fp = av1_quantize_fp_c;
if (flags & HAS_SSE2) av1_quantize_fp = av1_quantize_fp_sse2;
if (flags & HAS_AVX2) av1_quantize_fp = av1_quantize_fp_avx2;
av1_quantize_fp_32x32 = av1_quantize_fp_32x32_c;
if (flags & HAS_AVX2) av1_quantize_fp_32x32 = av1_quantize_fp_32x32_avx2;
av1_temporal_filter_apply = av1_temporal_filter_apply_c;
if (flags & HAS_SSE2) av1_temporal_filter_apply = av1_temporal_filter_apply_sse2;
av1_warp_affine = av1_warp_affine_c;
if (flags & HAS_SSE2) av1_warp_affine = av1_warp_affine_sse2;
if (flags & HAS_SSSE3) av1_warp_affine = av1_warp_affine_ssse3;
av1_wedge_compute_delta_squares = av1_wedge_compute_delta_squares_c;
if (flags & HAS_SSE2) av1_wedge_compute_delta_squares = av1_wedge_compute_delta_squares_sse2;
av1_wedge_sign_from_residuals = av1_wedge_sign_from_residuals_c;
if (flags & HAS_SSE2) av1_wedge_sign_from_residuals = av1_wedge_sign_from_residuals_sse2;
av1_wedge_sse_from_residuals = av1_wedge_sse_from_residuals_c;
if (flags & HAS_SSE2) av1_wedge_sse_from_residuals = av1_wedge_sse_from_residuals_sse2;
compute_cross_correlation = compute_cross_correlation_c;
if (flags & HAS_SSE4_1) compute_cross_correlation = compute_cross_correlation_sse4_1;
copy_4x4_16bit_to_16bit = copy_4x4_16bit_to_16bit_c;
if (flags & HAS_SSE2) copy_4x4_16bit_to_16bit = copy_4x4_16bit_to_16bit_sse2;
if (flags & HAS_SSSE3) copy_4x4_16bit_to_16bit = copy_4x4_16bit_to_16bit_ssse3;
if (flags & HAS_SSE4_1) copy_4x4_16bit_to_16bit = copy_4x4_16bit_to_16bit_sse4_1;
copy_4x4_16bit_to_8bit = copy_4x4_16bit_to_8bit_c;
if (flags & HAS_SSE2) copy_4x4_16bit_to_8bit = copy_4x4_16bit_to_8bit_sse2;
if (flags & HAS_SSSE3) copy_4x4_16bit_to_8bit = copy_4x4_16bit_to_8bit_ssse3;
if (flags & HAS_SSE4_1) copy_4x4_16bit_to_8bit = copy_4x4_16bit_to_8bit_sse4_1;
copy_8x8_16bit_to_16bit = copy_8x8_16bit_to_16bit_c;
if (flags & HAS_SSE2) copy_8x8_16bit_to_16bit = copy_8x8_16bit_to_16bit_sse2;
if (flags & HAS_SSSE3) copy_8x8_16bit_to_16bit = copy_8x8_16bit_to_16bit_ssse3;
if (flags & HAS_SSE4_1) copy_8x8_16bit_to_16bit = copy_8x8_16bit_to_16bit_sse4_1;
copy_8x8_16bit_to_8bit = copy_8x8_16bit_to_8bit_c;
if (flags & HAS_SSE2) copy_8x8_16bit_to_8bit = copy_8x8_16bit_to_8bit_sse2;
if (flags & HAS_SSSE3) copy_8x8_16bit_to_8bit = copy_8x8_16bit_to_8bit_ssse3;
if (flags & HAS_SSE4_1) copy_8x8_16bit_to_8bit = copy_8x8_16bit_to_8bit_sse4_1;
copy_rect8_16bit_to_16bit = copy_rect8_16bit_to_16bit_c;
if (flags & HAS_SSE2) copy_rect8_16bit_to_16bit = copy_rect8_16bit_to_16bit_sse2;
if (flags & HAS_SSSE3) copy_rect8_16bit_to_16bit = copy_rect8_16bit_to_16bit_ssse3;
if (flags & HAS_SSE4_1) copy_rect8_16bit_to_16bit = copy_rect8_16bit_to_16bit_sse4_1;
copy_rect8_8bit_to_16bit = copy_rect8_8bit_to_16bit_c;
if (flags & HAS_SSE2) copy_rect8_8bit_to_16bit = copy_rect8_8bit_to_16bit_sse2;
if (flags & HAS_SSSE3) copy_rect8_8bit_to_16bit = copy_rect8_8bit_to_16bit_ssse3;
if (flags & HAS_SSE4_1) copy_rect8_8bit_to_16bit = copy_rect8_8bit_to_16bit_sse4_1;
od_dir_find8 = od_dir_find8_c;
if (flags & HAS_SSE2) od_dir_find8 = od_dir_find8_sse2;
if (flags & HAS_SSSE3) od_dir_find8 = od_dir_find8_ssse3;
if (flags & HAS_SSE4_1) od_dir_find8 = od_dir_find8_sse4_1;
od_filter_dering_direction_4x4 = od_filter_dering_direction_4x4_c;
if (flags & HAS_SSE2) od_filter_dering_direction_4x4 = od_filter_dering_direction_4x4_sse2;
if (flags & HAS_SSSE3) od_filter_dering_direction_4x4 = od_filter_dering_direction_4x4_ssse3;
if (flags & HAS_SSE4_1) od_filter_dering_direction_4x4 = od_filter_dering_direction_4x4_sse4_1;
od_filter_dering_direction_8x8 = od_filter_dering_direction_8x8_c;
if (flags & HAS_SSE2) od_filter_dering_direction_8x8 = od_filter_dering_direction_8x8_sse2;
if (flags & HAS_SSSE3) od_filter_dering_direction_8x8 = od_filter_dering_direction_8x8_ssse3;
if (flags & HAS_SSE4_1) od_filter_dering_direction_8x8 = od_filter_dering_direction_8x8_sse4_1;
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View file

@ -1,146 +1,163 @@
%define ARCH_ARM 0
%define ARCH_MIPS 0
%define ARCH_X86 0
%define ARCH_X86_64 1
%define HAVE_NEON 0
%define HAVE_NEON_ASM 0
%define HAVE_MIPS32 0
%define HAVE_DSPR2 0
%define HAVE_MSA 0
%define HAVE_MIPS64 0
%define HAVE_MMX 1
%define HAVE_SSE 1
%define HAVE_SSE2 1
%define HAVE_SSE3 1
%define HAVE_SSSE3 1
%define HAVE_SSE4_1 1
%define HAVE_AVX 1
%define HAVE_AVX2 1
%define HAVE_AOM_PORTS 1
%define HAVE_FEXCEPT 1
%define HAVE_PTHREAD_H 0
%define HAVE_WXWIDGETS 0
%define CONFIG_DEPENDENCY_TRACKING 1
%define CONFIG_EXTERNAL_BUILD 1
%define CONFIG_INSTALL_DOCS 1
%define CONFIG_INSTALL_BINS 1
%define CONFIG_INSTALL_LIBS 1
%define CONFIG_INSTALL_SRCS 0
%define CONFIG_DEBUG 0
%define CONFIG_GPROF 0
%define CONFIG_GCOV 0
%define CONFIG_RVCT 0
%define CONFIG_GCC 0
%define CONFIG_MSVS 1
%define CONFIG_PIC 1
%define CONFIG_BIG_ENDIAN 0
%define CONFIG_CODEC_SRCS 0
%define CONFIG_DEBUG_LIBS 0
%define CONFIG_RUNTIME_CPU_DETECT 1
%define CONFIG_POSTPROC 1
%define CONFIG_MULTITHREAD 1
%define CONFIG_INTERNAL_STATS 0
%define CONFIG_AV1_ENCODER 1
%define CONFIG_AV1_DECODER 1
%define CONFIG_AV1 1
%define CONFIG_STATIC_MSVCRT 0
%define CONFIG_SPATIAL_RESAMPLING 1
%define CONFIG_REALTIME_ONLY 0
%define CONFIG_ONTHEFLY_BITPACKING 0
%define CONFIG_ERROR_CONCEALMENT 0
%define CONFIG_SHARED 0
%define CONFIG_STATIC 1
%define CONFIG_SMALL 0
%define CONFIG_POSTPROC_VISUALIZER 0
%define CONFIG_OS_SUPPORT 1
%define CONFIG_UNIT_TESTS 0
%define CONFIG_WEBM_IO 1
%define CONFIG_LIBYUV 1
%define CONFIG_ACCOUNTING 0
%define CONFIG_INSPECTION 0
%define CONFIG_DECODE_PERF_TESTS 0
%define CONFIG_ENCODE_PERF_TESTS 0
%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
%define CONFIG_LOWBITDEPTH 1
%define CONFIG_HIGHBITDEPTH 1
%define CONFIG_EXPERIMENTAL 0
%define CONFIG_SIZE_LIMIT 1
%define CONFIG_FP_MB_STATS 0
%define CONFIG_CDEF 1
%define CONFIG_VAR_TX 1
%define CONFIG_RECT_TX 1
%define CONFIG_RECT_TX_EXT 0
%define CONFIG_TPL_MV 0
%define CONFIG_DUAL_FILTER 1
%define CONFIG_CONVOLVE_ROUND 0
%define CONFIG_COMPOUND_ROUND 0
%define CONFIG_EXT_TX 1
%define CONFIG_DPCM_INTRA 0
%define CONFIG_TX64X64 0
%define CONFIG_EXT_INTRA 1
%define CONFIG_INTRA_INTERP 0
%define CONFIG_FILTER_INTRA 0
%define CONFIG_INTRA_EDGE 0
%define CONFIG_INTRABC 0
%define CONFIG_EXT_INTER 1
%define CONFIG_INTERINTRA 1
%define CONFIG_WEDGE 1
%define CONFIG_COMPOUND_SEGMENT 1
%define CONFIG_EXT_REFS 1
%define CONFIG_GLOBAL_MOTION 1
%define CONFIG_NEW_QUANT 0
%define CONFIG_SUPERTX 0
%define CONFIG_ANS 0
%define CONFIG_LOOP_RESTORATION 0
%define CONFIG_EXT_PARTITION 0
%define CONFIG_EXT_PARTITION_TYPES 0
%define CONFIG_UNPOISON_PARTITION_CTX 0
%define CONFIG_EXT_TILE 0
%define CONFIG_MOTION_VAR 1
%define CONFIG_NCOBMC 0
%define CONFIG_WARPED_MOTION 1
%define CONFIG_Q_ADAPT_PROBS 0
%define CONFIG_BITSTREAM_DEBUG 0
%define CONFIG_ALT_INTRA 1
%define CONFIG_PALETTE 1
%define CONFIG_PALETTE_DELTA_ENCODING 0
%define CONFIG_RAWBITS 0
%define CONFIG_EC_SMALLMUL 1
%define CONFIG_PVQ 0
%define CONFIG_CFL 0
%define CONFIG_XIPHRC 0
%define CONFIG_CB4X4 1
%define CONFIG_CHROMA_2X2 0
%define CONFIG_CHROMA_SUB8X8 1
%define CONFIG_FRAME_SIZE 0
%define CONFIG_DELTA_Q 1
%define CONFIG_EXT_DELTA_Q 1
%define CONFIG_ADAPT_SCAN 0
%define CONFIG_FILTER_7BIT 1
%define CONFIG_PARALLEL_DEBLOCKING 0
%define CONFIG_PARALLEL_DEBLOCKING_15TAP 0
%define CONFIG_LOOPFILTERING_ACROSS_TILES 1
%define CONFIG_TILE_GROUPS 1
%define CONFIG_EC_ADAPT 1
%define CONFIG_TEMPMV_SIGNALING 1
%define CONFIG_RD_DEBUG 0
%define CONFIG_REFERENCE_BUFFER 1
%define CONFIG_COEF_INTERLEAVE 0
%define CONFIG_ENTROPY_STATS 0
%define CONFIG_MASKED_TX 0
%define CONFIG_DEPENDENT_HORZTILES 0
%define CONFIG_DAALA_DIST 0
%define CONFIG_TRIPRED 0
%define CONFIG_PALETTE_THROUGHPUT 1
%define CONFIG_REF_ADAPT 0
%define CONFIG_LV_MAP 0
%define CONFIG_TXK_SEL 0
%define CONFIG_MV_COMPRESS 1
%define CONFIG_FRAME_SUPERRES 0
%define CONFIG_NEW_MULTISYMBOL 0
%define CONFIG_COMPOUND_SINGLEREF 0
%define CONFIG_AOM_QM 0
%define CONFIG_ONE_SIDED_COMPOUND 1
%define CONFIG_SMOOTH_HV 0
%define CONFIG_VAR_REFS 0
%define CONFIG_ANALYZER 0
ARCH_ARM equ 0
ARCH_MIPS equ 0
ARCH_X86 equ 0
ARCH_X86_64 equ 1
HAVE_NEON equ 0
HAVE_NEON_ASM equ 0
HAVE_MIPS32 equ 0
HAVE_DSPR2 equ 0
HAVE_MSA equ 0
HAVE_MIPS64 equ 0
HAVE_MMX equ 1
HAVE_SSE equ 1
HAVE_SSE2 equ 1
HAVE_SSE3 equ 1
HAVE_SSSE3 equ 1
HAVE_SSE4_1 equ 1
HAVE_AVX equ 1
HAVE_AVX2 equ 1
HAVE_AOM_PORTS equ 1
HAVE_FEXCEPT equ 1
HAVE_PTHREAD_H equ 0
HAVE_WXWIDGETS equ 0
CONFIG_DEPENDENCY_TRACKING equ 1
CONFIG_EXTERNAL_BUILD equ 1
CONFIG_INSTALL_DOCS equ 1
CONFIG_INSTALL_BINS equ 1
CONFIG_INSTALL_LIBS equ 1
CONFIG_INSTALL_SRCS equ 0
CONFIG_DEBUG equ 0
CONFIG_GPROF equ 0
CONFIG_GCOV equ 0
CONFIG_RVCT equ 0
CONFIG_GCC equ 0
CONFIG_MSVS equ 1
CONFIG_PIC equ 1
CONFIG_BIG_ENDIAN equ 0
CONFIG_CODEC_SRCS equ 0
CONFIG_DEBUG_LIBS equ 0
CONFIG_RUNTIME_CPU_DETECT equ 1
CONFIG_POSTPROC equ 1
CONFIG_MULTITHREAD equ 1
CONFIG_INTERNAL_STATS equ 0
CONFIG_AV1_ENCODER equ 1
CONFIG_AV1_DECODER equ 1
CONFIG_AV1 equ 1
CONFIG_STATIC_MSVCRT equ 0
CONFIG_SPATIAL_RESAMPLING equ 1
CONFIG_REALTIME_ONLY equ 0
CONFIG_ONTHEFLY_BITPACKING equ 0
CONFIG_ERROR_CONCEALMENT equ 0
CONFIG_SHARED equ 0
CONFIG_STATIC equ 1
CONFIG_SMALL equ 0
CONFIG_POSTPROC_VISUALIZER equ 0
CONFIG_OS_SUPPORT equ 1
CONFIG_UNIT_TESTS equ 0
CONFIG_WEBM_IO equ 1
CONFIG_LIBYUV equ 1
CONFIG_ACCOUNTING equ 0
CONFIG_INSPECTION equ 0
CONFIG_DECODE_PERF_TESTS equ 0
CONFIG_ENCODE_PERF_TESTS equ 0
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
CONFIG_LOWBITDEPTH equ 1
CONFIG_HIGHBITDEPTH equ 1
CONFIG_EXPERIMENTAL equ 0
CONFIG_SIZE_LIMIT equ 1
CONFIG_COLORSPACE_HEADERS equ 0
CONFIG_FP_MB_STATS equ 0
CONFIG_CDEF equ 1
CONFIG_VAR_TX equ 1
CONFIG_RECT_TX equ 1
CONFIG_RECT_TX_EXT equ 0
CONFIG_TPL_MV equ 0
CONFIG_DUAL_FILTER equ 1
CONFIG_CONVOLVE_ROUND equ 0
CONFIG_COMPOUND_ROUND equ 0
CONFIG_EXT_TX equ 1
CONFIG_DPCM_INTRA equ 0
CONFIG_TX64X64 equ 0
CONFIG_EXT_INTRA equ 1
CONFIG_INTRA_INTERP equ 0
CONFIG_FILTER_INTRA equ 0
CONFIG_INTRA_EDGE equ 0
CONFIG_INTRABC equ 0
CONFIG_EXT_INTER equ 1
CONFIG_INTERINTRA equ 1
CONFIG_WEDGE equ 1
CONFIG_COMPOUND_SEGMENT equ 1
CONFIG_EXT_REFS equ 1
CONFIG_ALTREF2 equ 0
CONFIG_SPEED_REFS equ 0
CONFIG_GF_GROUPS equ 0
CONFIG_FLEX_REFS equ 0
CONFIG_GLOBAL_MOTION equ 1
CONFIG_NEW_QUANT equ 0
CONFIG_SUPERTX equ 0
CONFIG_ANS equ 0
CONFIG_LOOP_RESTORATION equ 0
CONFIG_EXT_PARTITION equ 0
CONFIG_EXT_PARTITION_TYPES equ 0
CONFIG_UNPOISON_PARTITION_CTX equ 0
CONFIG_EXT_TILE equ 0
CONFIG_MOTION_VAR equ 1
CONFIG_NCOBMC equ 0
CONFIG_WARPED_MOTION equ 1
CONFIG_Q_ADAPT_PROBS equ 0
CONFIG_BITSTREAM_DEBUG equ 0
CONFIG_INTER_STATS_ONLY equ 0
CONFIG_ALT_INTRA equ 1
CONFIG_PALETTE equ 1
CONFIG_PALETTE_DELTA_ENCODING equ 0
CONFIG_RAWBITS equ 0
CONFIG_EC_SMALLMUL equ 1
CONFIG_PVQ equ 0
CONFIG_CFL equ 0
CONFIG_XIPHRC equ 0
CONFIG_DCT_ONLY equ 0
CONFIG_DAALA_DCT4 equ 0
CONFIG_DAALA_DCT8 equ 0
CONFIG_CB4X4 equ 1
CONFIG_CHROMA_2X2 equ 0
CONFIG_CHROMA_SUB8X8 equ 1
CONFIG_FRAME_SIZE equ 0
CONFIG_DELTA_Q equ 1
CONFIG_EXT_DELTA_Q equ 1
CONFIG_ADAPT_SCAN equ 0
CONFIG_FILTER_7BIT equ 1
CONFIG_PARALLEL_DEBLOCKING equ 1
CONFIG_LOOPFILTERING_ACROSS_TILES equ 1
CONFIG_TEMPMV_SIGNALING equ 1
CONFIG_RD_DEBUG equ 0
CONFIG_REFERENCE_BUFFER equ 1
CONFIG_COEF_INTERLEAVE equ 0
CONFIG_ENTROPY_STATS equ 0
CONFIG_MASKED_TX equ 0
CONFIG_DEPENDENT_HORZTILES equ 0
CONFIG_DIST_8X8 equ 0
CONFIG_DAALA_DIST equ 0
CONFIG_TRIPRED equ 0
CONFIG_PALETTE_THROUGHPUT equ 1
CONFIG_REF_ADAPT equ 0
CONFIG_LV_MAP equ 0
CONFIG_TXK_SEL equ 0
CONFIG_MV_COMPRESS equ 1
CONFIG_FRAME_SUPERRES equ 0
CONFIG_NEW_MULTISYMBOL equ 0
CONFIG_COMPOUND_SINGLEREF equ 0
CONFIG_AOM_QM equ 0
CONFIG_ONE_SIDED_COMPOUND equ 1
CONFIG_EXT_COMP_REFS equ 0
CONFIG_SMOOTH_HV equ 1
CONFIG_VAR_REFS equ 0
CONFIG_RECT_INTRA_PRED equ 1
CONFIG_LGT equ 0
CONFIG_SBL_SYMBOL equ 0
CONFIG_NCOBMC_ADAPT_WEIGHT equ 0
CONFIG_BGSPRITE equ 0
CONFIG_VAR_TX_NO_TX_MODE equ 0
CONFIG_MRC_TX equ 0
CONFIG_LPF_DIRECT equ 0
CONFIG_UV_LVL equ 0
CONFIG_ANALYZER equ 0

View file

@ -9,7 +9,7 @@
/* This file automatically generated by configure. Do not edit! */
#ifndef AOM_CONFIG_H
#define AOM_CONFIG_H
#define RESTRICT
#define RESTRICT
#define INLINE __forceinline
#define ARCH_ARM 0
#define ARCH_MIPS 0
@ -78,6 +78,7 @@
#define CONFIG_HIGHBITDEPTH 1
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_COLORSPACE_HEADERS 0
#define CONFIG_FP_MB_STATS 0
#define CONFIG_CDEF 1
#define CONFIG_VAR_TX 1
@ -100,6 +101,10 @@
#define CONFIG_WEDGE 1
#define CONFIG_COMPOUND_SEGMENT 1
#define CONFIG_EXT_REFS 1
#define CONFIG_ALTREF2 0
#define CONFIG_SPEED_REFS 0
#define CONFIG_GF_GROUPS 0
#define CONFIG_FLEX_REFS 0
#define CONFIG_GLOBAL_MOTION 1
#define CONFIG_NEW_QUANT 0
#define CONFIG_SUPERTX 0
@ -114,6 +119,7 @@
#define CONFIG_WARPED_MOTION 1
#define CONFIG_Q_ADAPT_PROBS 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_INTER_STATS_ONLY 0
#define CONFIG_ALT_INTRA 1
#define CONFIG_PALETTE 1
#define CONFIG_PALETTE_DELTA_ENCODING 0
@ -122,6 +128,9 @@
#define CONFIG_PVQ 0
#define CONFIG_CFL 0
#define CONFIG_XIPHRC 0
#define CONFIG_DCT_ONLY 0
#define CONFIG_DAALA_DCT4 0
#define CONFIG_DAALA_DCT8 0
#define CONFIG_CB4X4 1
#define CONFIG_CHROMA_2X2 0
#define CONFIG_CHROMA_SUB8X8 1
@ -130,11 +139,8 @@
#define CONFIG_EXT_DELTA_Q 1
#define CONFIG_ADAPT_SCAN 0
#define CONFIG_FILTER_7BIT 1
#define CONFIG_PARALLEL_DEBLOCKING 0
#define CONFIG_PARALLEL_DEBLOCKING_15TAP 0
#define CONFIG_PARALLEL_DEBLOCKING 1
#define CONFIG_LOOPFILTERING_ACROSS_TILES 1
#define CONFIG_TILE_GROUPS 1
#define CONFIG_EC_ADAPT 1
#define CONFIG_TEMPMV_SIGNALING 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_REFERENCE_BUFFER 1
@ -142,6 +148,7 @@
#define CONFIG_ENTROPY_STATS 0
#define CONFIG_MASKED_TX 0
#define CONFIG_DEPENDENT_HORZTILES 0
#define CONFIG_DIST_8X8 0
#define CONFIG_DAALA_DIST 0
#define CONFIG_TRIPRED 0
#define CONFIG_PALETTE_THROUGHPUT 1
@ -154,8 +161,18 @@
#define CONFIG_COMPOUND_SINGLEREF 0
#define CONFIG_AOM_QM 0
#define CONFIG_ONE_SIDED_COMPOUND 1
#define CONFIG_SMOOTH_HV 0
#define CONFIG_EXT_COMP_REFS 0
#define CONFIG_SMOOTH_HV 1
#define CONFIG_VAR_REFS 0
#define CONFIG_RECT_INTRA_PRED 1
#define CONFIG_LGT 0
#define CONFIG_SBL_SYMBOL 0
#define CONFIG_NCOBMC_ADAPT_WEIGHT 0
#define CONFIG_BGSPRITE 0
#define CONFIG_VAR_TX_NO_TX_MODE 0
#define CONFIG_MRC_TX 0
#define CONFIG_LPF_DIRECT 0
#define CONFIG_UV_LVL 0
#define CONFIG_ANALYZER 0
#define DECODE_WIDTH_LIMIT 8192
#define DECODE_HEIGHT_LIMIT 4608

File diff suppressed because it is too large Load diff

View file

@ -12,6 +12,7 @@
*/
#include "aom/aom_integer.h"
#include "aom_dsp/txfm_common.h"
#include "av1/common/common.h"
#include "av1/common/enums.h"
#include "av1/common/quant_common.h"
@ -24,6 +25,7 @@ struct macroblockd;
/* Encoder forward decls */
struct macroblock;
struct txfm_param;
struct aom_variance_vtable;
struct search_site_config;
struct mv;
@ -60,7 +62,8 @@ void aom_clpf_hblock_hbd_sse4_1(uint16_t *dst, const uint16_t *src, int dstride,
RTCD_EXTERN void (*aom_clpf_hblock_hbd)(uint16_t *dst, const uint16_t *src, int dstride, int sstride, int sizex, int sizey, unsigned int strength, unsigned int bd);
int64_t av1_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
#define av1_block_error av1_block_error_c
int64_t av1_block_error_avx2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
RTCD_EXTERN int64_t (*av1_block_error)(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
void av1_convolve_horiz_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
void av1_convolve_horiz_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
@ -76,58 +79,58 @@ int av1_diamond_search_sad_c(struct macroblock *x, const struct search_site_conf
void av1_fdct8x8_quant_c(const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_fdct8x8_quant av1_fdct8x8_quant_c
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_avx2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht16x16)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x16_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht16x16)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x32_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x32 av1_fht16x32_sse2
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x4 av1_fht16x4_c
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht16x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht16x8 av1_fht16x8_sse2
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x16 av1_fht32x16_sse2
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_avx2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_fht32x32)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x32_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
RTCD_EXTERN void (*av1_fht32x32)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht32x8 av1_fht32x8_c
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x16 av1_fht4x16_c
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x4 av1_fht4x4_sse2
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht4x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht4x8 av1_fht4x8_sse2
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x16 av1_fht8x16_sse2
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x32 av1_fht8x32_c
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x4_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x4 av1_fht8x4_sse2
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
void av1_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
#define av1_fht8x8 av1_fht8x8_sse2
int av1_full_range_search_c(const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv);
@ -145,6 +148,15 @@ void av1_fwd_txfm2d_16x16_c(const int16_t *input, int32_t *output, int stride, i
void av1_fwd_txfm2d_16x16_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_16x16)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_16x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x32 av1_fwd_txfm2d_16x32_c
void av1_fwd_txfm2d_16x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_16x8 av1_fwd_txfm2d_16x8_c
void av1_fwd_txfm2d_32x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_32x16 av1_fwd_txfm2d_32x16_c
void av1_fwd_txfm2d_32x32_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_32x32_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_32x32)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
@ -153,10 +165,19 @@ void av1_fwd_txfm2d_4x4_c(const int16_t *input, int32_t *output, int stride, int
void av1_fwd_txfm2d_4x4_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_4x4)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_4x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_4x8 av1_fwd_txfm2d_4x8_c
void av1_fwd_txfm2d_64x64_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_64x64_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_64x64)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_8x16_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x16 av1_fwd_txfm2d_8x16_c
void av1_fwd_txfm2d_8x4_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
#define av1_fwd_txfm2d_8x4 av1_fwd_txfm2d_8x4_c
void av1_fwd_txfm2d_8x8_c(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
void av1_fwd_txfm2d_8x8_sse4_1(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_fwd_txfm2d_8x8)(const int16_t *input, int32_t *output, int stride, int tx_type, int bd);
@ -210,89 +231,46 @@ void av1_highbd_convolve_vert_c(const uint16_t *src, int src_stride, uint16_t *d
void av1_highbd_convolve_vert_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
RTCD_EXTERN void (*av1_highbd_convolve_vert)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
void av1_highbd_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x16 av1_highbd_fht16x16_c
void av1_highbd_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x32 av1_highbd_fht16x32_c
void av1_highbd_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x4 av1_highbd_fht16x4_c
void av1_highbd_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht16x8 av1_highbd_fht16x8_c
void av1_highbd_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x16 av1_highbd_fht32x16_c
void av1_highbd_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x32 av1_highbd_fht32x32_c
void av1_highbd_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht32x8 av1_highbd_fht32x8_c
void av1_highbd_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x16 av1_highbd_fht4x16_c
void av1_highbd_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_highbd_fht4x4_sse4_1(const int16_t *input, tran_low_t *output, int stride, int tx_type);
RTCD_EXTERN void (*av1_highbd_fht4x4)(const int16_t *input, tran_low_t *output, int stride, int tx_type);
void av1_highbd_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht4x8 av1_highbd_fht4x8_c
void av1_highbd_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x16 av1_highbd_fht8x16_c
void av1_highbd_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x32 av1_highbd_fht8x32_c
void av1_highbd_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x4 av1_highbd_fht8x4_c
void av1_highbd_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
#define av1_highbd_fht8x8 av1_highbd_fht8x8_c
void av1_highbd_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
#define av1_highbd_fwht4x4 av1_highbd_fwht4x4_c
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type, int bd);
void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_highbd_iht16x16_256_add av1_highbd_iht16x16_256_add_c
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x32_512_add av1_highbd_iht16x32_512_add_c
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x4_64_add av1_highbd_iht16x4_64_add_c
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht16x8_128_add av1_highbd_iht16x8_128_add_c
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x16_512_add av1_highbd_iht32x16_512_add_c
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht32x8_256_add av1_highbd_iht32x8_256_add_c
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x16_64_add av1_highbd_iht4x16_64_add_c
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x4_16_add av1_highbd_iht4x4_16_add_c
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht4x8_32_add av1_highbd_iht4x8_32_add_c
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x16_128_add av1_highbd_iht8x16_128_add_c
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x32_256_add av1_highbd_iht8x32_256_add_c
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x4_32_add av1_highbd_iht8x4_32_add_c
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd);
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_highbd_iht8x8_64_add av1_highbd_iht8x8_64_add_c
void av1_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
@ -300,71 +278,81 @@ void av1_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int
void av1_highbd_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_quantize_fp_sse4_1(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
RTCD_EXTERN void (*av1_highbd_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
void av1_highbd_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
#define av1_highbd_temporal_filter_apply av1_highbd_temporal_filter_apply_c
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_ssse3(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_highbd_warp_affine_ssse3(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_avx2(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
RTCD_EXTERN void (*av1_iht16x16_256_add)(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x16_256_add_avx2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
RTCD_EXTERN void (*av1_iht16x16_256_add)(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x32_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x32_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x32_512_add av1_iht16x32_512_add_sse2
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x4_64_add av1_iht16x4_64_add_c
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x8_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht16x8_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht16x8_128_add av1_iht16x8_128_add_sse2
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x16_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht32x16_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht32x16_512_add av1_iht32x16_512_add_sse2
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
#define av1_iht32x32_1024_add av1_iht32x32_1024_add_c
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht32x8_256_add av1_iht32x8_256_add_c
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x16_64_add av1_iht4x16_64_add_c
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x4_16_add av1_iht4x4_16_add_sse2
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x8_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht4x8_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht4x8_32_add av1_iht4x8_32_add_sse2
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x16_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x16_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x16_128_add av1_iht8x16_128_add_sse2
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x32_256_add av1_iht8x32_256_add_c
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x4_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x4_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x4_32_add av1_iht8x4_32_add_sse2
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type);
void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
void av1_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
#define av1_iht8x8_64_add av1_iht8x8_64_add_sse2
void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_16x16_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_16x16)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_32x32_avx2(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_32x32)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
@ -373,9 +361,18 @@ void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride
void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, int tx_type, int bd);
@ -389,19 +386,21 @@ void av1_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_b
void av1_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_quantize_fp av1_quantize_fp_sse2
void av1_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
RTCD_EXTERN void (*av1_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
#define av1_quantize_fp_32x32 av1_quantize_fp_32x32_c
void av1_quantize_fp_32x32_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
RTCD_EXTERN void (*av1_quantize_fp_32x32)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
void av1_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
void av1_temporal_filter_apply_sse2(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
#define av1_temporal_filter_apply av1_temporal_filter_apply_sse2
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_sse2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_ssse3(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int comp_avg, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_sse2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_warp_affine_ssse3(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
void av1_wedge_compute_delta_squares_c(int16_t *d, const int16_t *a, const int16_t *b, int N);
void av1_wedge_compute_delta_squares_sse2(int16_t *d, const int16_t *a, const int16_t *b, int N);
@ -495,6 +494,8 @@ static void setup_rtcd_internal(void)
aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_sse2;
if (flags & HAS_SSSE3) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_ssse3;
if (flags & HAS_SSE4_1) aom_clpf_hblock_hbd = aom_clpf_hblock_hbd_sse4_1;
av1_block_error = av1_block_error_c;
if (flags & HAS_AVX2) av1_block_error = av1_block_error_avx2;
av1_convolve_horiz = av1_convolve_horiz_c;
if (flags & HAS_SSSE3) av1_convolve_horiz = av1_convolve_horiz_ssse3;
av1_convolve_vert = av1_convolve_vert_c;
@ -522,10 +523,9 @@ static void setup_rtcd_internal(void)
if (flags & HAS_SSE4_1) av1_highbd_convolve_init = av1_highbd_convolve_init_sse4_1;
av1_highbd_convolve_vert = av1_highbd_convolve_vert_c;
if (flags & HAS_SSE4_1) av1_highbd_convolve_vert = av1_highbd_convolve_vert_sse4_1;
av1_highbd_fht4x4 = av1_highbd_fht4x4_c;
if (flags & HAS_SSE4_1) av1_highbd_fht4x4 = av1_highbd_fht4x4_sse4_1;
av1_highbd_quantize_fp = av1_highbd_quantize_fp_c;
if (flags & HAS_SSE4_1) av1_highbd_quantize_fp = av1_highbd_quantize_fp_sse4_1;
if (flags & HAS_AVX2) av1_highbd_quantize_fp = av1_highbd_quantize_fp_avx2;
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
if (flags & HAS_SSSE3) av1_highbd_warp_affine = av1_highbd_warp_affine_ssse3;
av1_iht16x16_256_add = av1_iht16x16_256_add_sse2;
@ -540,6 +540,10 @@ static void setup_rtcd_internal(void)
if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_sse4_1;
av1_lowbd_convolve_init = av1_lowbd_convolve_init_c;
if (flags & HAS_SSSE3) av1_lowbd_convolve_init = av1_lowbd_convolve_init_ssse3;
av1_quantize_fp = av1_quantize_fp_sse2;
if (flags & HAS_AVX2) av1_quantize_fp = av1_quantize_fp_avx2;
av1_quantize_fp_32x32 = av1_quantize_fp_32x32_c;
if (flags & HAS_AVX2) av1_quantize_fp_32x32 = av1_quantize_fp_32x32_avx2;
av1_warp_affine = av1_warp_affine_sse2;
if (flags & HAS_SSSE3) av1_warp_affine = av1_warp_affine_ssse3;
compute_cross_correlation = compute_cross_correlation_c;

View file

@ -76,6 +76,7 @@ files = {
'../../third_party/aom/aom_dsp/x86/highbd_convolve_avx2.c',
'../../third_party/aom/aom_dsp/x86/highbd_intrapred_sse2.asm',
'../../third_party/aom/aom_dsp/x86/highbd_loopfilter_sse2.c',
'../../third_party/aom/aom_dsp/x86/highbd_quantize_intrin_avx2.c',
'../../third_party/aom/aom_dsp/x86/highbd_quantize_intrin_sse2.c',
'../../third_party/aom/aom_dsp/x86/highbd_sad4d_sse2.asm',
'../../third_party/aom/aom_dsp/x86/highbd_sad_sse2.asm',
@ -142,6 +143,7 @@ files = {
'../../third_party/aom/av1/common/clpf_sse4.c',
'../../third_party/aom/av1/common/clpf_ssse3.c',
'../../third_party/aom/av1/common/convolve.c',
'../../third_party/aom/av1/common/daala_tx.c',
'../../third_party/aom/av1/common/debugmodes.c',
'../../third_party/aom/av1/common/entropy.c',
'../../third_party/aom/av1/common/entropymode.c',
@ -170,6 +172,7 @@ files = {
'../../third_party/aom/av1/common/x86/av1_fwd_txfm1d_sse4.c',
'../../third_party/aom/av1/common/x86/av1_fwd_txfm2d_sse4.c',
'../../third_party/aom/av1/common/x86/av1_highbd_convolve_sse4.c',
'../../third_party/aom/av1/common/x86/convolve_avx2.c',
'../../third_party/aom/av1/common/x86/highbd_inv_txfm_avx2.c',
'../../third_party/aom/av1/common/x86/highbd_inv_txfm_sse4.c',
'../../third_party/aom/av1/common/x86/highbd_warp_plane_ssse3.c',
@ -219,7 +222,9 @@ files = {
'../../third_party/aom/av1/encoder/tokenize.c',
'../../third_party/aom/av1/encoder/treewriter.c',
'../../third_party/aom/av1/encoder/wedge_utils.c',
'../../third_party/aom/av1/encoder/x86/av1_highbd_quantize_avx2.c',
'../../third_party/aom/av1/encoder/x86/av1_highbd_quantize_sse4.c',
'../../third_party/aom/av1/encoder/x86/av1_quantize_avx2.c',
'../../third_party/aom/av1/encoder/x86/av1_quantize_sse2.c',
'../../third_party/aom/av1/encoder/x86/av1_quantize_ssse3_x86_64.asm',
'../../third_party/aom/av1/encoder/x86/corner_match_sse4.c',
@ -307,6 +312,7 @@ files = {
'../../third_party/aom/aom_dsp/x86/highbd_convolve_avx2.c',
'../../third_party/aom/aom_dsp/x86/highbd_intrapred_sse2.asm',
'../../third_party/aom/aom_dsp/x86/highbd_loopfilter_sse2.c',
'../../third_party/aom/aom_dsp/x86/highbd_quantize_intrin_avx2.c',
'../../third_party/aom/aom_dsp/x86/highbd_quantize_intrin_sse2.c',
'../../third_party/aom/aom_dsp/x86/highbd_sad4d_sse2.asm',
'../../third_party/aom/aom_dsp/x86/highbd_sad_sse2.asm',
@ -370,6 +376,7 @@ files = {
'../../third_party/aom/av1/common/clpf_sse4.c',
'../../third_party/aom/av1/common/clpf_ssse3.c',
'../../third_party/aom/av1/common/convolve.c',
'../../third_party/aom/av1/common/daala_tx.c',
'../../third_party/aom/av1/common/debugmodes.c',
'../../third_party/aom/av1/common/entropy.c',
'../../third_party/aom/av1/common/entropymode.c',
@ -398,6 +405,7 @@ files = {
'../../third_party/aom/av1/common/x86/av1_fwd_txfm1d_sse4.c',
'../../third_party/aom/av1/common/x86/av1_fwd_txfm2d_sse4.c',
'../../third_party/aom/av1/common/x86/av1_highbd_convolve_sse4.c',
'../../third_party/aom/av1/common/x86/convolve_avx2.c',
'../../third_party/aom/av1/common/x86/highbd_inv_txfm_avx2.c',
'../../third_party/aom/av1/common/x86/highbd_inv_txfm_sse4.c',
'../../third_party/aom/av1/common/x86/highbd_warp_plane_ssse3.c',
@ -447,7 +455,9 @@ files = {
'../../third_party/aom/av1/encoder/tokenize.c',
'../../third_party/aom/av1/encoder/treewriter.c',
'../../third_party/aom/av1/encoder/wedge_utils.c',
'../../third_party/aom/av1/encoder/x86/av1_highbd_quantize_avx2.c',
'../../third_party/aom/av1/encoder/x86/av1_highbd_quantize_sse4.c',
'../../third_party/aom/av1/encoder/x86/av1_quantize_avx2.c',
'../../third_party/aom/av1/encoder/x86/av1_quantize_sse2.c',
'../../third_party/aom/av1/encoder/x86/corner_match_sse4.c',
'../../third_party/aom/av1/encoder/x86/dct_intrin_sse2.c',
@ -567,6 +577,7 @@ files = {
'../../third_party/aom/av1/common/clpf.c',
'../../third_party/aom/av1/common/clpf_neon.c',
'../../third_party/aom/av1/common/convolve.c',
'../../third_party/aom/av1/common/daala_tx.c',
'../../third_party/aom/av1/common/debugmodes.c',
'../../third_party/aom/av1/common/entropy.c',
'../../third_party/aom/av1/common/entropymode.c',
@ -706,6 +717,7 @@ files = {
'../../third_party/aom/av1/common/cdef.c',
'../../third_party/aom/av1/common/clpf.c',
'../../third_party/aom/av1/common/convolve.c',
'../../third_party/aom/av1/common/daala_tx.c',
'../../third_party/aom/av1/common/debugmodes.c',
'../../third_party/aom/av1/common/entropy.c',
'../../third_party/aom/av1/common/entropymode.c',

View file

@ -11,8 +11,9 @@
cmake_minimum_required(VERSION 3.5)
if (NOT EMSCRIPTEN)
if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE
"Build type: Debug, Release, RelWithDebInfo or MinSizeRel" STRING FORCE)
endif ()
endif ()
@ -20,6 +21,11 @@ option(ENABLE_CCACHE "Enable ccache support." OFF)
option(ENABLE_DISTCC "Enable distcc support." OFF)
option(ENABLE_DOCS "Enable documentation generation (doxygen required)." ON)
option(ENABLE_NASM "Use nasm instead of yasm for x86 assembly." OFF)
option(ENABLE_IDE_TEST_HOSTING
"Enables running tests within IDEs like Visual Studio and Xcode." OFF)
# $BUILD_SHARED_LIBS is a CMake built-in-- it's listed here for visibility.
option(BUILD_SHARED_LIBS "CMake should generate a shared library build." OFF)
project(AOM C CXX)
@ -34,7 +40,6 @@ if ("${AOM_ROOT}" STREQUAL "${AOM_CONFIG_DIR}")
endif ()
include("${AOM_ROOT}/build/cmake/aom_configure.cmake")
include("${AOM_ROOT}/build/cmake/aom_optimization.cmake")
include("${AOM_ROOT}/aom_dsp/aom_dsp.cmake")
include("${AOM_ROOT}/aom_mem/aom_mem.cmake")
include("${AOM_ROOT}/aom_ports/aom_ports.cmake")
@ -42,6 +47,7 @@ include("${AOM_ROOT}/aom_scale/aom_scale.cmake")
include("${AOM_ROOT}/aom_util/aom_util.cmake")
include("${AOM_ROOT}/av1/av1.cmake")
include("${AOM_ROOT}/test/test.cmake")
include("${AOM_ROOT}/build/cmake/util.cmake")
set(AOM_RTCD_SOURCES
"${AOM_CONFIG_DIR}/aom_dsp_rtcd.h"
@ -212,9 +218,9 @@ add_library(aom_common_app_util OBJECT ${AOM_COMMON_APP_UTIL_SOURCES})
if (CONFIG_AV1_DECODER)
add_library(aom_decoder_app_util OBJECT ${AOM_DECODER_APP_UTIL_SOURCES})
add_executable(aomdec
"${AOM_ROOT}/aomdec.c"
$<TARGET_OBJECTS:aom_common_app_util>
$<TARGET_OBJECTS:aom_decoder_app_util>)
"${AOM_ROOT}/aomdec.c"
$<TARGET_OBJECTS:aom_common_app_util>
$<TARGET_OBJECTS:aom_decoder_app_util>)
if (CONFIG_ANALYZER)
add_executable(analyzer
@ -223,6 +229,7 @@ if (CONFIG_AV1_DECODER)
$<TARGET_OBJECTS:aom_decoder_app_util>)
target_link_libraries(analyzer ${AOM_LIB_LINK_TYPE} ${wxWidgets_LIBRARIES})
set(AOM_APP_TARGETS ${AOM_APP_TARGETS} analyzer)
set(AOM_DECODER_EXAMPLE_TARGETS ${AOM_DECODER_EXAMPLE_TARGETS} analyzer)
endif ()
add_executable(decode_to_md5
@ -247,14 +254,17 @@ if (CONFIG_AV1_DECODER)
if (EMSCRIPTEN)
add_preproc_definition(_POSIX_SOURCE)
add_compiler_flag_if_supported("-s TOTAL_MEMORY=134217728")
add_compiler_flag_if_supported("-s MODULARIZE=1")
add_compiler_flag_if_supported("-s EXPORT_NAME=\"\'DecoderModule\'\"")
add_compiler_flag_if_supported("--memory-init-file 0")
append_link_flag_to_target("inspect" "-s TOTAL_MEMORY=134217728")
append_link_flag_to_target("inspect" "-s MODULARIZE=1")
append_link_flag_to_target("inspect"
"-s EXPORT_NAME=\"\'DecoderModule\'\"")
append_link_flag_to_target("inspect" "--memory-init-file 0")
if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
# Default to -O3 when no build type specified.
add_compiler_flag_if_supported("-O3")
append_compiler_flag("-O3")
endif ()
em_link_post_js(inspect "${AOM_ROOT}/tools/inspect-post.js")
endif ()
endif ()
@ -324,7 +334,7 @@ if (CONFIG_LIBYUV)
# Add to existing targets.
foreach (aom_app ${AOM_APP_TARGETS})
target_sources(${aom_app} PUBLIC $<TARGET_OBJECTS:yuv>)
target_sources(${aom_app} PRIVATE $<TARGET_OBJECTS:yuv>)
set_property(TARGET ${aom_app} PROPERTY LINKER_LANGUAGE CXX)
endforeach ()
endif ()
@ -339,15 +349,15 @@ if (CONFIG_WEBM_IO)
# Add to existing targets.
if (CONFIG_AV1_DECODER)
target_sources(aom_decoder_app_util PUBLIC ${AOM_WEBM_DECODER_SOURCES})
target_sources(aom_decoder_app_util PRIVATE ${AOM_WEBM_DECODER_SOURCES})
endif ()
if (CONFIG_AV1_ENCODER)
target_sources(aom_encoder_app_util PUBLIC ${AOM_WEBM_ENCODER_SOURCES})
target_sources(aom_encoder_app_util PRIVATE ${AOM_WEBM_ENCODER_SOURCES})
endif ()
foreach (aom_app ${AOM_APP_TARGETS})
target_sources(${aom_app} PUBLIC $<TARGET_OBJECTS:webm>)
target_sources(${aom_app} PRIVATE $<TARGET_OBJECTS:webm>)
set_property(TARGET ${aom_app} PROPERTY LINKER_LANGUAGE CXX)
endforeach ()
endif ()
@ -374,11 +384,8 @@ if (XCODE)
# Note: LINKER_LANGUAGE is explicitly set to C++ for all targets touched
# here, it really is the Xcode generator's fault, or just a deficiency in
# Xcode itself.
set(XCODE_DUMMY_CXX_FILE "${AOM_CONFIG_DIR}/dummy.cc")
file(WRITE "${XCODE_DUMMY_CXX_FILE}"
"// Xcode needs a C++ file to link, ignore this file.")
foreach (aom_app ${AOM_APP_TARGETS})
target_sources(${aom_app} PUBLIC "${XCODE_DUMMY_CXX_FILE}")
add_dummy_source_file_to_target("${aom_app}" "cc")
endforeach ()
endif ()
endif ()
@ -391,6 +398,12 @@ if ("${CMAKE_GENERATOR}" MATCHES "Makefiles$" )
RUNTIME_OUTPUT_DIRECTORY "${AOM_CONFIG_DIR}/examples")
endif ()
if (BUILD_SHARED_LIBS)
include("${AOM_ROOT}/build/cmake/exports.cmake")
setup_exports_target()
set_target_properties(aom PROPERTIES SOVERSION 0)
endif ()
# Aomedia documentation rule.
if (ENABLE_DOCS)
include(FindDoxygen)

View file

@ -1,5 +1,9 @@
README - 9 March 2017
***************************
DEPRECATED -- SEE README.md
***************************
Welcome to the AV1 Codec SDK!
COMPILING THE APPLICATIONS/LIBRARIES:
@ -55,6 +59,7 @@ COMPILING THE APPLICATIONS/LIBRARIES:
armv7-none-rvct
armv7-win32-vs12
armv7-win32-vs14
armv7-win32-vs15
armv7s-darwin-gcc
mips32-linux-gcc
mips64-linux-gcc
@ -79,6 +84,7 @@ COMPILING THE APPLICATIONS/LIBRARIES:
x86-win32-gcc
x86-win32-vs12
x86-win32-vs14
x86-win32-vs15
x86_64-android-gcc
x86_64-darwin9-gcc
x86_64-darwin10-gcc
@ -95,6 +101,7 @@ COMPILING THE APPLICATIONS/LIBRARIES:
x86_64-win64-gcc
x86_64-win64-vs12
x86_64-win64-vs14
x86_64-win64-vs15
generic-gnu
The generic-gnu target, in conjunction with the CROSS environment variable,

307
third_party/aom/README.md vendored Normal file
View file

@ -0,0 +1,307 @@
# AV1 Codec Library
## Building the library and applications
### Prerequisites
1. [CMake](https://cmake.org) version 3.5 or higher.
2. [Git](https://git-scm.com/).
3. [Perl](https://www.perl.org/).
4. For x86 targets, [yasm](http://yasm.tortall.net/), which is preferred, or a
recent version of [nasm](http://www.nasm.us/).
5. Building the documentation requires [doxygen](http://doxygen.org).
6. Building the unit tests requires [Python](https://www.python.org/).
7. Emscripten builds require the portable
[EMSDK](https://kripken.github.io/emscripten-site/index.html).
### Basic build
CMake replaces the configure step typical of many projects. Running CMake will
produce configuration and build files for the currently selected CMake
generator. For most systems the default generator is Unix Makefiles. The basic
form of a makefile build is the following:
$ cmake path/to/aom
$ make
The above will generate a makefile build that produces the AV1 library and
applications for the current host system after the make step completes
successfully. The compiler chosen varies by host platform, but a general rule
applies: On systems where cc and c++ are present in $PATH at the time CMake is
run the generated build will use cc and c++ by default.
### Configuration options
The AV1 codec library has a great many configuration options. These come in two
varieties:
1. Build system configuration options. These have the form `ENABLE_FEATURE`.
2. AV1 codec configuration options. These have the form `CONFIG_FEATURE`.
Both types of options are set at the time CMake is run. The following example
enables ccache and disables high bit depth:
~~~
$ cmake path/to/aom -DENABLE_CCACHE=1 -DCONFIG_HIGHBITDEPTH=0
$ make
~~~
The available configuration options are too numerous to list here. Build system
configuration options can be found at the top of the CMakeLists.txt file found
in the root of the AV1 repository, and AV1 codec configuration options can
currently be found in the file `build/cmake/aom_config_defaults.cmake`.
### Dylib builds
A dylib (shared object) build of the AV1 codec library can be enabled via the
CMake built in variable `BUILD_SHARED_LIBS`:
~~~
$ cmake path/to/aom -DBUILD_SHARED_LIBS=1
$ make
~~~
This is currently only supported on non-Windows targets.
### Cross compiling
For the purposes of building the AV1 codec and applications and relative to the
scope of this guide, all builds for architectures differing from the native host
architecture will be considered cross compiles. The AV1 CMake build handles
cross compiling via the use of toolchain files included in the AV1 repository.
The toolchain files available at the time of this writing are:
- arm64-ios.cmake
- arm64-linux-gcc.cmake
- armv7-ios.cmake
- armv7-linux-gcc.cmake
- armv7s-ios.cmake
- mips32-linux-gcc.cmake
- mips64-linux-gcc.cmake
- x86-ios-simulator.cmake
- x86-linux.cmake
- x86-macos.cmake
- x86\_64-ios-simulator.cmake
The following example demonstrates use of the x86-macos.cmake toolchain file on
a x86\_64 MacOS host:
~~~
$ cmake path/to/aom \
-DCMAKE_TOOLCHAIN_FILE=path/to/aom/build/cmake/toolchains/x86-macos.cmake
$ make
~~~
To build for an unlisted target creation of a new toolchain file is the best
solution. The existing toolchain files can be used a starting point for a new
toolchain file since each one exposes the basic requirements for toolchain files
as used in the AV1 codec build.
As a temporary work around an unoptimized AV1 configuration that builds only C
and C++ sources can be produced using the following commands:
~~~
$ cmake path/to/aom -DAOM_TARGET_CPU=generic
$ make
~~~
In addition to the above it's important to note that the toolchain files
suffixed with gcc behave differently than the others. These toolchain files
attempt to obey the $CROSS environment variable.
### Microsoft Visual Studio builds
Building the AV1 codec library in Microsoft Visual Studio is supported. The
following example demonstrates generating projects and a solution for the
Microsoft IDE:
~~~
# This does not require a bash shell; command.exe is fine.
$ cmake path/to/aom -G "Visual Studio 15 2017"
~~~
### Xcode builds
Building the AV1 codec library in Xcode is supported. The following example
demonstrates generating an Xcode project:
~~~
$ cmake path/to/aom -G Xcode
~~~
### Emscripten builds
Building the AV1 codec library with Emscripten is supported. Typically this is
used to hook into the AOMAnalyzer GUI application. These instructions focus on
using the inspector with AOMAnalyzer, but all tools can be built with
Emscripten.
It is assumed here that you have already downloaded and installed the EMSDK,
installed and activated at least one toolchain, and setup your environment
appropriately using the emsdk\_env script.
1. Download [AOMAnalyzer](https://people.xiph.org/~mbebenita/analyzer/).
2. Configure the build:
~~~
$ cmake path/to/aom \
-DENABLE_CCACHE=1 \
-DAOM_TARGET_CPU=generic \
-DENABLE_DOCS=0 \
-DCONFIG_ACCOUNTING=1 \
-DCONFIG_INSPECTION=1 \
-DCONFIG_MULTITHREAD=0 \
-DCONFIG_RUNTIME_CPU_DETECT=0 \
-DCONFIG_UNIT_TESTS=0 \
-DCONFIG_WEBM_IO=0 \
-DCMAKE_TOOLCHAIN_FILE=path/to/emsdk-portable/.../Emscripten.cmake
~~~
3. Build it: run make if that's your generator of choice:
~~~
$ make inspect
~~~
4. Run the analyzer:
~~~
# inspect.js is in the examples sub directory of the directory in which you
# executed cmake.
$ path/to/AOMAnalyzer path/to/examples/inspect.js path/to/av1/input/file
~~~
## Testing the AV1 codec
### Testing basics
Currently there are two types of tests in the AV1 codec repository.
#### 1. Unit tests:
The unit tests can be run at build time:
~~~
# Before running the make command the LIBAOM_TEST_DATA_PATH environment
# variable should be set to avoid downloading the test files to the
# cmake build configuration directory.
$ cmake path/to/aom
# Note: The AV1 CMake build creates many test targets. Running make
# with multiple jobs will speed up the test run significantly.
$ make runtests
~~~
#### 2. Example tests:
The example tests require a bash shell and can be run in the following manner:
~~~
# See the note above about LIBAOM_TEST_DATA_PATH above.
$ cmake path/to/aom
$ make
# It's best to build the testdata target using many make jobs.
# Running it like this will verify and download (if necessary)
# one at a time, which takes a while.
$ make testdata
$ path/to/aom/test/examples.sh --bin-path examples
~~~
### IDE hosted tests
By default the generated projects files created by CMake will not include the
runtests and testdata rules when generating for IDEs like Microsoft Visual
Studio and Xcode. This is done to avoid intolerably long build cycles in the
IDEs-- IDE behavior is to build all targets when selecting the build project
options in MSVS and Xcode. To enable the test rules in IDEs the
`ENABLE_IDE_TEST_HOSTING` variable must be enabled at CMake generation time:
~~~
# This example uses Xcode. To get a list of the generators
# available, run cmake with the -G argument missing its
# value.
$ cmake path/to/aom -DENABLE_IDE_TEST_HOSTING=1 -G Xcode
~~~
### Downloading the test data
The fastest and easiest way to obtain the test data is to use CMake to generate
a build using the Unix Makefiles generator, and then to build only the testdata
rule:
~~~
$ cmake path/to/aom -G "Unix Makefiles"
# 28 is used because there are 28 test files as of this writing.
$ make -j28 testdata
~~~
The above make command will only download and verify the test data.
### Sharded testing
The AV1 codec library unit tests are built upon gtest which supports sharding of
test jobs. Sharded test runs can be achieved in a couple of ways.
#### 1. Running test\_libaom directly:
~~~
# Set the environment variable GTEST_TOTAL_SHARDS to 9 to run 10 test shards
# (GTEST shard indexing is 0 based).
$ export GTEST_TOTAL_SHARDS=9
$ for shard in $(seq 0 ${GTEST_TOTAL_SHARDS}); do \
[ ${shard} -lt ${GTEST_TOTAL_SHARDS} ] \
&& GTEST_SHARD_INDEX=${shard} ./test_libaom & \
done
~~~
To create a test shard for each CPU core available on the current system set
`GTEST_TOTAL_SHARDS` to the number of CPU cores on your system minus one.
#### 2. Running the tests via the CMake build:
~~~
# For IDE based builds, ENABLE_IDE_TEST_HOSTING must be enabled. See
# the IDE hosted tests section above for more information. If the IDE
# supports building targets concurrently tests will be sharded by default.
# For make and ninja builds the -j parameter controls the number of shards
# at test run time. This example will run the tests using 10 shards via
# make.
$ make -j10 runtests
~~~
The maximum number of test targets that can run concurrently is determined by
the number of CPUs on the system where the build is configured as detected by
CMake. A system with 24 cores can run 24 test shards using a value of 24 with
the `-j` parameter. When CMake is unable to detect the number of cores 10 shards
is the default maximum value.
## Coding style
The coding style used by this project is enforced with clang-format using the
configuration contained in the .clang-format file in the root of the repository.
Before pushing changes for review you can format your code with:
~~~
# Apply clang-format to modified .c, .h and .cc files
$ clang-format -i --style=file \
$(git diff --name-only --diff-filter=ACMR '*.[hc]' '*.cc')
~~~
Check the .clang-format file for the version used to generate it if there is any
difference between your local formatting and the review system.
See also: http://clang.llvm.org/docs/ClangFormat.html
## Support
This library is an open source project supported by its community. Please
please email aomediacodec@jointdevelopment.kavi.com for help.
## Bug reports
Bug reports can be filed in the Alliance for Open Media
[issue tracker](https://bugs.chromium.org/p/aomedia/issues/list).

View file

@ -107,7 +107,8 @@ typedef struct aom_codec_dec_cfg {
unsigned int threads; /**< Maximum number of threads to use, default 1 */
unsigned int w; /**< Width */
unsigned int h; /**< Height */
} aom_codec_dec_cfg_t; /**< alias for struct aom_codec_dec_cfg */
unsigned int allow_lowbitdepth; /**< Allow use of low-bitdepth coding path */
} aom_codec_dec_cfg_t; /**< alias for struct aom_codec_dec_cfg */
/*!\brief Initialize a decoder instance
*

View file

@ -363,44 +363,63 @@ typedef struct aom_codec_enc_cfg {
*/
unsigned int rc_dropframe_thresh;
/*!\brief Enable/disable spatial resampling, if supported by the codec.
/*!\brief Mode for spatial resampling, if supported by the codec.
*
* Spatial resampling allows the codec to compress a lower resolution
* version of the frame, which is then upscaled by the encoder to the
* version of the frame, which is then upscaled by the decoder to the
* correct presentation resolution. This increases visual quality at
* low data rates, at the expense of CPU time on the encoder/decoder.
*/
unsigned int rc_resize_allowed;
unsigned int rc_resize_mode;
/*!\brief Internal coded frame width.
/*!\brief Frame resize numerator.
*
* If spatial resampling is enabled this specifies the width of the
* encoded frame.
* The numerator for resize to use, assuming 16 as the denominator.
*
* Valid numerators are 8 - 16 for now.
*/
unsigned int rc_scaled_width;
unsigned int rc_resize_numerator;
/*!\brief Internal coded frame height.
/*!\brief Keyframe resize numerator.
*
* If spatial resampling is enabled this specifies the height of the
* encoded frame.
* The numerator for resize to use, assuming 16 as the denominator.
*
* Valid numerators are 8 - 16 for now.
*/
unsigned int rc_scaled_height;
unsigned int rc_resize_kf_numerator;
/*!\brief Spatial resampling up watermark.
/*!\brief Frame super-resolution scaling mode.
*
* This threshold is described as a percentage of the target data buffer.
* When the data buffer rises above this percentage of fullness, the
* encoder will step up to a higher resolution version of the frame.
* Similar to spatial resampling, frame super-resolution integrates
* upscaling after the encode/decode process. Taking control of upscaling and
* using restoration filters should allow it to outperform normal resizing.
*
* Mode 0 is SUPERRES_NONE, mode 1 is SUPERRES_FIXED, and mode 2 is
* SUPERRES_DYNAMIC.
*/
unsigned int rc_resize_up_thresh;
unsigned int rc_superres_mode;
/*!\brief Spatial resampling down watermark.
/*!\brief Frame super-resolution numerator.
*
* This threshold is described as a percentage of the target data buffer.
* When the data buffer falls below this percentage of fullness, the
* encoder will step down to a lower resolution version of the frame.
* The numerator for superres to use. If fixed it will only change if the
* cumulative scale change over resizing and superres is greater than 1/2;
* this forces superres to reduce scaling.
*
* Valid numerators are 8 to 16.
*
* Ignored by SUPERRES_DYNAMIC.
*/
unsigned int rc_resize_down_thresh;
unsigned int rc_superres_numerator;
/*!\brief Keyframe super-resolution numerator.
*
* The numerator for superres to use. If fixed it will only change if the
* cumulative scale change over resizing and superres is greater than 1/2;
* this forces superres to reduce scaling.
*
* Valid numerators are 8 - 16 for now.
*/
unsigned int rc_superres_kf_numerator;
/*!\brief Rate control algorithm to use.
*
@ -574,6 +593,14 @@ typedef struct aom_codec_enc_cfg {
* equal to kf_max_dist for a fixed interval.
*/
unsigned int kf_max_dist;
/*!\brief Tile coding mode
*
* This value indicates the tile coding mode.
* A value of 0 implies a normal non-large-scale tile coding. A value of 1
* implies a large-scale tile coding.
*/
unsigned int large_scale_tile;
} aom_codec_enc_cfg_t; /**< alias for struct aom_codec_enc_cfg */
/*!\brief Initialize an encoder instance

View file

@ -35,6 +35,8 @@ extern "C" {
#define AOM_IMG_FMT_HAS_ALPHA 0x400 /**< Image has an alpha channel. */
#define AOM_IMG_FMT_HIGHBITDEPTH 0x800 /**< Image uses 16bit framebuffer. */
#include "./aom_config.h"
/*!\brief List of supported image formats */
typedef enum aom_img_fmt {
AOM_IMG_FMT_NONE,
@ -74,10 +76,28 @@ typedef enum aom_color_space {
AOM_CS_BT_709 = 2, /**< BT.709 */
AOM_CS_SMPTE_170 = 3, /**< SMPTE.170 */
AOM_CS_SMPTE_240 = 4, /**< SMPTE.240 */
AOM_CS_BT_2020 = 5, /**< BT.2020 */
AOM_CS_RESERVED = 6, /**< Reserved */
AOM_CS_SRGB = 7 /**< sRGB */
} aom_color_space_t; /**< alias for enum aom_color_space */
#if CONFIG_COLORSPACE_HEADERS
AOM_CS_BT_2020_NCL = 5, /**< BT.2020 non-constant luminance (BT.2100) */
AOM_CS_BT_2020_CL = 6, /**< BT.2020 constant luminance */
AOM_CS_SRGB = 7, /**< sRGB */
AOM_CS_ICTCP = 8, /**< ICtCp, ITU-R BT.2100 */
AOM_CS_RESERVED = 9 /**< Values 9..31 are reserved */
#else
AOM_CS_BT_2020 = 5, /**< BT.2020 */
AOM_CS_RESERVED = 6, /**< Reserved */
AOM_CS_SRGB = 7 /**< sRGB */
#endif
} aom_color_space_t; /**< alias for enum aom_color_space */
#if CONFIG_COLORSPACE_HEADERS
typedef enum aom_transfer_function {
AOM_TF_UNKNOWN = 0, /**< Unknown */
AOM_TF_BT_709 = 1, /**< BT.709 */
AOM_TF_PQ = 2, /**< PQ TF BT.2100 / ST.2084 */
AOM_TF_HLG = 3, /**< Hybrid Log-Gamma */
AOM_TF_RESERVED = 4 /**< Values 4..31 are reserved */
} aom_transfer_function_t; /**< alias for enum aom_transfer_function */
#endif
/*!\brief List of supported color range */
typedef enum aom_color_range {
@ -85,10 +105,24 @@ typedef enum aom_color_range {
AOM_CR_FULL_RANGE = 1 /**< YUV/RGB [0..255] */
} aom_color_range_t; /**< alias for enum aom_color_range */
#if CONFIG_COLORSPACE_HEADERS
typedef enum aom_chroma_sample_position {
AOM_CSP_UNKNOWN = 0, /**< Unknown */
AOM_CSP_VERTICAL = 1, /**< Horizontally co-located with luma(0, 0)*/
/**< sample, between two vertical samples */
AOM_CSP_COLOCATED = 2, /**< Co-located with luma(0, 0) sample */
AOM_CSP_RESERVED = 3 /**< Reserved value */
} aom_chroma_sample_position_t; /**< alias for enum aom_transfer_function */
#endif
/**\brief Image Descriptor */
typedef struct aom_image {
aom_img_fmt_t fmt; /**< Image Format */
aom_color_space_t cs; /**< Color Space */
aom_img_fmt_t fmt; /**< Image Format */
aom_color_space_t cs; /**< Color Space */
#if CONFIG_COLORSPACE_HEADERS
aom_transfer_function_t tf; /**< transfer function */
aom_chroma_sample_position_t csp; /**< chroma sample position */
#endif
aom_color_range_t range; /**< Color Range */
/* Image storage dimensions */

View file

@ -61,4 +61,6 @@ typedef size_t uintptr_t;
#include <inttypes.h>
#endif
#define NELEMENTS(x) (int)(sizeof(x) / sizeof(x[0]))
#endif // AOM_AOM_INTEGER_H_

View file

@ -327,18 +327,41 @@ enum aome_enc_control_id {
AV1E_SET_TUNE_CONTENT,
/*!\brief Codec control function to set color space info.
* \note Valid ranges: 0..7, default is "UNKNOWN".
* \note Valid ranges: 0..9, default is "UNKNOWN".
* 0 = UNKNOWN,
* 1 = BT_601
* 2 = BT_709
* 3 = SMPTE_170
* 4 = SMPTE_240
* 5 = BT_2020
* 6 = RESERVED
* 5 = BT_2020_NCL
* 6 = BT_2020_CL
* 7 = SRGB
* 8 = ICtCp
* 9 = RESERVED
*/
AV1E_SET_COLOR_SPACE,
#if CONFIG_COLORSPACE_HEADERS
/*!\brief Codec control function to set transfer function info.
* \note Valid ranges: 0..4, default is "UNKNOWN".
* 0 = UNKNOWN,
* 1 = BT_709
* 2 = PQ
* 3 = HLG
* 4 = RESERVED
*/
AV1E_SET_TRANSFER_FUNCTION,
/*!\brief Codec control function to set chroma 4:2:0 sample position info.
* \note Valid ranges: 0..3, default is "UNKNOWN".
* 0 = UNKNOWN,
* 1 = VERTICAL
* 2 = COLOCATED
* 3 = RESERVED
*/
AV1E_SET_CHROMA_SAMPLE_POSITION,
#endif
/*!\brief Codec control function to set minimum interval between GF/ARF frames
*
* By default the value is set as 4.
@ -515,14 +538,15 @@ enum aome_enc_control_id {
*/
AV1E_SET_DELTAQ_MODE,
/*!\brief Codec control function to set the tile encoding mode to 0 or 1.
/*!\brief Codec control function to set the single tile decoding mode to 0 or
* 1.
*
* 0 means that the tile encoding mode is TILE_NORMAL, and 1 means that the
* tile encoding mode is TILE_VR.
* 0 means that the single tile decoding is off, and 1 means that the single
* tile decoding is on.
*
* Experiment: EXT_TILE
*/
AV1E_SET_TILE_ENCODING_MODE,
AV1E_SET_SINGLE_TILE_DECODING,
/*!\brief Codec control function to enable the extreme motion vector unit test
* in AV1. Please note that this is only used in motion vector unit test.
@ -704,6 +728,14 @@ AOM_CTRL_USE_TYPE(AV1E_SET_TUNE_CONTENT, int) /* aom_tune_content */
AOM_CTRL_USE_TYPE(AV1E_SET_COLOR_SPACE, int)
#define AOM_CTRL_AV1E_SET_COLOR_SPACE
#if CONFIG_COLORSPACE_HEADERS
AOM_CTRL_USE_TYPE(AV1E_SET_TRANSFER_FUNCTION, int)
#define AOM_CTRL_AV1E_SET_TRANSFER_FUNCTION
AOM_CTRL_USE_TYPE(AV1E_SET_CHROMA_SAMPLE_POSITION, int)
#define AOM_CTRL_AV1E_SET_CHROMA_SAMPLE_POSITION
#endif
AOM_CTRL_USE_TYPE(AV1E_SET_MIN_GF_INTERVAL, unsigned int)
#define AOM_CTRL_AV1E_SET_MIN_GF_INTERVAL
@ -735,8 +767,8 @@ AOM_CTRL_USE_TYPE(AV1E_GET_LEVEL, int *)
AOM_CTRL_USE_TYPE(AV1E_SET_ANS_WINDOW_SIZE_LOG2, unsigned int)
#define AOM_CTRL_AV1E_SET_ANS_WINDOW_SIZE_LOG2
AOM_CTRL_USE_TYPE(AV1E_SET_TILE_ENCODING_MODE, unsigned int)
#define AOM_CTRL_AV1E_SET_TILE_ENCODING_MODE
AOM_CTRL_USE_TYPE(AV1E_SET_SINGLE_TILE_DECODING, unsigned int)
#define AOM_CTRL_AV1E_SET_SINGLE_TILE_DECODING
AOM_CTRL_USE_TYPE(AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST, unsigned int)
#define AOM_CTRL_AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST

View file

@ -41,6 +41,29 @@ static void convolve_horiz(const uint8_t *src, ptrdiff_t src_stride,
}
}
static void convolve_horiz_scale_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const InterpKernel *x_filters, int x0_qn,
int x_step_qn, int w, int h) {
int x, y;
src -= SUBPEL_TAPS / 2 - 1;
for (y = 0; y < h; ++y) {
int x_qn = x0_qn;
for (x = 0; x < w; ++x) {
const uint8_t *const src_x = &src[x_qn >> SCALE_SUBPEL_BITS]; // q8
const int x_filter_idx = (x_qn & SCALE_SUBPEL_MASK) >> SCALE_EXTRA_BITS;
assert(x_filter_idx < SUBPEL_SHIFTS);
const int16_t *const x_filter = x_filters[x_filter_idx];
int k, sum = 0;
for (k = 0; k < SUBPEL_TAPS; ++k) sum += src_x[k] * x_filter[k];
dst[x] = clip_pixel(ROUND_POWER_OF_TWO(sum, FILTER_BITS));
x_qn += x_step_qn;
}
src += src_stride;
dst += dst_stride;
}
}
static void convolve_avg_horiz(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const InterpKernel *x_filters, int x0_q4,
@ -63,6 +86,30 @@ static void convolve_avg_horiz(const uint8_t *src, ptrdiff_t src_stride,
}
}
static void convolve_avg_horiz_scale_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const InterpKernel *x_filters, int x0_qn,
int x_step_qn, int w, int h) {
int x, y;
src -= SUBPEL_TAPS / 2 - 1;
for (y = 0; y < h; ++y) {
int x_qn = x0_qn;
for (x = 0; x < w; ++x) {
const uint8_t *const src_x = &src[x_qn >> SCALE_SUBPEL_BITS];
const int x_filter_idx = (x_qn & SCALE_SUBPEL_MASK) >> SCALE_EXTRA_BITS;
assert(x_filter_idx < SUBPEL_SHIFTS);
const int16_t *const x_filter = x_filters[x_filter_idx];
int k, sum = 0;
for (k = 0; k < SUBPEL_TAPS; ++k) sum += src_x[k] * x_filter[k];
dst[x] = ROUND_POWER_OF_TWO(
dst[x] + clip_pixel(ROUND_POWER_OF_TWO(sum, FILTER_BITS)), 1);
x_qn += x_step_qn;
}
src += src_stride;
dst += dst_stride;
}
}
static void convolve_vert(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const InterpKernel *y_filters, int y0_q4,
@ -86,6 +133,31 @@ static void convolve_vert(const uint8_t *src, ptrdiff_t src_stride,
}
}
static void convolve_vert_scale_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const InterpKernel *y_filters, int y0_qn,
int y_step_qn, int w, int h) {
int x, y;
src -= src_stride * (SUBPEL_TAPS / 2 - 1);
for (x = 0; x < w; ++x) {
int y_qn = y0_qn;
for (y = 0; y < h; ++y) {
const unsigned char *src_y =
&src[(y_qn >> SCALE_SUBPEL_BITS) * src_stride];
const int16_t *const y_filter =
y_filters[(y_qn & SCALE_SUBPEL_MASK) >> SCALE_EXTRA_BITS];
int k, sum = 0;
for (k = 0; k < SUBPEL_TAPS; ++k)
sum += src_y[k * src_stride] * y_filter[k];
dst[y * dst_stride] = clip_pixel(ROUND_POWER_OF_TWO(sum, FILTER_BITS));
y_qn += y_step_qn;
}
++src;
++dst;
}
}
static void convolve_avg_vert(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const InterpKernel *y_filters, int y0_q4,
@ -112,6 +184,34 @@ static void convolve_avg_vert(const uint8_t *src, ptrdiff_t src_stride,
}
}
static void convolve_avg_vert_scale_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const InterpKernel *y_filters, int y0_qn,
int y_step_qn, int w, int h) {
int x, y;
src -= src_stride * (SUBPEL_TAPS / 2 - 1);
for (x = 0; x < w; ++x) {
int y_qn = y0_qn;
for (y = 0; y < h; ++y) {
const unsigned char *src_y =
&src[(y_qn >> SCALE_SUBPEL_BITS) * src_stride];
const int16_t *const y_filter =
y_filters[(y_qn & SCALE_SUBPEL_MASK) >> SCALE_EXTRA_BITS];
int k, sum = 0;
for (k = 0; k < SUBPEL_TAPS; ++k)
sum += src_y[k * src_stride] * y_filter[k];
dst[y * dst_stride] = ROUND_POWER_OF_TWO(
dst[y * dst_stride] +
clip_pixel(ROUND_POWER_OF_TWO(sum, FILTER_BITS)),
1);
y_qn += y_step_qn;
}
++src;
++dst;
}
}
static void convolve(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
ptrdiff_t dst_stride, const InterpKernel *const x_filters,
int x0_q4, int x_step_q4,
@ -146,6 +246,41 @@ static void convolve(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
dst_stride, y_filters, y0_q4, y_step_q4, w, h);
}
static void convolve_scale_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const InterpKernel *const x_filters, int x0_qn,
int x_step_qn, const InterpKernel *const y_filters,
int y0_qn, int y_step_qn, int w, int h) {
// TODO(afergs): Update comment here
// Note: Fixed size intermediate buffer, temp, places limits on parameters.
// 2d filtering proceeds in 2 steps:
// (1) Interpolate horizontally into an intermediate buffer, temp.
// (2) Interpolate temp vertically to derive the sub-pixel result.
// Deriving the maximum number of rows in the temp buffer (135):
// --Smallest scaling factor is x1/2 ==> y_step_qn = 32 (Normative).
// --Largest block size is 64x64 pixels.
// --64 rows in the downscaled frame span a distance of (64 - 1) * 32 in the
// original frame (in 1/16th pixel units).
// --Must round-up because block may be located at sub-pixel position.
// --Require an additional SUBPEL_TAPS rows for the 8-tap filter tails.
// --((64 - 1) * 32 + 15) >> 4 + 8 = 135.
uint8_t temp[MAX_EXT_SIZE * MAX_SB_SIZE];
int intermediate_height =
(((h - 1) * y_step_qn + y0_qn) >> SCALE_SUBPEL_BITS) + SUBPEL_TAPS;
assert(w <= MAX_SB_SIZE);
assert(h <= MAX_SB_SIZE);
assert(y_step_qn <= SCALE_SUBPEL_BITS * 2);
assert(x_step_qn <= SCALE_SUBPEL_BITS * 2);
convolve_horiz_scale_c(src - src_stride * (SUBPEL_TAPS / 2 - 1), src_stride,
temp, MAX_SB_SIZE, x_filters, x0_qn, x_step_qn, w,
intermediate_height);
convolve_vert_scale_c(temp + MAX_SB_SIZE * (SUBPEL_TAPS / 2 - 1), MAX_SB_SIZE,
dst, dst_stride, y_filters, y0_qn, y_step_qn, w, h);
}
static const InterpKernel *get_filter_base(const int16_t *filter) {
// NOTE: This assumes that the filter table is 256-byte aligned.
// TODO(agrange) Modify to make independent of table alignment.
@ -171,6 +306,21 @@ void aom_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride,
w, h);
}
void aom_convolve8_horiz_scale_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const int16_t *filter_x, int subpel_x,
int x_step_qn, const int16_t *filter_y,
int subpel_y, int y_step_qn, int w, int h) {
const InterpKernel *const filters_x = get_filter_base(filter_x);
(void)subpel_y;
(void)filter_y;
(void)y_step_qn;
convolve_horiz_scale_c(src, src_stride, dst, dst_stride, filters_x, subpel_x,
x_step_qn, w, h);
}
void aom_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const int16_t *filter_x, int x_step_q4,
@ -186,6 +336,22 @@ void aom_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride,
x_step_q4, w, h);
}
void aom_convolve8_avg_horiz_scale_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const int16_t *filter_x, int subpel_x,
int x_step_qn, const int16_t *filter_y,
int subpel_y, int y_step_qn, int w,
int h) {
const InterpKernel *const filters_x = get_filter_base(filter_x);
(void)subpel_y;
(void)filter_y;
(void)y_step_qn;
convolve_avg_horiz_scale_c(src, src_stride, dst, dst_stride, filters_x,
subpel_x, x_step_qn, w, h);
}
void aom_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const int16_t *filter_x, int x_step_q4,
@ -201,6 +367,21 @@ void aom_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride,
w, h);
}
void aom_convolve8_vert_scale_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const int16_t *filter_x, int subpel_x,
int x_step_qn, const int16_t *filter_y,
int subpel_y, int y_step_qn, int w, int h) {
const InterpKernel *const filters_y = get_filter_base(filter_y);
(void)subpel_x;
(void)filter_x;
(void)x_step_qn;
convolve_vert_scale_c(src, src_stride, dst, dst_stride, filters_y, subpel_y,
y_step_qn, w, h);
}
void aom_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const int16_t *filter_x, int x_step_q4,
@ -216,6 +397,21 @@ void aom_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride,
y_step_q4, w, h);
}
void aom_convolve8_avg_vert_scale_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const int16_t *filter_x, int subpel_x,
int x_step_qn, const int16_t *filter_y,
int subpel_y, int y_step_qn, int w, int h) {
const InterpKernel *const filters_y = get_filter_base(filter_y);
(void)subpel_x;
(void)filter_x;
(void)x_step_qn;
convolve_avg_vert_scale_c(src, src_stride, dst, dst_stride, filters_y,
subpel_y, y_step_qn, w, h);
}
void aom_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
ptrdiff_t dst_stride, const int16_t *filter_x,
int x_step_q4, const int16_t *filter_y, int y_step_q4,
@ -230,6 +426,19 @@ void aom_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
filters_y, y0_q4, y_step_q4, w, h);
}
void aom_convolve8_scale_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const int16_t *filter_x, int subpel_x, int x_step_qn,
const int16_t *filter_y, int subpel_y, int y_step_qn,
int w, int h) {
const InterpKernel *const filters_x = get_filter_base(filter_x);
const InterpKernel *const filters_y = get_filter_base(filter_y);
convolve_scale_c(src, src_stride, dst, dst_stride, filters_x, subpel_x,
x_step_qn, filters_y, subpel_y, y_step_qn, w, h);
}
void aom_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
ptrdiff_t dst_stride, const int16_t *filter_x,
int x_step_q4, const int16_t *filter_y, int y_step_q4,
@ -245,6 +454,22 @@ void aom_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
h);
}
void aom_convolve8_avg_scale_c(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
const int16_t *filter_x, int subpel_x,
int x_step_qn, const int16_t *filter_y,
int subpel_y, int y_step_qn, int w, int h) {
/* Fixed size intermediate buffer places limits on parameters. */
DECLARE_ALIGNED(16, uint8_t, temp[MAX_SB_SIZE * MAX_SB_SIZE]);
assert(w <= MAX_SB_SIZE);
assert(h <= MAX_SB_SIZE);
aom_convolve8_scale_c(src, src_stride, temp, MAX_SB_SIZE, filter_x, subpel_x,
x_step_qn, filter_y, subpel_y, y_step_qn, w, h);
aom_convolve_avg_c(temp, MAX_SB_SIZE, dst, dst_stride, NULL, 0, NULL, 0, w,
h);
}
void aom_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
ptrdiff_t dst_stride, const int16_t *filter_x,
int filter_x_stride, const int16_t *filter_y,
@ -332,6 +557,7 @@ void aom_scaled_avg_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
filter_y, y_step_q4, w, h);
}
// TODO(afergs): Make sure this works too
#if CONFIG_LOOP_RESTORATION
static void convolve_add_src_horiz(const uint8_t *src, ptrdiff_t src_stride,
uint8_t *dst, ptrdiff_t dst_stride,
@ -569,6 +795,7 @@ void aom_convolve8_add_src_hip_c(const uint8_t *src, ptrdiff_t src_stride,
}
#endif // CONFIG_LOOP_RESTORATION
// TODO(afergs): Make sure this works too
#if CONFIG_HIGHBITDEPTH
static void highbd_convolve_horiz(const uint8_t *src8, ptrdiff_t src_stride,
uint8_t *dst8, ptrdiff_t dst_stride,

View file

@ -287,6 +287,7 @@ if (CONFIG_AV1_ENCODER)
"${AOM_ROOT}/aom_dsp/x86/fwd_dct32x32_impl_avx2.h"
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_avx2.c"
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_avx2.h"
"${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_avx2.c"
"${AOM_ROOT}/aom_dsp/x86/sad4d_avx2.c"
"${AOM_ROOT}/aom_dsp/x86/sad_avx2.c"
"${AOM_ROOT}/aom_dsp/x86/sad_impl_avx2.c"
@ -312,6 +313,7 @@ if (CONFIG_AV1_ENCODER)
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_sse2.c"
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_sse2.h"
"${AOM_ROOT}/aom_dsp/x86/halfpix_variance_sse2.c"
"${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_sse2.c"
"${AOM_ROOT}/aom_dsp/x86/variance_sse2.c"
"${AOM_ROOT}/aom_dsp/x86/sum_squares_sse2.c")
@ -330,10 +332,16 @@ if (CONFIG_AV1_ENCODER)
"${AOM_ROOT}/aom_dsp/mips/variance_msa.c"
"${AOM_ROOT}/aom_dsp/mips/sub_pixel_variance_msa.c")
if (CONFIG_EXT_INTER)
set(AOM_DSP_ENCODER_INTRIN_SSSE3
${AOM_DSP_ENCODER_INTRIN_SSSE3}
"${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_ssse3.c"
"${AOM_ROOT}/aom_dsp/x86/masked_variance_intrin_ssse3.c")
endif ()
if (CONFIG_HIGHBITDEPTH)
set(AOM_DSP_ENCODER_INTRIN_SSE2
${AOM_DSP_ENCODER_INTRIN_SSE2}
"${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_sse2.c"
"${AOM_ROOT}/aom_dsp/x86/highbd_subtract_sse2.c")
endif ()
endif ()
@ -407,29 +415,38 @@ endif ()
# has been created.
function (setup_aom_dsp_targets)
add_library(aom_dsp_common OBJECT ${AOM_DSP_COMMON_SOURCES})
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_dsp_common)
target_sources(aom PUBLIC $<TARGET_OBJECTS:aom_dsp_common>)
list(APPEND AOM_LIB_TARGETS aom_dsp_common)
create_dummy_source_file("aom_av1" "c" "dummy_source_file")
add_library(aom_dsp OBJECT "${dummy_source_file}")
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_common>)
list(APPEND AOM_LIB_TARGETS aom_dsp)
# Not all generators support libraries consisting only of object files. Add a
# dummy source file to the aom_dsp target.
add_dummy_source_file_to_target("aom_dsp" "c")
if (CONFIG_AV1_DECODER)
add_library(aom_dsp_decoder OBJECT ${AOM_DSP_DECODER_SOURCES})
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_dsp_decoder)
target_sources(aom PUBLIC $<TARGET_OBJECTS:aom_dsp_decoder>)
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_decoder>)
endif ()
if (CONFIG_AV1_ENCODER)
add_library(aom_dsp_encoder OBJECT ${AOM_DSP_ENCODER_SOURCES})
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_dsp_encoder)
target_sources(aom PUBLIC $<TARGET_OBJECTS:aom_dsp_encoder>)
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_encoder>)
endif ()
if (HAVE_SSE2)
add_asm_library("aom_dsp_common_sse2" "AOM_DSP_COMMON_ASM_SSE2" "aom")
add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_common"
"AOM_DSP_COMMON_INTRIN_SSE2")
"AOM_DSP_COMMON_INTRIN_SSE2" "aom")
if (CONFIG_AV1_ENCODER)
add_asm_library("aom_dsp_encoder_sse2" "AOM_DSP_ENCODER_ASM_SSE2" "aom")
add_asm_library("aom_dsp_encoder_sse2" "AOM_DSP_ENCODER_ASM_SSE2"
"aom")
add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_encoder"
"AOM_DSP_ENCODER_INTRIN_SSE2")
"AOM_DSP_ENCODER_INTRIN_SSE2" "aom")
endif()
endif ()
@ -440,7 +457,7 @@ function (setup_aom_dsp_targets)
if (HAVE_SSSE3)
add_asm_library("aom_dsp_common_ssse3" "AOM_DSP_COMMON_ASM_SSSE3" "aom")
add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_common"
"AOM_DSP_COMMON_INTRIN_SSSE3")
"AOM_DSP_COMMON_INTRIN_SSSE3" "aom")
if (CONFIG_AV1_ENCODER)
if ("${AOM_TARGET_CPU}" STREQUAL "x86_64")
@ -448,16 +465,20 @@ function (setup_aom_dsp_targets)
${AOM_DSP_ENCODER_ASM_SSSE3_X86_64})
endif ()
add_asm_library("aom_dsp_encoder_ssse3" "AOM_DSP_ENCODER_ASM_SSSE3" "aom")
if (AOM_DSP_ENCODER_INTRIN_SSSE3)
add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_encoder"
"AOM_DSP_ENCODER_INTRIN_SSSE3" "aom")
endif ()
endif ()
endif ()
if (HAVE_SSE4_1)
add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_common"
"AOM_DSP_COMMON_INTRIN_SSE4_1")
"AOM_DSP_COMMON_INTRIN_SSE4_1" "aom")
if (CONFIG_AV1_ENCODER)
if (AOM_DSP_ENCODER_INTRIN_SSE4_1)
add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_encoder"
"AOM_DSP_ENCODER_INTRIN_SSE4_1")
"AOM_DSP_ENCODER_INTRIN_SSE4_1" "aom")
endif ()
add_asm_library("aom_dsp_encoder_sse4_1" "AOM_DSP_ENCODER_ASM_SSE4_1"
"aom")
@ -473,10 +494,10 @@ function (setup_aom_dsp_targets)
if (HAVE_AVX2)
add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_common"
"AOM_DSP_COMMON_INTRIN_AVX2")
"AOM_DSP_COMMON_INTRIN_AVX2" "aom")
if (CONFIG_AV1_ENCODER)
add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_encoder"
"AOM_DSP_ENCODER_INTRIN_AVX2")
"AOM_DSP_ENCODER_INTRIN_AVX2" "aom")
endif ()
endif ()
@ -490,20 +511,21 @@ function (setup_aom_dsp_targets)
if (HAVE_NEON)
add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
"aom_dsp_common" "AOM_DSP_COMMON_INTRIN_NEON")
"aom_dsp_common" "AOM_DSP_COMMON_INTRIN_NEON"
"aom")
endif ()
if (HAVE_DSPR2)
add_intrinsics_object_library("" "dspr2" "aom_dsp_common"
"AOM_DSP_COMMON_INTRIN_DSPR2")
"AOM_DSP_COMMON_INTRIN_DSPR2" "aom")
endif ()
if (HAVE_MSA)
add_intrinsics_object_library("" "msa" "aom_dsp_common"
"AOM_DSP_COMMON_INTRIN_MSA")
"AOM_DSP_COMMON_INTRIN_MSA" "aom")
if (CONFIG_AV1_ENCODER)
add_intrinsics_object_library("" "msa" "aom_dsp_encoder"
"AOM_DSP_ENCODER_INTRIN_MSA")
"AOM_DSP_ENCODER_INTRIN_MSA" "aom")
endif ()
endif ()

View file

@ -290,9 +290,10 @@ DSP_SRCS-yes += quantize.c
DSP_SRCS-yes += quantize.h
DSP_SRCS-$(HAVE_SSE2) += x86/quantize_sse2.c
ifeq ($(CONFIG_HIGHBITDEPTH),yes)
DSP_SRCS-$(HAVE_SSE2) += x86/highbd_quantize_intrin_sse2.c
endif
DSP_SRCS-$(HAVE_AVX2) += x86/highbd_quantize_intrin_avx2.c
ifeq ($(ARCH_X86_64),yes)
DSP_SRCS-$(HAVE_SSSE3) += x86/quantize_ssse3_x86_64.asm
DSP_SRCS-$(HAVE_AVX) += x86/quantize_avx_x86_64.asm

View file

@ -31,8 +31,6 @@ extern "C" {
#define AOMMIN(x, y) (((x) < (y)) ? (x) : (y))
#define AOMMAX(x, y) (((x) > (y)) ? (x) : (y))
#define NELEMENTS(x) (sizeof((x)) / sizeof((x)[0]))
#define IMPLIES(a, b) (!(a) || (b)) // Logical 'a implies b' (or 'a -> b')
#define IS_POWER_OF_TWO(x) (((x) & ((x)-1)) == 0)
@ -54,16 +52,9 @@ extern "C" {
#define UNLIKELY(v) (v)
#endif
#define AOM_SWAP(type, a, b) \
do { \
type c = (b); \
b = a; \
a = c; \
} while (0)
#if CONFIG_AOM_QM
typedef uint16_t qm_val_t;
#define AOM_QM_BITS 6
#define AOM_QM_BITS 5
#endif
#if CONFIG_HIGHBITDEPTH
// Note:
@ -87,11 +78,14 @@ static INLINE int clamp(int value, int low, int high) {
return value < low ? low : (value > high ? high : value);
}
static INLINE int64_t clamp64(int64_t value, int64_t low, int64_t high) {
return value < low ? low : (value > high ? high : value);
}
static INLINE double fclamp(double value, double low, double high) {
return value < low ? low : (value > high ? high : value);
}
#if CONFIG_HIGHBITDEPTH
static INLINE uint16_t clip_pixel_highbd(int val, int bd) {
switch (bd) {
case 8:
@ -100,7 +94,6 @@ static INLINE uint16_t clip_pixel_highbd(int val, int bd) {
case 12: return (uint16_t)clamp(val, 0, 4095);
}
}
#endif // CONFIG_HIGHBITDEPTH
#ifdef __cplusplus
} // extern "C"

View file

@ -40,12 +40,26 @@ foreach $w (@block_widths) {
push @block_sizes, [$w, $h] if ($w <= 2*$h && $h <= 2*$w) ;
}
}
if (aom_config("CONFIG_EXT_PARTITION_TYPES")) {
push @block_sizes, [4, 16];
push @block_sizes, [16, 4];
push @block_sizes, [8, 32];
push @block_sizes, [32, 8];
}
@tx_dims = (2, 4, 8, 16, 32);
if (aom_config("CONFIG_TX64X64") eq "yes") {
push @tx_dims, '64';
}
@tx_sizes = ();
foreach $w (@tx_dims) {
push @tx_sizes, [$w, $w];
foreach $h (@tx_dims) {
push @tx_sizes, [$w, $h] if ($w >=4 && $h >=4 && ($w == 2*$h || $h == 2*$w));
}
}
@pred_names = qw/dc dc_top dc_left dc_128 v h d207e d63e d45e d117 d135 d153/;
if (aom_config("CONFIG_ALT_INTRA") eq "yes") {
push @pred_names, qw/paeth smooth/;
@ -60,9 +74,8 @@ if (aom_config("CONFIG_ALT_INTRA") eq "yes") {
# Intra prediction
#
foreach $dim (@tx_dims) {
$w = ${dim};
$h = ${dim};
foreach (@tx_sizes) {
($w, $h) = @$_;
foreach $pred_name (@pred_names) {
add_proto "void", "aom_${pred_name}_predictor_${w}x${h}",
"uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
@ -142,20 +155,27 @@ if (aom_config("CONFIG_HIGHBITDEPTH") eq "yes") {
#
# Sub Pixel Filters
#
add_proto qw/void aom_convolve_copy/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_avg_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_avg_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_scaled_2d/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_scaled_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_scaled_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_scaled_avg_2d/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_scaled_avg_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_scaled_avg_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve_copy/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_avg_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_avg_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_scaled_2d/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_scaled_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_scaled_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_scaled_avg_2d/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_scaled_avg_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_scaled_avg_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_horiz_scale/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int subpel_x, int x_step_q4, const int16_t *filter_y, int subpel_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_vert_scale/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int subpel_x, int x_step_q4, const int16_t *filter_y, int subpel_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_avg_horiz_scale/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int subpel_x, int x_step_q4, const int16_t *filter_y, int subpel_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_avg_vert_scale/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int subpel_x, int x_step_q4, const int16_t *filter_y, int subpel_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_scale/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int subpel_x, int x_step_q4, const int16_t *filter_y, int subpel_y, int y_step_q4, int w, int h";
add_proto qw/void aom_convolve8_avg_scale/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int subpel_x, int x_step_q4, const int16_t *filter_y, int subpel_y, int y_step_q4, int w, int h";
specialize qw/aom_convolve_copy sse2 /;
specialize qw/aom_convolve_avg sse2 /;
@ -334,24 +354,15 @@ if ((aom_config("CONFIG_AV1_ENCODER") eq "yes") || (aom_config("CONFIG_PVQ") eq
add_proto qw/void aom_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct8x8 sse2/, "$ssse3_x86_64";
add_proto qw/void aom_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct8x8_1 sse2/;
add_proto qw/void aom_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct16x16 sse2/;
add_proto qw/void aom_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct16x16_1 sse2 avx2/;
add_proto qw/void aom_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct32x32 sse2 avx2/;
add_proto qw/void aom_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct32x32_rd sse2 avx2/;
add_proto qw/void aom_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct32x32_1 sse2 avx2/;
# High bit depth
add_proto qw/void aom_highbd_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_highbd_fdct4x4 sse2/;
@ -359,20 +370,15 @@ if ((aom_config("CONFIG_AV1_ENCODER") eq "yes") || (aom_config("CONFIG_PVQ") eq
add_proto qw/void aom_highbd_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_highbd_fdct8x8 sse2/;
add_proto qw/void aom_highbd_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
add_proto qw/void aom_highbd_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_highbd_fdct16x16 sse2/;
add_proto qw/void aom_highbd_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
add_proto qw/void aom_highbd_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_highbd_fdct32x32 sse2/;
add_proto qw/void aom_highbd_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_highbd_fdct32x32_rd sse2/;
add_proto qw/void aom_highbd_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
} else {
add_proto qw/void aom_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct4x4 sse2 msa/;
@ -383,47 +389,25 @@ if ((aom_config("CONFIG_AV1_ENCODER") eq "yes") || (aom_config("CONFIG_PVQ") eq
add_proto qw/void aom_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct8x8 sse2 neon msa/, "$ssse3_x86_64";
add_proto qw/void aom_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct8x8_1 sse2 neon msa/;
add_proto qw/void aom_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct16x16 sse2 msa/;
add_proto qw/void aom_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct16x16_1 sse2 avx2 msa/;
add_proto qw/void aom_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct32x32 sse2 avx2 msa/;
add_proto qw/void aom_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct32x32_rd sse2 avx2 msa/;
add_proto qw/void aom_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
specialize qw/aom_fdct32x32_1 sse2 avx2 msa/;
} # CONFIG_HIGHBITDEPTH
} # CONFIG_AV1_ENCODER
#
# Inverse transform
if (aom_config("CONFIG_AV1") eq "yes") {
if (aom_config("CONFIG_HIGHBITDEPTH") eq "yes") {
add_proto qw/void aom_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
add_proto qw/void aom_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
specialize qw/aom_iwht4x4_16_add sse2/;
add_proto qw/void aom_highbd_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
add_proto qw/void aom_highbd_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
add_proto qw/void aom_highbd_idct16x16_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
add_proto qw/void aom_highbd_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
add_proto qw/void aom_highbd_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
add_proto qw/void aom_highbd_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
add_proto qw/void aom_highbd_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
add_proto qw/void aom_highbd_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
@ -469,10 +453,8 @@ if (aom_config("CONFIG_HIGHBITDEPTH") eq "yes") {
add_proto qw/void aom_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
specialize qw/aom_idct32x32_1_add sse2 avx2/;
add_proto qw/void aom_highbd_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
specialize qw/aom_highbd_idct4x4_16_add sse2/;
}
if (aom_config("CONFIG_HIGHBITDEPTH") eq "yes") {
} else {
{
add_proto qw/void aom_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
@ -541,13 +523,12 @@ if (aom_config("CONFIG_AOM_QM") eq "yes") {
add_proto qw/void aom_quantize_b_64x64/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t * qm_ptr, const qm_val_t * iqm_ptr";
if (aom_config("CONFIG_HIGHBITDEPTH") eq "yes") {
add_proto qw/void aom_highbd_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t * qm_ptr, const qm_val_t * iqm_ptr";
add_proto qw/void aom_highbd_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t * qm_ptr, const qm_val_t * iqm_ptr";
add_proto qw/void aom_highbd_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t * qm_ptr, const qm_val_t * iqm_ptr";
add_proto qw/void aom_highbd_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t * qm_ptr, const qm_val_t * iqm_ptr";
add_proto qw/void aom_highbd_quantize_b_64x64/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t * qm_ptr, const qm_val_t * iqm_ptr";
add_proto qw/void aom_highbd_quantize_b_64x64/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t * qm_ptr, const qm_val_t * iqm_ptr";
} # CONFIG_HIGHBITDEPTH
} # CONFIG_AV1_ENCODER
} else {
if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
@ -559,21 +540,23 @@ if (aom_config("CONFIG_AOM_QM") eq "yes") {
add_proto qw/void aom_quantize_b_64x64/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
if (aom_config("CONFIG_HIGHBITDEPTH") eq "yes") {
add_proto qw/void aom_highbd_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
specialize qw/aom_highbd_quantize_b sse2/;
add_proto qw/void aom_highbd_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
specialize qw/aom_highbd_quantize_b sse2 avx2/;
add_proto qw/void aom_highbd_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
specialize qw/aom_highbd_quantize_b_32x32 sse2/;
add_proto qw/void aom_highbd_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
specialize qw/aom_highbd_quantize_b_32x32 sse2/;
add_proto qw/void aom_highbd_quantize_b_64x64/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
add_proto qw/void aom_highbd_quantize_b_64x64/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
} # CONFIG_HIGHBITDEPTH
} # CONFIG_AV1_ENCODER
} # CONFIG_AOM_QM
if (aom_config("CONFIG_AV1") eq "yes") {
#
# Alpha blending with mask
#
if (aom_config("CONFIG_CONVOLVE_ROUND") eq "yes") {
add_proto qw/void aom_blend_a64_d32_mask/, "int32_t *dst, uint32_t dst_stride, const int32_t *src0, uint32_t src0_stride, const int32_t *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int h, int w, int suby, int subx";
}
add_proto qw/void aom_blend_a64_mask/, "uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int h, int w, int suby, int subx";
add_proto qw/void aom_blend_a64_hmask/, "uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w";
add_proto qw/void aom_blend_a64_vmask/, "uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w";
@ -927,15 +910,15 @@ if (aom_config("CONFIG_HIGHBITDEPTH") eq "yes") {
#
# ...
#
add_proto qw/void aom_upsampled_pred/, "uint8_t *comp_pred, int width, int height, const uint8_t *ref, int ref_stride";
add_proto qw/void aom_upsampled_pred/, "uint8_t *comp_pred, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref, int ref_stride";
specialize qw/aom_upsampled_pred sse2/;
add_proto qw/void aom_comp_avg_upsampled_pred/, "uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride";
add_proto qw/void aom_comp_avg_upsampled_pred/, "uint8_t *comp_pred, const uint8_t *pred, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref, int ref_stride";
specialize qw/aom_comp_avg_upsampled_pred sse2/;
if (aom_config("CONFIG_HIGHBITDEPTH") eq "yes") {
add_proto qw/void aom_highbd_upsampled_pred/, "uint16_t *comp_pred, int width, int height, const uint8_t *ref8, int ref_stride";
add_proto qw/void aom_highbd_upsampled_pred/, "uint16_t *comp_pred, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref8, int ref_stride, int bd";
specialize qw/aom_highbd_upsampled_pred sse2/;
add_proto qw/void aom_highbd_comp_avg_upsampled_pred/, "uint16_t *comp_pred, const uint8_t *pred8, int width, int height, const uint8_t *ref8, int ref_stride";
add_proto qw/void aom_highbd_comp_avg_upsampled_pred/, "uint16_t *comp_pred, const uint8_t *pred8, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref8, int ref_stride, int bd";
specialize qw/aom_highbd_comp_avg_upsampled_pred sse2/;
}
@ -1005,6 +988,22 @@ specialize qw/aom_sub_pixel_avg_variance8x8 msa sse2 ssse3/;
specialize qw/aom_sub_pixel_avg_variance8x4 msa sse2 ssse3/;
specialize qw/aom_sub_pixel_avg_variance4x8 msa sse2 ssse3/;
specialize qw/aom_sub_pixel_avg_variance4x4 msa sse2 ssse3/;
if (aom_config("CONFIG_EXT_PARTITION_TYPES")) {
specialize qw/aom_variance4x16 sse2/;
specialize qw/aom_variance16x4 sse2/;
specialize qw/aom_variance8x32 sse2/;
specialize qw/aom_variance32x8 sse2/;
specialize qw/aom_sub_pixel_variance4x16 sse2 ssse3/;
specialize qw/aom_sub_pixel_variance16x4 sse2 ssse3/;
specialize qw/aom_sub_pixel_variance8x32 sse2 ssse3/;
specialize qw/aom_sub_pixel_variance32x8 sse2 ssse3/;
specialize qw/aom_sub_pixel_avg_variance4x16 sse2 ssse3/;
specialize qw/aom_sub_pixel_avg_variance16x4 sse2 ssse3/;
specialize qw/aom_sub_pixel_avg_variance8x32 sse2 ssse3/;
specialize qw/aom_sub_pixel_avg_variance32x8 sse2 ssse3/;
}
if (aom_config("CONFIG_HIGHBITDEPTH") eq "yes") {
foreach $bd (8, 10, 12) {
add_proto qw/unsigned int/, "aom_highbd_${bd}_variance2x2", "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
@ -1021,6 +1020,8 @@ if (aom_config("CONFIG_HIGHBITDEPTH") eq "yes") {
if ($w != 128 && $h != 128 && $w != 4 && $h != 4) {
specialize "aom_highbd_${bd}_variance${w}x${h}", "sse2";
}
# TODO(david.barker): When ext-partition-types is enabled, we currenly
# don't have vectorized 4x16 highbd variance functions
if ($w == 4 && $h == 4) {
specialize "aom_highbd_${bd}_variance${w}x${h}", "sse4_1";
}
@ -1496,10 +1497,10 @@ if (aom_config("CONFIG_HIGHBITDEPTH") eq "yes") {
if (aom_config("CONFIG_EXT_INTER") eq "yes") {
add_proto qw/void aom_comp_mask_pred/, "uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask";
add_proto qw/void aom_comp_mask_upsampled_pred/, "uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask";
add_proto qw/void aom_comp_mask_upsampled_pred/, "uint8_t *comp_pred, const uint8_t *pred, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask";
if (aom_config("CONFIG_HIGHBITDEPTH") eq "yes") {
add_proto qw/void aom_highbd_comp_mask_pred/, "uint16_t *comp_pred, const uint8_t *pred8, int width, int height, const uint8_t *ref8, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask";
add_proto qw/void aom_highbd_comp_mask_upsampled_pred/, "uint16_t *comp_pred, const uint8_t *pred8, int width, int height, const uint8_t *ref8, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask";
add_proto qw/void aom_highbd_comp_mask_upsampled_pred/, "uint16_t *comp_pred, const uint8_t *pred8, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref8, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask, int bd";
}
}

View file

@ -25,6 +25,12 @@ extern "C" {
#define SUBPEL_SHIFTS (1 << SUBPEL_BITS)
#define SUBPEL_TAPS 8
#define SCALE_SUBPEL_BITS 10
#define SCALE_SUBPEL_SHIFTS (1 << SCALE_SUBPEL_BITS)
#define SCALE_SUBPEL_MASK (SCALE_SUBPEL_SHIFTS - 1)
#define SCALE_EXTRA_BITS (SCALE_SUBPEL_BITS - SUBPEL_BITS)
#define SCALE_EXTRA_OFF ((1 << SCALE_EXTRA_BITS) / 2)
typedef int16_t InterpKernel[SUBPEL_TAPS];
#define BIL_SUBPEL_BITS 3

View file

@ -194,9 +194,7 @@ static INLINE int aom_read_symbol_(aom_reader *r, aom_cdf_prob *cdf,
int nsymbs ACCT_STR_PARAM) {
int ret;
ret = aom_read_cdf(r, cdf, nsymbs, ACCT_STR_NAME);
#if CONFIG_EC_ADAPT
update_cdf(cdf, ret, nsymbs);
#endif
return ret;
}

View file

@ -140,9 +140,7 @@ static INLINE void aom_write_cdf(aom_writer *w, int symb,
static INLINE void aom_write_symbol(aom_writer *w, int symb, aom_cdf_prob *cdf,
int nsymbs) {
aom_write_cdf(w, symb, cdf, nsymbs);
#if CONFIG_EC_ADAPT
update_cdf(cdf, symb, nsymbs);
#endif
}
static INLINE void aom_write_tree_as_cdf(aom_writer *w,

View file

@ -18,6 +18,69 @@
#include "./aom_dsp_rtcd.h"
#if CONFIG_CONVOLVE_ROUND
// Blending with alpha mask. Mask values come from the range [0, 64],
// as described for AOM_BLEND_A64 in aom_dsp/blend.h. src0 or src1 can
// be the same as dst, or dst can be different from both sources.
void aom_blend_a64_d32_mask_c(int32_t *dst, uint32_t dst_stride,
const int32_t *src0, uint32_t src0_stride,
const int32_t *src1, uint32_t src1_stride,
const uint8_t *mask, uint32_t mask_stride, int h,
int w, int subh, int subw) {
int i, j;
assert(IMPLIES(src0 == dst, src0_stride == dst_stride));
assert(IMPLIES(src1 == dst, src1_stride == dst_stride));
assert(h >= 1);
assert(w >= 1);
assert(IS_POWER_OF_TWO(h));
assert(IS_POWER_OF_TWO(w));
if (subw == 0 && subh == 0) {
for (i = 0; i < h; ++i) {
for (j = 0; j < w; ++j) {
const int m = mask[i * mask_stride + j];
dst[i * dst_stride + j] = AOM_BLEND_A64(m, src0[i * src0_stride + j],
src1[i * src1_stride + j]);
}
}
} else if (subw == 1 && subh == 1) {
for (i = 0; i < h; ++i) {
for (j = 0; j < w; ++j) {
const int m = ROUND_POWER_OF_TWO(
mask[(2 * i) * mask_stride + (2 * j)] +
mask[(2 * i + 1) * mask_stride + (2 * j)] +
mask[(2 * i) * mask_stride + (2 * j + 1)] +
mask[(2 * i + 1) * mask_stride + (2 * j + 1)],
2);
dst[i * dst_stride + j] = AOM_BLEND_A64(m, src0[i * src0_stride + j],
src1[i * src1_stride + j]);
}
}
} else if (subw == 1 && subh == 0) {
for (i = 0; i < h; ++i) {
for (j = 0; j < w; ++j) {
const int m = AOM_BLEND_AVG(mask[i * mask_stride + (2 * j)],
mask[i * mask_stride + (2 * j + 1)]);
dst[i * dst_stride + j] = AOM_BLEND_A64(m, src0[i * src0_stride + j],
src1[i * src1_stride + j]);
}
}
} else {
for (i = 0; i < h; ++i) {
for (j = 0; j < w; ++j) {
const int m = AOM_BLEND_AVG(mask[(2 * i) * mask_stride + j],
mask[(2 * i + 1) * mask_stride + j]);
dst[i * dst_stride + j] = AOM_BLEND_A64(m, src0[i * src0_stride + j],
src1[i * src1_stride + j]);
}
}
}
}
#endif // CONFIG_CONVOLVE_ROUND
// Blending with alpha mask. Mask values come from the range [0, 64],
// as described for AOM_BLEND_A64 in aom_dsp/blend.h. src0 or src1 can
// be the same as dst, or dst can be different from both sources.

View file

@ -172,15 +172,6 @@ void aom_fdct8x8_c(const int16_t *input, tran_low_t *final_output, int stride) {
}
}
void aom_fdct8x8_1_c(const int16_t *input, tran_low_t *output, int stride) {
int r, c;
tran_low_t sum = 0;
for (r = 0; r < 8; ++r)
for (c = 0; c < 8; ++c) sum += input[r * stride + c];
output[0] = sum;
}
void aom_fdct16x16_c(const int16_t *input, tran_low_t *output, int stride) {
// The 2D transform is done with two passes which are actually pretty
// similar. In the first one, we transform the columns and transpose
@ -361,15 +352,6 @@ void aom_fdct16x16_c(const int16_t *input, tran_low_t *output, int stride) {
}
}
void aom_fdct16x16_1_c(const int16_t *input, tran_low_t *output, int stride) {
int r, c;
int sum = 0;
for (r = 0; r < 16; ++r)
for (c = 0; c < 16; ++c) sum += input[r * stride + c];
output[0] = (tran_low_t)(sum >> 1);
}
static INLINE tran_high_t dct_32_round(tran_high_t input) {
tran_high_t rv = ROUND_POWER_OF_TWO(input, DCT_CONST_BITS);
// TODO(debargha, peter.derivaz): Find new bounds for this assert,
@ -758,15 +740,6 @@ void aom_fdct32x32_rd_c(const int16_t *input, tran_low_t *out, int stride) {
}
}
void aom_fdct32x32_1_c(const int16_t *input, tran_low_t *output, int stride) {
int r, c;
int sum = 0;
for (r = 0; r < 32; ++r)
for (c = 0; c < 32; ++c) sum += input[r * stride + c];
output[0] = (tran_low_t)(sum >> 3);
}
#if CONFIG_HIGHBITDEPTH
void aom_highbd_fdct4x4_c(const int16_t *input, tran_low_t *output,
int stride) {
@ -778,32 +751,17 @@ void aom_highbd_fdct8x8_c(const int16_t *input, tran_low_t *final_output,
aom_fdct8x8_c(input, final_output, stride);
}
void aom_highbd_fdct8x8_1_c(const int16_t *input, tran_low_t *final_output,
int stride) {
aom_fdct8x8_1_c(input, final_output, stride);
}
void aom_highbd_fdct16x16_c(const int16_t *input, tran_low_t *output,
int stride) {
aom_fdct16x16_c(input, output, stride);
}
void aom_highbd_fdct16x16_1_c(const int16_t *input, tran_low_t *output,
int stride) {
aom_fdct16x16_1_c(input, output, stride);
}
void aom_highbd_fdct32x32_c(const int16_t *input, tran_low_t *out, int stride) {
aom_fdct32x32_c(input, out, stride);
}
void aom_highbd_fdct32x32_rd_c(const int16_t *input, tran_low_t *out,
int stride) {
aom_fdct32x32_rd_c(input, out, stride);
}
void aom_highbd_fdct32x32_1_c(const int16_t *input, tran_low_t *out,
int stride) {
aom_fdct32x32_1_c(input, out, stride);
}
#endif // CONFIG_HIGHBITDEPTH

View file

@ -20,10 +20,5 @@ static INLINE tran_high_t saturate_int16(tran_high_t value) {
return result < INT16_MIN ? INT16_MIN : result;
}
static INLINE tran_high_t fdct_round_shift(tran_high_t input) {
tran_high_t rv = ROUND_POWER_OF_TWO(input, DCT_CONST_BITS);
return rv;
}
void aom_fdct32(const tran_high_t *input, tran_high_t *output, int round);
#endif // AOM_DSP_FWD_TXFM_H_

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -23,8 +23,7 @@ extern "C" {
#endif
static INLINE tran_high_t dct_const_round_shift(tran_high_t input) {
tran_high_t rv = ROUND_POWER_OF_TWO(input, DCT_CONST_BITS);
return rv;
return ROUND_POWER_OF_TWO(input, DCT_CONST_BITS);
}
static INLINE tran_high_t check_range(tran_high_t input, int bd) {
@ -51,9 +50,19 @@ static INLINE tran_high_t check_range(tran_high_t input, int bd) {
}
#define WRAPLOW(x) ((int32_t)check_range(x, 8))
#if CONFIG_HIGHBITDEPTH
#define HIGHBD_WRAPLOW(x, bd) ((int32_t)check_range((x), bd))
#endif // CONFIG_HIGHBITDEPTH
#if CONFIG_MRC_TX
// These each perform dct but add coefficients based on a mask
void aom_imrc32x32_1024_add_c(const tran_low_t *input, uint8_t *dest,
int stride, int *mask);
void aom_imrc32x32_135_add_c(const tran_low_t *input, uint8_t *dest, int stride,
int *mask);
void aom_imrc32x32_34_add_c(const tran_low_t *input, uint8_t *dest, int stride,
int *mask);
#endif // CONFIG_MRC_TX
void aom_idct4_c(const tran_low_t *input, tran_low_t *output);
void aom_idct8_c(const tran_low_t *input, tran_low_t *output);
@ -63,7 +72,6 @@ void aom_iadst4_c(const tran_low_t *input, tran_low_t *output);
void aom_iadst8_c(const tran_low_t *input, tran_low_t *output);
void aom_iadst16_c(const tran_low_t *input, tran_low_t *output);
#if CONFIG_HIGHBITDEPTH
void aom_highbd_idct4_c(const tran_low_t *input, tran_low_t *output, int bd);
void aom_highbd_idct8_c(const tran_low_t *input, tran_low_t *output, int bd);
void aom_highbd_idct16_c(const tran_low_t *input, tran_low_t *output, int bd);
@ -78,7 +86,6 @@ static INLINE uint16_t highbd_clip_pixel_add(uint16_t dest, tran_high_t trans,
trans = HIGHBD_WRAPLOW(trans, bd);
return clip_pixel_highbd(dest + (int)trans, bd);
}
#endif
static INLINE uint8_t clip_pixel_add(uint8_t dest, tran_high_t trans) {
trans = WRAPLOW(trans);

View file

@ -926,23 +926,3 @@ void aom_fdct32x32_rd_msa(const int16_t *input, int16_t *out,
out + (8 * i * 32));
}
}
void aom_fdct32x32_1_msa(const int16_t *input, int16_t *out, int32_t stride) {
int sum = LD_HADD(input, stride);
sum += LD_HADD(input + 8, stride);
sum += LD_HADD(input + 16, stride);
sum += LD_HADD(input + 24, stride);
sum += LD_HADD(input + 32 * 8, stride);
sum += LD_HADD(input + 32 * 8 + 8, stride);
sum += LD_HADD(input + 32 * 8 + 16, stride);
sum += LD_HADD(input + 32 * 8 + 24, stride);
sum += LD_HADD(input + 32 * 16, stride);
sum += LD_HADD(input + 32 * 16 + 8, stride);
sum += LD_HADD(input + 32 * 16 + 16, stride);
sum += LD_HADD(input + 32 * 16 + 24, stride);
sum += LD_HADD(input + 32 * 24, stride);
sum += LD_HADD(input + 32 * 24 + 8, stride);
sum += LD_HADD(input + 32 * 24 + 16, stride);
sum += LD_HADD(input + 32 * 24 + 24, stride);
out[0] = (int16_t)(sum >> 3);
}

View file

@ -236,11 +236,3 @@ void aom_fdct16x16_msa(const int16_t *input, int16_t *output,
fdct16x8_1d_row((&tmp_buf[0] + (128 * i)), (output + (128 * i)));
}
}
void aom_fdct16x16_1_msa(const int16_t *input, int16_t *out, int32_t stride) {
int sum = LD_HADD(input, stride);
sum += LD_HADD(input + 8, stride);
sum += LD_HADD(input + 16 * 8, stride);
sum += LD_HADD(input + 16 * 8 + 8, stride);
out[0] = (int16_t)(sum >> 1);
}

View file

@ -186,10 +186,8 @@ int tree_to_cdf(const aom_tree_index *tree, const aom_prob *probs,
for (i = 1; i < nsymbs; i++) {
cdf[i] = AOM_ICDF(AOM_ICDF(cdf[i - 1]) + cdf[i]);
}
// Store symbol count at the end of the CDF
#if CONFIG_EC_ADAPT
// Store symbol count at the end of the CDF
cdf[nsymbs] = 0;
#endif
return nsymbs;
}

View file

@ -148,7 +148,6 @@ static INLINE void av1_tree_to_cdf(const aom_tree_index *tree,
void av1_indices_from_tree(int *ind, int *inv, const aom_tree_index *tree);
#if CONFIG_EC_ADAPT
static INLINE void update_cdf(aom_cdf_prob *cdf, int val, int nsymbs) {
const int rate = 4 + (cdf[nsymbs] > 31) + get_msb(nsymbs);
const int rate2 = 5;
@ -183,7 +182,6 @@ static INLINE void update_cdf(aom_cdf_prob *cdf, int val, int nsymbs) {
#endif
cdf[nsymbs] += (cdf[nsymbs] < 32);
}
#endif
#ifdef __cplusplus
} // extern "C"

View file

@ -256,7 +256,6 @@ void aom_quantize_dc_64x64(const tran_low_t *coeff_ptr, int skip_block,
}
#endif // CONFIG_TX64X64
#if CONFIG_HIGHBITDEPTH
void aom_highbd_quantize_dc(const tran_low_t *coeff_ptr, int n_coeffs,
int skip_block, const int16_t *round_ptr,
const int16_t quant, tran_low_t *qcoeff_ptr,
@ -523,7 +522,6 @@ void aom_highbd_quantize_b_64x64_c(
*eob_ptr = eob + 1;
}
#endif // CONFIG_TX64X64
#endif // CONFIG_HIGHBITDEPTH
#else // CONFIG_AOM_QM
@ -602,7 +600,6 @@ void aom_quantize_dc_64x64(const tran_low_t *coeff_ptr, int skip_block,
}
#endif // CONFIG_TX64X64
#if CONFIG_HIGHBITDEPTH
void aom_highbd_quantize_dc(const tran_low_t *coeff_ptr, int n_coeffs,
int skip_block, const int16_t *round_ptr,
const int16_t quant, tran_low_t *qcoeff_ptr,
@ -716,8 +713,7 @@ void aom_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs,
if (abs_coeff >= zbins[rc != 0]) {
const int64_t tmp1 = abs_coeff + round_ptr[rc != 0];
const int64_t tmp2 = ((tmp1 * quant_ptr[rc != 0]) >> 16) + tmp1;
const uint32_t abs_qcoeff =
(uint32_t)((tmp2 * quant_shift_ptr[rc != 0]) >> 16);
const int abs_qcoeff = (int)((tmp2 * quant_shift_ptr[rc != 0]) >> 16);
qcoeff_ptr[rc] = (tran_low_t)((abs_qcoeff ^ coeff_sign) - coeff_sign);
dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr[rc != 0];
if (abs_qcoeff) eob = i;
@ -767,8 +763,7 @@ void aom_highbd_quantize_b_32x32_c(
const int64_t tmp1 =
abs_coeff + ROUND_POWER_OF_TWO(round_ptr[rc != 0], 1);
const int64_t tmp2 = ((tmp1 * quant_ptr[rc != 0]) >> 16) + tmp1;
const uint32_t abs_qcoeff =
(uint32_t)((tmp2 * quant_shift_ptr[rc != 0]) >> 15);
const int abs_qcoeff = (int)((tmp2 * quant_shift_ptr[rc != 0]) >> 15);
qcoeff_ptr[rc] = (tran_low_t)((abs_qcoeff ^ coeff_sign) - coeff_sign);
dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr[rc != 0] / 2;
if (abs_qcoeff) eob = idx_arr[i];
@ -818,8 +813,7 @@ void aom_highbd_quantize_b_64x64_c(
const int64_t tmp1 =
abs_coeff + ROUND_POWER_OF_TWO(round_ptr[rc != 0], 2);
const int64_t tmp2 = ((tmp1 * quant_ptr[rc != 0]) >> 16) + tmp1;
const uint32_t abs_qcoeff =
(uint32_t)((tmp2 * quant_shift_ptr[rc != 0]) >> 14);
const int abs_qcoeff = (int)((tmp2 * quant_shift_ptr[rc != 0]) >> 14);
qcoeff_ptr[rc] = (tran_low_t)((abs_qcoeff ^ coeff_sign) - coeff_sign);
dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr[rc != 0] / 4;
if (abs_qcoeff) eob = idx_arr[i];
@ -828,5 +822,4 @@ void aom_highbd_quantize_b_64x64_c(
*eob_ptr = eob + 1;
}
#endif // CONFIG_TX64X64
#endif // CONFIG_HIGHBITDEPTH
#endif // CONFIG_AOM_QM

View file

@ -153,10 +153,21 @@ sadMxN(4, 4)
sadMxNxK(4, 4, 3)
sadMxNxK(4, 4, 8)
sadMxNx4D(4, 4)
#if CONFIG_AV1 && CONFIG_EXT_PARTITION_TYPES
sadMxN(4, 16)
sadMxNx4D(4, 16)
sadMxN(16, 4)
sadMxNx4D(16, 4)
sadMxN(8, 32)
sadMxNx4D(8, 32)
sadMxN(32, 8)
sadMxNx4D(32, 8)
#endif
/* clang-format on */
#if CONFIG_HIGHBITDEPTH
static INLINE
static INLINE
unsigned int highbd_sad(const uint8_t *a8, int a_stride, const uint8_t *b8,
int b_stride, int width, int height) {
int y, x;
@ -307,11 +318,22 @@ highbd_sadMxN(4, 4)
highbd_sadMxNxK(4, 4, 3)
highbd_sadMxNxK(4, 4, 8)
highbd_sadMxNx4D(4, 4)
#if CONFIG_AV1 && CONFIG_EXT_PARTITION_TYPES
highbd_sadMxN(4, 16)
highbd_sadMxNx4D(4, 16)
highbd_sadMxN(16, 4)
highbd_sadMxNx4D(16, 4)
highbd_sadMxN(8, 32)
highbd_sadMxNx4D(8, 32)
highbd_sadMxN(32, 8)
highbd_sadMxNx4D(32, 8)
#endif
/* clang-format on */
#endif // CONFIG_HIGHBITDEPTH
#if CONFIG_AV1 && CONFIG_EXT_INTER
static INLINE
static INLINE
unsigned int masked_sad(const uint8_t *src, int src_stride,
const uint8_t *a, int a_stride, const uint8_t *b,
int b_stride, const uint8_t *m, int m_stride,
@ -367,10 +389,17 @@ MASKSADMxN(8, 8)
MASKSADMxN(8, 4)
MASKSADMxN(4, 8)
MASKSADMxN(4, 4)
#if CONFIG_EXT_PARTITION_TYPES
MASKSADMxN(4, 16)
MASKSADMxN(16, 4)
MASKSADMxN(8, 32)
MASKSADMxN(32, 8)
#endif
/* clang-format on */
#if CONFIG_HIGHBITDEPTH
static INLINE
static INLINE
unsigned int highbd_masked_sad(const uint8_t *src8, int src_stride,
const uint8_t *a8, int a_stride,
const uint8_t *b8, int b_stride,
@ -429,6 +458,13 @@ HIGHBD_MASKSADMXN(8, 8)
HIGHBD_MASKSADMXN(8, 4)
HIGHBD_MASKSADMXN(4, 8)
HIGHBD_MASKSADMXN(4, 4)
#if CONFIG_AV1 && CONFIG_EXT_PARTITION_TYPES
HIGHBD_MASKSADMXN(4, 16)
HIGHBD_MASKSADMXN(16, 4)
HIGHBD_MASKSADMXN(8, 32)
HIGHBD_MASKSADMXN(32, 8)
#endif
#endif // CONFIG_HIGHBITDEPTH
#endif // CONFIG_AV1 && CONFIG_EXT_INTER
@ -480,10 +516,17 @@ OBMCSADMxN(8, 8)
OBMCSADMxN(8, 4)
OBMCSADMxN(4, 8)
OBMCSADMxN(4, 4)
#if CONFIG_AV1 && CONFIG_EXT_PARTITION_TYPES
OBMCSADMxN(4, 16)
OBMCSADMxN(16, 4)
OBMCSADMxN(8, 32)
OBMCSADMxN(32, 8)
#endif
/* clang-format on */
#if CONFIG_HIGHBITDEPTH
static INLINE
static INLINE
unsigned int highbd_obmc_sad(const uint8_t *pre8, int pre_stride,
const int32_t *wsrc, const int32_t *mask,
int width, int height) {
@ -529,6 +572,13 @@ HIGHBD_OBMCSADMXN(8, 8)
HIGHBD_OBMCSADMXN(8, 4)
HIGHBD_OBMCSADMXN(4, 8)
HIGHBD_OBMCSADMXN(4, 4)
#if CONFIG_AV1 && CONFIG_EXT_PARTITION_TYPES
HIGHBD_OBMCSADMXN(4, 16)
HIGHBD_OBMCSADMXN(16, 4)
HIGHBD_OBMCSADMXN(8, 32)
HIGHBD_OBMCSADMXN(32, 8)
#endif
/* clang-format on */
#endif // CONFIG_HIGHBITDEPTH
#endif // CONFIG_AV1 && CONFIG_MOTION_VAR

View file

@ -508,17 +508,19 @@ SIMD_INLINE v256 v256_shr_s32(v256 a, unsigned int c) {
to enforce that. */
#define v256_shl_n_byte(a, n) \
((n) < 16 ? v256_from_v128(v128_or(v128_shl_n_byte(a.hi, n), \
v128_shr_n_byte(a.lo, 16 - (n))), \
v128_shr_n_byte(a.lo, (16 - (n)) & 31)), \
v128_shl_n_byte(a.lo, (n))) \
: v256_from_v128((n) > 16 ? v128_shl_n_byte(a.lo, (n)-16) : a.lo, \
v128_zero()))
: v256_from_v128( \
(n) > 16 ? v128_shl_n_byte(a.lo, ((n)-16) & 31) : a.lo, \
v128_zero()))
#define v256_shr_n_byte(a, n) \
((n) < 16 ? v256_from_v128(v128_shr_n_byte(a.hi, n), \
v128_or(v128_shr_n_byte(a.lo, n), \
v128_shl_n_byte(a.hi, 16 - (n)))) \
: v256_from_v128(v128_zero(), \
(n) > 16 ? v128_shr_n_byte(a.hi, (n)-16) : a.hi))
#define v256_shr_n_byte(a, n) \
((n) < 16 ? v256_from_v128(v128_shr_n_byte(a.hi, n), \
v128_or(v128_shr_n_byte(a.lo, n), \
v128_shl_n_byte(a.hi, (16 - (n)) & 31))) \
: v256_from_v128( \
v128_zero(), \
(n) > 16 ? v128_shr_n_byte(a.hi, ((n)-16) & 31) : a.hi))
#define v256_align(a, b, c) \
((c) ? v256_or(v256_shr_n_byte(b, c), v256_shl_n_byte(a, 32 - (c))) : b)

View file

@ -21,6 +21,27 @@
#define UNIT_QUANT_SHIFT 2
#define UNIT_QUANT_FACTOR (1 << UNIT_QUANT_SHIFT)
typedef struct txfm_param {
// for both forward and inverse transforms
int tx_type;
int tx_size;
int lossless;
int bd;
#if CONFIG_MRC_TX || CONFIG_LGT
int stride;
uint8_t *dst;
#endif // CONFIG_MRC_TX || CONFIG_LGT
#if CONFIG_LGT
int is_inter;
int mode;
#endif
// for inverse transforms only
#if CONFIG_ADAPT_SCAN
const int16_t *eob_threshold;
#endif
int eob;
} TxfmParam;
// Constants:
// for (int i = 1; i< 32; ++i)
// printf("static const int cospi_%d_64 = %.0f;\n", i,
@ -67,4 +88,62 @@ static const tran_high_t sinpi_4_9 = 15212;
// 16384 * sqrt(2)
static const tran_high_t Sqrt2 = 23170;
static INLINE tran_high_t fdct_round_shift(tran_high_t input) {
tran_high_t rv = ROUND_POWER_OF_TWO(input, DCT_CONST_BITS);
return rv;
}
#if CONFIG_LGT
// The Line Graph Transforms (LGTs) matrices are written as follows.
// Each 2D array is 16384 times an LGT matrix, which is the matrix of
// eigenvectors of the graph Laplacian matrices for the line graph.
// LGT4 name: lgt4_140
// Self loops: 1.400, 0.000, 0.000, 0.000
// Edges: 1.000, 1.000, 1.000
static const tran_high_t lgt4_140[4][4] = {
{ 4206, 9518, 13524, 15674 },
{ 11552, 14833, 1560, -13453 },
{ 15391, -1906, -14393, 9445 },
{ 12201, -14921, 12016, -4581 },
};
// LGT4 name: lgt4_170
// Self loops: 1.700, 0.000, 0.000, 0.000
// Edges: 1.000, 1.000, 1.000
static const tran_high_t lgt4_170[4][4] = {
{ 3636, 9287, 13584, 15902 },
{ 10255, 15563, 2470, -13543 },
{ 14786, 711, -15249, 9231 },
{ 14138, -14420, 10663, -3920 },
};
// LGT8 name: lgt8_150
// Self loops: 1.500, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000
// Edges: 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000
static const tran_high_t lgt8_150[8][8] = {
{ 2075, 5110, 7958, 10511, 12677, 14376, 15544, 16140 },
{ 6114, 13307, 16196, 13845, 7015, -2084, -10509, -15534 },
{ 9816, 16163, 8717, -6168, -15790, -11936, 2104, 14348 },
{ 12928, 12326, -7340, -15653, 242, 15763, 6905, -12632 },
{ 15124, 3038, -16033, 1758, 15507, -6397, -13593, 10463 },
{ 15895, -7947, -7947, 15895, -7947, -7947, 15895, -7947 },
{ 14325, -15057, 9030, 1050, -10659, 15483, -13358, 5236 },
{ 9054, -12580, 14714, -15220, 14043, -11312, 7330, -2537 },
};
// LGT8 name: lgt8_170
// Self loops: 1.700, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000
// Edges: 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, 1.000
static const tran_high_t lgt8_170[8][8] = {
{ 1858, 4947, 7850, 10458, 12672, 14411, 15607, 16217 },
{ 5494, 13022, 16256, 14129, 7343, -1864, -10456, -15601 },
{ 8887, 16266, 9500, -5529, -15749, -12273, 1876, 14394 },
{ 11870, 13351, -6199, -15984, -590, 15733, 7273, -12644 },
{ 14248, 5137, -15991, 291, 15893, -5685, -13963, 10425 },
{ 15716, -5450, -10010, 15929, -6665, -8952, 16036, -7835 },
{ 15533, -13869, 6559, 3421, -12009, 15707, -13011, 5018 },
{ 11357, -13726, 14841, -14600, 13025, -10259, 6556, -2254 },
};
#endif // CONFIG_LGT
#endif // AOM_DSP_TXFM_COMMON_H_

View file

@ -9,6 +9,8 @@
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
*/
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "./aom_config.h"
#include "./aom_dsp_rtcd.h"
@ -20,6 +22,9 @@
#include "aom_dsp/aom_filter.h"
#include "aom_dsp/blend.h"
#include "./av1_rtcd.h"
#include "av1/common/filter.h"
uint32_t aom_get4x4sse_cs_c(const uint8_t *a, int a_stride, const uint8_t *b,
int b_stride) {
int distortion = 0;
@ -246,6 +251,13 @@ VARIANCES(4, 2)
VARIANCES(2, 4)
VARIANCES(2, 2)
#if CONFIG_AV1 && CONFIG_EXT_PARTITION_TYPES
VARIANCES(4, 16)
VARIANCES(16, 4)
VARIANCES(8, 32)
VARIANCES(32, 8)
#endif
GET_VAR(16, 16)
GET_VAR(8, 8)
@ -271,33 +283,66 @@ void aom_comp_avg_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width,
// Get pred block from up-sampled reference.
void aom_upsampled_pred_c(uint8_t *comp_pred, int width, int height,
const uint8_t *ref, int ref_stride) {
int i, j, k;
int stride = ref_stride << 3;
for (i = 0; i < height; i++) {
for (j = 0, k = 0; j < width; j++, k += 8) {
comp_pred[j] = ref[k];
int subpel_x_q3, int subpel_y_q3, const uint8_t *ref,
int ref_stride) {
if (!subpel_x_q3 && !subpel_y_q3) {
int i;
for (i = 0; i < height; i++) {
memcpy(comp_pred, ref, width * sizeof(*comp_pred));
comp_pred += width;
ref += ref_stride;
}
} else {
InterpFilterParams filter;
filter = av1_get_interp_filter_params(EIGHTTAP_REGULAR);
if (!subpel_y_q3) {
const int16_t *kernel;
kernel = av1_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1);
/*Directly call C version to allow this to work for small (2x2) sizes.*/
aom_convolve8_horiz_c(ref, ref_stride, comp_pred, width, kernel, 16, NULL,
-1, width, height);
} else if (!subpel_x_q3) {
const int16_t *kernel;
kernel = av1_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1);
/*Directly call C version to allow this to work for small (2x2) sizes.*/
aom_convolve8_vert_c(ref, ref_stride, comp_pred, width, NULL, -1, kernel,
16, width, height);
} else {
DECLARE_ALIGNED(16, uint8_t,
temp[((MAX_SB_SIZE * 2 + 16) + 16) * MAX_SB_SIZE]);
const int16_t *kernel_x;
const int16_t *kernel_y;
int intermediate_height;
kernel_x = av1_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1);
kernel_y = av1_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1);
intermediate_height =
(((height - 1) * 8 + subpel_y_q3) >> 3) + filter.taps;
assert(intermediate_height <= (MAX_SB_SIZE * 2 + 16) + 16);
/*Directly call C versions to allow this to work for small (2x2) sizes.*/
aom_convolve8_horiz_c(ref - ref_stride * ((filter.taps >> 1) - 1),
ref_stride, temp, MAX_SB_SIZE, kernel_x, 16, NULL,
-1, width, intermediate_height);
aom_convolve8_vert_c(temp + MAX_SB_SIZE * ((filter.taps >> 1) - 1),
MAX_SB_SIZE, comp_pred, width, NULL, -1, kernel_y,
16, width, height);
}
comp_pred += width;
ref += stride;
}
}
void aom_comp_avg_upsampled_pred_c(uint8_t *comp_pred, const uint8_t *pred,
int width, int height, const uint8_t *ref,
int width, int height, int subpel_x_q3,
int subpel_y_q3, const uint8_t *ref,
int ref_stride) {
int i, j;
int stride = ref_stride << 3;
aom_upsampled_pred(comp_pred, width, height, subpel_x_q3, subpel_y_q3, ref,
ref_stride);
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
const int tmp = ref[(j << 3)] + pred[j];
comp_pred[j] = ROUND_POWER_OF_TWO(tmp, 1);
comp_pred[j] = ROUND_POWER_OF_TWO(comp_pred[j] + pred[j], 1);
}
comp_pred += width;
pred += width;
ref += stride;
}
}
@ -611,6 +656,13 @@ HIGHBD_VARIANCES(4, 2)
HIGHBD_VARIANCES(2, 4)
HIGHBD_VARIANCES(2, 2)
#if CONFIG_AV1 && CONFIG_EXT_PARTITION_TYPES
HIGHBD_VARIANCES(4, 16)
HIGHBD_VARIANCES(16, 4)
HIGHBD_VARIANCES(8, 32)
HIGHBD_VARIANCES(32, 8)
#endif
HIGHBD_GET_VAR(8)
HIGHBD_GET_VAR(16)
@ -637,37 +689,74 @@ void aom_highbd_comp_avg_pred_c(uint16_t *comp_pred, const uint8_t *pred8,
}
void aom_highbd_upsampled_pred_c(uint16_t *comp_pred, int width, int height,
const uint8_t *ref8, int ref_stride) {
int i, j;
int stride = ref_stride << 3;
uint16_t *ref = CONVERT_TO_SHORTPTR(ref8);
for (i = 0; i < height; ++i) {
for (j = 0; j < width; ++j) {
comp_pred[j] = ref[(j << 3)];
int subpel_x_q3, int subpel_y_q3,
const uint8_t *ref8, int ref_stride, int bd) {
if (!subpel_x_q3 && !subpel_y_q3) {
const uint16_t *ref;
int i;
ref = CONVERT_TO_SHORTPTR(ref8);
for (i = 0; i < height; i++) {
memcpy(comp_pred, ref, width * sizeof(*comp_pred));
comp_pred += width;
ref += ref_stride;
}
} else {
InterpFilterParams filter;
filter = av1_get_interp_filter_params(EIGHTTAP_REGULAR);
if (!subpel_y_q3) {
const int16_t *kernel;
kernel = av1_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1);
/*Directly call C version to allow this to work for small (2x2) sizes.*/
aom_highbd_convolve8_horiz_c(ref8, ref_stride,
CONVERT_TO_BYTEPTR(comp_pred), width, kernel,
16, NULL, -1, width, height, bd);
} else if (!subpel_x_q3) {
const int16_t *kernel;
kernel = av1_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1);
/*Directly call C version to allow this to work for small (2x2) sizes.*/
aom_highbd_convolve8_vert_c(ref8, ref_stride,
CONVERT_TO_BYTEPTR(comp_pred), width, NULL,
-1, kernel, 16, width, height, bd);
} else {
DECLARE_ALIGNED(16, uint16_t,
temp[((MAX_SB_SIZE + 16) + 16) * MAX_SB_SIZE]);
const int16_t *kernel_x;
const int16_t *kernel_y;
int intermediate_height;
kernel_x = av1_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1);
kernel_y = av1_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1);
intermediate_height =
(((height - 1) * 8 + subpel_y_q3) >> 3) + filter.taps;
assert(intermediate_height <= (MAX_SB_SIZE * 2 + 16) + 16);
/*Directly call C versions to allow this to work for small (2x2) sizes.*/
aom_highbd_convolve8_horiz_c(ref8 - ref_stride * ((filter.taps >> 1) - 1),
ref_stride, CONVERT_TO_BYTEPTR(temp),
MAX_SB_SIZE, kernel_x, 16, NULL, -1, width,
intermediate_height, bd);
aom_highbd_convolve8_vert_c(
CONVERT_TO_BYTEPTR(temp + MAX_SB_SIZE * ((filter.taps >> 1) - 1)),
MAX_SB_SIZE, CONVERT_TO_BYTEPTR(comp_pred), width, NULL, -1, kernel_y,
16, width, height, bd);
}
comp_pred += width;
ref += stride;
}
}
void aom_highbd_comp_avg_upsampled_pred_c(uint16_t *comp_pred,
const uint8_t *pred8, int width,
int height, const uint8_t *ref8,
int ref_stride) {
int height, int subpel_x_q3,
int subpel_y_q3, const uint8_t *ref8,
int ref_stride, int bd) {
int i, j;
int stride = ref_stride << 3;
uint16_t *pred = CONVERT_TO_SHORTPTR(pred8);
uint16_t *ref = CONVERT_TO_SHORTPTR(ref8);
const uint16_t *pred = CONVERT_TO_SHORTPTR(pred8);
aom_highbd_upsampled_pred(comp_pred, width, height, subpel_x_q3, subpel_y_q3,
ref8, ref_stride, bd);
for (i = 0; i < height; ++i) {
for (j = 0; j < width; ++j) {
const int tmp = pred[j] + ref[(j << 3)];
comp_pred[j] = ROUND_POWER_OF_TWO(tmp, 1);
comp_pred[j] = ROUND_POWER_OF_TWO(pred[j] + comp_pred[j], 1);
}
comp_pred += width;
pred += width;
ref += stride;
}
}
#endif // CONFIG_HIGHBITDEPTH
@ -694,22 +783,23 @@ void aom_comp_mask_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width,
}
void aom_comp_mask_upsampled_pred_c(uint8_t *comp_pred, const uint8_t *pred,
int width, int height, const uint8_t *ref,
int width, int height, int subpel_x_q3,
int subpel_y_q3, const uint8_t *ref,
int ref_stride, const uint8_t *mask,
int mask_stride, int invert_mask) {
int i, j;
int stride = ref_stride << 3;
aom_upsampled_pred(comp_pred, width, height, subpel_x_q3, subpel_y_q3, ref,
ref_stride);
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
if (!invert_mask)
comp_pred[j] = AOM_BLEND_A64(mask[j], ref[(j << 3)], pred[j]);
comp_pred[j] = AOM_BLEND_A64(mask[j], comp_pred[j], pred[j]);
else
comp_pred[j] = AOM_BLEND_A64(mask[j], pred[j], ref[(j << 3)]);
comp_pred[j] = AOM_BLEND_A64(mask[j], pred[j], comp_pred[j]);
}
comp_pred += width;
pred += width;
ref += stride;
mask += mask_stride;
}
}
@ -753,6 +843,13 @@ MASK_SUBPIX_VAR(128, 64)
MASK_SUBPIX_VAR(128, 128)
#endif // CONFIG_EXT_PARTITION
#if CONFIG_EXT_PARTITION_TYPES
MASK_SUBPIX_VAR(4, 16)
MASK_SUBPIX_VAR(16, 4)
MASK_SUBPIX_VAR(8, 32)
MASK_SUBPIX_VAR(32, 8)
#endif
#if CONFIG_HIGHBITDEPTH
void aom_highbd_comp_mask_pred_c(uint16_t *comp_pred, const uint8_t *pred8,
int width, int height, const uint8_t *ref8,
@ -775,26 +872,24 @@ void aom_highbd_comp_mask_pred_c(uint16_t *comp_pred, const uint8_t *pred8,
}
}
void aom_highbd_comp_mask_upsampled_pred_c(uint16_t *comp_pred,
const uint8_t *pred8, int width,
int height, const uint8_t *ref8,
int ref_stride, const uint8_t *mask,
int mask_stride, int invert_mask) {
void aom_highbd_comp_mask_upsampled_pred_c(
uint16_t *comp_pred, const uint8_t *pred8, int width, int height,
int subpel_x_q3, int subpel_y_q3, const uint8_t *ref8, int ref_stride,
const uint8_t *mask, int mask_stride, int invert_mask, int bd) {
int i, j;
int stride = ref_stride << 3;
uint16_t *pred = CONVERT_TO_SHORTPTR(pred8);
uint16_t *ref = CONVERT_TO_SHORTPTR(ref8);
aom_highbd_upsampled_pred(comp_pred, width, height, subpel_x_q3, subpel_y_q3,
ref8, ref_stride, bd);
for (i = 0; i < height; ++i) {
for (j = 0; j < width; ++j) {
if (!invert_mask)
comp_pred[j] = AOM_BLEND_A64(mask[j], ref[j << 3], pred[j]);
comp_pred[j] = AOM_BLEND_A64(mask[j], comp_pred[j], pred[j]);
else
comp_pred[j] = AOM_BLEND_A64(mask[j], pred[j], ref[j << 3]);
comp_pred[j] = AOM_BLEND_A64(mask[j], pred[j], comp_pred[j]);
}
comp_pred += width;
pred += width;
ref += stride;
mask += mask_stride;
}
}
@ -884,6 +979,13 @@ HIGHBD_MASK_SUBPIX_VAR(64, 128)
HIGHBD_MASK_SUBPIX_VAR(128, 64)
HIGHBD_MASK_SUBPIX_VAR(128, 128)
#endif // CONFIG_EXT_PARTITION
#if CONFIG_EXT_PARTITION_TYPES
HIGHBD_MASK_SUBPIX_VAR(4, 16)
HIGHBD_MASK_SUBPIX_VAR(16, 4)
HIGHBD_MASK_SUBPIX_VAR(8, 32)
HIGHBD_MASK_SUBPIX_VAR(32, 8)
#endif
#endif // CONFIG_HIGHBITDEPTH
#endif // CONFIG_AV1 && CONFIG_EXT_INTER
@ -983,6 +1085,17 @@ OBMC_VAR(128, 128)
OBMC_SUBPIX_VAR(128, 128)
#endif // CONFIG_EXT_PARTITION
#if CONFIG_EXT_PARTITION_TYPES
OBMC_VAR(4, 16)
OBMC_SUBPIX_VAR(4, 16)
OBMC_VAR(16, 4)
OBMC_SUBPIX_VAR(16, 4)
OBMC_VAR(8, 32)
OBMC_SUBPIX_VAR(8, 32)
OBMC_VAR(32, 8)
OBMC_SUBPIX_VAR(32, 8)
#endif
#if CONFIG_HIGHBITDEPTH
static INLINE void highbd_obmc_variance64(const uint8_t *pre8, int pre_stride,
const int32_t *wsrc,
@ -1164,5 +1277,16 @@ HIGHBD_OBMC_SUBPIX_VAR(128, 64)
HIGHBD_OBMC_VAR(128, 128)
HIGHBD_OBMC_SUBPIX_VAR(128, 128)
#endif // CONFIG_EXT_PARTITION
#if CONFIG_EXT_PARTITION_TYPES
HIGHBD_OBMC_VAR(4, 16)
HIGHBD_OBMC_SUBPIX_VAR(4, 16)
HIGHBD_OBMC_VAR(16, 4)
HIGHBD_OBMC_SUBPIX_VAR(16, 4)
HIGHBD_OBMC_VAR(8, 32)
HIGHBD_OBMC_SUBPIX_VAR(8, 32)
HIGHBD_OBMC_VAR(32, 8)
HIGHBD_OBMC_SUBPIX_VAR(32, 8)
#endif
#endif // CONFIG_HIGHBITDEPTH
#endif // CONFIG_AV1 && CONFIG_MOTION_VAR

View file

@ -85,147 +85,6 @@ void aom_fdct8x8_1_sse2(const int16_t *input, tran_low_t *output, int stride) {
output[0] = (tran_low_t)_mm_cvtsi128_si32(in1);
}
void aom_fdct16x16_1_sse2(const int16_t *input, tran_low_t *output,
int stride) {
__m128i in0, in1, in2, in3;
__m128i u0, u1;
__m128i sum = _mm_setzero_si128();
int i;
for (i = 0; i < 2; ++i) {
in0 = _mm_load_si128((const __m128i *)(input + 0 * stride + 0));
in1 = _mm_load_si128((const __m128i *)(input + 0 * stride + 8));
in2 = _mm_load_si128((const __m128i *)(input + 1 * stride + 0));
in3 = _mm_load_si128((const __m128i *)(input + 1 * stride + 8));
u0 = _mm_add_epi16(in0, in1);
u1 = _mm_add_epi16(in2, in3);
sum = _mm_add_epi16(sum, u0);
in0 = _mm_load_si128((const __m128i *)(input + 2 * stride + 0));
in1 = _mm_load_si128((const __m128i *)(input + 2 * stride + 8));
in2 = _mm_load_si128((const __m128i *)(input + 3 * stride + 0));
in3 = _mm_load_si128((const __m128i *)(input + 3 * stride + 8));
sum = _mm_add_epi16(sum, u1);
u0 = _mm_add_epi16(in0, in1);
u1 = _mm_add_epi16(in2, in3);
sum = _mm_add_epi16(sum, u0);
in0 = _mm_load_si128((const __m128i *)(input + 4 * stride + 0));
in1 = _mm_load_si128((const __m128i *)(input + 4 * stride + 8));
in2 = _mm_load_si128((const __m128i *)(input + 5 * stride + 0));
in3 = _mm_load_si128((const __m128i *)(input + 5 * stride + 8));
sum = _mm_add_epi16(sum, u1);
u0 = _mm_add_epi16(in0, in1);
u1 = _mm_add_epi16(in2, in3);
sum = _mm_add_epi16(sum, u0);
in0 = _mm_load_si128((const __m128i *)(input + 6 * stride + 0));
in1 = _mm_load_si128((const __m128i *)(input + 6 * stride + 8));
in2 = _mm_load_si128((const __m128i *)(input + 7 * stride + 0));
in3 = _mm_load_si128((const __m128i *)(input + 7 * stride + 8));
sum = _mm_add_epi16(sum, u1);
u0 = _mm_add_epi16(in0, in1);
u1 = _mm_add_epi16(in2, in3);
sum = _mm_add_epi16(sum, u0);
sum = _mm_add_epi16(sum, u1);
input += 8 * stride;
}
u0 = _mm_setzero_si128();
in0 = _mm_unpacklo_epi16(u0, sum);
in1 = _mm_unpackhi_epi16(u0, sum);
in0 = _mm_srai_epi32(in0, 16);
in1 = _mm_srai_epi32(in1, 16);
sum = _mm_add_epi32(in0, in1);
in0 = _mm_unpacklo_epi32(sum, u0);
in1 = _mm_unpackhi_epi32(sum, u0);
sum = _mm_add_epi32(in0, in1);
in0 = _mm_srli_si128(sum, 8);
in1 = _mm_add_epi32(sum, in0);
in1 = _mm_srai_epi32(in1, 1);
output[0] = (tran_low_t)_mm_cvtsi128_si32(in1);
}
void aom_fdct32x32_1_sse2(const int16_t *input, tran_low_t *output,
int stride) {
__m128i in0, in1, in2, in3;
__m128i u0, u1;
__m128i sum = _mm_setzero_si128();
int i;
for (i = 0; i < 8; ++i) {
in0 = _mm_load_si128((const __m128i *)(input + 0));
in1 = _mm_load_si128((const __m128i *)(input + 8));
in2 = _mm_load_si128((const __m128i *)(input + 16));
in3 = _mm_load_si128((const __m128i *)(input + 24));
input += stride;
u0 = _mm_add_epi16(in0, in1);
u1 = _mm_add_epi16(in2, in3);
sum = _mm_add_epi16(sum, u0);
in0 = _mm_load_si128((const __m128i *)(input + 0));
in1 = _mm_load_si128((const __m128i *)(input + 8));
in2 = _mm_load_si128((const __m128i *)(input + 16));
in3 = _mm_load_si128((const __m128i *)(input + 24));
input += stride;
sum = _mm_add_epi16(sum, u1);
u0 = _mm_add_epi16(in0, in1);
u1 = _mm_add_epi16(in2, in3);
sum = _mm_add_epi16(sum, u0);
in0 = _mm_load_si128((const __m128i *)(input + 0));
in1 = _mm_load_si128((const __m128i *)(input + 8));
in2 = _mm_load_si128((const __m128i *)(input + 16));
in3 = _mm_load_si128((const __m128i *)(input + 24));
input += stride;
sum = _mm_add_epi16(sum, u1);
u0 = _mm_add_epi16(in0, in1);
u1 = _mm_add_epi16(in2, in3);
sum = _mm_add_epi16(sum, u0);
in0 = _mm_load_si128((const __m128i *)(input + 0));
in1 = _mm_load_si128((const __m128i *)(input + 8));
in2 = _mm_load_si128((const __m128i *)(input + 16));
in3 = _mm_load_si128((const __m128i *)(input + 24));
input += stride;
sum = _mm_add_epi16(sum, u1);
u0 = _mm_add_epi16(in0, in1);
u1 = _mm_add_epi16(in2, in3);
sum = _mm_add_epi16(sum, u0);
sum = _mm_add_epi16(sum, u1);
}
u0 = _mm_setzero_si128();
in0 = _mm_unpacklo_epi16(u0, sum);
in1 = _mm_unpackhi_epi16(u0, sum);
in0 = _mm_srai_epi32(in0, 16);
in1 = _mm_srai_epi32(in1, 16);
sum = _mm_add_epi32(in0, in1);
in0 = _mm_unpacklo_epi32(sum, u0);
in1 = _mm_unpackhi_epi32(sum, u0);
sum = _mm_add_epi32(in0, in1);
in0 = _mm_srli_si128(sum, 8);
in1 = _mm_add_epi32(sum, in0);
in1 = _mm_srai_epi32(in1, 3);
output[0] = (tran_low_t)_mm_cvtsi128_si32(in1);
}
#define DCT_HIGH_BIT_DEPTH 0
#define FDCT4x4_2D aom_fdct4x4_sse2
#define FDCT8x8_2D aom_fdct8x8_sse2

View file

@ -0,0 +1,171 @@
/*
* Copyright (c) 2017, Alliance for Open Media. All rights reserved
*
* This source code is subject to the terms of the BSD 2 Clause License and
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
* was not distributed with this source code in the LICENSE file, you can
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
* Media Patent License 1.0 was not distributed with this source code in the
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
*/
#include <immintrin.h>
#include "./aom_dsp_rtcd.h"
#include "aom/aom_integer.h"
static INLINE void init_one_qp(const __m128i *p, __m256i *qp) {
const __m128i sign = _mm_srai_epi16(*p, 15);
const __m128i dc = _mm_unpacklo_epi16(*p, sign);
const __m128i ac = _mm_unpackhi_epi16(*p, sign);
*qp = _mm256_insertf128_si256(_mm256_castsi128_si256(dc), ac, 1);
}
static INLINE void update_qp(__m256i *qp) {
int i;
for (i = 0; i < 5; ++i) {
qp[i] = _mm256_permute2x128_si256(qp[i], qp[i], 0x11);
}
}
static INLINE void init_qp(const int16_t *zbin_ptr, const int16_t *round_ptr,
const int16_t *quant_ptr, const int16_t *dequant_ptr,
const int16_t *quant_shift_ptr, __m256i *qp) {
const __m128i zbin = _mm_loadu_si128((const __m128i *)zbin_ptr);
const __m128i round = _mm_loadu_si128((const __m128i *)round_ptr);
const __m128i quant = _mm_loadu_si128((const __m128i *)quant_ptr);
const __m128i dequant = _mm_loadu_si128((const __m128i *)dequant_ptr);
const __m128i quant_shift = _mm_loadu_si128((const __m128i *)quant_shift_ptr);
init_one_qp(&zbin, &qp[0]);
init_one_qp(&round, &qp[1]);
init_one_qp(&quant, &qp[2]);
init_one_qp(&dequant, &qp[3]);
init_one_qp(&quant_shift, &qp[4]);
}
// Note:
// *x is vector multiplied by *y which is 16 int32_t parallel multiplication
// and right shift 16. The output, 16 int32_t is save in *p.
static INLINE void mm256_mul_shift_epi32(const __m256i *x, const __m256i *y,
__m256i *p) {
__m256i prod_lo = _mm256_mul_epi32(*x, *y);
__m256i prod_hi = _mm256_srli_epi64(*x, 32);
const __m256i mult_hi = _mm256_srli_epi64(*y, 32);
prod_hi = _mm256_mul_epi32(prod_hi, mult_hi);
prod_lo = _mm256_srli_epi64(prod_lo, 16);
const __m256i mask = _mm256_set_epi32(0, -1, 0, -1, 0, -1, 0, -1);
prod_lo = _mm256_and_si256(prod_lo, mask);
prod_hi = _mm256_srli_epi64(prod_hi, 16);
prod_hi = _mm256_slli_epi64(prod_hi, 32);
*p = _mm256_or_si256(prod_lo, prod_hi);
}
static INLINE void quantize(const __m256i *qp, __m256i *c,
const int16_t *iscan_ptr, tran_low_t *qcoeff,
tran_low_t *dqcoeff, __m256i *eob) {
const __m256i abs = _mm256_abs_epi32(*c);
const __m256i flag1 = _mm256_cmpgt_epi32(abs, qp[0]);
__m256i flag2 = _mm256_cmpeq_epi32(abs, qp[0]);
flag2 = _mm256_or_si256(flag1, flag2);
const int32_t nzflag = _mm256_movemask_epi8(flag2);
if (LIKELY(nzflag)) {
__m256i q = _mm256_add_epi32(abs, qp[1]);
__m256i tmp;
mm256_mul_shift_epi32(&q, &qp[2], &tmp);
q = _mm256_add_epi32(tmp, q);
mm256_mul_shift_epi32(&q, &qp[4], &q);
__m256i dq = _mm256_mullo_epi32(q, qp[3]);
q = _mm256_sign_epi32(q, *c);
dq = _mm256_sign_epi32(dq, *c);
q = _mm256_and_si256(q, flag2);
dq = _mm256_and_si256(dq, flag2);
_mm256_storeu_si256((__m256i *)qcoeff, q);
_mm256_storeu_si256((__m256i *)dqcoeff, dq);
const __m128i isc = _mm_loadu_si128((const __m128i *)iscan_ptr);
const __m128i zr = _mm_setzero_si128();
const __m128i lo = _mm_unpacklo_epi16(isc, zr);
const __m128i hi = _mm_unpackhi_epi16(isc, zr);
const __m256i iscan =
_mm256_insertf128_si256(_mm256_castsi128_si256(lo), hi, 1);
const __m256i zero = _mm256_setzero_si256();
const __m256i zc = _mm256_cmpeq_epi32(dq, zero);
const __m256i nz = _mm256_cmpeq_epi32(zc, zero);
__m256i cur_eob = _mm256_sub_epi32(iscan, nz);
cur_eob = _mm256_and_si256(cur_eob, nz);
*eob = _mm256_max_epi32(cur_eob, *eob);
} else {
const __m256i zero = _mm256_setzero_si256();
_mm256_storeu_si256((__m256i *)qcoeff, zero);
_mm256_storeu_si256((__m256i *)dqcoeff, zero);
}
}
void aom_highbd_quantize_b_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs,
int skip_block, const int16_t *zbin_ptr,
const int16_t *round_ptr,
const int16_t *quant_ptr,
const int16_t *quant_shift_ptr,
tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr,
const int16_t *dequant_ptr, uint16_t *eob_ptr,
const int16_t *scan, const int16_t *iscan) {
(void)scan;
const unsigned int step = 8;
if (LIKELY(!skip_block)) {
__m256i qp[5], coeff;
init_qp(zbin_ptr, round_ptr, quant_ptr, dequant_ptr, quant_shift_ptr, qp);
coeff = _mm256_loadu_si256((const __m256i *)coeff_ptr);
__m256i eob = _mm256_setzero_si256();
quantize(qp, &coeff, iscan, qcoeff_ptr, dqcoeff_ptr, &eob);
coeff_ptr += step;
qcoeff_ptr += step;
dqcoeff_ptr += step;
iscan += step;
n_coeffs -= step;
update_qp(qp);
while (n_coeffs > 0) {
coeff = _mm256_loadu_si256((const __m256i *)coeff_ptr);
quantize(qp, &coeff, iscan, qcoeff_ptr, dqcoeff_ptr, &eob);
coeff_ptr += step;
qcoeff_ptr += step;
dqcoeff_ptr += step;
iscan += step;
n_coeffs -= step;
}
{
__m256i eob_s;
eob_s = _mm256_shuffle_epi32(eob, 0xe);
eob = _mm256_max_epi16(eob, eob_s);
eob_s = _mm256_shufflelo_epi16(eob, 0xe);
eob = _mm256_max_epi16(eob, eob_s);
eob_s = _mm256_shufflelo_epi16(eob, 1);
eob = _mm256_max_epi16(eob, eob_s);
const __m128i final_eob = _mm_max_epi16(_mm256_castsi256_si128(eob),
_mm256_extractf128_si256(eob, 1));
*eob_ptr = _mm_extract_epi16(final_eob, 0);
}
} else {
do {
const __m256i zero = _mm256_setzero_si256();
_mm256_storeu_si256((__m256i *)qcoeff_ptr, zero);
_mm256_storeu_si256((__m256i *)dqcoeff_ptr, zero);
qcoeff_ptr += step;
dqcoeff_ptr += step;
n_coeffs -= step;
} while (n_coeffs > 0);
*eob_ptr = 0;
}
}

View file

@ -15,7 +15,6 @@
#include "aom_mem/aom_mem.h"
#include "aom_ports/mem.h"
#if CONFIG_HIGHBITDEPTH
void aom_highbd_quantize_b_sse2(const tran_low_t *coeff_ptr, intptr_t count,
int skip_block, const int16_t *zbin_ptr,
const int16_t *round_ptr,
@ -152,4 +151,3 @@ void aom_highbd_quantize_b_32x32_sse2(
}
*eob_ptr = eob + 1;
}
#endif

View file

@ -288,3 +288,9 @@ HIGH_SADNXN4D 8, 8
HIGH_SADNXN4D 8, 4
HIGH_SADNXN4D 4, 8
HIGH_SADNXN4D 4, 4
%if CONFIG_EXT_PARTITION_TYPES
HIGH_SADNXN4D 4, 16
HIGH_SADNXN4D 16, 4
HIGH_SADNXN4D 8, 32
HIGH_SADNXN4D 32, 8
%endif

View file

@ -227,6 +227,10 @@ HIGH_SAD32XN 16 ; highbd_sad32x16_sse2
HIGH_SAD32XN 64, 1 ; highbd_sad32x64_avg_sse2
HIGH_SAD32XN 32, 1 ; highbd_sad32x32_avg_sse2
HIGH_SAD32XN 16, 1 ; highbd_sad32x16_avg_sse2
%if CONFIG_EXT_PARTITION_TYPES
HIGH_SAD32XN 8 ; highbd_sad_32x8_sse2
HIGH_SAD32XN 8, 1 ; highbd_sad_32x8_avg_sse2
%endif
; unsigned int aom_highbd_sad16x{8,16,32}_sse2(uint8_t *src, int src_stride,
; uint8_t *ref, int ref_stride);
@ -295,7 +299,10 @@ HIGH_SAD16XN 8 ; highbd_sad16x8_sse2
HIGH_SAD16XN 32, 1 ; highbd_sad16x32_avg_sse2
HIGH_SAD16XN 16, 1 ; highbd_sad16x16_avg_sse2
HIGH_SAD16XN 8, 1 ; highbd_sad16x8_avg_sse2
%if CONFIG_EXT_PARTITION_TYPES
HIGH_SAD16XN 4 ; highbd_sad_16x4_sse2
HIGH_SAD16XN 4, 1 ; highbd_sad_16x4_avg_sse2
%endif
; unsigned int aom_highbd_sad8x{4,8,16}_sse2(uint8_t *src, int src_stride,
; uint8_t *ref, int ref_stride);
@ -364,3 +371,7 @@ HIGH_SAD8XN 4 ; highbd_sad8x4_sse2
HIGH_SAD8XN 16, 1 ; highbd_sad8x16_avg_sse2
HIGH_SAD8XN 8, 1 ; highbd_sad8x8_avg_sse2
HIGH_SAD8XN 4, 1 ; highbd_sad8x4_avg_sse2
%if CONFIG_EXT_PARTITION_TYPES
HIGH_SAD8XN 32 ; highbd_sad_8x32_sse2
HIGH_SAD8XN 32, 1 ; highbd_sad_8x32_avg_sse2
%endif

View file

@ -75,7 +75,7 @@ SECTION .text
paddd m6, m4
mov r1, ssem ; r1 = unsigned int *sse
movd [r1], m7 ; store sse
movd rax, m6 ; store sum as return value
movd eax, m6 ; store sum as return value
%endif
RET
%endmacro

View file

@ -9,6 +9,7 @@
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
*/
#include <assert.h>
#include <emmintrin.h> // SSE2
#include "./aom_config.h"
@ -16,6 +17,9 @@
#include "aom_ports/mem.h"
#include "./av1_rtcd.h"
#include "av1/common/filter.h"
typedef uint32_t (*high_variance_fn_t)(const uint16_t *src, int src_stride,
const uint16_t *ref, int ref_stride,
uint32_t *sse, int *sum);
@ -181,6 +185,11 @@ VAR_FN(16, 16, 16, 8);
VAR_FN(16, 8, 8, 7);
VAR_FN(8, 16, 8, 7);
VAR_FN(8, 8, 8, 6);
#if CONFIG_EXT_PARTITION_TYPES
VAR_FN(16, 4, 16, 6);
VAR_FN(8, 32, 8, 8);
VAR_FN(32, 8, 16, 8);
#endif
#undef VAR_FN
@ -387,6 +396,7 @@ DECLS(sse2);
return (var >= 0) ? (uint32_t)var : 0; \
}
#if CONFIG_EXT_PARTITION_TYPES
#define FNS(opt) \
FN(64, 64, 16, 6, 6, opt, (int64_t)); \
FN(64, 32, 16, 6, 5, opt, (int64_t)); \
@ -398,7 +408,24 @@ DECLS(sse2);
FN(16, 8, 16, 4, 3, opt, (int64_t)); \
FN(8, 16, 8, 3, 4, opt, (int64_t)); \
FN(8, 8, 8, 3, 3, opt, (int64_t)); \
FN(8, 4, 8, 3, 2, opt, (int64_t));
FN(8, 4, 8, 3, 2, opt, (int64_t)); \
FN(16, 4, 16, 4, 2, opt, (int64_t)); \
FN(8, 32, 8, 3, 5, opt, (int64_t)); \
FN(32, 8, 16, 5, 3, opt, (int64_t))
#else
#define FNS(opt) \
FN(64, 64, 16, 6, 6, opt, (int64_t)); \
FN(64, 32, 16, 6, 5, opt, (int64_t)); \
FN(32, 64, 16, 5, 6, opt, (int64_t)); \
FN(32, 32, 16, 5, 5, opt, (int64_t)); \
FN(32, 16, 16, 5, 4, opt, (int64_t)); \
FN(16, 32, 16, 4, 5, opt, (int64_t)); \
FN(16, 16, 16, 4, 4, opt, (int64_t)); \
FN(16, 8, 16, 4, 3, opt, (int64_t)); \
FN(8, 16, 8, 3, 4, opt, (int64_t)); \
FN(8, 8, 8, 3, 3, opt, (int64_t)); \
FN(8, 4, 8, 3, 2, opt, (int64_t))
#endif
FNS(sse2);
@ -412,9 +439,9 @@ FNS(sse2);
const uint16_t *dst, ptrdiff_t dst_stride, const uint16_t *sec, \
ptrdiff_t sec_stride, int height, unsigned int *sse, void *unused0, \
void *unused);
#define DECLS(opt1) \
DECL(16, opt1) \
DECL(8, opt1)
#define DECLS(opt) \
DECL(16, opt) \
DECL(8, opt)
DECLS(sse2);
#undef DECL
@ -546,18 +573,36 @@ DECLS(sse2);
return (var >= 0) ? (uint32_t)var : 0; \
}
#define FNS(opt1) \
FN(64, 64, 16, 6, 6, opt1, (int64_t)); \
FN(64, 32, 16, 6, 5, opt1, (int64_t)); \
FN(32, 64, 16, 5, 6, opt1, (int64_t)); \
FN(32, 32, 16, 5, 5, opt1, (int64_t)); \
FN(32, 16, 16, 5, 4, opt1, (int64_t)); \
FN(16, 32, 16, 4, 5, opt1, (int64_t)); \
FN(16, 16, 16, 4, 4, opt1, (int64_t)); \
FN(16, 8, 16, 4, 3, opt1, (int64_t)); \
FN(8, 16, 8, 4, 3, opt1, (int64_t)); \
FN(8, 8, 8, 3, 3, opt1, (int64_t)); \
FN(8, 4, 8, 3, 2, opt1, (int64_t));
#if CONFIG_EXT_PARTITION_TYPES
#define FNS(opt) \
FN(64, 64, 16, 6, 6, opt, (int64_t)); \
FN(64, 32, 16, 6, 5, opt, (int64_t)); \
FN(32, 64, 16, 5, 6, opt, (int64_t)); \
FN(32, 32, 16, 5, 5, opt, (int64_t)); \
FN(32, 16, 16, 5, 4, opt, (int64_t)); \
FN(16, 32, 16, 4, 5, opt, (int64_t)); \
FN(16, 16, 16, 4, 4, opt, (int64_t)); \
FN(16, 8, 16, 4, 3, opt, (int64_t)); \
FN(8, 16, 8, 3, 4, opt, (int64_t)); \
FN(8, 8, 8, 3, 3, opt, (int64_t)); \
FN(8, 4, 8, 3, 2, opt, (int64_t)); \
FN(16, 4, 16, 4, 2, opt, (int64_t)); \
FN(8, 32, 8, 3, 5, opt, (int64_t)); \
FN(32, 8, 16, 5, 3, opt, (int64_t));
#else
#define FNS(opt) \
FN(64, 64, 16, 6, 6, opt, (int64_t)); \
FN(64, 32, 16, 6, 5, opt, (int64_t)); \
FN(32, 64, 16, 5, 6, opt, (int64_t)); \
FN(32, 32, 16, 5, 5, opt, (int64_t)); \
FN(32, 16, 16, 5, 4, opt, (int64_t)); \
FN(16, 32, 16, 4, 5, opt, (int64_t)); \
FN(16, 16, 16, 4, 4, opt, (int64_t)); \
FN(16, 8, 16, 4, 3, opt, (int64_t)); \
FN(8, 16, 8, 3, 4, opt, (int64_t)); \
FN(8, 8, 8, 3, 3, opt, (int64_t)); \
FN(8, 4, 8, 3, 2, opt, (int64_t));
#endif
FNS(sse2);
@ -565,131 +610,94 @@ FNS(sse2);
#undef FN
void aom_highbd_upsampled_pred_sse2(uint16_t *comp_pred, int width, int height,
const uint8_t *ref8, int ref_stride) {
int i, j;
int stride = ref_stride << 3;
uint16_t *ref = CONVERT_TO_SHORTPTR(ref8);
if (width >= 8) {
// read 8 points at one time
for (i = 0; i < height; i++) {
for (j = 0; j < width; j += 8) {
__m128i s0 = _mm_cvtsi32_si128(*(const uint32_t *)ref);
__m128i s1 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 8));
__m128i s2 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 16));
__m128i s3 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 24));
__m128i s4 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 32));
__m128i s5 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 40));
__m128i s6 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 48));
__m128i s7 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 56));
__m128i t0, t1, t2, t3;
t0 = _mm_unpacklo_epi16(s0, s1);
t1 = _mm_unpacklo_epi16(s2, s3);
t2 = _mm_unpacklo_epi16(s4, s5);
t3 = _mm_unpacklo_epi16(s6, s7);
t0 = _mm_unpacklo_epi32(t0, t1);
t2 = _mm_unpacklo_epi32(t2, t3);
t0 = _mm_unpacklo_epi64(t0, t2);
_mm_storeu_si128((__m128i *)(comp_pred), t0);
comp_pred += 8;
ref += 64; // 8 * 8;
int subpel_x_q3, int subpel_y_q3,
const uint8_t *ref8, int ref_stride,
int bd) {
if (!subpel_x_q3 && !subpel_y_q3) {
uint16_t *ref = CONVERT_TO_SHORTPTR(ref8);
if (width >= 8) {
int i;
assert(!(width & 7));
/*Read 8 pixels one row at a time.*/
for (i = 0; i < height; i++) {
int j;
for (j = 0; j < width; j += 8) {
__m128i s0 = _mm_loadu_si128((const __m128i *)ref);
_mm_storeu_si128((__m128i *)comp_pred, s0);
comp_pred += 8;
ref += 8;
}
ref += ref_stride - width;
}
} else {
int i;
assert(!(width & 3));
/*Read 4 pixels two rows at a time.*/
for (i = 0; i < height; i += 2) {
__m128i s0 = _mm_loadl_epi64((const __m128i *)ref);
__m128i s1 = _mm_loadl_epi64((const __m128i *)(ref + ref_stride));
__m128i t0 = _mm_unpacklo_epi64(s0, s1);
_mm_storeu_si128((__m128i *)comp_pred, t0);
comp_pred += 8;
ref += 2 * ref_stride;
}
ref += stride - (width << 3);
}
} else {
// read 4 points at one time
for (i = 0; i < height; i++) {
for (j = 0; j < width; j += 4) {
__m128i s0 = _mm_cvtsi32_si128(*(const uint32_t *)ref);
__m128i s1 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 8));
__m128i s2 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 16));
__m128i s3 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 24));
__m128i t0, t1;
t0 = _mm_unpacklo_epi16(s0, s1);
t1 = _mm_unpacklo_epi16(s2, s3);
t0 = _mm_unpacklo_epi32(t0, t1);
_mm_storel_epi64((__m128i *)(comp_pred), t0);
comp_pred += 4;
ref += 4 * 8;
}
ref += stride - (width << 3);
InterpFilterParams filter;
filter = av1_get_interp_filter_params(EIGHTTAP_REGULAR);
if (!subpel_y_q3) {
const int16_t *kernel;
kernel = av1_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1);
aom_highbd_convolve8_horiz(ref8, ref_stride,
CONVERT_TO_BYTEPTR(comp_pred), width, kernel,
16, NULL, -1, width, height, bd);
} else if (!subpel_x_q3) {
const int16_t *kernel;
kernel = av1_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1);
aom_highbd_convolve8_vert(ref8, ref_stride, CONVERT_TO_BYTEPTR(comp_pred),
width, NULL, -1, kernel, 16, width, height, bd);
} else {
DECLARE_ALIGNED(16, uint16_t,
temp[((MAX_SB_SIZE + 16) + 16) * MAX_SB_SIZE]);
const int16_t *kernel_x;
const int16_t *kernel_y;
int intermediate_height;
kernel_x = av1_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1);
kernel_y = av1_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1);
intermediate_height =
(((height - 1) * 8 + subpel_y_q3) >> 3) + filter.taps;
assert(intermediate_height <= (MAX_SB_SIZE * 2 + 16) + 16);
aom_highbd_convolve8_horiz(ref8 - ref_stride * ((filter.taps >> 1) - 1),
ref_stride, CONVERT_TO_BYTEPTR(temp),
MAX_SB_SIZE, kernel_x, 16, NULL, -1, width,
intermediate_height, bd);
aom_highbd_convolve8_vert(
CONVERT_TO_BYTEPTR(temp + MAX_SB_SIZE * ((filter.taps >> 1) - 1)),
MAX_SB_SIZE, CONVERT_TO_BYTEPTR(comp_pred), width, NULL, -1, kernel_y,
16, width, height, bd);
}
}
}
void aom_highbd_comp_avg_upsampled_pred_sse2(uint16_t *comp_pred,
const uint8_t *pred8, int width,
int height, const uint8_t *ref8,
int ref_stride) {
const __m128i one = _mm_set1_epi16(1);
int i, j;
int stride = ref_stride << 3;
int height, int subpel_x_q3,
int subpel_y_q3,
const uint8_t *ref8,
int ref_stride, int bd) {
uint16_t *pred = CONVERT_TO_SHORTPTR(pred8);
uint16_t *ref = CONVERT_TO_SHORTPTR(ref8);
if (width >= 8) {
// read 8 points at one time
for (i = 0; i < height; i++) {
for (j = 0; j < width; j += 8) {
__m128i s0 = _mm_cvtsi32_si128(*(const uint32_t *)ref);
__m128i s1 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 8));
__m128i s2 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 16));
__m128i s3 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 24));
__m128i s4 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 32));
__m128i s5 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 40));
__m128i s6 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 48));
__m128i s7 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 56));
__m128i p0 = _mm_loadu_si128((const __m128i *)pred);
__m128i t0, t1, t2, t3;
t0 = _mm_unpacklo_epi16(s0, s1);
t1 = _mm_unpacklo_epi16(s2, s3);
t2 = _mm_unpacklo_epi16(s4, s5);
t3 = _mm_unpacklo_epi16(s6, s7);
t0 = _mm_unpacklo_epi32(t0, t1);
t2 = _mm_unpacklo_epi32(t2, t3);
t0 = _mm_unpacklo_epi64(t0, t2);
p0 = _mm_adds_epu16(t0, p0);
p0 = _mm_adds_epu16(p0, one);
p0 = _mm_srli_epi16(p0, 1);
_mm_storeu_si128((__m128i *)(comp_pred), p0);
comp_pred += 8;
pred += 8;
ref += 8 * 8;
}
ref += stride - (width << 3);
}
} else {
// read 4 points at one time
for (i = 0; i < height; i++) {
for (j = 0; j < width; j += 4) {
__m128i s0 = _mm_cvtsi32_si128(*(const uint32_t *)ref);
__m128i s1 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 8));
__m128i s2 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 16));
__m128i s3 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + 24));
__m128i p0 = _mm_loadl_epi64((const __m128i *)pred);
__m128i t0, t1;
t0 = _mm_unpacklo_epi16(s0, s1);
t1 = _mm_unpacklo_epi16(s2, s3);
t0 = _mm_unpacklo_epi32(t0, t1);
p0 = _mm_adds_epu16(t0, p0);
p0 = _mm_adds_epu16(p0, one);
p0 = _mm_srli_epi16(p0, 1);
_mm_storel_epi64((__m128i *)(comp_pred), p0);
comp_pred += 4;
pred += 4;
ref += 4 * 8;
}
ref += stride - (width << 3);
}
int n;
int i;
aom_highbd_upsampled_pred(comp_pred, width, height, subpel_x_q3, subpel_y_q3,
ref8, ref_stride, bd);
/*The total number of pixels must be a multiple of 8 (e.g., 4x4).*/
assert(!(width * height & 7));
n = width * height >> 3;
for (i = 0; i < n; i++) {
__m128i s0 = _mm_loadu_si128((const __m128i *)comp_pred);
__m128i p0 = _mm_loadu_si128((const __m128i *)pred);
_mm_storeu_si128((__m128i *)comp_pred, _mm_avg_epu16(s0, p0));
comp_pred += 8;
pred += 8;
}
}

View file

@ -3498,237 +3498,3 @@ void idct32_8col(__m128i *in0, __m128i *in1) {
in1[14] = _mm_sub_epi16(stp1_1, stp1_30);
in1[15] = _mm_sub_epi16(stp1_0, stp1_31);
}
#if CONFIG_HIGHBITDEPTH
static INLINE __m128i clamp_high_sse2(__m128i value, int bd) {
__m128i ubounded, retval;
const __m128i zero = _mm_set1_epi16(0);
const __m128i one = _mm_set1_epi16(1);
const __m128i max = _mm_subs_epi16(_mm_slli_epi16(one, bd), one);
ubounded = _mm_cmpgt_epi16(value, max);
retval = _mm_andnot_si128(ubounded, value);
ubounded = _mm_and_si128(ubounded, max);
retval = _mm_or_si128(retval, ubounded);
retval = _mm_and_si128(retval, _mm_cmpgt_epi16(retval, zero));
return retval;
}
void aom_highbd_idct4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest8,
int stride, int bd) {
tran_low_t out[4 * 4];
tran_low_t *outptr = out;
int i, j;
__m128i inptr[4];
__m128i sign_bits[2];
__m128i temp_mm, min_input, max_input;
int test;
uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
int optimised_cols = 0;
const __m128i zero = _mm_set1_epi16(0);
const __m128i eight = _mm_set1_epi16(8);
const __m128i max = _mm_set1_epi16(12043);
const __m128i min = _mm_set1_epi16(-12043);
// Load input into __m128i
inptr[0] = _mm_loadu_si128((const __m128i *)input);
inptr[1] = _mm_loadu_si128((const __m128i *)(input + 4));
inptr[2] = _mm_loadu_si128((const __m128i *)(input + 8));
inptr[3] = _mm_loadu_si128((const __m128i *)(input + 12));
// Pack to 16 bits
inptr[0] = _mm_packs_epi32(inptr[0], inptr[1]);
inptr[1] = _mm_packs_epi32(inptr[2], inptr[3]);
max_input = _mm_max_epi16(inptr[0], inptr[1]);
min_input = _mm_min_epi16(inptr[0], inptr[1]);
max_input = _mm_cmpgt_epi16(max_input, max);
min_input = _mm_cmplt_epi16(min_input, min);
temp_mm = _mm_or_si128(max_input, min_input);
test = _mm_movemask_epi8(temp_mm);
if (!test) {
// Do the row transform
aom_idct4_sse2(inptr);
// Check the min & max values
max_input = _mm_max_epi16(inptr[0], inptr[1]);
min_input = _mm_min_epi16(inptr[0], inptr[1]);
max_input = _mm_cmpgt_epi16(max_input, max);
min_input = _mm_cmplt_epi16(min_input, min);
temp_mm = _mm_or_si128(max_input, min_input);
test = _mm_movemask_epi8(temp_mm);
if (test) {
array_transpose_4x4(inptr);
sign_bits[0] = _mm_cmplt_epi16(inptr[0], zero);
sign_bits[1] = _mm_cmplt_epi16(inptr[1], zero);
inptr[3] = _mm_unpackhi_epi16(inptr[1], sign_bits[1]);
inptr[2] = _mm_unpacklo_epi16(inptr[1], sign_bits[1]);
inptr[1] = _mm_unpackhi_epi16(inptr[0], sign_bits[0]);
inptr[0] = _mm_unpacklo_epi16(inptr[0], sign_bits[0]);
_mm_storeu_si128((__m128i *)outptr, inptr[0]);
_mm_storeu_si128((__m128i *)(outptr + 4), inptr[1]);
_mm_storeu_si128((__m128i *)(outptr + 8), inptr[2]);
_mm_storeu_si128((__m128i *)(outptr + 12), inptr[3]);
} else {
// Set to use the optimised transform for the column
optimised_cols = 1;
}
} else {
// Run the un-optimised row transform
for (i = 0; i < 4; ++i) {
aom_highbd_idct4_c(input, outptr, bd);
input += 4;
outptr += 4;
}
}
if (optimised_cols) {
aom_idct4_sse2(inptr);
// Final round and shift
inptr[0] = _mm_add_epi16(inptr[0], eight);
inptr[1] = _mm_add_epi16(inptr[1], eight);
inptr[0] = _mm_srai_epi16(inptr[0], 4);
inptr[1] = _mm_srai_epi16(inptr[1], 4);
// Reconstruction and Store
{
__m128i d0 = _mm_loadl_epi64((const __m128i *)dest);
__m128i d2 = _mm_loadl_epi64((const __m128i *)(dest + stride * 2));
d0 = _mm_unpacklo_epi64(
d0, _mm_loadl_epi64((const __m128i *)(dest + stride)));
d2 = _mm_unpacklo_epi64(
d2, _mm_loadl_epi64((const __m128i *)(dest + stride * 3)));
d0 = clamp_high_sse2(_mm_adds_epi16(d0, inptr[0]), bd);
d2 = clamp_high_sse2(_mm_adds_epi16(d2, inptr[1]), bd);
// store input0
_mm_storel_epi64((__m128i *)dest, d0);
// store input1
d0 = _mm_srli_si128(d0, 8);
_mm_storel_epi64((__m128i *)(dest + stride), d0);
// store input2
_mm_storel_epi64((__m128i *)(dest + stride * 2), d2);
// store input3
d2 = _mm_srli_si128(d2, 8);
_mm_storel_epi64((__m128i *)(dest + stride * 3), d2);
}
} else {
// Run the un-optimised column transform
tran_low_t temp_in[4], temp_out[4];
// Columns
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) temp_in[j] = out[j * 4 + i];
aom_highbd_idct4_c(temp_in, temp_out, bd);
for (j = 0; j < 4; ++j) {
dest[j * stride + i] = highbd_clip_pixel_add(
dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 4), bd);
}
}
}
}
void aom_highbd_idct8x8_10_add_sse2(const tran_low_t *input, uint8_t *dest8,
int stride, int bd) {
tran_low_t out[8 * 8] = { 0 };
tran_low_t *outptr = out;
int i, j, test;
__m128i inptr[8];
__m128i min_input, max_input, temp1, temp2, sign_bits;
uint16_t *dest = CONVERT_TO_SHORTPTR(dest8);
const __m128i zero = _mm_set1_epi16(0);
const __m128i sixteen = _mm_set1_epi16(16);
const __m128i max = _mm_set1_epi16(6201);
const __m128i min = _mm_set1_epi16(-6201);
int optimised_cols = 0;
// Load input into __m128i & pack to 16 bits
for (i = 0; i < 8; i++) {
temp1 = _mm_loadu_si128((const __m128i *)(input + 8 * i));
temp2 = _mm_loadu_si128((const __m128i *)(input + 8 * i + 4));
inptr[i] = _mm_packs_epi32(temp1, temp2);
}
// Find the min & max for the row transform
// only first 4 row has non-zero coefs
max_input = _mm_max_epi16(inptr[0], inptr[1]);
min_input = _mm_min_epi16(inptr[0], inptr[1]);
for (i = 2; i < 4; i++) {
max_input = _mm_max_epi16(max_input, inptr[i]);
min_input = _mm_min_epi16(min_input, inptr[i]);
}
max_input = _mm_cmpgt_epi16(max_input, max);
min_input = _mm_cmplt_epi16(min_input, min);
temp1 = _mm_or_si128(max_input, min_input);
test = _mm_movemask_epi8(temp1);
if (!test) {
// Do the row transform
aom_idct8_sse2(inptr);
// Find the min & max for the column transform
// N.B. Only first 4 cols contain non-zero coeffs
max_input = _mm_max_epi16(inptr[0], inptr[1]);
min_input = _mm_min_epi16(inptr[0], inptr[1]);
for (i = 2; i < 8; i++) {
max_input = _mm_max_epi16(max_input, inptr[i]);
min_input = _mm_min_epi16(min_input, inptr[i]);
}
max_input = _mm_cmpgt_epi16(max_input, max);
min_input = _mm_cmplt_epi16(min_input, min);
temp1 = _mm_or_si128(max_input, min_input);
test = _mm_movemask_epi8(temp1);
if (test) {
// Use fact only first 4 rows contain non-zero coeffs
array_transpose_4X8(inptr, inptr);
for (i = 0; i < 4; i++) {
sign_bits = _mm_cmplt_epi16(inptr[i], zero);
temp1 = _mm_unpackhi_epi16(inptr[i], sign_bits);
temp2 = _mm_unpacklo_epi16(inptr[i], sign_bits);
_mm_storeu_si128((__m128i *)(outptr + 4 * (2 * i + 1)), temp1);
_mm_storeu_si128((__m128i *)(outptr + 4 * (2 * i)), temp2);
}
} else {
// Set to use the optimised transform for the column
optimised_cols = 1;
}
} else {
// Run the un-optimised row transform
for (i = 0; i < 4; ++i) {
aom_highbd_idct8_c(input, outptr, bd);
input += 8;
outptr += 8;
}
}
if (optimised_cols) {
aom_idct8_sse2(inptr);
// Final round & shift and Reconstruction and Store
{
__m128i d[8];
for (i = 0; i < 8; i++) {
inptr[i] = _mm_add_epi16(inptr[i], sixteen);
d[i] = _mm_loadu_si128((const __m128i *)(dest + stride * i));
inptr[i] = _mm_srai_epi16(inptr[i], 5);
d[i] = clamp_high_sse2(_mm_adds_epi16(d[i], inptr[i]), bd);
// Store
_mm_storeu_si128((__m128i *)(dest + stride * i), d[i]);
}
}
} else {
// Run the un-optimised column transform
tran_low_t temp_in[8], temp_out[8];
for (i = 0; i < 8; ++i) {
for (j = 0; j < 8; ++j) temp_in[j] = out[j * 8 + i];
aom_highbd_idct8_c(temp_in, temp_out, bd);
for (j = 0; j < 8; ++j) {
dest[j * stride + i] = highbd_clip_pixel_add(
dest[j * stride + i], ROUND_POWER_OF_TWO(temp_out[j], 5), bd);
}
}
}
}
#endif // CONFIG_HIGHBITDEPTH

View file

@ -93,6 +93,12 @@ MASKSAD8XN_SSSE3(8)
MASKSAD8XN_SSSE3(4)
MASKSAD4XN_SSSE3(8)
MASKSAD4XN_SSSE3(4)
#if CONFIG_EXT_PARTITION_TYPES
MASKSAD4XN_SSSE3(16)
MASKSADMXN_SSSE3(16, 4)
MASKSAD8XN_SSSE3(32)
MASKSADMXN_SSSE3(32, 8)
#endif
static INLINE unsigned int masked_sad_ssse3(const uint8_t *src_ptr,
int src_stride,
@ -283,6 +289,12 @@ HIGHBD_MASKSADMXN_SSSE3(8, 8)
HIGHBD_MASKSADMXN_SSSE3(8, 4)
HIGHBD_MASKSAD4XN_SSSE3(8)
HIGHBD_MASKSAD4XN_SSSE3(4)
#if CONFIG_EXT_PARTITION_TYPES
HIGHBD_MASKSAD4XN_SSSE3(16)
HIGHBD_MASKSADMXN_SSSE3(16, 4)
HIGHBD_MASKSADMXN_SSSE3(8, 32)
HIGHBD_MASKSADMXN_SSSE3(32, 8)
#endif
static INLINE unsigned int highbd_masked_sad_ssse3(
const uint8_t *src8, int src_stride, const uint8_t *a8, int a_stride,

View file

@ -126,6 +126,12 @@ MASK_SUBPIX_VAR8XH_SSSE3(8)
MASK_SUBPIX_VAR8XH_SSSE3(4)
MASK_SUBPIX_VAR4XH_SSSE3(8)
MASK_SUBPIX_VAR4XH_SSSE3(4)
#if CONFIG_EXT_PARTITION_TYPES
MASK_SUBPIX_VAR4XH_SSSE3(16)
MASK_SUBPIX_VAR_SSSE3(16, 4)
MASK_SUBPIX_VAR8XH_SSSE3(32)
MASK_SUBPIX_VAR_SSSE3(32, 8)
#endif
static INLINE __m128i filter_block(const __m128i a, const __m128i b,
const __m128i filter) {
@ -564,6 +570,7 @@ static void highbd_masked_variance4xh(const uint16_t *src_ptr, int src_stride,
const uint8_t *msk, int msk_stride, int invert_mask, uint32_t *sse) { \
uint64_t sse64; \
int sum; \
int64_t var; \
uint16_t temp[(H + 1) * W]; \
const uint16_t *src = CONVERT_TO_SHORTPTR(src8); \
const uint16_t *ref = CONVERT_TO_SHORTPTR(ref8); \
@ -579,7 +586,8 @@ static void highbd_masked_variance4xh(const uint16_t *src_ptr, int src_stride,
msk_stride, W, H, &sse64, &sum); \
*sse = (uint32_t)ROUND_POWER_OF_TWO(sse64, 4); \
sum = ROUND_POWER_OF_TWO(sum, 2); \
return *sse - (uint32_t)(((int64_t)sum * sum) / (W * H)); \
var = (int64_t)(*sse) - (((int64_t)sum * sum) / (W * H)); \
return (var >= 0) ? (uint32_t)var : 0; \
} \
unsigned int aom_highbd_12_masked_sub_pixel_variance##W##x##H##_ssse3( \
const uint8_t *src8, int src_stride, int xoffset, int yoffset, \
@ -587,6 +595,7 @@ static void highbd_masked_variance4xh(const uint16_t *src_ptr, int src_stride,
const uint8_t *msk, int msk_stride, int invert_mask, uint32_t *sse) { \
uint64_t sse64; \
int sum; \
int64_t var; \
uint16_t temp[(H + 1) * W]; \
const uint16_t *src = CONVERT_TO_SHORTPTR(src8); \
const uint16_t *ref = CONVERT_TO_SHORTPTR(ref8); \
@ -602,7 +611,8 @@ static void highbd_masked_variance4xh(const uint16_t *src_ptr, int src_stride,
msk_stride, W, H, &sse64, &sum); \
*sse = (uint32_t)ROUND_POWER_OF_TWO(sse64, 8); \
sum = ROUND_POWER_OF_TWO(sum, 4); \
return *sse - (uint32_t)(((int64_t)sum * sum) / (W * H)); \
var = (int64_t)(*sse) - (((int64_t)sum * sum) / (W * H)); \
return (var >= 0) ? (uint32_t)var : 0; \
}
#define HIGHBD_MASK_SUBPIX_VAR4XH_SSSE3(H) \
@ -634,6 +644,7 @@ static void highbd_masked_variance4xh(const uint16_t *src_ptr, int src_stride,
const uint8_t *msk, int msk_stride, int invert_mask, uint32_t *sse) { \
int sse_; \
int sum; \
int64_t var; \
uint16_t temp[(H + 1) * 4]; \
const uint16_t *src = CONVERT_TO_SHORTPTR(src8); \
const uint16_t *ref = CONVERT_TO_SHORTPTR(ref8); \
@ -649,7 +660,8 @@ static void highbd_masked_variance4xh(const uint16_t *src_ptr, int src_stride,
msk_stride, H, &sse_, &sum); \
*sse = (uint32_t)ROUND_POWER_OF_TWO(sse_, 4); \
sum = ROUND_POWER_OF_TWO(sum, 2); \
return *sse - (uint32_t)(((int64_t)sum * sum) / (4 * H)); \
var = (int64_t)(*sse) - (((int64_t)sum * sum) / (4 * H)); \
return (var >= 0) ? (uint32_t)var : 0; \
} \
unsigned int aom_highbd_12_masked_sub_pixel_variance4x##H##_ssse3( \
const uint8_t *src8, int src_stride, int xoffset, int yoffset, \
@ -657,6 +669,7 @@ static void highbd_masked_variance4xh(const uint16_t *src_ptr, int src_stride,
const uint8_t *msk, int msk_stride, int invert_mask, uint32_t *sse) { \
int sse_; \
int sum; \
int64_t var; \
uint16_t temp[(H + 1) * 4]; \
const uint16_t *src = CONVERT_TO_SHORTPTR(src8); \
const uint16_t *ref = CONVERT_TO_SHORTPTR(ref8); \
@ -672,7 +685,8 @@ static void highbd_masked_variance4xh(const uint16_t *src_ptr, int src_stride,
msk_stride, H, &sse_, &sum); \
*sse = (uint32_t)ROUND_POWER_OF_TWO(sse_, 8); \
sum = ROUND_POWER_OF_TWO(sum, 4); \
return *sse - (uint32_t)(((int64_t)sum * sum) / (4 * H)); \
var = (int64_t)(*sse) - (((int64_t)sum * sum) / (4 * H)); \
return (var >= 0) ? (uint32_t)var : 0; \
}
#if CONFIG_EXT_PARTITION
@ -693,6 +707,12 @@ HIGHBD_MASK_SUBPIX_VAR_SSSE3(8, 8)
HIGHBD_MASK_SUBPIX_VAR_SSSE3(8, 4)
HIGHBD_MASK_SUBPIX_VAR4XH_SSSE3(8)
HIGHBD_MASK_SUBPIX_VAR4XH_SSSE3(4)
#if CONFIG_EXT_PARTITION_TYPES
HIGHBD_MASK_SUBPIX_VAR4XH_SSSE3(16)
HIGHBD_MASK_SUBPIX_VAR_SSSE3(16, 4)
HIGHBD_MASK_SUBPIX_VAR_SSSE3(8, 32)
HIGHBD_MASK_SUBPIX_VAR_SSSE3(32, 8)
#endif
static INLINE __m128i highbd_filter_block(const __m128i a, const __m128i b,
const __m128i filter) {

View file

@ -137,6 +137,12 @@ OBMCSADWXH(8, 8)
OBMCSADWXH(8, 4)
OBMCSADWXH(4, 8)
OBMCSADWXH(4, 4)
#if CONFIG_EXT_PARTITION_TYPES
OBMCSADWXH(4, 16)
OBMCSADWXH(16, 4)
OBMCSADWXH(8, 32)
OBMCSADWXH(32, 8)
#endif
////////////////////////////////////////////////////////////////////////////////
// High bit-depth
@ -260,4 +266,10 @@ HBD_OBMCSADWXH(8, 8)
HBD_OBMCSADWXH(8, 4)
HBD_OBMCSADWXH(4, 8)
HBD_OBMCSADWXH(4, 4)
#if CONFIG_EXT_PARTITION_TYPES
HBD_OBMCSADWXH(4, 16)
HBD_OBMCSADWXH(16, 4)
HBD_OBMCSADWXH(8, 32)
HBD_OBMCSADWXH(32, 8)
#endif
#endif // CONFIG_HIGHBITDEPTH

View file

@ -146,6 +146,12 @@ OBMCVARWXH(8, 8)
OBMCVARWXH(8, 4)
OBMCVARWXH(4, 8)
OBMCVARWXH(4, 4)
#if CONFIG_EXT_PARTITION_TYPES
OBMCVARWXH(4, 16)
OBMCVARWXH(16, 4)
OBMCVARWXH(8, 32)
OBMCVARWXH(32, 8)
#endif
////////////////////////////////////////////////////////////////////////////////
// High bit-depth
@ -353,4 +359,10 @@ HBD_OBMCVARWXH(8, 8)
HBD_OBMCVARWXH(8, 4)
HBD_OBMCVARWXH(4, 8)
HBD_OBMCVARWXH(4, 4)
#if CONFIG_EXT_PARTITION_TYPES
HBD_OBMCVARWXH(4, 16)
HBD_OBMCVARWXH(16, 4)
HBD_OBMCVARWXH(8, 32)
HBD_OBMCVARWXH(32, 8)
#endif
#endif // CONFIG_HIGHBITDEPTH

View file

@ -251,3 +251,9 @@ SADNXN4D 8, 8
SADNXN4D 8, 4
SADNXN4D 4, 8
SADNXN4D 4, 4
%if CONFIG_EXT_PARTITION_TYPES
SADNXN4D 4, 16
SADNXN4D 16, 4
SADNXN4D 8, 32
SADNXN4D 32, 8
%endif

View file

@ -704,7 +704,12 @@ unsigned int aom_highbd_sad128x128_avg_avx2(const uint8_t *src, int src_stride,
static INLINE void get_4d_sad_from_mm256_epi32(const __m256i *v,
uint32_t *res) {
__m256i u0, u1, u2, u3;
#if defined(_MSC_VER) && defined(_M_IX86) && _MSC_VER < 1900
const __m256i mask = _mm256_setr_epi32(UINT32_MAX, 0, UINT32_MAX, 0,
UINT32_MAX, 0, UINT32_MAX, 0);
#else
const __m256i mask = _mm256_set1_epi64x(UINT32_MAX);
#endif
__m128i sad;
// 8 32-bit summation

View file

@ -208,6 +208,10 @@ SAD32XN 16 ; sad32x16_sse2
SAD32XN 64, 1 ; sad32x64_avg_sse2
SAD32XN 32, 1 ; sad32x32_avg_sse2
SAD32XN 16, 1 ; sad32x16_avg_sse2
%if CONFIG_EXT_PARTITION_TYPES
SAD32XN 8 ; sad_32x8_sse2
SAD32XN 8, 1 ; sad_32x8_avg_sse2
%endif
; unsigned int aom_sad16x{8,16}_sse2(uint8_t *src, int src_stride,
; uint8_t *ref, int ref_stride);
@ -254,6 +258,10 @@ SAD16XN 8 ; sad16x8_sse2
SAD16XN 32, 1 ; sad16x32_avg_sse2
SAD16XN 16, 1 ; sad16x16_avg_sse2
SAD16XN 8, 1 ; sad16x8_avg_sse2
%if CONFIG_EXT_PARTITION_TYPES
SAD16XN 4 ; sad_16x4_sse2
SAD16XN 4, 1 ; sad_16x4_avg_sse2
%endif
; unsigned int aom_sad8x{8,16}_sse2(uint8_t *src, int src_stride,
; uint8_t *ref, int ref_stride);
@ -298,6 +306,10 @@ SAD8XN 4 ; sad8x4_sse2
SAD8XN 16, 1 ; sad8x16_avg_sse2
SAD8XN 8, 1 ; sad8x8_avg_sse2
SAD8XN 4, 1 ; sad8x4_avg_sse2
%if CONFIG_EXT_PARTITION_TYPES
SAD8XN 32 ; sad_8x32_sse2
SAD8XN 32, 1 ; sad_8x32_avg_sse2
%endif
; unsigned int aom_sad4x{4, 8}_sse2(uint8_t *src, int src_stride,
; uint8_t *ref, int ref_stride);
@ -343,3 +355,7 @@ SAD4XN 8 ; sad4x8_sse
SAD4XN 4 ; sad4x4_sse
SAD4XN 8, 1 ; sad4x8_avg_sse
SAD4XN 4, 1 ; sad4x4_avg_sse
%if CONFIG_EXT_PARTITION_TYPES
SAD4XN 16 ; sad_4x16_sse2
SAD4XN 16, 1 ; sad_4x16_avg_sse2
%endif

View file

@ -17,6 +17,9 @@
#include "aom_ports/mem.h"
#include "./av1_rtcd.h"
#include "av1/common/filter.h"
typedef void (*getNxMvar_fn_t)(const unsigned char *src, int src_stride,
const unsigned char *ref, int ref_stride,
unsigned int *sse, int *sum);
@ -335,6 +338,52 @@ unsigned int aom_mse16x16_sse2(const uint8_t *src, int src_stride,
return *sse;
}
#if CONFIG_EXT_PARTITION_TYPES
unsigned int aom_variance4x16_sse2(const uint8_t *src, int src_stride,
const uint8_t *ref, int ref_stride,
unsigned int *sse) {
int sum;
variance_sse2(src, src_stride, ref, ref_stride, 4, 16, sse, &sum,
get4x4var_sse2, 4);
assert(sum <= 255 * 4 * 16);
assert(sum >= -255 * 4 * 16);
return *sse - (unsigned int)(((int64_t)sum * sum) >> 6);
}
unsigned int aom_variance16x4_sse2(const uint8_t *src, int src_stride,
const uint8_t *ref, int ref_stride,
unsigned int *sse) {
int sum;
variance_sse2(src, src_stride, ref, ref_stride, 16, 4, sse, &sum,
get4x4var_sse2, 4);
assert(sum <= 255 * 16 * 4);
assert(sum >= -255 * 16 * 4);
return *sse - (unsigned int)(((int64_t)sum * sum) >> 6);
}
unsigned int aom_variance8x32_sse2(const uint8_t *src, int src_stride,
const uint8_t *ref, int ref_stride,
unsigned int *sse) {
int sum;
variance_sse2(src, src_stride, ref, ref_stride, 8, 32, sse, &sum,
aom_get8x8var_sse2, 8);
assert(sum <= 255 * 8 * 32);
assert(sum >= -255 * 8 * 32);
return *sse - (unsigned int)(((int64_t)sum * sum) >> 8);
}
unsigned int aom_variance32x8_sse2(const uint8_t *src, int src_stride,
const uint8_t *ref, int ref_stride,
unsigned int *sse) {
int sum;
variance_sse2(src, src_stride, ref, ref_stride, 32, 8, sse, &sum,
aom_get8x8var_sse2, 8);
assert(sum <= 255 * 32 * 8);
assert(sum >= -255 * 32 * 8);
return *sse - (unsigned int)(((int64_t)sum * sum) >> 8);
}
#endif
// The 2 unused parameters are place holders for PIC enabled build.
// These definitions are for functions defined in subpel_variance.asm
#define DECL(w, opt) \
@ -342,13 +391,13 @@ unsigned int aom_mse16x16_sse2(const uint8_t *src, int src_stride,
const uint8_t *src, ptrdiff_t src_stride, int x_offset, int y_offset, \
const uint8_t *dst, ptrdiff_t dst_stride, int height, unsigned int *sse, \
void *unused0, void *unused)
#define DECLS(opt1, opt2) \
DECL(4, opt1); \
DECL(8, opt1); \
DECL(16, opt1)
#define DECLS(opt) \
DECL(4, opt); \
DECL(8, opt); \
DECL(16, opt)
DECLS(sse2, sse2);
DECLS(ssse3, ssse3);
DECLS(sse2);
DECLS(ssse3);
#undef DECLS
#undef DECL
@ -384,23 +433,44 @@ DECLS(ssse3, ssse3);
return sse - (unsigned int)(cast_prod(cast se * se) >> (wlog2 + hlog2)); \
}
#define FNS(opt1, opt2) \
FN(64, 64, 16, 6, 6, opt1, (int64_t), (int64_t)); \
FN(64, 32, 16, 6, 5, opt1, (int64_t), (int64_t)); \
FN(32, 64, 16, 5, 6, opt1, (int64_t), (int64_t)); \
FN(32, 32, 16, 5, 5, opt1, (int64_t), (int64_t)); \
FN(32, 16, 16, 5, 4, opt1, (int64_t), (int64_t)); \
FN(16, 32, 16, 4, 5, opt1, (int64_t), (int64_t)); \
FN(16, 16, 16, 4, 4, opt1, (uint32_t), (int64_t)); \
FN(16, 8, 16, 4, 3, opt1, (int32_t), (int32_t)); \
FN(8, 16, 8, 3, 4, opt1, (int32_t), (int32_t)); \
FN(8, 8, 8, 3, 3, opt1, (int32_t), (int32_t)); \
FN(8, 4, 8, 3, 2, opt1, (int32_t), (int32_t)); \
FN(4, 8, 4, 2, 3, opt1, (int32_t), (int32_t)); \
FN(4, 4, 4, 2, 2, opt1, (int32_t), (int32_t))
#if CONFIG_EXT_PARTITION_TYPES
#define FNS(opt) \
FN(64, 64, 16, 6, 6, opt, (int64_t), (int64_t)); \
FN(64, 32, 16, 6, 5, opt, (int64_t), (int64_t)); \
FN(32, 64, 16, 5, 6, opt, (int64_t), (int64_t)); \
FN(32, 32, 16, 5, 5, opt, (int64_t), (int64_t)); \
FN(32, 16, 16, 5, 4, opt, (int64_t), (int64_t)); \
FN(16, 32, 16, 4, 5, opt, (int64_t), (int64_t)); \
FN(16, 16, 16, 4, 4, opt, (uint32_t), (int64_t)); \
FN(16, 8, 16, 4, 3, opt, (int32_t), (int32_t)); \
FN(8, 16, 8, 3, 4, opt, (int32_t), (int32_t)); \
FN(8, 8, 8, 3, 3, opt, (int32_t), (int32_t)); \
FN(8, 4, 8, 3, 2, opt, (int32_t), (int32_t)); \
FN(4, 8, 4, 2, 3, opt, (int32_t), (int32_t)); \
FN(4, 4, 4, 2, 2, opt, (int32_t), (int32_t)); \
FN(4, 16, 4, 2, 4, opt, (int32_t), (int32_t)); \
FN(16, 4, 16, 4, 2, opt, (int32_t), (int32_t)); \
FN(8, 32, 8, 3, 5, opt, (int32_t), (int32_t)); \
FN(32, 8, 16, 5, 3, opt, (int32_t), (int32_t))
#else
#define FNS(opt) \
FN(64, 64, 16, 6, 6, opt, (int64_t), (int64_t)); \
FN(64, 32, 16, 6, 5, opt, (int64_t), (int64_t)); \
FN(32, 64, 16, 5, 6, opt, (int64_t), (int64_t)); \
FN(32, 32, 16, 5, 5, opt, (int64_t), (int64_t)); \
FN(32, 16, 16, 5, 4, opt, (int64_t), (int64_t)); \
FN(16, 32, 16, 4, 5, opt, (int64_t), (int64_t)); \
FN(16, 16, 16, 4, 4, opt, (uint32_t), (int64_t)); \
FN(16, 8, 16, 4, 3, opt, (int32_t), (int32_t)); \
FN(8, 16, 8, 3, 4, opt, (int32_t), (int32_t)); \
FN(8, 8, 8, 3, 3, opt, (int32_t), (int32_t)); \
FN(8, 4, 8, 3, 2, opt, (int32_t), (int32_t)); \
FN(4, 8, 4, 2, 3, opt, (int32_t), (int32_t)); \
FN(4, 4, 4, 2, 2, opt, (int32_t), (int32_t))
#endif
FNS(sse2, sse2);
FNS(ssse3, ssse3);
FNS(sse2);
FNS(ssse3);
#undef FNS
#undef FN
@ -412,13 +482,13 @@ FNS(ssse3, ssse3);
const uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *sec, \
ptrdiff_t sec_stride, int height, unsigned int *sse, void *unused0, \
void *unused)
#define DECLS(opt1, opt2) \
DECL(4, opt1); \
DECL(8, opt1); \
DECL(16, opt1)
#define DECLS(opt) \
DECL(4, opt); \
DECL(8, opt); \
DECL(16, opt)
DECLS(sse2, sse2);
DECLS(ssse3, ssse3);
DECLS(sse2);
DECLS(ssse3);
#undef DECL
#undef DECLS
@ -455,236 +525,149 @@ DECLS(ssse3, ssse3);
return sse - (unsigned int)(cast_prod(cast se * se) >> (wlog2 + hlog2)); \
}
#define FNS(opt1, opt2) \
FN(64, 64, 16, 6, 6, opt1, (int64_t), (int64_t)); \
FN(64, 32, 16, 6, 5, opt1, (int64_t), (int64_t)); \
FN(32, 64, 16, 5, 6, opt1, (int64_t), (int64_t)); \
FN(32, 32, 16, 5, 5, opt1, (int64_t), (int64_t)); \
FN(32, 16, 16, 5, 4, opt1, (int64_t), (int64_t)); \
FN(16, 32, 16, 4, 5, opt1, (int64_t), (int64_t)); \
FN(16, 16, 16, 4, 4, opt1, (uint32_t), (int64_t)); \
FN(16, 8, 16, 4, 3, opt1, (uint32_t), (int32_t)); \
FN(8, 16, 8, 3, 4, opt1, (uint32_t), (int32_t)); \
FN(8, 8, 8, 3, 3, opt1, (uint32_t), (int32_t)); \
FN(8, 4, 8, 3, 2, opt1, (uint32_t), (int32_t)); \
FN(4, 8, 4, 2, 3, opt1, (uint32_t), (int32_t)); \
FN(4, 4, 4, 2, 2, opt1, (uint32_t), (int32_t))
#if CONFIG_EXT_PARTITION_TYPES
#define FNS(opt) \
FN(64, 64, 16, 6, 6, opt, (int64_t), (int64_t)); \
FN(64, 32, 16, 6, 5, opt, (int64_t), (int64_t)); \
FN(32, 64, 16, 5, 6, opt, (int64_t), (int64_t)); \
FN(32, 32, 16, 5, 5, opt, (int64_t), (int64_t)); \
FN(32, 16, 16, 5, 4, opt, (int64_t), (int64_t)); \
FN(16, 32, 16, 4, 5, opt, (int64_t), (int64_t)); \
FN(16, 16, 16, 4, 4, opt, (uint32_t), (int64_t)); \
FN(16, 8, 16, 4, 3, opt, (uint32_t), (int32_t)); \
FN(8, 16, 8, 3, 4, opt, (uint32_t), (int32_t)); \
FN(8, 8, 8, 3, 3, opt, (uint32_t), (int32_t)); \
FN(8, 4, 8, 3, 2, opt, (uint32_t), (int32_t)); \
FN(4, 8, 4, 2, 3, opt, (uint32_t), (int32_t)); \
FN(4, 4, 4, 2, 2, opt, (uint32_t), (int32_t)); \
FN(4, 16, 4, 2, 4, opt, (int32_t), (int32_t)); \
FN(16, 4, 16, 4, 2, opt, (int32_t), (int32_t)); \
FN(8, 32, 8, 3, 5, opt, (int32_t), (int32_t)); \
FN(32, 8, 16, 5, 3, opt, (int32_t), (int32_t))
#else
#define FNS(opt) \
FN(64, 64, 16, 6, 6, opt, (int64_t), (int64_t)); \
FN(64, 32, 16, 6, 5, opt, (int64_t), (int64_t)); \
FN(32, 64, 16, 5, 6, opt, (int64_t), (int64_t)); \
FN(32, 32, 16, 5, 5, opt, (int64_t), (int64_t)); \
FN(32, 16, 16, 5, 4, opt, (int64_t), (int64_t)); \
FN(16, 32, 16, 4, 5, opt, (int64_t), (int64_t)); \
FN(16, 16, 16, 4, 4, opt, (uint32_t), (int64_t)); \
FN(16, 8, 16, 4, 3, opt, (uint32_t), (int32_t)); \
FN(8, 16, 8, 3, 4, opt, (uint32_t), (int32_t)); \
FN(8, 8, 8, 3, 3, opt, (uint32_t), (int32_t)); \
FN(8, 4, 8, 3, 2, opt, (uint32_t), (int32_t)); \
FN(4, 8, 4, 2, 3, opt, (uint32_t), (int32_t)); \
FN(4, 4, 4, 2, 2, opt, (uint32_t), (int32_t))
#endif
FNS(sse2, sse);
FNS(ssse3, ssse3);
FNS(sse2);
FNS(ssse3);
#undef FNS
#undef FN
void aom_upsampled_pred_sse2(uint8_t *comp_pred, int width, int height,
int subpel_x_q3, int subpel_y_q3,
const uint8_t *ref, int ref_stride) {
int i, j;
int stride = ref_stride << 3;
if (width >= 16) {
// read 16 points at one time
for (i = 0; i < height; i++) {
for (j = 0; j < width; j += 16) {
__m128i s0 = _mm_loadu_si128((const __m128i *)ref);
__m128i s1 = _mm_loadu_si128((const __m128i *)(ref + 16));
__m128i s2 = _mm_loadu_si128((const __m128i *)(ref + 32));
__m128i s3 = _mm_loadu_si128((const __m128i *)(ref + 48));
__m128i s4 = _mm_loadu_si128((const __m128i *)(ref + 64));
__m128i s5 = _mm_loadu_si128((const __m128i *)(ref + 80));
__m128i s6 = _mm_loadu_si128((const __m128i *)(ref + 96));
__m128i s7 = _mm_loadu_si128((const __m128i *)(ref + 112));
__m128i t0, t1, t2, t3;
t0 = _mm_unpacklo_epi8(s0, s1);
s1 = _mm_unpackhi_epi8(s0, s1);
t1 = _mm_unpacklo_epi8(s2, s3);
s3 = _mm_unpackhi_epi8(s2, s3);
t2 = _mm_unpacklo_epi8(s4, s5);
s5 = _mm_unpackhi_epi8(s4, s5);
t3 = _mm_unpacklo_epi8(s6, s7);
s7 = _mm_unpackhi_epi8(s6, s7);
s0 = _mm_unpacklo_epi8(t0, s1);
s2 = _mm_unpacklo_epi8(t1, s3);
s4 = _mm_unpacklo_epi8(t2, s5);
s6 = _mm_unpacklo_epi8(t3, s7);
s0 = _mm_unpacklo_epi32(s0, s2);
s4 = _mm_unpacklo_epi32(s4, s6);
s0 = _mm_unpacklo_epi64(s0, s4);
_mm_storeu_si128((__m128i *)(comp_pred), s0);
if (!subpel_x_q3 && !subpel_y_q3) {
if (width >= 16) {
int i;
assert(!(width & 15));
/*Read 16 pixels one row at a time.*/
for (i = 0; i < height; i++) {
int j;
for (j = 0; j < width; j += 16) {
__m128i s0 = _mm_loadu_si128((const __m128i *)ref);
_mm_storeu_si128((__m128i *)comp_pred, s0);
comp_pred += 16;
ref += 16;
}
ref += ref_stride - width;
}
} else if (width >= 8) {
int i;
assert(!(width & 7));
assert(!(height & 1));
/*Read 8 pixels two rows at a time.*/
for (i = 0; i < height; i += 2) {
__m128i s0 = _mm_loadl_epi64((const __m128i *)ref);
__m128i s1 = _mm_loadl_epi64((const __m128i *)(ref + ref_stride));
__m128i t0 = _mm_unpacklo_epi64(s0, s1);
_mm_storeu_si128((__m128i *)comp_pred, t0);
comp_pred += 16;
ref += 16 * 8;
ref += 2 * ref_stride;
}
ref += stride - (width << 3);
}
} else if (width >= 8) {
// read 8 points at one time
for (i = 0; i < height; i++) {
for (j = 0; j < width; j += 8) {
__m128i s0 = _mm_loadu_si128((const __m128i *)ref);
__m128i s1 = _mm_loadu_si128((const __m128i *)(ref + 16));
__m128i s2 = _mm_loadu_si128((const __m128i *)(ref + 32));
__m128i s3 = _mm_loadu_si128((const __m128i *)(ref + 48));
__m128i t0, t1;
t0 = _mm_unpacklo_epi8(s0, s1);
s1 = _mm_unpackhi_epi8(s0, s1);
t1 = _mm_unpacklo_epi8(s2, s3);
s3 = _mm_unpackhi_epi8(s2, s3);
s0 = _mm_unpacklo_epi8(t0, s1);
s2 = _mm_unpacklo_epi8(t1, s3);
s0 = _mm_unpacklo_epi32(s0, s2);
_mm_storel_epi64((__m128i *)(comp_pred), s0);
comp_pred += 8;
ref += 8 * 8;
} else {
int i;
assert(!(width & 3));
assert(!(height & 3));
/*Read 4 pixels four rows at a time.*/
for (i = 0; i < height; i++) {
__m128i s0 = _mm_cvtsi32_si128(*(const uint32_t *)ref);
__m128i s1 = _mm_cvtsi32_si128(*(const uint32_t *)(ref + ref_stride));
__m128i s2 =
_mm_cvtsi32_si128(*(const uint32_t *)(ref + 2 * ref_stride));
__m128i s3 =
_mm_cvtsi32_si128(*(const uint32_t *)(ref + 3 * ref_stride));
__m128i t0 = _mm_unpacklo_epi32(s0, s1);
__m128i t1 = _mm_unpacklo_epi32(s2, s3);
__m128i u0 = _mm_unpacklo_epi64(t0, t1);
_mm_storeu_si128((__m128i *)comp_pred, u0);
comp_pred += 16;
ref += 4 * ref_stride;
}
ref += stride - (width << 3);
}
} else {
// read 4 points at one time
for (i = 0; i < height; i++) {
for (j = 0; j < width; j += 4) {
__m128i s0 = _mm_loadu_si128((const __m128i *)ref);
__m128i s1 = _mm_loadu_si128((const __m128i *)(ref + 16));
__m128i t0;
t0 = _mm_unpacklo_epi8(s0, s1);
s1 = _mm_unpackhi_epi8(s0, s1);
s0 = _mm_unpacklo_epi8(t0, s1);
*(int *)comp_pred = _mm_cvtsi128_si32(s0);
comp_pred += 4;
ref += 4 * 8;
}
ref += stride - (width << 3);
InterpFilterParams filter;
filter = av1_get_interp_filter_params(EIGHTTAP_REGULAR);
if (!subpel_y_q3) {
const int16_t *kernel;
kernel = av1_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1);
aom_convolve8_horiz(ref, ref_stride, comp_pred, width, kernel, 16, NULL,
-1, width, height);
} else if (!subpel_x_q3) {
const int16_t *kernel;
kernel = av1_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1);
aom_convolve8_vert(ref, ref_stride, comp_pred, width, NULL, -1, kernel,
16, width, height);
} else {
DECLARE_ALIGNED(16, uint8_t,
temp[((MAX_SB_SIZE * 2 + 16) + 16) * MAX_SB_SIZE]);
const int16_t *kernel_x;
const int16_t *kernel_y;
int intermediate_height;
kernel_x = av1_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1);
kernel_y = av1_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1);
intermediate_height =
(((height - 1) * 8 + subpel_y_q3) >> 3) + filter.taps;
assert(intermediate_height <= (MAX_SB_SIZE * 2 + 16) + 16);
aom_convolve8_horiz(ref - ref_stride * ((filter.taps >> 1) - 1),
ref_stride, temp, MAX_SB_SIZE, kernel_x, 16, NULL, -1,
width, intermediate_height);
aom_convolve8_vert(temp + MAX_SB_SIZE * ((filter.taps >> 1) - 1),
MAX_SB_SIZE, comp_pred, width, NULL, -1, kernel_y, 16,
width, height);
}
}
}
void aom_comp_avg_upsampled_pred_sse2(uint8_t *comp_pred, const uint8_t *pred,
int width, int height, const uint8_t *ref,
int width, int height, int subpel_x_q3,
int subpel_y_q3, const uint8_t *ref,
int ref_stride) {
const __m128i zero = _mm_set1_epi16(0);
const __m128i one = _mm_set1_epi16(1);
int i, j;
int stride = ref_stride << 3;
if (width >= 16) {
// read 16 points at one time
for (i = 0; i < height; i++) {
for (j = 0; j < width; j += 16) {
__m128i s0 = _mm_loadu_si128((const __m128i *)ref);
__m128i s1 = _mm_loadu_si128((const __m128i *)(ref + 16));
__m128i s2 = _mm_loadu_si128((const __m128i *)(ref + 32));
__m128i s3 = _mm_loadu_si128((const __m128i *)(ref + 48));
__m128i s4 = _mm_loadu_si128((const __m128i *)(ref + 64));
__m128i s5 = _mm_loadu_si128((const __m128i *)(ref + 80));
__m128i s6 = _mm_loadu_si128((const __m128i *)(ref + 96));
__m128i s7 = _mm_loadu_si128((const __m128i *)(ref + 112));
__m128i p0 = _mm_loadu_si128((const __m128i *)pred);
__m128i p1;
__m128i t0, t1, t2, t3;
t0 = _mm_unpacklo_epi8(s0, s1);
s1 = _mm_unpackhi_epi8(s0, s1);
t1 = _mm_unpacklo_epi8(s2, s3);
s3 = _mm_unpackhi_epi8(s2, s3);
t2 = _mm_unpacklo_epi8(s4, s5);
s5 = _mm_unpackhi_epi8(s4, s5);
t3 = _mm_unpacklo_epi8(s6, s7);
s7 = _mm_unpackhi_epi8(s6, s7);
s0 = _mm_unpacklo_epi8(t0, s1);
s2 = _mm_unpacklo_epi8(t1, s3);
s4 = _mm_unpacklo_epi8(t2, s5);
s6 = _mm_unpacklo_epi8(t3, s7);
s0 = _mm_unpacklo_epi32(s0, s2);
s4 = _mm_unpacklo_epi32(s4, s6);
s0 = _mm_unpacklo_epi8(s0, zero);
s4 = _mm_unpacklo_epi8(s4, zero);
p1 = _mm_unpackhi_epi8(p0, zero);
p0 = _mm_unpacklo_epi8(p0, zero);
p0 = _mm_adds_epu16(s0, p0);
p1 = _mm_adds_epu16(s4, p1);
p0 = _mm_adds_epu16(p0, one);
p1 = _mm_adds_epu16(p1, one);
p0 = _mm_srli_epi16(p0, 1);
p1 = _mm_srli_epi16(p1, 1);
p0 = _mm_packus_epi16(p0, p1);
_mm_storeu_si128((__m128i *)(comp_pred), p0);
comp_pred += 16;
pred += 16;
ref += 16 * 8;
}
ref += stride - (width << 3);
}
} else if (width >= 8) {
// read 8 points at one time
for (i = 0; i < height; i++) {
for (j = 0; j < width; j += 8) {
__m128i s0 = _mm_loadu_si128((const __m128i *)ref);
__m128i s1 = _mm_loadu_si128((const __m128i *)(ref + 16));
__m128i s2 = _mm_loadu_si128((const __m128i *)(ref + 32));
__m128i s3 = _mm_loadu_si128((const __m128i *)(ref + 48));
__m128i p0 = _mm_loadl_epi64((const __m128i *)pred);
__m128i t0, t1;
t0 = _mm_unpacklo_epi8(s0, s1);
s1 = _mm_unpackhi_epi8(s0, s1);
t1 = _mm_unpacklo_epi8(s2, s3);
s3 = _mm_unpackhi_epi8(s2, s3);
s0 = _mm_unpacklo_epi8(t0, s1);
s2 = _mm_unpacklo_epi8(t1, s3);
s0 = _mm_unpacklo_epi32(s0, s2);
s0 = _mm_unpacklo_epi8(s0, zero);
p0 = _mm_unpacklo_epi8(p0, zero);
p0 = _mm_adds_epu16(s0, p0);
p0 = _mm_adds_epu16(p0, one);
p0 = _mm_srli_epi16(p0, 1);
p0 = _mm_packus_epi16(p0, zero);
_mm_storel_epi64((__m128i *)(comp_pred), p0);
comp_pred += 8;
pred += 8;
ref += 8 * 8;
}
ref += stride - (width << 3);
}
} else {
// read 4 points at one time
for (i = 0; i < height; i++) {
for (j = 0; j < width; j += 4) {
__m128i s0 = _mm_loadu_si128((const __m128i *)ref);
__m128i s1 = _mm_loadu_si128((const __m128i *)(ref + 16));
__m128i p0 = _mm_cvtsi32_si128(*(const uint32_t *)pred);
__m128i t0;
t0 = _mm_unpacklo_epi8(s0, s1);
s1 = _mm_unpackhi_epi8(s0, s1);
s0 = _mm_unpacklo_epi8(t0, s1);
s0 = _mm_unpacklo_epi8(s0, zero);
p0 = _mm_unpacklo_epi8(p0, zero);
p0 = _mm_adds_epu16(s0, p0);
p0 = _mm_adds_epu16(p0, one);
p0 = _mm_srli_epi16(p0, 1);
p0 = _mm_packus_epi16(p0, zero);
*(int *)comp_pred = _mm_cvtsi128_si32(p0);
comp_pred += 4;
pred += 4;
ref += 4 * 8;
}
ref += stride - (width << 3);
}
int n;
int i;
aom_upsampled_pred(comp_pred, width, height, subpel_x_q3, subpel_y_q3, ref,
ref_stride);
/*The total number of pixels must be a multiple of 16 (e.g., 4x4).*/
assert(!(width * height & 15));
n = width * height >> 4;
for (i = 0; i < n; i++) {
__m128i s0 = _mm_loadu_si128((const __m128i *)comp_pred);
__m128i p0 = _mm_loadu_si128((const __m128i *)pred);
_mm_storeu_si128((__m128i *)comp_pred, _mm_avg_epu8(s0, p0));
comp_pred += 16;
pred += 16;
}
}

View file

@ -21,7 +21,7 @@ set(AOM_MEM_SOURCES
function (setup_aom_mem_targets)
add_library(aom_mem OBJECT ${AOM_MEM_SOURCES})
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_mem PARENT_SCOPE)
target_sources(aom PUBLIC $<TARGET_OBJECTS:aom_mem>)
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_mem>)
endfunction ()
endif () # AOM_AOM_MEM_AOM_MEM_CMAKE_

View file

@ -45,25 +45,24 @@ function (setup_aom_ports_targets)
elseif ("${AOM_TARGET_CPU}" MATCHES "arm")
add_library(aom_ports OBJECT ${AOM_PORTS_SOURCES_ARM})
set(aom_ports_has_symbols 1)
list(APPEND AOM_LIB_TARGETS aom_ports)
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_ports>)
endif ()
if (aom_ports_has_symbols)
target_sources(aom_ports PUBLIC ${AOM_PORTS_INCLUDES})
target_sources(aom_ports PRIVATE ${AOM_PORTS_INCLUDES})
if ("${AOM_TARGET_CPU}" STREQUAL "x86" OR
"${AOM_TARGET_CPU}" STREQUAL "x86_64")
target_sources(aom_ports PUBLIC ${AOM_PORTS_INCLUDES_X86})
target_sources(aom_ports PRIVATE ${AOM_PORTS_INCLUDES_X86})
endif ()
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE)
else ()
target_sources(aom PUBLIC ${AOM_PORTS_INCLUDES})
target_sources(aom PRIVATE ${AOM_PORTS_INCLUDES})
if ("${AOM_TARGET_CPU}" STREQUAL "x86" OR
"${AOM_TARGET_CPU}" STREQUAL "x86_64")
target_sources(aom PUBLIC ${AOM_PORTS_INCLUDES_X86})
target_sources(aom PRIVATE ${AOM_PORTS_INCLUDES_X86})
endif ()
endif ()
endfunction ()

View file

@ -26,11 +26,11 @@ set(AOM_SCALE_INTRIN_DSPR2
# target must exist before this function is called.
function (setup_aom_scale_targets)
add_library(aom_scale OBJECT ${AOM_SCALE_SOURCES})
target_sources(aom PUBLIC $<TARGET_OBJECTS:aom_scale>)
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_scale>)
if (HAVE_DSPR2)
add_intrinsics_object_library("" "dspr2" "aom_scale"
"AOM_SCALE_INTRIN_DSPR2")
"AOM_SCALE_INTRIN_DSPR2" "aom_scale")
endif ()
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_scale PARENT_SCOPE)

View file

@ -69,6 +69,10 @@ typedef struct yv12_buffer_config {
int subsampling_y;
unsigned int bit_depth;
aom_color_space_t color_space;
#if CONFIG_COLORSPACE_HEADERS
aom_transfer_function_t transfer_function;
aom_chroma_sample_position_t chroma_sample_position;
#endif
aom_color_range_t color_range;
int render_width;
int render_height;

View file

@ -28,7 +28,7 @@ endif ()
function (setup_aom_util_targets)
add_library(aom_util OBJECT ${AOM_UTIL_SOURCES})
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_util PARENT_SCOPE)
target_sources(aom PUBLIC $<TARGET_OBJECTS:aom_util>)
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_util>)
endfunction ()
endif () # AOM_AOM_UTIL_AOM_UTIL_CMAKE_

View file

@ -519,7 +519,7 @@ static int main_loop(int argc, const char **argv_) {
int use_y4m = 1;
int opt_yv12 = 0;
int opt_i420 = 0;
aom_codec_dec_cfg_t cfg = { 0, 0, 0 };
aom_codec_dec_cfg_t cfg = { 0, 0, 0, CONFIG_LOWBITDEPTH };
#if CONFIG_HIGHBITDEPTH
unsigned int output_bit_depth = 0;
#endif

View file

@ -194,9 +194,6 @@ static const arg_def_t disable_warning_prompt =
"Display warnings, but do not prompt user to continue.");
#if CONFIG_HIGHBITDEPTH
static const arg_def_t test16bitinternalarg = ARG_DEF(
NULL, "test-16bit-internal", 0, "Force use of 16 bit internal buffer");
static const struct arg_enum_list bitdepth_enum[] = {
{ "8", AOM_BITS_8 }, { "10", AOM_BITS_10 }, { "12", AOM_BITS_12 }, { NULL, 0 }
};
@ -258,6 +255,11 @@ static const arg_def_t error_resilient =
ARG_DEF(NULL, "error-resilient", 1, "Enable error resiliency features");
static const arg_def_t lag_in_frames =
ARG_DEF(NULL, "lag-in-frames", 1, "Max number of frames to lag");
#if CONFIG_EXT_TILE
static const arg_def_t large_scale_tile =
ARG_DEF(NULL, "large-scale-tile", 1,
"Large scale tile coding (0: off (default), 1: on)");
#endif // CONFIG_EXT_TILE
static const arg_def_t *global_args[] = { &use_yv12,
&use_i420,
@ -276,24 +278,31 @@ static const arg_def_t *global_args[] = { &use_yv12,
&framerate,
&error_resilient,
#if CONFIG_HIGHBITDEPTH
&test16bitinternalarg,
&bitdeptharg,
#endif
&lag_in_frames,
#if CONFIG_EXT_TILE
&large_scale_tile,
#endif // CONFIG_EXT_TILE
NULL };
static const arg_def_t dropframe_thresh =
ARG_DEF(NULL, "drop-frame", 1, "Temporal resampling threshold (buf %)");
static const arg_def_t resize_allowed =
ARG_DEF(NULL, "resize-allowed", 1, "Spatial resampling enabled (bool)");
static const arg_def_t resize_width =
ARG_DEF(NULL, "resize-width", 1, "Width of encoded frame");
static const arg_def_t resize_height =
ARG_DEF(NULL, "resize-height", 1, "Height of encoded frame");
static const arg_def_t resize_up_thresh =
ARG_DEF(NULL, "resize-up", 1, "Upscale threshold (buf %)");
static const arg_def_t resize_down_thresh =
ARG_DEF(NULL, "resize-down", 1, "Downscale threshold (buf %)");
static const arg_def_t resize_mode =
ARG_DEF(NULL, "resize-mode", 1, "Frame resize mode");
static const arg_def_t resize_numerator =
ARG_DEF(NULL, "resize-numerator", 1, "Frame resize numerator");
static const arg_def_t resize_kf_numerator =
ARG_DEF(NULL, "resize-kf-numerator", 1, "Frame resize keyframe numerator");
#if CONFIG_FRAME_SUPERRES
static const arg_def_t superres_mode =
ARG_DEF(NULL, "superres-mode", 1, "Frame super-resolution mode");
static const arg_def_t superres_numerator =
ARG_DEF(NULL, "superres-numerator", 1, "Frame super-resolution numerator");
static const arg_def_t superres_kf_numerator =
ARG_DEF(NULL, "superres-kf-numerator", 1,
"Frame super-resolution keyframe numerator");
#endif // CONFIG_FRAME_SUPERRES
static const struct arg_enum_list end_usage_enum[] = { { "vbr", AOM_VBR },
{ "cbr", AOM_CBR },
{ "cq", AOM_CQ },
@ -317,12 +326,25 @@ static const arg_def_t buf_initial_sz =
ARG_DEF(NULL, "buf-initial-sz", 1, "Client initial buffer size (ms)");
static const arg_def_t buf_optimal_sz =
ARG_DEF(NULL, "buf-optimal-sz", 1, "Client optimal buffer size (ms)");
static const arg_def_t *rc_args[] = {
&dropframe_thresh, &resize_allowed, &resize_width, &resize_height,
&resize_up_thresh, &resize_down_thresh, &end_usage, &target_bitrate,
&min_quantizer, &max_quantizer, &undershoot_pct, &overshoot_pct,
&buf_sz, &buf_initial_sz, &buf_optimal_sz, NULL
};
static const arg_def_t *rc_args[] = { &dropframe_thresh,
&resize_mode,
&resize_numerator,
&resize_kf_numerator,
#if CONFIG_FRAME_SUPERRES
&superres_mode,
&superres_numerator,
&superres_kf_numerator,
#endif // CONFIG_FRAME_SUPERRES
&end_usage,
&target_bitrate,
&min_quantizer,
&max_quantizer,
&undershoot_pct,
&overshoot_pct,
&buf_sz,
&buf_initial_sz,
&buf_optimal_sz,
NULL };
static const arg_def_t bias_pct =
ARG_DEF(NULL, "bias-pct", 1, "CBR/VBR bias (0=CBR, 100=VBR)");
@ -367,17 +389,16 @@ static const arg_def_t max_intra_rate_pct =
#if CONFIG_AV1_ENCODER
static const arg_def_t cpu_used_av1 =
ARG_DEF(NULL, "cpu-used", 1, "CPU Used (0..8)");
#if CONFIG_EXT_TILE
static const arg_def_t single_tile_decoding =
ARG_DEF(NULL, "single-tile-decoding", 1,
"Single tile decoding (0: off (default), 1: on)");
#endif // CONFIG_EXT_TILE
static const arg_def_t tile_cols =
ARG_DEF(NULL, "tile-columns", 1, "Number of tile columns to use, log2");
static const arg_def_t tile_rows =
ARG_DEF(NULL, "tile-rows", 1,
"Number of tile rows to use, log2 (set to 0 while threads > 1)");
#if CONFIG_EXT_TILE
static const arg_def_t tile_encoding_mode =
ARG_DEF(NULL, "tile-encoding-mode", 1,
"Tile encoding mode (0: normal"
" (default), 1: vr)");
#endif
#if CONFIG_DEPENDENT_HORZTILES
static const arg_def_t tile_dependent_rows =
ARG_DEF(NULL, "tile-dependent-rows", 1, "Enable dependent Tile rows");
@ -397,14 +418,12 @@ static const arg_def_t qm_min = ARG_DEF(
static const arg_def_t qm_max = ARG_DEF(
NULL, "qm-max", 1, "Max quant matrix flatness (0..15), default is 16");
#endif
#if CONFIG_TILE_GROUPS
static const arg_def_t num_tg = ARG_DEF(
NULL, "num-tile-groups", 1, "Maximum number of tile groups, default is 1");
static const arg_def_t mtu_size =
ARG_DEF(NULL, "mtu-size", 1,
"MTU size for a tile group, default is 0 (no MTU targeting), "
"overrides maximum number of tile groups");
#endif
#if CONFIG_TEMPMV_SIGNALING
static const arg_def_t disable_tempmv = ARG_DEF(
NULL, "disable-tempmv", 1, "Disable temporal mv prediction (default is 0)");
@ -449,9 +468,16 @@ static const struct arg_enum_list color_space_enum[] = {
{ "bt709", AOM_CS_BT_709 },
{ "smpte170", AOM_CS_SMPTE_170 },
{ "smpte240", AOM_CS_SMPTE_240 },
#if CONFIG_COLORSPACE_HEADERS
{ "bt2020ncl", AOM_CS_BT_2020_NCL },
{ "bt2020cl", AOM_CS_BT_2020_CL },
{ "sRGB", AOM_CS_SRGB },
{ "ICtCp", AOM_CS_ICTCP },
#else
{ "bt2020", AOM_CS_BT_2020 },
{ "reserved", AOM_CS_RESERVED },
{ "sRGB", AOM_CS_SRGB },
#endif
{ NULL, 0 }
};
@ -459,6 +485,32 @@ static const arg_def_t input_color_space =
ARG_DEF_ENUM(NULL, "color-space", 1, "The color space of input content:",
color_space_enum);
#if CONFIG_COLORSPACE_HEADERS
static const struct arg_enum_list transfer_function_enum[] = {
{ "unknown", AOM_TF_UNKNOWN },
{ "bt709", AOM_TF_BT_709 },
{ "pq", AOM_TF_PQ },
{ "hlg", AOM_TF_HLG },
{ NULL, 0 }
};
static const arg_def_t input_transfer_function = ARG_DEF_ENUM(
NULL, "transfer-function", 1, "The transfer function of input content:",
transfer_function_enum);
static const struct arg_enum_list chroma_sample_position_enum[] = {
{ "unknown", AOM_CSP_UNKNOWN },
{ "vertical", AOM_CSP_VERTICAL },
{ "colocated", AOM_CSP_COLOCATED },
{ NULL, 0 }
};
static const arg_def_t input_chroma_sample_position =
ARG_DEF_ENUM(NULL, "chroma-sample-position", 1,
"The chroma sample position when chroma 4:2:0 is signaled:",
chroma_sample_position_enum);
#endif
static const struct arg_enum_list tune_content_enum[] = {
{ "default", AOM_CONTENT_DEFAULT },
{ "screen", AOM_CONTENT_SCREEN },
@ -485,11 +537,11 @@ static const arg_def_t *av1_args[] = { &cpu_used_av1,
&auto_altref,
&sharpness,
&static_thresh,
#if CONFIG_EXT_TILE
&single_tile_decoding,
#endif // CONFIG_EXT_TILE
&tile_cols,
&tile_rows,
#if CONFIG_EXT_TILE
&tile_encoding_mode,
#endif
#if CONFIG_DEPENDENT_HORZTILES
&tile_dependent_rows,
#endif
@ -518,15 +570,17 @@ static const arg_def_t *av1_args[] = { &cpu_used_av1,
&noise_sens,
&tune_content,
&input_color_space,
#if CONFIG_COLORSPACE_HEADERS
&input_transfer_function,
&input_chroma_sample_position,
#endif
&min_gf_interval,
&max_gf_interval,
#if CONFIG_EXT_PARTITION
&superblock_size,
#endif // CONFIG_EXT_PARTITION
#if CONFIG_TILE_GROUPS
&num_tg,
&mtu_size,
#endif
#if CONFIG_TEMPMV_SIGNALING
&disable_tempmv,
#endif
@ -539,11 +593,11 @@ static const int av1_arg_ctrl_map[] = { AOME_SET_CPUUSED,
AOME_SET_ENABLEAUTOALTREF,
AOME_SET_SHARPNESS,
AOME_SET_STATIC_THRESHOLD,
#if CONFIG_EXT_TILE
AV1E_SET_SINGLE_TILE_DECODING,
#endif // CONFIG_EXT_TILE
AV1E_SET_TILE_COLUMNS,
AV1E_SET_TILE_ROWS,
#if CONFIG_EXT_TILE
AV1E_SET_TILE_ENCODING_MODE,
#endif
#if CONFIG_DEPENDENT_HORZTILES
AV1E_SET_TILE_DEPENDENT_ROWS,
#endif
@ -572,15 +626,17 @@ static const int av1_arg_ctrl_map[] = { AOME_SET_CPUUSED,
AV1E_SET_NOISE_SENSITIVITY,
AV1E_SET_TUNE_CONTENT,
AV1E_SET_COLOR_SPACE,
#if CONFIG_COLORSPACE_HEADERS
AV1E_SET_TRANSFER_FUNCTION,
AV1E_SET_CHROMA_SAMPLE_POSITION,
#endif
AV1E_SET_MIN_GF_INTERVAL,
AV1E_SET_MAX_GF_INTERVAL,
#if CONFIG_EXT_PARTITION
AV1E_SET_SUPERBLOCK_SIZE,
#endif // CONFIG_EXT_PARTITION
#if CONFIG_TILE_GROUPS
AV1E_SET_NUM_TG,
AV1E_SET_MTU,
#endif
#if CONFIG_TEMPMV_SIGNALING
AV1E_SET_DISABLE_TEMPMV,
#endif
@ -651,10 +707,8 @@ struct stream_config {
int arg_ctrls[ARG_CTRL_CNT_MAX][2];
int arg_ctrl_cnt;
int write_webm;
#if CONFIG_HIGHBITDEPTH
// whether to use 16bit internal buffers
int use_16bit_internal;
#endif
};
struct stream_state {
@ -906,9 +960,7 @@ static int parse_stream_params(struct AvxEncoderConfig *global,
static const int *ctrl_args_map = NULL;
struct stream_config *config = &stream->config;
int eos_mark_found = 0;
#if CONFIG_HIGHBITDEPTH
int test_16bit_internal = 0;
#endif
int webm_forced = 0;
// Handle codec specific options
if (0) {
@ -937,6 +989,13 @@ static int parse_stream_params(struct AvxEncoderConfig *global,
if (arg_match(&arg, &outputfile, argi)) {
config->out_fn = arg.val;
if (!webm_forced) {
const size_t out_fn_len = strlen(config->out_fn);
if (out_fn_len >= 4 &&
!strcmp(config->out_fn + out_fn_len - 4, ".ivf")) {
config->write_webm = 0;
}
}
} else if (arg_match(&arg, &fpf_name, argi)) {
config->stats_fn = arg.val;
#if CONFIG_FP_MB_STATS
@ -946,6 +1005,7 @@ static int parse_stream_params(struct AvxEncoderConfig *global,
} else if (arg_match(&arg, &use_webm, argi)) {
#if CONFIG_WEBM_IO
config->write_webm = 1;
webm_forced = 1;
#else
die("Error: --webm specified but webm is disabled.");
#endif
@ -976,18 +1036,26 @@ static int parse_stream_params(struct AvxEncoderConfig *global,
config->cfg.g_error_resilient = arg_parse_uint(&arg);
} else if (arg_match(&arg, &lag_in_frames, argi)) {
config->cfg.g_lag_in_frames = arg_parse_uint(&arg);
#if CONFIG_EXT_TILE
} else if (arg_match(&arg, &large_scale_tile, argi)) {
config->cfg.large_scale_tile = arg_parse_uint(&arg);
#endif // CONFIG_EXT_TILE
} else if (arg_match(&arg, &dropframe_thresh, argi)) {
config->cfg.rc_dropframe_thresh = arg_parse_uint(&arg);
} else if (arg_match(&arg, &resize_allowed, argi)) {
config->cfg.rc_resize_allowed = arg_parse_uint(&arg);
} else if (arg_match(&arg, &resize_width, argi)) {
config->cfg.rc_scaled_width = arg_parse_uint(&arg);
} else if (arg_match(&arg, &resize_height, argi)) {
config->cfg.rc_scaled_height = arg_parse_uint(&arg);
} else if (arg_match(&arg, &resize_up_thresh, argi)) {
config->cfg.rc_resize_up_thresh = arg_parse_uint(&arg);
} else if (arg_match(&arg, &resize_down_thresh, argi)) {
config->cfg.rc_resize_down_thresh = arg_parse_uint(&arg);
} else if (arg_match(&arg, &resize_mode, argi)) {
config->cfg.rc_resize_mode = arg_parse_uint(&arg);
} else if (arg_match(&arg, &resize_numerator, argi)) {
config->cfg.rc_resize_numerator = arg_parse_uint(&arg);
} else if (arg_match(&arg, &resize_kf_numerator, argi)) {
config->cfg.rc_resize_kf_numerator = arg_parse_uint(&arg);
#if CONFIG_FRAME_SUPERRES
} else if (arg_match(&arg, &superres_mode, argi)) {
config->cfg.rc_superres_mode = arg_parse_uint(&arg);
} else if (arg_match(&arg, &superres_numerator, argi)) {
config->cfg.rc_superres_numerator = arg_parse_uint(&arg);
} else if (arg_match(&arg, &superres_kf_numerator, argi)) {
config->cfg.rc_superres_kf_numerator = arg_parse_uint(&arg);
#endif // CONFIG_FRAME_SUPERRES
} else if (arg_match(&arg, &end_usage, argi)) {
config->cfg.rc_end_usage = arg_parse_enum_or_int(&arg);
} else if (arg_match(&arg, &target_bitrate, argi)) {
@ -1026,13 +1094,6 @@ static int parse_stream_params(struct AvxEncoderConfig *global,
config->cfg.kf_max_dist = arg_parse_uint(&arg);
} else if (arg_match(&arg, &kf_disabled, argi)) {
config->cfg.kf_mode = AOM_KF_DISABLED;
#if CONFIG_HIGHBITDEPTH
} else if (arg_match(&arg, &test16bitinternalarg, argi)) {
if (strcmp(global->codec->name, "av1") == 0 ||
strcmp(global->codec->name, "av1") == 0) {
test_16bit_internal = 1;
}
#endif
} else {
int i, match = 0;
for (i = 0; ctrl_args[i]; i++) {
@ -1062,18 +1123,14 @@ static int parse_stream_params(struct AvxEncoderConfig *global,
}
#if CONFIG_HIGHBITDEPTH
config->use_16bit_internal =
test_16bit_internal || (config->cfg.g_profile > 1) || !CONFIG_LOWBITDEPTH;
config->cfg.g_bit_depth > AOM_BITS_8 || !CONFIG_LOWBITDEPTH;
#endif
return eos_mark_found;
}
#define FOREACH_STREAM(func) \
do { \
struct stream_state *stream; \
for (stream = streams; stream; stream = stream->next) { \
func; \
} \
} while (0)
#define FOREACH_STREAM(iterator, list) \
for (struct stream_state *iterator = list; iterator; \
iterator = iterator->next)
static void validate_stream_config(const struct stream_state *stream,
const struct AvxEncoderConfig *global) {
@ -1183,6 +1240,8 @@ static void show_stream_config(struct stream_state *stream,
if (stream->next || stream->index)
fprintf(stderr, "\nStream Index: %d\n", stream->index);
fprintf(stderr, "Destination file: %s\n", stream->config.out_fn);
fprintf(stderr, "Coding path: %s\n",
stream->config.use_16bit_internal ? "HBD" : "LBD");
fprintf(stderr, "Encoder parameters:\n");
SHOW(g_usage);
@ -1197,12 +1256,18 @@ static void show_stream_config(struct stream_state *stream,
SHOW(g_error_resilient);
SHOW(g_pass);
SHOW(g_lag_in_frames);
#if CONFIG_EXT_TILE
SHOW(large_scale_tile);
#endif // CONFIG_EXT_TILE
SHOW(rc_dropframe_thresh);
SHOW(rc_resize_allowed);
SHOW(rc_scaled_width);
SHOW(rc_scaled_height);
SHOW(rc_resize_up_thresh);
SHOW(rc_resize_down_thresh);
SHOW(rc_resize_mode);
SHOW(rc_resize_numerator);
SHOW(rc_resize_kf_numerator);
#if CONFIG_FRAME_SUPERRES
SHOW(rc_superres_mode);
SHOW(rc_superres_numerator);
SHOW(rc_superres_kf_numerator);
#endif // CONFIG_FRAME_SUPERRES
SHOW(rc_end_usage);
SHOW(rc_target_bitrate);
SHOW(rc_min_quantizer);
@ -1340,7 +1405,7 @@ static void initialize_encoder(struct stream_state *stream,
#if CONFIG_AV1_DECODER
if (global->test_decode != TEST_DECODE_OFF) {
const AvxInterface *decoder = get_aom_decoder_by_name(global->codec->name);
aom_codec_dec_cfg_t cfg = { 0, 0, 0 };
aom_codec_dec_cfg_t cfg = { 0, 0, 0, CONFIG_LOWBITDEPTH };
aom_codec_dec_init(&stream->decoder, decoder->codec_interface(), &cfg, 0);
#if CONFIG_EXT_TILE
@ -1351,7 +1416,7 @@ static void initialize_encoder(struct stream_state *stream,
aom_codec_control(&stream->decoder, AV1_SET_DECODE_TILE_COL, -1);
ctx_exit_on_error(&stream->decoder, "Failed to set decode_tile_col");
}
#endif
#endif // CONFIG_EXT_TILE
}
#endif
}
@ -1730,8 +1795,10 @@ int main(int argc, const char **argv_) {
if (argi[0][0] == '-' && argi[0][1])
die("Error: Unrecognized option %s\n", *argi);
FOREACH_STREAM(check_encoder_config(global.disable_warning_prompt, &global,
&stream->config.cfg););
FOREACH_STREAM(stream, streams) {
check_encoder_config(global.disable_warning_prompt, &global,
&stream->config.cfg);
}
/* Handle non-option arguments */
input.filename = argv[0];
@ -1753,13 +1820,13 @@ int main(int argc, const char **argv_) {
* the data from the first stream's configuration.
*/
if (!input.width || !input.height) {
FOREACH_STREAM({
FOREACH_STREAM(stream, streams) {
if (stream->config.cfg.g_w && stream->config.cfg.g_h) {
input.width = stream->config.cfg.g_w;
input.height = stream->config.cfg.g_h;
break;
}
});
};
}
/* Update stream configurations from the input file's parameters */
@ -1774,21 +1841,21 @@ int main(int argc, const char **argv_) {
* to be the same as the codec bit-depth.
*/
if (!input.bit_depth) {
FOREACH_STREAM({
FOREACH_STREAM(stream, streams) {
if (stream->config.cfg.g_input_bit_depth)
input.bit_depth = stream->config.cfg.g_input_bit_depth;
else
input.bit_depth = stream->config.cfg.g_input_bit_depth =
(int)stream->config.cfg.g_bit_depth;
});
}
if (input.bit_depth > 8) input.fmt |= AOM_IMG_FMT_HIGHBITDEPTH;
} else {
FOREACH_STREAM(
{ stream->config.cfg.g_input_bit_depth = input.bit_depth; });
FOREACH_STREAM(stream, streams) {
stream->config.cfg.g_input_bit_depth = input.bit_depth;
}
}
#if CONFIG_HIGHBITDEPTH
FOREACH_STREAM({
FOREACH_STREAM(stream, streams) {
if (input.fmt != AOM_IMG_FMT_I420 && input.fmt != AOM_IMG_FMT_I42016) {
/* Automatically upgrade if input is non-4:2:0 but a 4:2:0 profile
was selected. */
@ -1824,6 +1891,7 @@ int main(int argc, const char **argv_) {
}
}
if (stream->config.cfg.g_profile > 1) {
if (!CONFIG_HIGHBITDEPTH) fatal("Unsupported profile.");
stream->config.use_16bit_internal = 1;
}
if (profile_updated && !global.quiet) {
@ -1832,56 +1900,34 @@ int main(int argc, const char **argv_) {
"match input format.\n",
stream->config.cfg.g_profile);
}
});
#else
FOREACH_STREAM({
if (input.fmt != AOM_IMG_FMT_I420 && input.fmt != AOM_IMG_FMT_I42016) {
/* Automatically upgrade if input is non-4:2:0 but a 4:2:0 profile
was selected. */
switch (stream->config.cfg.g_profile) {
case 0:
stream->config.cfg.g_profile = 1;
profile_updated = 1;
break;
case 2:
stream->config.cfg.g_profile = 3;
profile_updated = 1;
break;
default: break;
}
}
if (profile_updated && !global.quiet) {
fprintf(stderr,
"Warning: automatically upgrading to profile %d to "
"match input format.\n",
stream->config.cfg.g_profile);
}
});
#endif
}
FOREACH_STREAM(set_stream_dimensions(stream, input.width, input.height));
FOREACH_STREAM(validate_stream_config(stream, &global));
FOREACH_STREAM(stream, streams) {
set_stream_dimensions(stream, input.width, input.height);
}
FOREACH_STREAM(stream, streams) { validate_stream_config(stream, &global); }
/* Ensure that --passes and --pass are consistent. If --pass is set and
* --passes=2, ensure --fpf was set.
*/
if (global.pass && global.passes == 2)
FOREACH_STREAM({
if (global.pass && global.passes == 2) {
FOREACH_STREAM(stream, streams) {
if (!stream->config.stats_fn)
die("Stream %d: Must specify --fpf when --pass=%d"
" and --passes=2\n",
stream->index, global.pass);
});
}
}
#if !CONFIG_WEBM_IO
FOREACH_STREAM({
FOREACH_STREAM(stream, streams) {
if (stream->config.write_webm) {
stream->config.write_webm = 0;
warn(
"aomenc was compiled without WebM container support."
"Producing IVF output");
}
});
}
#endif
/* Use the frame rate from the file only if none was specified
@ -1890,31 +1936,39 @@ int main(int argc, const char **argv_) {
if (!global.have_framerate) {
global.framerate.num = input.framerate.numerator;
global.framerate.den = input.framerate.denominator;
FOREACH_STREAM(stream->config.cfg.g_timebase.den = global.framerate.num;
stream->config.cfg.g_timebase.num = global.framerate.den);
FOREACH_STREAM(stream, streams) {
stream->config.cfg.g_timebase.den = global.framerate.num;
stream->config.cfg.g_timebase.num = global.framerate.den;
}
}
/* Show configuration */
if (global.verbose && pass == 0)
FOREACH_STREAM(show_stream_config(stream, &global, &input));
if (global.verbose && pass == 0) {
FOREACH_STREAM(stream, streams) {
show_stream_config(stream, &global, &input);
}
}
if (pass == (global.pass ? global.pass - 1 : 0)) {
if (input.file_type == FILE_TYPE_Y4M)
/*The Y4M reader does its own allocation.
Just initialize this here to avoid problems if we never read any
frames.*/
frames.*/
memset(&raw, 0, sizeof(raw));
else
aom_img_alloc(&raw, input.fmt, input.width, input.height, 32);
FOREACH_STREAM(stream->rate_hist = init_rate_histogram(
&stream->config.cfg, &global.framerate));
FOREACH_STREAM(stream, streams) {
stream->rate_hist =
init_rate_histogram(&stream->config.cfg, &global.framerate);
}
}
FOREACH_STREAM(setup_pass(stream, &global, pass));
FOREACH_STREAM(
open_output_file(stream, &global, &input.pixel_aspect_ratio));
FOREACH_STREAM(initialize_encoder(stream, &global));
FOREACH_STREAM(stream, streams) { setup_pass(stream, &global, pass); }
FOREACH_STREAM(stream, streams) {
open_output_file(stream, &global, &input.pixel_aspect_ratio);
}
FOREACH_STREAM(stream, streams) { initialize_encoder(stream, &global); }
#if CONFIG_HIGHBITDEPTH
if (strcmp(global.codec->name, "av1") == 0 ||
@ -1922,7 +1976,7 @@ int main(int argc, const char **argv_) {
// Check to see if at least one stream uses 16 bit internal.
// Currently assume that the bit_depths for all streams using
// highbitdepth are the same.
FOREACH_STREAM({
FOREACH_STREAM(stream, streams) {
if (stream->config.use_16bit_internal) {
use_16bit_internal = 1;
}
@ -1932,7 +1986,7 @@ int main(int argc, const char **argv_) {
input_shift = (int)stream->config.cfg.g_bit_depth -
stream->config.cfg.g_input_bit_depth;
}
});
};
}
#endif
@ -1990,31 +2044,35 @@ int main(int argc, const char **argv_) {
aom_usec_timer_start(&timer);
if (use_16bit_internal) {
assert(frame_to_encode->fmt & AOM_IMG_FMT_HIGHBITDEPTH);
FOREACH_STREAM({
FOREACH_STREAM(stream, streams) {
if (stream->config.use_16bit_internal)
encode_frame(stream, &global,
frame_avail ? frame_to_encode : NULL, frames_in);
else
assert(0);
});
};
} else {
assert((frame_to_encode->fmt & AOM_IMG_FMT_HIGHBITDEPTH) == 0);
FOREACH_STREAM(encode_frame(stream, &global,
frame_avail ? frame_to_encode : NULL,
frames_in));
FOREACH_STREAM(stream, streams) {
encode_frame(stream, &global, frame_avail ? frame_to_encode : NULL,
frames_in);
}
}
#else
aom_usec_timer_start(&timer);
FOREACH_STREAM(encode_frame(stream, &global, frame_avail ? &raw : NULL,
frames_in));
FOREACH_STREAM(stream, streams) {
encode_frame(stream, &global, frame_avail ? &raw : NULL, frames_in);
}
#endif
aom_usec_timer_mark(&timer);
cx_time += aom_usec_timer_elapsed(&timer);
FOREACH_STREAM(update_quantizer_histogram(stream));
FOREACH_STREAM(stream, streams) { update_quantizer_histogram(stream); }
got_data = 0;
FOREACH_STREAM(get_cx_data(stream, &global, &got_data));
FOREACH_STREAM(stream, streams) {
get_cx_data(stream, &global, &got_data);
}
if (!got_data && input.length && streams != NULL &&
!streams->frames_out) {
@ -2043,8 +2101,11 @@ int main(int argc, const char **argv_) {
estimated_time_left = average_rate ? remaining / average_rate : -1;
}
if (got_data && global.test_decode != TEST_DECODE_OFF)
FOREACH_STREAM(test_decode(stream, global.test_decode, global.codec));
if (got_data && global.test_decode != TEST_DECODE_OFF) {
FOREACH_STREAM(stream, streams) {
test_decode(stream, global.test_decode, global.codec);
}
}
}
fflush(stdout);
@ -2054,68 +2115,84 @@ int main(int argc, const char **argv_) {
if (stream_cnt > 1) fprintf(stderr, "\n");
if (!global.quiet) {
FOREACH_STREAM(fprintf(
stderr, "\rPass %d/%d frame %4d/%-4d %7" PRId64 "B %7" PRId64
"b/f %7" PRId64 "b/s"
" %7" PRId64 " %s (%.2f fps)\033[K\n",
pass + 1, global.passes, frames_in, stream->frames_out,
(int64_t)stream->nbytes,
seen_frames ? (int64_t)(stream->nbytes * 8 / seen_frames) : 0,
seen_frames
? (int64_t)stream->nbytes * 8 * (int64_t)global.framerate.num /
global.framerate.den / seen_frames
: 0,
stream->cx_time > 9999999 ? stream->cx_time / 1000 : stream->cx_time,
stream->cx_time > 9999999 ? "ms" : "us",
usec_to_fps(stream->cx_time, seen_frames)));
FOREACH_STREAM(stream, streams) {
fprintf(stderr, "\rPass %d/%d frame %4d/%-4d %7" PRId64 "B %7" PRId64
"b/f %7" PRId64
"b/s"
" %7" PRId64 " %s (%.2f fps)\033[K\n",
pass + 1, global.passes, frames_in, stream->frames_out,
(int64_t)stream->nbytes,
seen_frames ? (int64_t)(stream->nbytes * 8 / seen_frames) : 0,
seen_frames
? (int64_t)stream->nbytes * 8 *
(int64_t)global.framerate.num / global.framerate.den /
seen_frames
: 0,
stream->cx_time > 9999999 ? stream->cx_time / 1000
: stream->cx_time,
stream->cx_time > 9999999 ? "ms" : "us",
usec_to_fps(stream->cx_time, seen_frames));
}
}
if (global.show_psnr) {
if (global.codec->fourcc == AV1_FOURCC) {
FOREACH_STREAM(
show_psnr(stream, (1 << stream->config.cfg.g_input_bit_depth) - 1));
FOREACH_STREAM(stream, streams) {
show_psnr(stream, (1 << stream->config.cfg.g_input_bit_depth) - 1);
}
} else {
FOREACH_STREAM(show_psnr(stream, 255.0));
FOREACH_STREAM(stream, streams) { show_psnr(stream, 255.0); }
}
}
FOREACH_STREAM(aom_codec_destroy(&stream->encoder));
FOREACH_STREAM(stream, streams) { aom_codec_destroy(&stream->encoder); }
if (global.test_decode != TEST_DECODE_OFF) {
FOREACH_STREAM(aom_codec_destroy(&stream->decoder));
FOREACH_STREAM(stream, streams) { aom_codec_destroy(&stream->decoder); }
}
close_input_file(&input);
if (global.test_decode == TEST_DECODE_FATAL) {
FOREACH_STREAM(res |= stream->mismatch_seen);
FOREACH_STREAM(stream, streams) { res |= stream->mismatch_seen; }
}
FOREACH_STREAM(stream, streams) {
close_output_file(stream, global.codec->fourcc);
}
FOREACH_STREAM(close_output_file(stream, global.codec->fourcc));
FOREACH_STREAM(stats_close(&stream->stats, global.passes - 1));
FOREACH_STREAM(stream, streams) {
stats_close(&stream->stats, global.passes - 1);
}
#if CONFIG_FP_MB_STATS
FOREACH_STREAM(stats_close(&stream->fpmb_stats, global.passes - 1));
FOREACH_STREAM(stream, streams) {
stats_close(&stream->fpmb_stats, global.passes - 1);
}
#endif
if (global.pass) break;
}
if (global.show_q_hist_buckets)
FOREACH_STREAM(
show_q_histogram(stream->counts, global.show_q_hist_buckets));
if (global.show_q_hist_buckets) {
FOREACH_STREAM(stream, streams) {
show_q_histogram(stream->counts, global.show_q_hist_buckets);
}
}
if (global.show_rate_hist_buckets)
FOREACH_STREAM(show_rate_histogram(stream->rate_hist, &stream->config.cfg,
global.show_rate_hist_buckets));
FOREACH_STREAM(destroy_rate_histogram(stream->rate_hist));
if (global.show_rate_hist_buckets) {
FOREACH_STREAM(stream, streams) {
show_rate_histogram(stream->rate_hist, &stream->config.cfg,
global.show_rate_hist_buckets);
}
}
FOREACH_STREAM(stream, streams) { destroy_rate_histogram(stream->rate_hist); }
#if CONFIG_INTERNAL_STATS
/* TODO(jkoleszar): This doesn't belong in this executable. Do it for now,
* to match some existing utilities.
*/
if (!(global.pass == 1 && global.passes == 2))
FOREACH_STREAM({
if (!(global.pass == 1 && global.passes == 2)) {
FOREACH_STREAM(stream, streams) {
FILE *f = fopen("opsnr.stt", "a");
if (stream->mismatch_seen) {
fprintf(f, "First mismatch occurred in frame %d\n",
@ -2124,7 +2201,8 @@ int main(int argc, const char **argv_) {
fprintf(f, "No mismatch detected in recon buffers\n");
}
fclose(f);
});
}
}
#endif
#if CONFIG_HIGHBITDEPTH

View file

@ -33,6 +33,8 @@ set(AOM_AV1_COMMON_SOURCES
"${AOM_ROOT}/av1/common/common_data.h"
"${AOM_ROOT}/av1/common/convolve.c"
"${AOM_ROOT}/av1/common/convolve.h"
"${AOM_ROOT}/av1/common/daala_tx.c"
"${AOM_ROOT}/av1/common/daala_tx.h"
"${AOM_ROOT}/av1/common/debugmodes.c"
"${AOM_ROOT}/av1/common/entropy.c"
"${AOM_ROOT}/av1/common/entropy.h"
@ -158,9 +160,11 @@ set(AOM_AV1_COMMON_INTRIN_SSSE3
set(AOM_AV1_COMMON_INTRIN_SSE4_1
"${AOM_ROOT}/av1/common/x86/av1_fwd_txfm1d_sse4.c"
"${AOM_ROOT}/av1/common/x86/av1_fwd_txfm2d_sse4.c")
"${AOM_ROOT}/av1/common/x86/av1_fwd_txfm2d_sse4.c"
"${AOM_ROOT}/av1/common/x86/highbd_inv_txfm_sse4.c")
set(AOM_AV1_COMMON_INTRIN_AVX2
"${AOM_ROOT}/av1/common/x86/highbd_inv_txfm_avx2.c"
"${AOM_ROOT}/av1/common/x86/hybrid_inv_txfm_avx2.c")
set(AOM_AV1_COMMON_INTRIN_DSPR2
@ -189,7 +193,14 @@ set(AOM_AV1_ENCODER_ASM_SSSE3_X86_64
set(AOM_AV1_ENCODER_INTRIN_SSSE3
"${AOM_ROOT}/av1/encoder/x86/dct_ssse3.c")
set(AOM_AV1_ENCODER_INTRIN_SSE4_1
${AOM_AV1_ENCODER_INTRIN_SSE4_1}
"${AOM_ROOT}/av1/encoder/x86/av1_highbd_quantize_sse4.c"
"${AOM_ROOT}/av1/encoder/x86/highbd_fwd_txfm_sse4.c")
set(AOM_AV1_ENCODER_INTRIN_AVX2
"${AOM_ROOT}/av1/encoder/x86/av1_quantize_avx2.c"
"${AOM_ROOT}/av1/encoder/x86/av1_highbd_quantize_avx2.c"
"${AOM_ROOT}/av1/encoder/x86/error_intrin_avx2.c"
"${AOM_ROOT}/av1/encoder/x86/hybrid_fwd_txfm_avx2.c")
@ -207,17 +218,7 @@ set(AOM_AV1_ENCODER_INTRIN_MSA
if (CONFIG_HIGHBITDEPTH)
set(AOM_AV1_COMMON_INTRIN_SSE4_1
${AOM_AV1_COMMON_INTRIN_SSE4_1}
"${AOM_ROOT}/av1/common/x86/av1_highbd_convolve_sse4.c"
"${AOM_ROOT}/av1/common/x86/highbd_inv_txfm_sse4.c")
set(AOM_AV1_COMMON_INTRIN_AVX2
${AOM_AV1_COMMON_INTRIN_AVX2}
"${AOM_ROOT}/av1/common/x86/highbd_inv_txfm_avx2.c")
set(AOM_AV1_ENCODER_INTRIN_SSE4_1
${AOM_AV1_ENCODER_INTRIN_SSE4_1}
"${AOM_ROOT}/av1/encoder/x86/av1_highbd_quantize_sse4.c"
"${AOM_ROOT}/av1/encoder/x86/highbd_fwd_txfm_sse4.c")
"${AOM_ROOT}/av1/common/x86/av1_highbd_convolve_sse4.c")
else ()
set(AOM_AV1_COMMON_INTRIN_NEON
${AOM_AV1_COMMON_INTRIN_NEON}
@ -234,7 +235,6 @@ if (CONFIG_CDEF)
set(AOM_AV1_COMMON_SOURCES
${AOM_AV1_COMMON_SOURCES}
"${AOM_ROOT}/av1/common/clpf.c"
"${AOM_ROOT}/av1/common/clpf.h"
"${AOM_ROOT}/av1/common/clpf_simd.h"
"${AOM_ROOT}/av1/common/cdef_simd.h"
"${AOM_ROOT}/av1/common/cdef.c"
@ -268,6 +268,12 @@ if (CONFIG_CDEF)
"${AOM_ROOT}/av1/common/od_dering_neon.c")
endif ()
if (CONFIG_CONVOLVE_ROUND)
set(AOM_AV1_COMMON_INTRIN_AVX2
${AOM_AV1_COMMON_INTRIN_AVX2}
"${AOM_ROOT}/av1/common/x86/convolve_avx2.c")
endif ()
if (CONFIG_EXT_INTER)
set(AOM_AV1_ENCODER_SOURCES
${AOM_AV1_ENCODER_SOURCES}
@ -442,25 +448,33 @@ endif ()
# this function is called.
function (setup_av1_targets)
add_library(aom_av1_common OBJECT ${AOM_AV1_COMMON_SOURCES})
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_av1_common)
target_sources(aom PUBLIC $<TARGET_OBJECTS:aom_av1_common>)
list(APPEND AOM_LIB_TARGETS aom_av1_common)
create_dummy_source_file("aom_av1" "c" "dummy_source_file")
add_library(aom_av1 OBJECT "${dummy_source_file}")
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_av1_common>)
list(APPEND AOM_LIB_TARGETS aom_av1)
# Not all generators support libraries consisting only of object files. Add a
# dummy source file to the aom_av1 target.
add_dummy_source_file_to_target("aom_av1" "c")
if (CONFIG_AV1_DECODER)
add_library(aom_av1_decoder OBJECT ${AOM_AV1_DECODER_SOURCES})
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_av1_decoder)
target_sources(aom PUBLIC $<TARGET_OBJECTS:aom_av1_decoder>)
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_av1_decoder>)
endif ()
if (CONFIG_AV1_ENCODER)
add_library(aom_av1_encoder OBJECT ${AOM_AV1_ENCODER_SOURCES})
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_av1_encoder)
target_sources(aom PUBLIC $<TARGET_OBJECTS:aom_av1_encoder>)
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_av1_encoder>)
endif ()
if (HAVE_SSE2)
require_flag_nomsvc("-msse2" NO)
add_intrinsics_object_library("-msse2" "sse2" "aom_av1_common"
"AOM_AV1_COMMON_INTRIN_SSE2")
"AOM_AV1_COMMON_INTRIN_SSE2" "aom")
if (CONFIG_AV1_DECODER)
if (AOM_AV1_DECODER_ASM_SSE2)
add_asm_library("aom_av1_decoder_sse2" "AOM_AV1_DECODER_ASM_SSE2" "aom")
@ -468,39 +482,39 @@ function (setup_av1_targets)
if (AOM_AV1_DECODER_INTRIN_SSE2)
add_intrinsics_object_library("-msse2" "sse2" "aom_av1_decoder"
"AOM_AV1_DECODER_INTRIN_SSE2")
"AOM_AV1_DECODER_INTRIN_SSE2" "aom")
endif ()
endif ()
if (CONFIG_AV1_ENCODER)
add_asm_library("aom_av1_encoder_sse2" "AOM_AV1_ENCODER_ASM_SSE2" "aom")
add_intrinsics_object_library("-msse2" "sse2" "aom_av1_encoder"
"AOM_AV1_ENCODER_INTRIN_SSE2")
"AOM_AV1_ENCODER_INTRIN_SSE2" "aom")
endif ()
endif ()
if (HAVE_SSSE3)
require_flag_nomsvc("-mssse3" NO)
add_intrinsics_object_library("-mssse3" "ssse3" "aom_av1_common"
"AOM_AV1_COMMON_INTRIN_SSSE3")
"AOM_AV1_COMMON_INTRIN_SSSE3" "aom")
if (CONFIG_AV1_DECODER)
if (AOM_AV1_DECODER_INTRIN_SSSE3)
add_intrinsics_object_library("-mssse3" "ssse3" "aom_av1_decoder"
"AOM_AV1_DECODER_INTRIN_SSSE3")
"AOM_AV1_DECODER_INTRIN_SSSE3" "aom")
endif ()
endif ()
if (CONFIG_AV1_ENCODER)
add_intrinsics_object_library("-mssse3" "ssse3" "aom_av1_encoder"
"AOM_AV1_ENCODER_INTRIN_SSSE3")
"AOM_AV1_ENCODER_INTRIN_SSSE3" "aom")
endif ()
endif ()
if (HAVE_SSE4_1)
require_flag_nomsvc("-msse4.1" NO)
add_intrinsics_object_library("-msse4.1" "sse4" "aom_av1_common"
"AOM_AV1_COMMON_INTRIN_SSE4_1")
"AOM_AV1_COMMON_INTRIN_SSE4_1" "aom")
if (CONFIG_AV1_ENCODER)
if ("${AOM_TARGET_CPU}" STREQUAL "x86_64")
@ -510,7 +524,7 @@ function (setup_av1_targets)
if (AOM_AV1_ENCODER_INTRIN_SSE4_1)
add_intrinsics_object_library("-msse4.1" "sse4" "aom_av1_encoder"
"AOM_AV1_ENCODER_INTRIN_SSE4_1")
"AOM_AV1_ENCODER_INTRIN_SSE4_1" "aom")
endif ()
endif ()
endif ()
@ -518,11 +532,11 @@ function (setup_av1_targets)
if (HAVE_AVX2)
require_flag_nomsvc("-mavx2" NO)
add_intrinsics_object_library("-mavx2" "avx2" "aom_av1_common"
"AOM_AV1_COMMON_INTRIN_AVX2")
"AOM_AV1_COMMON_INTRIN_AVX2" "aom")
if (CONFIG_AV1_ENCODER)
add_intrinsics_object_library("-mavx2" "avx2" "aom_av1_encoder"
"AOM_AV1_ENCODER_INTRIN_AVX2")
"AOM_AV1_ENCODER_INTRIN_AVX2" "aom")
endif ()
endif ()
@ -531,29 +545,32 @@ function (setup_av1_targets)
add_intrinsics_object_library("${AOM_INTRIN_NEON_FLAG}"
"neon"
"aom_av1_common"
"AOM_AV1_COMMON_INTRIN_NEON")
"AOM_AV1_COMMON_INTRIN_NEON" "aom")
endif ()
if (AOM_AV1_ENCODER_INTRIN_NEON)
add_intrinsics_object_library("${AOM_INTRIN_NEON_FLAG}"
"neon"
"aom_av1_encoder"
"AOM_AV1_ENCODER_INTRIN_NEON")
"AOM_AV1_ENCODER_INTRIN_NEON" "aom")
endif ()
endif ()
if (HAVE_DSPR2)
add_intrinsics_object_library("" "dspr2" "aom_av1_common"
"AOM_AV1_COMMON_INTRIN_DSPR2")
"AOM_AV1_COMMON_INTRIN_DSPR2" "aom")
endif ()
if (HAVE_MSA)
add_intrinsics_object_library("" "msa" "aom_av1_common"
"AOM_AV1_COMMON_INTRIN_MSA")
"AOM_AV1_COMMON_INTRIN_MSA" "aom")
add_intrinsics_object_library("" "msa" "aom_av1_encoder"
"AOM_AV1_ENCODER_INTRIN_MSA")
"AOM_AV1_ENCODER_INTRIN_MSA" "aom")
endif ()
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp>)
target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_scale>)
# Pass the new lib targets up to the parent scope instance of
# $AOM_LIB_TARGETS.
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE)

View file

@ -24,6 +24,8 @@ AV1_COMMON_SRCS-yes += common/frame_buffers.h
AV1_COMMON_SRCS-yes += common/alloccommon.h
AV1_COMMON_SRCS-yes += common/blockd.h
AV1_COMMON_SRCS-yes += common/common.h
AV1_COMMON_SRCS-yes += common/daala_tx.c
AV1_COMMON_SRCS-yes += common/daala_tx.h
AV1_COMMON_SRCS-yes += common/entropy.h
AV1_COMMON_SRCS-yes += common/entropymode.h
AV1_COMMON_SRCS-yes += common/entropymv.h
@ -71,6 +73,7 @@ AV1_COMMON_SRCS-yes += common/av1_fwd_txfm2d.c
AV1_COMMON_SRCS-yes += common/av1_fwd_txfm1d_cfg.h
AV1_COMMON_SRCS-yes += common/av1_inv_txfm2d.c
AV1_COMMON_SRCS-yes += common/av1_inv_txfm1d_cfg.h
AV1_COMMON_SRCS-$(HAVE_AVX2) += common/x86/convolve_avx2.c
AV1_COMMON_SRCS-$(HAVE_SSSE3) += common/x86/av1_convolve_ssse3.c
ifeq ($(CONFIG_HIGHBITDEPTH),yes)
AV1_COMMON_SRCS-$(HAVE_SSE4_1) += common/x86/av1_highbd_convolve_sse4.c
@ -88,7 +91,6 @@ AV1_COMMON_SRCS-yes += common/warped_motion.c
endif
ifeq ($(CONFIG_CDEF),yes)
AV1_COMMON_SRCS-yes += common/clpf.c
AV1_COMMON_SRCS-yes += common/clpf.h
AV1_COMMON_SRCS-yes += common/clpf_simd.h
AV1_COMMON_SRCS-yes += common/cdef_simd.h
AV1_COMMON_SRCS-$(HAVE_SSE2) += common/clpf_sse2.c
@ -154,11 +156,10 @@ AV1_COMMON_SRCS-$(HAVE_SSE4_1) += common/x86/av1_txfm1d_sse4.h
AV1_COMMON_SRCS-$(HAVE_SSE4_1) += common/x86/av1_fwd_txfm1d_sse4.c
AV1_COMMON_SRCS-$(HAVE_SSE4_1) += common/x86/av1_fwd_txfm2d_sse4.c
endif
ifeq ($(CONFIG_HIGHBITDEPTH),yes)
AV1_COMMON_SRCS-$(HAVE_SSE4_1) += common/x86/highbd_txfm_utility_sse4.h
AV1_COMMON_SRCS-$(HAVE_SSE4_1) += common/x86/highbd_inv_txfm_sse4.c
AV1_COMMON_SRCS-$(HAVE_AVX2) += common/x86/highbd_inv_txfm_avx2.c
endif
ifneq ($(CONFIG_HIGHBITDEPTH),yes)
AV1_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/iht4x4_add_neon.c
@ -177,4 +178,11 @@ AV1_COMMON_SRCS-$(HAVE_SSSE3) += common/x86/highbd_warp_plane_ssse3.c
endif
endif
ifeq ($(CONFIG_CONVOLVE_ROUND),yes)
AV1_COMMON_SRCS-$(HAVE_SSE2) += common/x86/convolve_2d_sse2.c
ifeq ($(CONFIG_HIGHBITDEPTH),yes)
AV1_COMMON_SRCS-$(HAVE_SSSE3) += common/x86/highbd_convolve_2d_ssse3.c
endif
endif
$(eval $(call rtcd_h_template,av1_rtcd,av1/common/av1_rtcd_defs.pl))

View file

@ -21,6 +21,8 @@ AV1_CX_SRCS-yes += av1_cx_iface.c
AV1_CX_SRCS-yes += encoder/av1_quantize.c
AV1_CX_SRCS-yes += encoder/av1_quantize.h
AV1_CX_SRCS-yes += encoder/bitstream.c
AV1_CX_SRCS-$(CONFIG_BGSPRITE) += encoder/bgsprite.c
AV1_CX_SRCS-$(CONFIG_BGSPRITE) += encoder/bgsprite.h
AV1_CX_SRCS-yes += encoder/context_tree.c
AV1_CX_SRCS-yes += encoder/context_tree.h
AV1_CX_SRCS-yes += encoder/cost.h
@ -121,10 +123,12 @@ AV1_CX_SRCS-yes += encoder/encint.h
endif
AV1_CX_SRCS-$(HAVE_SSE2) += encoder/x86/av1_quantize_sse2.c
AV1_CX_SRCS-$(HAVE_AVX2) += encoder/x86/av1_quantize_avx2.c
AV1_CX_SRCS-$(HAVE_SSE2) += encoder/x86/temporal_filter_apply_sse2.asm
ifeq ($(CONFIG_HIGHBITDEPTH),yes)
AV1_CX_SRCS-$(HAVE_SSE2) += encoder/x86/highbd_block_error_intrin_sse2.c
endif
AV1_CX_SRCS-$(HAVE_AVX2) += encoder/x86/av1_highbd_quantize_avx2.c
AV1_CX_SRCS-$(HAVE_SSE2) += encoder/x86/dct_sse2.asm
AV1_CX_SRCS-$(HAVE_SSE2) += encoder/x86/error_sse2.asm
@ -136,10 +140,10 @@ endif
AV1_CX_SRCS-$(HAVE_SSE2) += encoder/x86/dct_intrin_sse2.c
AV1_CX_SRCS-$(HAVE_SSSE3) += encoder/x86/dct_ssse3.c
AV1_CX_SRCS-$(HAVE_AVX2) += encoder/x86/hybrid_fwd_txfm_avx2.c
ifeq ($(CONFIG_HIGHBITDEPTH),yes)
AV1_CX_SRCS-$(HAVE_SSE4_1) += encoder/x86/av1_highbd_quantize_sse4.c
AV1_CX_SRCS-$(HAVE_SSE4_1) += encoder/x86/highbd_fwd_txfm_sse4.c
endif
ifeq ($(CONFIG_EXT_INTER),yes)
AV1_CX_SRCS-yes += encoder/wedge_utils.c

View file

@ -55,10 +55,8 @@ struct av1_extracfg {
unsigned int qm_min;
unsigned int qm_max;
#endif
#if CONFIG_TILE_GROUPS
unsigned int num_tg;
unsigned int mtu_size;
#endif
#if CONFIG_TEMPMV_SIGNALING
unsigned int disable_tempmv;
#endif
@ -71,6 +69,10 @@ struct av1_extracfg {
aom_bit_depth_t bit_depth;
aom_tune_content content;
aom_color_space_t color_space;
#if CONFIG_COLORSPACE_HEADERS
aom_transfer_function_t transfer_function;
aom_chroma_sample_position_t chroma_sample_position;
#endif
int color_range;
int render_width;
int render_height;
@ -79,7 +81,7 @@ struct av1_extracfg {
int ans_window_size_log2;
#endif
#if CONFIG_EXT_TILE
unsigned int tile_encoding_mode;
unsigned int single_tile_decoding;
#endif // CONFIG_EXT_TILE
unsigned int motion_vector_unit_test;
@ -94,15 +96,10 @@ static struct av1_extracfg default_extra_cfg = {
0, // noise_sensitivity
0, // sharpness
0, // static_thresh
#if CONFIG_EXT_TILE
UINT_MAX, // tile_columns
UINT_MAX, // tile_rows
#else
0, // tile_columns
0, // tile_rows
#endif // CONFIG_EXT_TILE
0, // tile_columns
0, // tile_rows
#if CONFIG_DEPENDENT_HORZTILES
0, // Depdendent Horizontal tiles
0, // Dependent Horizontal tiles
#endif
#if CONFIG_LOOPFILTERING_ACROSS_TILES
1, // loop_filter_across_tiles_enabled
@ -122,10 +119,8 @@ static struct av1_extracfg default_extra_cfg = {
DEFAULT_QM_FIRST, // qm_min
DEFAULT_QM_LAST, // qm_max
#endif
#if CONFIG_TILE_GROUPS
1, // max number of tile groups
0, // mtu_size
#endif
#if CONFIG_TEMPMV_SIGNALING
0, // disable temporal mv prediction
#endif
@ -134,10 +129,14 @@ static struct av1_extracfg default_extra_cfg = {
#if CONFIG_EXT_DELTA_Q
NO_DELTA_Q, // deltaq_mode
#endif
CONFIG_XIPHRC, // frame_periodic_delta_q
AOM_BITS_8, // Bit depth
AOM_CONTENT_DEFAULT, // content
AOM_CS_UNKNOWN, // color space
CONFIG_XIPHRC, // frame_periodic_delta_q
AOM_BITS_8, // Bit depth
AOM_CONTENT_DEFAULT, // content
AOM_CS_UNKNOWN, // color space
#if CONFIG_COLORSPACE_HEADERS
AOM_TF_UNKNOWN, // transfer function
AOM_CSP_UNKNOWN, // chroma sample position
#endif
0, // color range
0, // render width
0, // render height
@ -146,7 +145,7 @@ static struct av1_extracfg default_extra_cfg = {
23, // ans_window_size_log2
#endif
#if CONFIG_EXT_TILE
0, // Tile encoding mode is TILE_NORMAL by default.
0, // Single tile decoding is off by default.
#endif // CONFIG_EXT_TILE
0, // motion_vector_unit_test
@ -235,10 +234,7 @@ static aom_codec_err_t validate_config(aom_codec_alg_priv_t *ctx,
RANGE_CHECK_HI(cfg, rc_overshoot_pct, 100);
RANGE_CHECK_HI(cfg, rc_2pass_vbr_bias_pct, 100);
RANGE_CHECK(cfg, kf_mode, AOM_KF_DISABLED, AOM_KF_AUTO);
RANGE_CHECK_BOOL(cfg, rc_resize_allowed);
RANGE_CHECK_HI(cfg, rc_dropframe_thresh, 100);
RANGE_CHECK_HI(cfg, rc_resize_up_thresh, 100);
RANGE_CHECK_HI(cfg, rc_resize_down_thresh, 100);
RANGE_CHECK(cfg, g_pass, AOM_RC_ONE_PASS, AOM_RC_LAST_PASS);
RANGE_CHECK_HI(extra_cfg, min_gf_interval, MAX_LAG_BUFFERS - 1);
RANGE_CHECK_HI(extra_cfg, max_gf_interval, MAX_LAG_BUFFERS - 1);
@ -250,10 +246,18 @@ static aom_codec_err_t validate_config(aom_codec_alg_priv_t *ctx,
(MAX_LAG_BUFFERS - 1));
}
if (cfg->rc_resize_allowed == 1) {
RANGE_CHECK_HI(cfg, rc_scaled_width, cfg->g_w);
RANGE_CHECK_HI(cfg, rc_scaled_height, cfg->g_h);
}
RANGE_CHECK_HI(cfg, rc_resize_mode, RESIZE_DYNAMIC);
RANGE_CHECK(cfg, rc_resize_numerator, SCALE_DENOMINATOR / 2,
SCALE_DENOMINATOR);
RANGE_CHECK(cfg, rc_resize_kf_numerator, SCALE_DENOMINATOR / 2,
SCALE_DENOMINATOR);
#if CONFIG_FRAME_SUPERRES
RANGE_CHECK_HI(cfg, rc_superres_mode, SUPERRES_DYNAMIC);
RANGE_CHECK(cfg, rc_superres_numerator, SCALE_DENOMINATOR / 2,
SCALE_DENOMINATOR);
RANGE_CHECK(cfg, rc_superres_kf_numerator, SCALE_DENOMINATOR / 2,
SCALE_DENOMINATOR);
#endif // CONFIG_FRAME_SUPERRES
// AV1 does not support a lower bound on the keyframe interval in
// automatic keyframe placement mode.
@ -273,28 +277,34 @@ static aom_codec_err_t validate_config(aom_codec_alg_priv_t *ctx,
RANGE_CHECK(extra_cfg, superblock_size, AOM_SUPERBLOCK_SIZE_64X64,
AOM_SUPERBLOCK_SIZE_DYNAMIC);
#if CONFIG_EXT_TILE
RANGE_CHECK_HI(cfg, large_scale_tile, 1);
RANGE_CHECK_HI(extra_cfg, single_tile_decoding, 1);
if (cfg->large_scale_tile) {
// TODO(any): Waring. If CONFIG_EXT_TILE is true, tile_columns really
// means tile_width, and tile_rows really means tile_hight. The interface
// should be sanitized.
#if CONFIG_EXT_PARTITION
if (extra_cfg->superblock_size != AOM_SUPERBLOCK_SIZE_64X64) {
if (extra_cfg->tile_columns != UINT_MAX)
RANGE_CHECK(extra_cfg, tile_columns, 1, 32);
if (extra_cfg->tile_rows != UINT_MAX)
RANGE_CHECK(extra_cfg, tile_rows, 1, 32);
} else
if (extra_cfg->superblock_size != AOM_SUPERBLOCK_SIZE_64X64) {
if (extra_cfg->tile_columns != 0)
RANGE_CHECK(extra_cfg, tile_columns, 1, 32);
if (extra_cfg->tile_rows != 0) RANGE_CHECK(extra_cfg, tile_rows, 1, 32);
} else {
#endif // CONFIG_EXT_PARTITION
{
if (extra_cfg->tile_columns != UINT_MAX)
RANGE_CHECK(extra_cfg, tile_columns, 1, 64);
if (extra_cfg->tile_rows != UINT_MAX)
RANGE_CHECK(extra_cfg, tile_rows, 1, 64);
}
RANGE_CHECK_HI(extra_cfg, tile_encoding_mode, 1);
#else
RANGE_CHECK_HI(extra_cfg, tile_columns, 6);
RANGE_CHECK_HI(extra_cfg, tile_rows, 2);
if (extra_cfg->tile_columns != 0)
RANGE_CHECK(extra_cfg, tile_columns, 1, 64);
if (extra_cfg->tile_rows != 0) RANGE_CHECK(extra_cfg, tile_rows, 1, 64);
#if CONFIG_EXT_PARTITION
}
#endif // CONFIG_EXT_PARTITION
} else {
#endif // CONFIG_EXT_TILE
RANGE_CHECK_HI(extra_cfg, tile_columns, 6);
RANGE_CHECK_HI(extra_cfg, tile_rows, 2);
#if CONFIG_EXT_TILE
}
#endif // CONFIG_EXT_TILE
#if CONFIG_DEPENDENT_HORZTILES
RANGE_CHECK_HI(extra_cfg, dependent_horz_tiles, 1);
#endif
@ -354,7 +364,14 @@ static aom_codec_err_t validate_config(aom_codec_alg_priv_t *ctx,
cfg->g_bit_depth == AOM_BITS_8) {
ERROR("Codec bit-depth 8 not supported in profile > 1");
}
#if CONFIG_COLORSPACE_HEADERS
RANGE_CHECK(extra_cfg, color_space, AOM_CS_UNKNOWN, AOM_CS_ICTCP);
RANGE_CHECK(extra_cfg, transfer_function, AOM_TF_UNKNOWN, AOM_TF_HLG);
RANGE_CHECK(extra_cfg, chroma_sample_position, AOM_CSP_UNKNOWN,
AOM_CSP_COLOCATED);
#else
RANGE_CHECK(extra_cfg, color_space, AOM_CS_UNKNOWN, AOM_CS_SRGB);
#endif
RANGE_CHECK(extra_cfg, color_range, 0, 1);
#if CONFIG_ANS && ANS_MAX_SYMBOLS
RANGE_CHECK(extra_cfg, ans_window_size_log2, 8, 23);
@ -461,10 +478,12 @@ static aom_codec_err_t set_encoder_config(
oxcf->qm_maxlevel = extra_cfg->qm_max;
#endif
#if CONFIG_TILE_GROUPS
oxcf->num_tile_groups = extra_cfg->num_tg;
#if CONFIG_EXT_TILE
// In large-scale tile encoding mode, num_tile_groups is always 1.
if (cfg->large_scale_tile) oxcf->num_tile_groups = 1;
#endif // CONFIG_EXT_TILE
oxcf->mtu = extra_cfg->mtu_size;
#endif
#if CONFIG_TEMPMV_SIGNALING
oxcf->disable_tempmv = extra_cfg->disable_tempmv;
@ -472,26 +491,23 @@ static aom_codec_err_t set_encoder_config(
oxcf->under_shoot_pct = cfg->rc_undershoot_pct;
oxcf->over_shoot_pct = cfg->rc_overshoot_pct;
oxcf->scaled_frame_width = cfg->rc_scaled_width;
oxcf->scaled_frame_height = cfg->rc_scaled_height;
if (cfg->rc_resize_allowed == 1) {
oxcf->resize_mode =
(oxcf->scaled_frame_width == 0 || oxcf->scaled_frame_height == 0)
? RESIZE_DYNAMIC
: RESIZE_FIXED;
} else {
oxcf->resize_mode = (RESIZE_MODE)cfg->rc_resize_mode;
oxcf->resize_scale_numerator = (uint8_t)cfg->rc_resize_numerator;
oxcf->resize_kf_scale_numerator = (uint8_t)cfg->rc_resize_kf_numerator;
if (oxcf->resize_mode == RESIZE_FIXED &&
oxcf->resize_scale_numerator == SCALE_DENOMINATOR &&
oxcf->resize_kf_scale_numerator == SCALE_DENOMINATOR)
oxcf->resize_mode = RESIZE_NONE;
}
// Initialize to input resolution if not specified.
if (oxcf->resize_mode != RESIZE_FIXED) {
oxcf->scaled_frame_width = oxcf->width;
oxcf->scaled_frame_height = oxcf->height;
}
#if CONFIG_FRAME_SUPERRES
oxcf->superres_enabled = 1; // TODO(afergs): Check the config
#endif // CONFIG_FRAME_SUPERRES
oxcf->superres_mode = (SUPERRES_MODE)cfg->rc_superres_mode;
oxcf->superres_scale_numerator = (uint8_t)cfg->rc_superres_numerator;
oxcf->superres_kf_scale_numerator = (uint8_t)cfg->rc_superres_kf_numerator;
if (oxcf->superres_mode == SUPERRES_FIXED &&
oxcf->superres_scale_numerator == SCALE_DENOMINATOR &&
oxcf->superres_kf_scale_numerator == SCALE_DENOMINATOR)
oxcf->superres_mode = SUPERRES_NONE;
#endif // CONFIG_FRAME_SUPERRES
oxcf->maximum_buffer_size_ms = is_vbr ? 240000 : cfg->rc_buf_sz;
oxcf->starting_buffer_level_ms = is_vbr ? 60000 : cfg->rc_buf_initial_sz;
@ -523,6 +539,10 @@ static aom_codec_err_t set_encoder_config(
#endif
oxcf->color_space = extra_cfg->color_space;
#if CONFIG_COLORSPACE_HEADERS
oxcf->transfer_function = extra_cfg->transfer_function;
oxcf->chroma_sample_position = extra_cfg->chroma_sample_position;
#endif
oxcf->color_range = extra_cfg->color_range;
oxcf->render_width = extra_cfg->render_width;
oxcf->render_height = extra_cfg->render_height;
@ -542,23 +562,38 @@ static aom_codec_err_t set_encoder_config(
#endif // CONFIG_ANS && ANS_MAX_SYMBOLS
#if CONFIG_EXT_TILE
{
oxcf->large_scale_tile = cfg->large_scale_tile;
oxcf->single_tile_decoding =
(oxcf->large_scale_tile) ? extra_cfg->single_tile_decoding : 0;
if (oxcf->large_scale_tile) {
#if CONFIG_EXT_PARTITION
const unsigned int max =
extra_cfg->superblock_size == AOM_SUPERBLOCK_SIZE_64X64 ? 64 : 32;
#else
const unsigned int max = 64;
#endif // CONFIG_EXT_PARTITION
oxcf->tile_columns = AOMMIN(extra_cfg->tile_columns, max);
oxcf->tile_rows = AOMMIN(extra_cfg->tile_rows, max);
oxcf->tile_encoding_mode = extra_cfg->tile_encoding_mode;
}
#else
oxcf->tile_columns = extra_cfg->tile_columns;
oxcf->tile_rows = extra_cfg->tile_rows;
// If tile size is not set, set it to the default value.
const unsigned int tc =
(!extra_cfg->tile_columns) ? UINT_MAX : extra_cfg->tile_columns;
const unsigned int tr =
(!extra_cfg->tile_rows) ? UINT_MAX : extra_cfg->tile_rows;
oxcf->tile_columns = AOMMIN(tc, max);
oxcf->tile_rows = AOMMIN(tr, max);
} else {
#endif // CONFIG_EXT_TILE
oxcf->tile_columns = extra_cfg->tile_columns;
oxcf->tile_rows = extra_cfg->tile_rows;
#if CONFIG_EXT_TILE
}
#endif // CONFIG_EXT_TILE
#if CONFIG_DEPENDENT_HORZTILES
oxcf->dependent_horz_tiles = extra_cfg->dependent_horz_tiles;
oxcf->dependent_horz_tiles =
#if CONFIG_EXT_TILE
(cfg->large_scale_tile) ? 0 :
#endif // CONFIG_EXT_TILE
extra_cfg->dependent_horz_tiles;
#endif
#if CONFIG_LOOPFILTERING_ACROSS_TILES
oxcf->loop_filter_across_tiles_enabled =
@ -828,7 +863,6 @@ static aom_codec_err_t ctrl_set_qm_max(aom_codec_alg_priv_t *ctx,
}
#endif
#if CONFIG_TILE_GROUPS
static aom_codec_err_t ctrl_set_num_tg(aom_codec_alg_priv_t *ctx,
va_list args) {
struct av1_extracfg extra_cfg = ctx->extra_cfg;
@ -841,7 +875,6 @@ static aom_codec_err_t ctrl_set_mtu(aom_codec_alg_priv_t *ctx, va_list args) {
extra_cfg.mtu_size = CAST(AV1E_SET_MTU, args);
return update_extra_cfg(ctx, &extra_cfg);
}
#endif
#if CONFIG_TEMPMV_SIGNALING
static aom_codec_err_t ctrl_set_disable_tempmv(aom_codec_alg_priv_t *ctx,
va_list args) {
@ -859,10 +892,10 @@ static aom_codec_err_t ctrl_set_frame_parallel_decoding_mode(
}
#if CONFIG_EXT_TILE
static aom_codec_err_t ctrl_set_tile_encoding_mode(aom_codec_alg_priv_t *ctx,
va_list args) {
static aom_codec_err_t ctrl_set_single_tile_decoding(aom_codec_alg_priv_t *ctx,
va_list args) {
struct av1_extracfg extra_cfg = ctx->extra_cfg;
extra_cfg.tile_encoding_mode = CAST(AV1E_SET_TILE_ENCODING_MODE, args);
extra_cfg.single_tile_decoding = CAST(AV1E_SET_SINGLE_TILE_DECODING, args);
return update_extra_cfg(ctx, &extra_cfg);
}
#endif // CONFIG_EXT_TILE
@ -992,12 +1025,10 @@ static void pick_quickcompress_mode(aom_codec_alg_priv_t *ctx,
}
// Turn on to test if supplemental superframe data breaks decoding
// #define TEST_SUPPLEMENTAL_SUPERFRAME_DATA
#define TEST_SUPPLEMENTAL_SUPERFRAME_DATA 0
static int write_superframe_index(aom_codec_alg_priv_t *ctx) {
uint8_t marker = 0xc0;
unsigned int mask;
int mag, index_sz;
int i;
size_t max_frame_sz = 0;
assert(ctx->pending_frame_count);
@ -1005,12 +1036,14 @@ static int write_superframe_index(aom_codec_alg_priv_t *ctx) {
// Add the number of frames to the marker byte
marker |= ctx->pending_frame_count - 1;
for (i = 0; i < ctx->pending_frame_count - 1; i++) {
const size_t frame_sz = (unsigned int)ctx->pending_frame_sizes[i] - 1;
max_frame_sz = frame_sz > max_frame_sz ? frame_sz : max_frame_sz;
for (int i = 0; i < ctx->pending_frame_count - 1; i++) {
const size_t frame_sz = ctx->pending_frame_sizes[i] - 1;
max_frame_sz = AOMMAX(frame_sz, max_frame_sz);
}
// Choose the magnitude
int mag;
unsigned int mask;
for (mag = 0, mask = 0xff; mag < 4; mag++) {
if (max_frame_sz <= mask) break;
mask <<= 8;
@ -1019,43 +1052,43 @@ static int write_superframe_index(aom_codec_alg_priv_t *ctx) {
marker |= mag << 3;
// Write the index
index_sz = 2 + (mag + 1) * (ctx->pending_frame_count - 1);
if (ctx->pending_cx_data_sz + index_sz < ctx->cx_data_sz) {
uint8_t *x = ctx->pending_cx_data + ctx->pending_cx_data_sz;
#ifdef TEST_SUPPLEMENTAL_SUPERFRAME_DATA
uint8_t buffer[256];
uint8_t *x = buffer;
if (TEST_SUPPLEMENTAL_SUPERFRAME_DATA) {
uint8_t marker_test = 0xc0;
int mag_test = 2; // 1 - 4
int frames_test = 4; // 1 - 8
int index_sz_test = 2 + mag_test * frames_test;
marker_test |= frames_test - 1;
marker_test |= (mag_test - 1) << 3;
*x++ = marker_test;
for (i = 0; i < mag_test * frames_test; ++i)
for (int i = 0; i < mag_test * frames_test; ++i)
*x++ = 0; // fill up with arbitrary data
*x++ = marker_test;
ctx->pending_cx_data_sz += index_sz_test;
printf("Added supplemental superframe data\n");
#endif
*x++ = marker;
for (i = 0; i < ctx->pending_frame_count - 1; i++) {
unsigned int this_sz;
int j;
assert(ctx->pending_frame_sizes[i] > 0);
this_sz = (unsigned int)ctx->pending_frame_sizes[i] - 1;
for (j = 0; j <= mag; j++) {
*x++ = this_sz & 0xff;
this_sz >>= 8;
}
}
*x++ = marker;
ctx->pending_cx_data_sz += index_sz;
#ifdef TEST_SUPPLEMENTAL_SUPERFRAME_DATA
index_sz += index_sz_test;
#endif
}
return index_sz;
*x++ = marker;
for (int i = 0; i < ctx->pending_frame_count - 1; i++) {
assert(ctx->pending_frame_sizes[i] > 0);
unsigned int this_sz = (unsigned int)ctx->pending_frame_sizes[i] - 1;
for (int j = 0; j <= mag; j++) {
*x++ = this_sz & 0xff;
this_sz >>= 8;
}
}
*x++ = marker;
const size_t index_sz = x - buffer;
assert(ctx->pending_cx_data_sz + index_sz < ctx->cx_data_sz);
// move the frame to make room for the index
memmove(ctx->pending_cx_data + index_sz, ctx->pending_cx_data,
ctx->pending_cx_data_sz);
memcpy(ctx->pending_cx_data, buffer, index_sz);
ctx->pending_cx_data_sz += index_sz;
return (int)index_sz;
}
// av1 uses 10,000,000 ticks/second as time stamp
@ -1091,10 +1124,8 @@ static aom_codec_err_t encoder_encode(aom_codec_alg_priv_t *ctx,
unsigned long deadline) {
const size_t kMinCompressedSize = 8192;
volatile aom_codec_err_t res = AOM_CODEC_OK;
volatile aom_enc_frame_flags_t flags = enc_flags;
AV1_COMP *const cpi = ctx->cpi;
const aom_rational_t *const timebase = &ctx->cfg.g_timebase;
size_t data_sz;
if (cpi == NULL) return AOM_CODEC_INVALID_PARAM;
@ -1104,14 +1135,15 @@ static aom_codec_err_t encoder_encode(aom_codec_alg_priv_t *ctx,
// failure condition, encoder setup is done fully in init() currently.
if (res == AOM_CODEC_OK) {
#if CONFIG_EXT_REFS
data_sz = ALIGN_POWER_OF_TWO(ctx->cfg.g_w, 5) *
ALIGN_POWER_OF_TWO(ctx->cfg.g_h, 5) * get_image_bps(img);
size_t data_sz = ALIGN_POWER_OF_TWO(ctx->cfg.g_w, 5) *
ALIGN_POWER_OF_TWO(ctx->cfg.g_h, 5) * get_image_bps(img);
#else
// There's no codec control for multiple alt-refs so check the encoder
// instance for its status to determine the compressed data size.
data_sz = ALIGN_POWER_OF_TWO(ctx->cfg.g_w, 5) *
ALIGN_POWER_OF_TWO(ctx->cfg.g_h, 5) * get_image_bps(img) / 8 *
(cpi->multi_arf_allowed ? 8 : 2);
size_t data_sz = ALIGN_POWER_OF_TWO(ctx->cfg.g_w, 5) *
ALIGN_POWER_OF_TWO(ctx->cfg.g_h, 5) *
get_image_bps(img) / 8 *
(cpi->multi_arf_allowed ? 8 : 2);
#endif // CONFIG_EXT_REFS
if (data_sz < kMinCompressedSize) data_sz = kMinCompressedSize;
if (ctx->cx_data == NULL || ctx->cx_data_sz < data_sz) {
@ -1128,6 +1160,8 @@ static aom_codec_err_t encoder_encode(aom_codec_alg_priv_t *ctx,
pick_quickcompress_mode(ctx, deadline);
aom_codec_pkt_list_init(&ctx->pkt_list);
volatile aom_enc_frame_flags_t flags = enc_flags;
// Handle Flags
if (((flags & AOM_EFLAG_NO_UPD_GF) && (flags & AOM_EFLAG_FORCE_GF)) ||
((flags & AOM_EFLAG_NO_UPD_ARF) && (flags & AOM_EFLAG_FORCE_ARF))) {
@ -1155,18 +1189,15 @@ static aom_codec_err_t encoder_encode(aom_codec_alg_priv_t *ctx,
}
if (res == AOM_CODEC_OK) {
unsigned int lib_flags = 0;
YV12_BUFFER_CONFIG sd;
int64_t dst_time_stamp = timebase_units_to_ticks(timebase, pts);
int64_t dst_end_time_stamp =
timebase_units_to_ticks(timebase, pts + duration);
size_t size, cx_data_sz;
unsigned char *cx_data;
// Set up internal flags
if (ctx->base.init_flags & AOM_CODEC_USE_PSNR) cpi->b_calculate_psnr = 1;
if (img != NULL) {
YV12_BUFFER_CONFIG sd;
res = image2yuvconfig(img, &sd);
// Store the original flags in to the frame buffer. Will extract the
@ -1178,8 +1209,8 @@ static aom_codec_err_t encoder_encode(aom_codec_alg_priv_t *ctx,
ctx->next_frame_flags = 0;
}
cx_data = ctx->cx_data;
cx_data_sz = ctx->cx_data_sz;
unsigned char *cx_data = ctx->cx_data;
size_t cx_data_sz = ctx->cx_data_sz;
/* Any pending invisible frames? */
if (ctx->pending_cx_data) {
@ -1198,8 +1229,10 @@ static aom_codec_err_t encoder_encode(aom_codec_alg_priv_t *ctx,
}
}
size_t frame_size;
unsigned int lib_flags = 0;
while (cx_data_sz >= ctx->cx_data_sz / 2 &&
-1 != av1_get_compressed_data(cpi, &lib_flags, &size, cx_data,
-1 != av1_get_compressed_data(cpi, &lib_flags, &frame_size, cx_data,
&dst_time_stamp, &dst_end_time_stamp,
!img)) {
#if CONFIG_REFERENCE_BUFFER
@ -1208,47 +1241,45 @@ static aom_codec_err_t encoder_encode(aom_codec_alg_priv_t *ctx,
return AOM_CODEC_ERROR;
}
#endif
if (size) {
aom_codec_cx_pkt_t pkt;
if (!frame_size) continue;
// Pack invisible frames with the next visible frame
if (!cpi->common.show_frame) {
if (ctx->pending_cx_data == 0) ctx->pending_cx_data = cx_data;
ctx->pending_cx_data_sz += size;
ctx->pending_frame_sizes[ctx->pending_frame_count++] = size;
cx_data += size;
cx_data_sz -= size;
if (ctx->pending_cx_data == 0) ctx->pending_cx_data = cx_data;
continue;
}
ctx->pending_frame_sizes[ctx->pending_frame_count++] = frame_size;
ctx->pending_cx_data_sz += frame_size;
// Add the frame packet to the list of returned packets.
pkt.kind = AOM_CODEC_CX_FRAME_PKT;
pkt.data.frame.pts = ticks_to_timebase_units(timebase, dst_time_stamp);
pkt.data.frame.duration = (unsigned long)ticks_to_timebase_units(
timebase, dst_end_time_stamp - dst_time_stamp);
pkt.data.frame.flags = get_frame_pkt_flags(cpi, lib_flags);
cx_data += frame_size;
cx_data_sz -= frame_size;
if (ctx->pending_cx_data) {
ctx->pending_frame_sizes[ctx->pending_frame_count++] = size;
ctx->pending_cx_data_sz += size;
size += write_superframe_index(ctx);
pkt.data.frame.buf = ctx->pending_cx_data;
pkt.data.frame.sz = ctx->pending_cx_data_sz;
ctx->pending_cx_data = NULL;
ctx->pending_cx_data_sz = 0;
ctx->pending_frame_count = 0;
} else {
pkt.data.frame.buf = cx_data;
pkt.data.frame.sz = size;
}
pkt.data.frame.partition_id = -1;
// invisible frames get packed with the next visible frame
if (!cpi->common.show_frame) continue;
aom_codec_pkt_list_add(&ctx->pkt_list.head, &pkt);
cx_data += size;
cx_data_sz -= size;
// insert superframe index if needed
if (ctx->pending_frame_count > 1) {
const size_t index_size = write_superframe_index(ctx);
cx_data += index_size;
cx_data_sz -= index_size;
}
// Add the frame packet to the list of returned packets.
aom_codec_cx_pkt_t pkt;
pkt.kind = AOM_CODEC_CX_FRAME_PKT;
pkt.data.frame.buf = ctx->pending_cx_data;
pkt.data.frame.sz = ctx->pending_cx_data_sz;
pkt.data.frame.partition_id = -1;
pkt.data.frame.pts = ticks_to_timebase_units(timebase, dst_time_stamp);
pkt.data.frame.flags = get_frame_pkt_flags(cpi, lib_flags);
pkt.data.frame.duration = (uint32_t)ticks_to_timebase_units(
timebase, dst_end_time_stamp - dst_time_stamp);
aom_codec_pkt_list_add(&ctx->pkt_list.head, &pkt);
ctx->pending_cx_data = NULL;
ctx->pending_cx_data_sz = 0;
ctx->pending_frame_count = 0;
}
}
@ -1419,6 +1450,23 @@ static aom_codec_err_t ctrl_set_color_space(aom_codec_alg_priv_t *ctx,
return update_extra_cfg(ctx, &extra_cfg);
}
#if CONFIG_COLORSPACE_HEADERS
static aom_codec_err_t ctrl_set_transfer_function(aom_codec_alg_priv_t *ctx,
va_list args) {
struct av1_extracfg extra_cfg = ctx->extra_cfg;
extra_cfg.transfer_function = CAST(AV1E_SET_TRANSFER_FUNCTION, args);
return update_extra_cfg(ctx, &extra_cfg);
}
static aom_codec_err_t ctrl_set_chroma_sample_position(
aom_codec_alg_priv_t *ctx, va_list args) {
struct av1_extracfg extra_cfg = ctx->extra_cfg;
extra_cfg.chroma_sample_position =
CAST(AV1E_SET_CHROMA_SAMPLE_POSITION, args);
return update_extra_cfg(ctx, &extra_cfg);
}
#endif
static aom_codec_err_t ctrl_set_color_range(aom_codec_alg_priv_t *ctx,
va_list args) {
struct av1_extracfg extra_cfg = ctx->extra_cfg;
@ -1489,10 +1537,8 @@ static aom_codec_ctrl_fn_map_t encoder_ctrl_maps[] = {
{ AV1E_SET_QM_MIN, ctrl_set_qm_min },
{ AV1E_SET_QM_MAX, ctrl_set_qm_max },
#endif
#if CONFIG_TILE_GROUPS
{ AV1E_SET_NUM_TG, ctrl_set_num_tg },
{ AV1E_SET_MTU, ctrl_set_mtu },
#endif
#if CONFIG_TEMPMV_SIGNALING
{ AV1E_SET_DISABLE_TEMPMV, ctrl_set_disable_tempmv },
#endif
@ -1504,6 +1550,10 @@ static aom_codec_ctrl_fn_map_t encoder_ctrl_maps[] = {
{ AV1E_SET_FRAME_PERIODIC_BOOST, ctrl_set_frame_periodic_boost },
{ AV1E_SET_TUNE_CONTENT, ctrl_set_tune_content },
{ AV1E_SET_COLOR_SPACE, ctrl_set_color_space },
#if CONFIG_COLORSPACE_HEADERS
{ AV1E_SET_TRANSFER_FUNCTION, ctrl_set_transfer_function },
{ AV1E_SET_CHROMA_SAMPLE_POSITION, ctrl_set_chroma_sample_position },
#endif
{ AV1E_SET_COLOR_RANGE, ctrl_set_color_range },
{ AV1E_SET_NOISE_SENSITIVITY, ctrl_set_noise_sensitivity },
{ AV1E_SET_MIN_GF_INTERVAL, ctrl_set_min_gf_interval },
@ -1514,7 +1564,7 @@ static aom_codec_ctrl_fn_map_t encoder_ctrl_maps[] = {
{ AV1E_SET_ANS_WINDOW_SIZE_LOG2, ctrl_set_ans_window_size_log2 },
#endif
#if CONFIG_EXT_TILE
{ AV1E_SET_TILE_ENCODING_MODE, ctrl_set_tile_encoding_mode },
{ AV1E_SET_SINGLE_TILE_DECODING, ctrl_set_single_tile_decoding },
#endif // CONFIG_EXT_TILE
{ AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST, ctrl_enable_motion_vector_unit_test },
@ -1549,12 +1599,14 @@ static aom_codec_enc_cfg_map_t encoder_usage_cfg_map[] = {
25, // g_lag_in_frames
0, // rc_dropframe_thresh
0, // rc_resize_allowed
0, // rc_scaled_width
0, // rc_scaled_height
60, // rc_resize_down_thresold
30, // rc_resize_up_thresold
0, // rc_dropframe_thresh
RESIZE_NONE, // rc_resize_mode
SCALE_DENOMINATOR, // rc_resize_numerator
SCALE_DENOMINATOR, // rc_resize_kf_numerator
0, // rc_superres_mode
SCALE_DENOMINATOR, // rc_superres_numerator
SCALE_DENOMINATOR, // rc_superres_kf_numerator
AOM_VBR, // rc_end_usage
{ NULL, 0 }, // rc_twopass_stats_in
@ -1577,6 +1629,7 @@ static aom_codec_enc_cfg_map_t encoder_usage_cfg_map[] = {
AOM_KF_AUTO, // g_kfmode
0, // kf_min_dist
9999, // kf_max_dist
0, // large_scale_tile
} },
};

View file

@ -106,6 +106,8 @@ static aom_codec_err_t decoder_init(aom_codec_ctx_t *ctx,
(ctx->init_flags & AOM_CODEC_USE_FRAME_THREADING))
? 1
: 0;
// TODO(tdaede): this should not be exposed to the API
priv->cfg.allow_lowbitdepth = CONFIG_LOWBITDEPTH;
if (ctx->config.dec) {
priv->cfg = *ctx->config.dec;
ctx->config.dec = &priv->cfg;
@ -154,14 +156,40 @@ static aom_codec_err_t decoder_destroy(aom_codec_alg_priv_t *ctx) {
static int parse_bitdepth_colorspace_sampling(BITSTREAM_PROFILE profile,
struct aom_read_bit_buffer *rb) {
aom_color_space_t color_space;
#if CONFIG_COLORSPACE_HEADERS
int subsampling_x = 0;
int subsampling_y = 0;
#endif
if (profile >= PROFILE_2) rb->bit_offset += 1; // Bit-depth 10 or 12.
#if CONFIG_COLORSPACE_HEADERS
color_space = (aom_color_space_t)aom_rb_read_literal(rb, 5);
rb->bit_offset += 5; // Transfer function
#else
color_space = (aom_color_space_t)aom_rb_read_literal(rb, 3);
#endif
if (color_space != AOM_CS_SRGB) {
rb->bit_offset += 1; // [16,235] (including xvycc) vs [0,255] range.
if (profile == PROFILE_1 || profile == PROFILE_3) {
#if CONFIG_COLORSPACE_HEADERS
subsampling_x = aom_rb_read_bit(rb);
subsampling_y = aom_rb_read_bit(rb);
#else
rb->bit_offset += 2; // subsampling x/y.
#endif
rb->bit_offset += 1; // unused.
#if CONFIG_COLORSPACE_HEADERS
} else {
subsampling_x = 1;
subsampling_y = 1;
}
if (subsampling_x == 1 && subsampling_y == 1) {
rb->bit_offset += 2;
}
#else
}
#endif
} else {
if (profile == PROFILE_1 || profile == PROFILE_3) {
rb->bit_offset += 1; // unused
@ -196,6 +224,9 @@ static aom_codec_err_t decoder_peek_si_internal(
struct aom_read_bit_buffer rb = { data, data + data_sz, 0, NULL, NULL };
const int frame_marker = aom_rb_read_literal(&rb, 2);
const BITSTREAM_PROFILE profile = av1_read_profile(&rb);
#if CONFIG_EXT_TILE
unsigned int large_scale_tile;
#endif // CONFIG_EXT_TILE
if (frame_marker != AOM_FRAME_MARKER) return AOM_CODEC_UNSUP_BITSTREAM;
@ -204,6 +235,10 @@ static aom_codec_err_t decoder_peek_si_internal(
if ((profile >= 2 && data_sz <= 1) || data_sz < 1)
return AOM_CODEC_UNSUP_BITSTREAM;
#if CONFIG_EXT_TILE
large_scale_tile = aom_rb_read_literal(&rb, 1);
#endif // CONFIG_EXT_TILE
if (aom_rb_read_bit(&rb)) { // show an existing frame
aom_rb_read_literal(&rb, 3); // Frame buffer to show.
return AOM_CODEC_OK;
@ -220,6 +255,9 @@ static aom_codec_err_t decoder_peek_si_internal(
int frame_id_len;
SequenceHeader seq_params;
read_sequence_header(&seq_params);
#if CONFIG_EXT_TILE
if (large_scale_tile) seq_params.frame_id_numbers_present_flag = 0;
#endif // CONFIG_EXT_TILE
if (seq_params.frame_id_numbers_present_flag) {
frame_id_len = seq_params.frame_id_length_minus7 + 7;
aom_rb_read_literal(&rb, frame_id_len);
@ -417,6 +455,8 @@ static aom_codec_err_t init_decoder(aom_codec_alg_priv_t *ctx) {
return AOM_CODEC_MEM_ERROR;
}
#endif
frame_worker_data->pbi->allow_lowbitdepth = ctx->cfg.allow_lowbitdepth;
// If decoding in serial mode, FrameWorker thread could create tile worker
// thread or loopfilter thread.
frame_worker_data->pbi->max_threads =
@ -597,10 +637,14 @@ static aom_codec_err_t decoder_decode(aom_codec_alg_priv_t *ctx,
if (res != AOM_CODEC_OK) return res;
}
int index_size = 0;
res = av1_parse_superframe_index(data, data_sz, frame_sizes, &frame_count,
ctx->decrypt_cb, ctx->decrypt_state);
&index_size, ctx->decrypt_cb,
ctx->decrypt_state);
if (res != AOM_CODEC_OK) return res;
data_start += index_size;
if (ctx->frame_parallel_decode) {
// Decode in frame parallel mode. When decoding in this mode, the frame
// passed to the decoder must be either a normal frame or a superframe with
@ -752,7 +796,7 @@ static aom_image_t *decoder_get_frame(aom_codec_alg_priv_t *ctx,
yuvconfig2image(&ctx->img, &sd, frame_worker_data->user_priv);
#if CONFIG_EXT_TILE
if (cm->tile_encoding_mode &&
if (cm->single_tile_decoding &&
frame_worker_data->pbi->dec_tile_row >= 0) {
const int tile_row =
AOMMIN(frame_worker_data->pbi->dec_tile_row, cm->tile_rows - 1);
@ -768,7 +812,7 @@ static aom_image_t *decoder_get_frame(aom_codec_alg_priv_t *ctx,
AOMMIN(cm->tile_height, cm->mi_rows - mi_row) * MI_SIZE;
}
if (cm->tile_encoding_mode &&
if (cm->single_tile_decoding &&
frame_worker_data->pbi->dec_tile_col >= 0) {
const int tile_col =
AOMMIN(frame_worker_data->pbi->dec_tile_col, cm->tile_cols - 1);

View file

@ -38,6 +38,10 @@ static void yuvconfig2image(aom_image_t *img, const YV12_BUFFER_CONFIG *yv12,
}
}
img->cs = yv12->color_space;
#if CONFIG_COLORSPACE_HEADERS
img->tf = yv12->transfer_function;
img->csp = yv12->chroma_sample_position;
#endif
img->range = yv12->color_range;
img->bit_depth = 8;
img->w = yv12->y_stride;
@ -102,6 +106,10 @@ static aom_codec_err_t image2yuvconfig(const aom_image_t *img,
yv12->y_stride = img->stride[AOM_PLANE_Y];
yv12->uv_stride = img->stride[AOM_PLANE_U];
yv12->color_space = img->cs;
#if CONFIG_COLORSPACE_HEADERS
yv12->transfer_function = img->tf;
yv12->chroma_sample_position = img->csp;
#endif
yv12->color_range = img->range;
#if CONFIG_HIGHBITDEPTH

View file

@ -93,11 +93,18 @@ void av1_free_ref_frame_buffers(BufferPool *pool) {
// Assumes cm->rst_info[p].restoration_tilesize is already initialized
void av1_alloc_restoration_buffers(AV1_COMMON *cm) {
int p;
av1_alloc_restoration_struct(cm, &cm->rst_info[0], cm->width, cm->height);
#if CONFIG_FRAME_SUPERRES
int width = cm->superres_upscaled_width;
int height = cm->superres_upscaled_height;
#else
int width = cm->width;
int height = cm->height;
#endif // CONFIG_FRAME_SUPERRES
av1_alloc_restoration_struct(cm, &cm->rst_info[0], width, height);
for (p = 1; p < MAX_MB_PLANE; ++p)
av1_alloc_restoration_struct(
cm, &cm->rst_info[p], ROUND_POWER_OF_TWO(cm->width, cm->subsampling_x),
ROUND_POWER_OF_TWO(cm->height, cm->subsampling_y));
av1_alloc_restoration_struct(cm, &cm->rst_info[p],
ROUND_POWER_OF_TWO(width, cm->subsampling_x),
ROUND_POWER_OF_TWO(height, cm->subsampling_y));
aom_free(cm->rst_internal.tmpbuf);
CHECK_MEM_ERROR(cm, cm->rst_internal.tmpbuf,
(int32_t *)aom_memalign(16, RESTORATION_TMPBUF_SIZE));

View file

@ -134,7 +134,7 @@ static INLINE void IADST4x4_1D(int16x4_t *d3s16, int16x4_t *d4s16,
}
void av1_iht4x4_16_add_neon(const tran_low_t *input, uint8_t *dest,
int dest_stride, int tx_type) {
int dest_stride, const TxfmParam *txfm_param) {
uint8x8_t d26u8, d27u8;
int16x4_t d0s16, d1s16, d2s16, d3s16, d4s16, d5s16;
uint32x2_t d26u32, d27u32;
@ -148,9 +148,10 @@ void av1_iht4x4_16_add_neon(const tran_low_t *input, uint8_t *dest,
TRANSPOSE4X4(&q8s16, &q9s16);
int tx_type = txfm_param->tx_type;
switch (tx_type) {
case 0: // idct_idct is not supported. Fall back to C
av1_iht4x4_16_add_c(input, dest, dest_stride, tx_type);
av1_iht4x4_16_add_c(input, dest, dest_stride, txfm_param);
return;
break;
case 1: // iadst_idct

View file

@ -458,7 +458,7 @@ static INLINE void IADST8X8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
}
void av1_iht8x8_64_add_neon(const tran_low_t *input, uint8_t *dest,
int dest_stride, int tx_type) {
int dest_stride, const TxfmParam *txfm_param) {
int i;
uint8_t *d1, *d2;
uint8x8_t d0u8, d1u8, d2u8, d3u8;
@ -478,9 +478,10 @@ void av1_iht8x8_64_add_neon(const tran_low_t *input, uint8_t *dest,
TRANSPOSE8X8(&q8s16, &q9s16, &q10s16, &q11s16, &q12s16, &q13s16, &q14s16,
&q15s16);
int tx_type = txfm_param->tx_type;
switch (tx_type) {
case 0: // idct_idct is not supported. Fall back to C
av1_iht8x8_64_add_c(input, dest, dest_stride, tx_type);
av1_iht8x8_64_add_c(input, dest, dest_stride, txfm_param);
return;
break;
case 1: // iadst_idct

Some files were not shown because too many files have changed in this diff Show more