mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 08:48:39 +09:00
aom: update libaom to 0ec86ac7ae1e32a7e70410fa4972a655ec3670a4
This commit is contained in:
parent
bc3f20e378
commit
eb361970c5
438 changed files with 52661 additions and 21905 deletions
|
|
@ -10,4 +10,4 @@ The upstream aom git repository is:
|
|||
|
||||
https://aomedia.googlesource.com/aom
|
||||
|
||||
The git commit ID used was 1e227d41f0616de9548a673a83a21ef990b62591.
|
||||
The git commit ID used was 0ec86ac7ae1e32a7e70410fa4972a655ec3670a4.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
;
|
||||
; Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
; Copyright (c) 2019, 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
|
||||
|
|
@ -22,18 +22,17 @@ CONFIG_AV1_ENCODER equ 0
|
|||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_INTER_MODE_RD_STATS equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_DIST_8X8 equ 0
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_FILEOPTIONS equ 1
|
||||
CONFIG_FIX_GF_LENGTH equ 1
|
||||
CONFIG_FP_MB_STATS equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GLOBAL_MOTION_SEARCH equ 1
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
|
|
@ -44,15 +43,16 @@ CONFIG_MAX_DECODE_PROFILE equ 2
|
|||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_ONE_PASS_SVM equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REDUCED_ENCODER_BORDER equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SHARP_SETTINGS equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_STATIC equ 1
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
* Copyright (c) 2019, 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
|
||||
|
|
@ -24,18 +24,17 @@
|
|||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_INTER_MODE_RD_STATS 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_DIST_8X8 0
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_FILEOPTIONS 1
|
||||
#define CONFIG_FIX_GF_LENGTH 1
|
||||
#define CONFIG_FP_MB_STATS 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GLOBAL_MOTION_SEARCH 1
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
|
|
@ -46,15 +45,16 @@
|
|||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_ONE_PASS_SVM 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REDUCED_ENCODER_BORDER 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SHARP_SETTINGS 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_STATIC 1
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
|
|
@ -76,7 +76,5 @@
|
|||
#define HAVE_SSSE3 0
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INCLUDE_INSTALL_DIR INSTALLDIR/include
|
||||
#define INLINE inline
|
||||
#define LIB_INSTALL_DIR INSTALLDIR/lib
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
|
|
|
|||
|
|
@ -1360,9 +1360,6 @@ void aom_v_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *abov
|
|||
void aom_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define aom_v_predictor_8x8 aom_v_predictor_8x8_c
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
#define av1_round_shift_array av1_round_shift_array_c
|
||||
|
||||
void aom_dsp_rtcd(void);
|
||||
|
||||
#include "config/aom_config.h"
|
||||
|
|
|
|||
|
|
@ -59,13 +59,22 @@ void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buf
|
|||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ struct txfm_param;
|
|||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
|
|
@ -81,6 +83,18 @@ void av1_convolve_x_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int d
|
|||
void av1_convolve_y_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
#define av1_convolve_y_sr av1_convolve_y_sr_c
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
#define av1_dist_wtd_convolve_2d av1_dist_wtd_convolve_2d_c
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
#define av1_dist_wtd_convolve_2d_copy av1_dist_wtd_convolve_2d_copy_c
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
#define av1_dist_wtd_convolve_x av1_dist_wtd_convolve_x_c
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
#define av1_dist_wtd_convolve_y av1_dist_wtd_convolve_y_c
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
|
||||
|
||||
|
|
@ -132,6 +146,18 @@ void av1_highbd_convolve_x_sr_c(const uint16_t *src, int src_stride, uint16_t *d
|
|||
void av1_highbd_convolve_y_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_convolve_y_sr av1_highbd_convolve_y_sr_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_2d av1_highbd_dist_wtd_convolve_2d_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_2d_copy av1_highbd_dist_wtd_convolve_2d_copy_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_x av1_highbd_dist_wtd_convolve_x_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_y av1_highbd_dist_wtd_convolve_y_c
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c
|
||||
|
||||
|
|
@ -144,20 +170,20 @@ void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int
|
|||
void av1_highbd_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x16 av1_highbd_inv_txfm_add_16x16_c
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_4x16 av1_highbd_inv_txfm_add_4x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_4x4 av1_highbd_inv_txfm_add_4x4_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x4 av1_highbd_inv_txfm_add_8x4_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x8 av1_highbd_inv_txfm_add_8x8_c
|
||||
|
|
@ -168,18 +194,6 @@ void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int des
|
|||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_jnt_convolve_2d av1_highbd_jnt_convolve_2d_c
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_jnt_convolve_2d_copy av1_highbd_jnt_convolve_2d_copy_c
|
||||
|
||||
void av1_highbd_jnt_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_jnt_convolve_x av1_highbd_jnt_convolve_x_c
|
||||
|
||||
void av1_highbd_jnt_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_jnt_convolve_y av1_highbd_jnt_convolve_y_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);
|
||||
#define av1_highbd_warp_affine av1_highbd_warp_affine_c
|
||||
|
||||
|
|
@ -246,17 +260,8 @@ void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride
|
|||
void av1_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_inv_txfm_add av1_inv_txfm_add_c
|
||||
|
||||
void av1_jnt_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
#define av1_jnt_convolve_2d av1_jnt_convolve_2d_c
|
||||
|
||||
void av1_jnt_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
#define av1_jnt_convolve_2d_copy av1_jnt_convolve_2d_copy_c
|
||||
|
||||
void av1_jnt_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
#define av1_jnt_convolve_x av1_jnt_convolve_x_c
|
||||
|
||||
void av1_jnt_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
#define av1_jnt_convolve_y av1_jnt_convolve_y_c
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
#define av1_round_shift_array av1_round_shift_array_c
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
|
|
@ -275,7 +280,7 @@ void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int he
|
|||
void av1_wiener_convolve_add_src_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, const ConvolveParams *conv_params);
|
||||
#define av1_wiener_convolve_add_src av1_wiener_convolve_add_src_c
|
||||
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
#define cdef_filter_block cdef_filter_block_c
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
;
|
||||
; Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
; Copyright (c) 2019, 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
|
||||
|
|
@ -22,18 +22,17 @@
|
|||
.equ CONFIG_BIG_ENDIAN, 0
|
||||
.equ CONFIG_BITSTREAM_DEBUG, 0
|
||||
.equ CONFIG_COEFFICIENT_RANGE_CHECKING, 0
|
||||
.equ CONFIG_COLLECT_INTER_MODE_RD_STATS, 0
|
||||
.equ CONFIG_COLLECT_PARTITION_STATS, 0
|
||||
.equ CONFIG_COLLECT_RD_STATS, 0
|
||||
.equ CONFIG_DEBUG, 0
|
||||
.equ CONFIG_DENOISE, 1
|
||||
.equ CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8, 1
|
||||
.equ CONFIG_DIST_8X8, 0
|
||||
.equ CONFIG_ENTROPY_STATS, 0
|
||||
.equ CONFIG_FILEOPTIONS, 1
|
||||
.equ CONFIG_FIX_GF_LENGTH, 1
|
||||
.equ CONFIG_FP_MB_STATS, 0
|
||||
.equ CONFIG_GCC, 1
|
||||
.equ CONFIG_GCOV, 0
|
||||
.equ CONFIG_GLOBAL_MOTION_SEARCH, 1
|
||||
.equ CONFIG_GPROF, 0
|
||||
.equ CONFIG_INSPECTION, 0
|
||||
.equ CONFIG_INTERNAL_STATS, 0
|
||||
|
|
@ -44,15 +43,16 @@
|
|||
.equ CONFIG_MISMATCH_DEBUG, 0
|
||||
.equ CONFIG_MULTITHREAD, 1
|
||||
.equ CONFIG_NORMAL_TILE_MODE, 0
|
||||
.equ CONFIG_ONE_PASS_SVM, 0
|
||||
.equ CONFIG_OS_SUPPORT, 1
|
||||
.equ CONFIG_PIC, 1
|
||||
.equ CONFIG_RD_DEBUG, 0
|
||||
.equ CONFIG_REDUCED_ENCODER_BORDER, 0
|
||||
.equ CONFIG_RUNTIME_CPU_DETECT, 1
|
||||
.equ CONFIG_SHARED, 0
|
||||
.equ CONFIG_SHARP_SETTINGS, 0
|
||||
.equ CONFIG_SIZE_LIMIT, 0
|
||||
.equ CONFIG_SPATIAL_RESAMPLING, 1
|
||||
.equ CONFIG_SPEED_STATS, 0
|
||||
.equ CONFIG_STATIC, 1
|
||||
.equ CONFIG_WEBM_IO, 0
|
||||
.equ DECODE_HEIGHT_LIMIT, 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
* Copyright (c) 2019, 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
|
||||
|
|
@ -24,18 +24,17 @@
|
|||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_INTER_MODE_RD_STATS 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_DIST_8X8 0
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_FILEOPTIONS 1
|
||||
#define CONFIG_FIX_GF_LENGTH 1
|
||||
#define CONFIG_FP_MB_STATS 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GLOBAL_MOTION_SEARCH 1
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
|
|
@ -46,15 +45,16 @@
|
|||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_ONE_PASS_SVM 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REDUCED_ENCODER_BORDER 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SHARP_SETTINGS 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_STATIC 1
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
|
|
@ -76,7 +76,5 @@
|
|||
#define HAVE_SSSE3 0
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INCLUDE_INSTALL_DIR INSTALLDIR/include
|
||||
#define INLINE inline
|
||||
#define LIB_INSTALL_DIR INSTALLDIR/lib
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
|
|
|
|||
|
|
@ -1400,10 +1400,6 @@ void aom_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *abov
|
|||
void aom_v_predictor_8x8_neon(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
RTCD_EXTERN void (*aom_v_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_neon(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
void aom_dsp_rtcd(void);
|
||||
|
||||
#include "config/aom_config.h"
|
||||
|
|
@ -1496,8 +1492,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_NEON) aom_v_predictor_4x4 = aom_v_predictor_4x4_neon;
|
||||
aom_v_predictor_8x8 = aom_v_predictor_8x8_c;
|
||||
if (flags & HAS_NEON) aom_v_predictor_8x8 = aom_v_predictor_8x8_neon;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_NEON) av1_round_shift_array = av1_round_shift_array_neon;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -59,13 +59,22 @@ void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buf
|
|||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ struct txfm_param;
|
|||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
|
|
@ -87,6 +89,22 @@ void av1_convolve_y_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int d
|
|||
void av1_convolve_y_sr_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
|
||||
|
||||
|
|
@ -138,6 +156,18 @@ void av1_highbd_convolve_x_sr_c(const uint16_t *src, int src_stride, uint16_t *d
|
|||
void av1_highbd_convolve_y_sr_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_convolve_y_sr av1_highbd_convolve_y_sr_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_2d av1_highbd_dist_wtd_convolve_2d_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_2d_copy av1_highbd_dist_wtd_convolve_2d_copy_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_x av1_highbd_dist_wtd_convolve_x_c
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_dist_wtd_convolve_y av1_highbd_dist_wtd_convolve_y_c
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c
|
||||
|
||||
|
|
@ -150,20 +180,20 @@ void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int
|
|||
void av1_highbd_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x16 av1_highbd_inv_txfm_add_16x16_c
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_4x16 av1_highbd_inv_txfm_add_4x16_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_4x4 av1_highbd_inv_txfm_add_4x4_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x4 av1_highbd_inv_txfm_add_8x4_c
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
#define av1_highbd_inv_txfm_add_8x8 av1_highbd_inv_txfm_add_8x8_c
|
||||
|
|
@ -174,18 +204,6 @@ void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int des
|
|||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_jnt_convolve_2d av1_highbd_jnt_convolve_2d_c
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_jnt_convolve_2d_copy av1_highbd_jnt_convolve_2d_copy_c
|
||||
|
||||
void av1_highbd_jnt_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_jnt_convolve_x av1_highbd_jnt_convolve_x_c
|
||||
|
||||
void av1_highbd_jnt_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
#define av1_highbd_jnt_convolve_y av1_highbd_jnt_convolve_y_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);
|
||||
#define av1_highbd_warp_affine av1_highbd_warp_affine_c
|
||||
|
||||
|
|
@ -253,21 +271,9 @@ void av1_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, con
|
|||
void av1_inv_txfm_add_neon(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_jnt_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_neon(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_neon(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
|
|
@ -293,9 +299,9 @@ void av1_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uin
|
|||
void av1_wiener_convolve_add_src_neon(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, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(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, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_neon(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_neon(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_neon(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
|
@ -369,16 +375,18 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_NEON) av1_convolve_x_sr = av1_convolve_x_sr_neon;
|
||||
av1_convolve_y_sr = av1_convolve_y_sr_c;
|
||||
if (flags & HAS_NEON) av1_convolve_y_sr = av1_convolve_y_sr_neon;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_NEON) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_neon;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_NEON) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_neon;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_NEON) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_neon;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_NEON) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_neon;
|
||||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_NEON) av1_inv_txfm_add = av1_inv_txfm_add_neon;
|
||||
av1_jnt_convolve_2d = av1_jnt_convolve_2d_c;
|
||||
if (flags & HAS_NEON) av1_jnt_convolve_2d = av1_jnt_convolve_2d_neon;
|
||||
av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_c;
|
||||
if (flags & HAS_NEON) av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_neon;
|
||||
av1_jnt_convolve_x = av1_jnt_convolve_x_c;
|
||||
if (flags & HAS_NEON) av1_jnt_convolve_x = av1_jnt_convolve_x_neon;
|
||||
av1_jnt_convolve_y = av1_jnt_convolve_y_c;
|
||||
if (flags & HAS_NEON) av1_jnt_convolve_y = av1_jnt_convolve_y_neon;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_NEON) av1_round_shift_array = av1_round_shift_array_neon;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_NEON) av1_selfguided_restoration = av1_selfguided_restoration_neon;
|
||||
av1_warp_affine = av1_warp_affine_c;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
;
|
||||
; Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
; Copyright (c) 2019, 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
|
||||
|
|
@ -22,18 +22,17 @@ CONFIG_AV1_ENCODER equ 0
|
|||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_INTER_MODE_RD_STATS equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_DIST_8X8 equ 0
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_FILEOPTIONS equ 1
|
||||
CONFIG_FIX_GF_LENGTH equ 1
|
||||
CONFIG_FP_MB_STATS equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GLOBAL_MOTION_SEARCH equ 1
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
|
|
@ -44,15 +43,16 @@ CONFIG_MAX_DECODE_PROFILE equ 2
|
|||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_ONE_PASS_SVM equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PIC equ 1
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REDUCED_ENCODER_BORDER equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SHARP_SETTINGS equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_STATIC equ 1
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
* Copyright (c) 2019, 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
|
||||
|
|
@ -24,18 +24,17 @@
|
|||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_INTER_MODE_RD_STATS 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_DIST_8X8 0
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_FILEOPTIONS 1
|
||||
#define CONFIG_FIX_GF_LENGTH 1
|
||||
#define CONFIG_FP_MB_STATS 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GLOBAL_MOTION_SEARCH 1
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
|
|
@ -46,15 +45,16 @@
|
|||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_ONE_PASS_SVM 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REDUCED_ENCODER_BORDER 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SHARP_SETTINGS 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_STATIC 1
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
|
|
@ -76,7 +76,5 @@
|
|||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INCLUDE_INSTALL_DIR INSTALLDIR/include
|
||||
#define INLINE inline
|
||||
#define LIB_INSTALL_DIR INSTALLDIR/lib
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
|
|
|
|||
|
|
@ -472,7 +472,9 @@ void aom_h_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *a
|
|||
RTCD_EXTERN void (*aom_h_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
|
||||
void aom_highbd_blend_a64_d16_mask_c(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
#define aom_highbd_blend_a64_d16_mask aom_highbd_blend_a64_d16_mask_c
|
||||
void aom_highbd_blend_a64_d16_mask_sse4_1(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
void aom_highbd_blend_a64_d16_mask_avx2(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
RTCD_EXTERN void (*aom_highbd_blend_a64_d16_mask)(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
|
||||
void aom_highbd_blend_a64_hmask_c(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 w, int h, int bd);
|
||||
void aom_highbd_blend_a64_hmask_sse4_1(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 w, int h, int bd);
|
||||
|
|
@ -487,10 +489,12 @@ void aom_highbd_blend_a64_vmask_sse4_1(uint8_t *dst, uint32_t dst_stride, const
|
|||
RTCD_EXTERN void (*aom_highbd_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 w, int h, int bd);
|
||||
|
||||
void aom_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);
|
||||
void aom_highbd_convolve8_horiz_sse2(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);
|
||||
void aom_highbd_convolve8_horiz_avx2(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);
|
||||
RTCD_EXTERN void (*aom_highbd_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, int bps);
|
||||
|
||||
void aom_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);
|
||||
void aom_highbd_convolve8_vert_sse2(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);
|
||||
void aom_highbd_convolve8_vert_avx2(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);
|
||||
RTCD_EXTERN void (*aom_highbd_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, int bps);
|
||||
|
||||
|
|
@ -1709,10 +1713,6 @@ void aom_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *abov
|
|||
void aom_v_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
RTCD_EXTERN void (*aom_v_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
void aom_dsp_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
|
|
@ -1955,6 +1955,9 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE2) aom_h_predictor_8x4 = aom_h_predictor_8x4_sse2;
|
||||
aom_h_predictor_8x8 = aom_h_predictor_8x8_c;
|
||||
if (flags & HAS_SSE2) aom_h_predictor_8x8 = aom_h_predictor_8x8_sse2;
|
||||
aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_avx2;
|
||||
aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_sse4_1;
|
||||
aom_highbd_blend_a64_mask = aom_highbd_blend_a64_mask_c;
|
||||
|
|
@ -1962,8 +1965,10 @@ static void setup_rtcd_internal(void)
|
|||
aom_highbd_blend_a64_vmask = aom_highbd_blend_a64_vmask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_vmask = aom_highbd_blend_a64_vmask_sse4_1;
|
||||
aom_highbd_convolve8_horiz = aom_highbd_convolve8_horiz_c;
|
||||
if (flags & HAS_SSE2) aom_highbd_convolve8_horiz = aom_highbd_convolve8_horiz_sse2;
|
||||
if (flags & HAS_AVX2) aom_highbd_convolve8_horiz = aom_highbd_convolve8_horiz_avx2;
|
||||
aom_highbd_convolve8_vert = aom_highbd_convolve8_vert_c;
|
||||
if (flags & HAS_SSE2) aom_highbd_convolve8_vert = aom_highbd_convolve8_vert_sse2;
|
||||
if (flags & HAS_AVX2) aom_highbd_convolve8_vert = aom_highbd_convolve8_vert_avx2;
|
||||
aom_highbd_convolve_copy = aom_highbd_convolve_copy_c;
|
||||
if (flags & HAS_SSE2) aom_highbd_convolve_copy = aom_highbd_convolve_copy_sse2;
|
||||
|
|
@ -2367,8 +2372,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE2) aom_v_predictor_8x4 = aom_v_predictor_8x4_sse2;
|
||||
aom_v_predictor_8x8 = aom_v_predictor_8x8_c;
|
||||
if (flags & HAS_SSE2) aom_v_predictor_8x8 = aom_v_predictor_8x8_sse2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -59,13 +59,22 @@ void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buf
|
|||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ struct txfm_param;
|
|||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
|
|
@ -99,14 +101,38 @@ void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, in
|
|||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z2 av1_dr_prediction_z2_c
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z3 av1_dr_prediction_z3_c
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
|
|
@ -163,40 +189,61 @@ void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_
|
|||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x32)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
|
@ -208,26 +255,6 @@ void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int des
|
|||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
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_sse4_1(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);
|
||||
|
|
@ -301,25 +328,9 @@ void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride,
|
|||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_jnt_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
|
|
@ -351,12 +362,12 @@ void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride,
|
|||
void av1_wiener_convolve_add_src_avx2(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, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(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, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
|
@ -462,6 +473,25 @@ static void setup_rtcd_internal(void)
|
|||
av1_convolve_y_sr = av1_convolve_y_sr_c;
|
||||
if (flags & HAS_SSE2) av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
|
|
@ -484,34 +514,37 @@ static void setup_rtcd_internal(void)
|
|||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_avx2;
|
||||
av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_avx2;
|
||||
av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_avx2;
|
||||
av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_avx2;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
|
|
@ -524,18 +557,8 @@ static void setup_rtcd_internal(void)
|
|||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_jnt_convolve_2d = av1_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSSE3) av1_jnt_convolve_2d = av1_jnt_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d = av1_jnt_convolve_2d_avx2;
|
||||
av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE2) av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_avx2;
|
||||
av1_jnt_convolve_x = av1_jnt_convolve_x_c;
|
||||
if (flags & HAS_SSE2) av1_jnt_convolve_x = av1_jnt_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_x = av1_jnt_convolve_x_avx2;
|
||||
av1_jnt_convolve_y = av1_jnt_convolve_y_c;
|
||||
if (flags & HAS_SSE2) av1_jnt_convolve_y = av1_jnt_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_y = av1_jnt_convolve_y_avx2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
;
|
||||
; Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
; Copyright (c) 2019, 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
|
||||
|
|
@ -22,18 +22,17 @@ CONFIG_AV1_ENCODER equ 0
|
|||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_INTER_MODE_RD_STATS equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_DIST_8X8 equ 0
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_FILEOPTIONS equ 1
|
||||
CONFIG_FIX_GF_LENGTH equ 1
|
||||
CONFIG_FP_MB_STATS equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GLOBAL_MOTION_SEARCH equ 1
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
|
|
@ -44,15 +43,16 @@ CONFIG_MAX_DECODE_PROFILE equ 2
|
|||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_ONE_PASS_SVM equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REDUCED_ENCODER_BORDER equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SHARP_SETTINGS equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_STATIC equ 1
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
* Copyright (c) 2019, 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
|
||||
|
|
@ -24,18 +24,17 @@
|
|||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_INTER_MODE_RD_STATS 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_DIST_8X8 0
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_FILEOPTIONS 1
|
||||
#define CONFIG_FIX_GF_LENGTH 1
|
||||
#define CONFIG_FP_MB_STATS 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GLOBAL_MOTION_SEARCH 1
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
|
|
@ -46,15 +45,16 @@
|
|||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_ONE_PASS_SVM 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REDUCED_ENCODER_BORDER 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SHARP_SETTINGS 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_STATIC 1
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
|
|
@ -76,7 +76,5 @@
|
|||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INCLUDE_INSTALL_DIR INSTALLDIR/include
|
||||
#define INLINE inline
|
||||
#define LIB_INSTALL_DIR INSTALLDIR/lib
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
|
|
|
|||
|
|
@ -472,7 +472,9 @@ void aom_h_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *a
|
|||
#define aom_h_predictor_8x8 aom_h_predictor_8x8_sse2
|
||||
|
||||
void aom_highbd_blend_a64_d16_mask_c(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
#define aom_highbd_blend_a64_d16_mask aom_highbd_blend_a64_d16_mask_c
|
||||
void aom_highbd_blend_a64_d16_mask_sse4_1(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
void aom_highbd_blend_a64_d16_mask_avx2(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
RTCD_EXTERN void (*aom_highbd_blend_a64_d16_mask)(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
|
||||
void aom_highbd_blend_a64_hmask_c(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 w, int h, int bd);
|
||||
void aom_highbd_blend_a64_hmask_sse4_1(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 w, int h, int bd);
|
||||
|
|
@ -1711,10 +1713,6 @@ void aom_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *abov
|
|||
void aom_v_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define aom_v_predictor_8x8 aom_v_predictor_8x8_sse2
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
void aom_dsp_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
|
|
@ -1788,6 +1786,9 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_AVX2) aom_dc_top_predictor_64x64 = aom_dc_top_predictor_64x64_avx2;
|
||||
aom_h_predictor_32x32 = aom_h_predictor_32x32_sse2;
|
||||
if (flags & HAS_AVX2) aom_h_predictor_32x32 = aom_h_predictor_32x32_avx2;
|
||||
aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_avx2;
|
||||
aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_sse4_1;
|
||||
aom_highbd_blend_a64_mask = aom_highbd_blend_a64_mask_c;
|
||||
|
|
@ -1989,8 +1990,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_AVX2) aom_v_predictor_64x32 = aom_v_predictor_64x32_avx2;
|
||||
aom_v_predictor_64x64 = aom_v_predictor_64x64_sse2;
|
||||
if (flags & HAS_AVX2) aom_v_predictor_64x64 = aom_v_predictor_64x64_avx2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -59,13 +59,22 @@ void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buf
|
|||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ struct txfm_param;
|
|||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
|
|
@ -99,14 +101,38 @@ void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, in
|
|||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z2 av1_dr_prediction_z2_c
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z3 av1_dr_prediction_z3_c
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
|
|
@ -166,40 +192,61 @@ void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_
|
|||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x32)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
|
@ -211,26 +258,6 @@ void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int des
|
|||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
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_sse4_1(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);
|
||||
|
|
@ -304,25 +331,9 @@ void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride,
|
|||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_jnt_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
|
|
@ -354,12 +365,12 @@ void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride,
|
|||
void av1_wiener_convolve_add_src_avx2(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, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(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, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
|
@ -461,6 +472,21 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_AVX2) av1_convolve_x_sr = av1_convolve_x_sr_avx2;
|
||||
av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
|
|
@ -482,34 +508,37 @@ static void setup_rtcd_internal(void)
|
|||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_avx2;
|
||||
av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_avx2;
|
||||
av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_avx2;
|
||||
av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_avx2;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
|
|
@ -522,15 +551,8 @@ static void setup_rtcd_internal(void)
|
|||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_jnt_convolve_2d = av1_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSSE3) av1_jnt_convolve_2d = av1_jnt_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d = av1_jnt_convolve_2d_avx2;
|
||||
av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_avx2;
|
||||
av1_jnt_convolve_x = av1_jnt_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_x = av1_jnt_convolve_x_avx2;
|
||||
av1_jnt_convolve_y = av1_jnt_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_y = av1_jnt_convolve_y_avx2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
;
|
||||
; Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
; Copyright (c) 2019, 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
|
||||
|
|
@ -22,18 +22,17 @@ CONFIG_AV1_ENCODER equ 0
|
|||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_INTER_MODE_RD_STATS equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_DIST_8X8 equ 0
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_FILEOPTIONS equ 1
|
||||
CONFIG_FIX_GF_LENGTH equ 1
|
||||
CONFIG_FP_MB_STATS equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GLOBAL_MOTION_SEARCH equ 1
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
|
|
@ -44,15 +43,16 @@ CONFIG_MAX_DECODE_PROFILE equ 2
|
|||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_ONE_PASS_SVM equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REDUCED_ENCODER_BORDER equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SHARP_SETTINGS equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_STATIC equ 1
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
* Copyright (c) 2019, 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
|
||||
|
|
@ -24,18 +24,17 @@
|
|||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_INTER_MODE_RD_STATS 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_DIST_8X8 0
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_FILEOPTIONS 1
|
||||
#define CONFIG_FIX_GF_LENGTH 1
|
||||
#define CONFIG_FP_MB_STATS 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GLOBAL_MOTION_SEARCH 1
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
|
|
@ -46,15 +45,16 @@
|
|||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_ONE_PASS_SVM 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REDUCED_ENCODER_BORDER 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SHARP_SETTINGS 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_STATIC 1
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
|
|
@ -76,7 +76,5 @@
|
|||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INCLUDE_INSTALL_DIR INSTALLDIR/include
|
||||
#define INLINE inline
|
||||
#define LIB_INSTALL_DIR INSTALLDIR/lib
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
|
|
|
|||
|
|
@ -472,7 +472,9 @@ void aom_h_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *a
|
|||
#define aom_h_predictor_8x8 aom_h_predictor_8x8_sse2
|
||||
|
||||
void aom_highbd_blend_a64_d16_mask_c(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
#define aom_highbd_blend_a64_d16_mask aom_highbd_blend_a64_d16_mask_c
|
||||
void aom_highbd_blend_a64_d16_mask_sse4_1(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
void aom_highbd_blend_a64_d16_mask_avx2(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
RTCD_EXTERN void (*aom_highbd_blend_a64_d16_mask)(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
|
||||
void aom_highbd_blend_a64_hmask_c(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 w, int h, int bd);
|
||||
void aom_highbd_blend_a64_hmask_sse4_1(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 w, int h, int bd);
|
||||
|
|
@ -1711,10 +1713,6 @@ void aom_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *abov
|
|||
void aom_v_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define aom_v_predictor_8x8 aom_v_predictor_8x8_sse2
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
void aom_dsp_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
|
|
@ -1788,6 +1786,9 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_AVX2) aom_dc_top_predictor_64x64 = aom_dc_top_predictor_64x64_avx2;
|
||||
aom_h_predictor_32x32 = aom_h_predictor_32x32_sse2;
|
||||
if (flags & HAS_AVX2) aom_h_predictor_32x32 = aom_h_predictor_32x32_avx2;
|
||||
aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_avx2;
|
||||
aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_sse4_1;
|
||||
aom_highbd_blend_a64_mask = aom_highbd_blend_a64_mask_c;
|
||||
|
|
@ -1989,8 +1990,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_AVX2) aom_v_predictor_64x32 = aom_v_predictor_64x32_avx2;
|
||||
aom_v_predictor_64x64 = aom_v_predictor_64x64_sse2;
|
||||
if (flags & HAS_AVX2) aom_v_predictor_64x64 = aom_v_predictor_64x64_avx2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -59,13 +59,22 @@ void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buf
|
|||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ struct txfm_param;
|
|||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
|
|
@ -99,14 +101,38 @@ void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, in
|
|||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z2 av1_dr_prediction_z2_c
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z3 av1_dr_prediction_z3_c
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
|
|
@ -166,40 +192,61 @@ void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_
|
|||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x32)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
|
@ -211,26 +258,6 @@ void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int des
|
|||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
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_sse4_1(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);
|
||||
|
|
@ -304,25 +331,9 @@ void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride,
|
|||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_jnt_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
|
|
@ -354,12 +365,12 @@ void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride,
|
|||
void av1_wiener_convolve_add_src_avx2(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, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(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, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
|
@ -461,6 +472,21 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_AVX2) av1_convolve_x_sr = av1_convolve_x_sr_avx2;
|
||||
av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
|
|
@ -482,34 +508,37 @@ static void setup_rtcd_internal(void)
|
|||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_avx2;
|
||||
av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_avx2;
|
||||
av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_avx2;
|
||||
av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_avx2;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
|
|
@ -522,15 +551,8 @@ static void setup_rtcd_internal(void)
|
|||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_jnt_convolve_2d = av1_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSSE3) av1_jnt_convolve_2d = av1_jnt_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d = av1_jnt_convolve_2d_avx2;
|
||||
av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_avx2;
|
||||
av1_jnt_convolve_x = av1_jnt_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_x = av1_jnt_convolve_x_avx2;
|
||||
av1_jnt_convolve_y = av1_jnt_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_y = av1_jnt_convolve_y_avx2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
;
|
||||
; Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
; Copyright (c) 2019, 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
|
||||
|
|
@ -22,18 +22,17 @@ CONFIG_AV1_ENCODER equ 0
|
|||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_INTER_MODE_RD_STATS equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_DIST_8X8 equ 0
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_FILEOPTIONS equ 1
|
||||
CONFIG_FIX_GF_LENGTH equ 1
|
||||
CONFIG_FP_MB_STATS equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GLOBAL_MOTION_SEARCH equ 1
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
|
|
@ -44,15 +43,16 @@ CONFIG_MAX_DECODE_PROFILE equ 2
|
|||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_ONE_PASS_SVM equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REDUCED_ENCODER_BORDER equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SHARP_SETTINGS equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_STATIC equ 1
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
* Copyright (c) 2019, 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
|
||||
|
|
@ -24,18 +24,17 @@
|
|||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_INTER_MODE_RD_STATS 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_DIST_8X8 0
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_FILEOPTIONS 1
|
||||
#define CONFIG_FIX_GF_LENGTH 1
|
||||
#define CONFIG_FP_MB_STATS 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GLOBAL_MOTION_SEARCH 1
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
|
|
@ -46,15 +45,16 @@
|
|||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_ONE_PASS_SVM 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REDUCED_ENCODER_BORDER 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SHARP_SETTINGS 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_STATIC 1
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
|
|
@ -76,7 +76,5 @@
|
|||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INCLUDE_INSTALL_DIR INSTALLDIR/include
|
||||
#define INLINE inline
|
||||
#define LIB_INSTALL_DIR INSTALLDIR/lib
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
|
|
|
|||
|
|
@ -472,7 +472,9 @@ void aom_h_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *a
|
|||
RTCD_EXTERN void (*aom_h_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
|
||||
void aom_highbd_blend_a64_d16_mask_c(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
#define aom_highbd_blend_a64_d16_mask aom_highbd_blend_a64_d16_mask_c
|
||||
void aom_highbd_blend_a64_d16_mask_sse4_1(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
void aom_highbd_blend_a64_d16_mask_avx2(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
RTCD_EXTERN void (*aom_highbd_blend_a64_d16_mask)(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
|
||||
void aom_highbd_blend_a64_hmask_c(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 w, int h, int bd);
|
||||
void aom_highbd_blend_a64_hmask_sse4_1(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 w, int h, int bd);
|
||||
|
|
@ -487,10 +489,12 @@ void aom_highbd_blend_a64_vmask_sse4_1(uint8_t *dst, uint32_t dst_stride, const
|
|||
RTCD_EXTERN void (*aom_highbd_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 w, int h, int bd);
|
||||
|
||||
void aom_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);
|
||||
void aom_highbd_convolve8_horiz_sse2(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);
|
||||
void aom_highbd_convolve8_horiz_avx2(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);
|
||||
RTCD_EXTERN void (*aom_highbd_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, int bps);
|
||||
|
||||
void aom_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);
|
||||
void aom_highbd_convolve8_vert_sse2(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);
|
||||
void aom_highbd_convolve8_vert_avx2(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);
|
||||
RTCD_EXTERN void (*aom_highbd_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, int bps);
|
||||
|
||||
|
|
@ -1709,10 +1713,6 @@ void aom_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *abov
|
|||
void aom_v_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
RTCD_EXTERN void (*aom_v_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
void aom_dsp_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
|
|
@ -1955,6 +1955,9 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE2) aom_h_predictor_8x4 = aom_h_predictor_8x4_sse2;
|
||||
aom_h_predictor_8x8 = aom_h_predictor_8x8_c;
|
||||
if (flags & HAS_SSE2) aom_h_predictor_8x8 = aom_h_predictor_8x8_sse2;
|
||||
aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_avx2;
|
||||
aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_sse4_1;
|
||||
aom_highbd_blend_a64_mask = aom_highbd_blend_a64_mask_c;
|
||||
|
|
@ -1962,8 +1965,10 @@ static void setup_rtcd_internal(void)
|
|||
aom_highbd_blend_a64_vmask = aom_highbd_blend_a64_vmask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_vmask = aom_highbd_blend_a64_vmask_sse4_1;
|
||||
aom_highbd_convolve8_horiz = aom_highbd_convolve8_horiz_c;
|
||||
if (flags & HAS_SSE2) aom_highbd_convolve8_horiz = aom_highbd_convolve8_horiz_sse2;
|
||||
if (flags & HAS_AVX2) aom_highbd_convolve8_horiz = aom_highbd_convolve8_horiz_avx2;
|
||||
aom_highbd_convolve8_vert = aom_highbd_convolve8_vert_c;
|
||||
if (flags & HAS_SSE2) aom_highbd_convolve8_vert = aom_highbd_convolve8_vert_sse2;
|
||||
if (flags & HAS_AVX2) aom_highbd_convolve8_vert = aom_highbd_convolve8_vert_avx2;
|
||||
aom_highbd_convolve_copy = aom_highbd_convolve_copy_c;
|
||||
if (flags & HAS_SSE2) aom_highbd_convolve_copy = aom_highbd_convolve_copy_sse2;
|
||||
|
|
@ -2367,8 +2372,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE2) aom_v_predictor_8x4 = aom_v_predictor_8x4_sse2;
|
||||
aom_v_predictor_8x8 = aom_v_predictor_8x8_c;
|
||||
if (flags & HAS_SSE2) aom_v_predictor_8x8 = aom_v_predictor_8x8_sse2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -59,13 +59,22 @@ void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buf
|
|||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ struct txfm_param;
|
|||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
|
|
@ -99,14 +101,38 @@ void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, in
|
|||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z2 av1_dr_prediction_z2_c
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z3 av1_dr_prediction_z3_c
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
|
|
@ -163,40 +189,61 @@ void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_
|
|||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x32)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
|
@ -208,26 +255,6 @@ void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int des
|
|||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
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_sse4_1(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);
|
||||
|
|
@ -301,25 +328,9 @@ void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride,
|
|||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_jnt_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
|
|
@ -351,12 +362,12 @@ void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride,
|
|||
void av1_wiener_convolve_add_src_avx2(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, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(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, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
|
@ -462,6 +473,25 @@ static void setup_rtcd_internal(void)
|
|||
av1_convolve_y_sr = av1_convolve_y_sr_c;
|
||||
if (flags & HAS_SSE2) av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
|
|
@ -484,34 +514,37 @@ static void setup_rtcd_internal(void)
|
|||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_avx2;
|
||||
av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_avx2;
|
||||
av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_avx2;
|
||||
av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_avx2;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
|
|
@ -524,18 +557,8 @@ static void setup_rtcd_internal(void)
|
|||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_jnt_convolve_2d = av1_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSSE3) av1_jnt_convolve_2d = av1_jnt_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d = av1_jnt_convolve_2d_avx2;
|
||||
av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE2) av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_avx2;
|
||||
av1_jnt_convolve_x = av1_jnt_convolve_x_c;
|
||||
if (flags & HAS_SSE2) av1_jnt_convolve_x = av1_jnt_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_x = av1_jnt_convolve_x_avx2;
|
||||
av1_jnt_convolve_y = av1_jnt_convolve_y_c;
|
||||
if (flags & HAS_SSE2) av1_jnt_convolve_y = av1_jnt_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_y = av1_jnt_convolve_y_avx2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
;
|
||||
; Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
; Copyright (c) 2019, 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
|
||||
|
|
@ -22,18 +22,17 @@ CONFIG_AV1_ENCODER equ 0
|
|||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_INTER_MODE_RD_STATS equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_DIST_8X8 equ 0
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_FILEOPTIONS equ 1
|
||||
CONFIG_FIX_GF_LENGTH equ 1
|
||||
CONFIG_FP_MB_STATS equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GLOBAL_MOTION_SEARCH equ 1
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
|
|
@ -44,15 +43,16 @@ CONFIG_MAX_DECODE_PROFILE equ 2
|
|||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_ONE_PASS_SVM equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REDUCED_ENCODER_BORDER equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SHARP_SETTINGS equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_STATIC equ 1
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
* Copyright (c) 2019, 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
|
||||
|
|
@ -24,18 +24,17 @@
|
|||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_INTER_MODE_RD_STATS 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_DIST_8X8 0
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_FILEOPTIONS 1
|
||||
#define CONFIG_FIX_GF_LENGTH 1
|
||||
#define CONFIG_FP_MB_STATS 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GLOBAL_MOTION_SEARCH 1
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
|
|
@ -46,15 +45,16 @@
|
|||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_ONE_PASS_SVM 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REDUCED_ENCODER_BORDER 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SHARP_SETTINGS 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_STATIC 1
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
|
|
@ -76,7 +76,5 @@
|
|||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INCLUDE_INSTALL_DIR INSTALLDIR/include
|
||||
#define INLINE inline
|
||||
#define LIB_INSTALL_DIR INSTALLDIR/lib
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
|
|
|
|||
|
|
@ -472,7 +472,9 @@ void aom_h_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *a
|
|||
RTCD_EXTERN void (*aom_h_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
|
||||
void aom_highbd_blend_a64_d16_mask_c(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
#define aom_highbd_blend_a64_d16_mask aom_highbd_blend_a64_d16_mask_c
|
||||
void aom_highbd_blend_a64_d16_mask_sse4_1(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
void aom_highbd_blend_a64_d16_mask_avx2(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
RTCD_EXTERN void (*aom_highbd_blend_a64_d16_mask)(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
|
||||
void aom_highbd_blend_a64_hmask_c(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 w, int h, int bd);
|
||||
void aom_highbd_blend_a64_hmask_sse4_1(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 w, int h, int bd);
|
||||
|
|
@ -487,10 +489,12 @@ void aom_highbd_blend_a64_vmask_sse4_1(uint8_t *dst, uint32_t dst_stride, const
|
|||
RTCD_EXTERN void (*aom_highbd_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 w, int h, int bd);
|
||||
|
||||
void aom_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);
|
||||
void aom_highbd_convolve8_horiz_sse2(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);
|
||||
void aom_highbd_convolve8_horiz_avx2(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);
|
||||
RTCD_EXTERN void (*aom_highbd_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, int bps);
|
||||
|
||||
void aom_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);
|
||||
void aom_highbd_convolve8_vert_sse2(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);
|
||||
void aom_highbd_convolve8_vert_avx2(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);
|
||||
RTCD_EXTERN void (*aom_highbd_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, int bps);
|
||||
|
||||
|
|
@ -1709,10 +1713,6 @@ void aom_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *abov
|
|||
void aom_v_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
RTCD_EXTERN void (*aom_v_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
void aom_dsp_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
|
|
@ -1955,6 +1955,9 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE2) aom_h_predictor_8x4 = aom_h_predictor_8x4_sse2;
|
||||
aom_h_predictor_8x8 = aom_h_predictor_8x8_c;
|
||||
if (flags & HAS_SSE2) aom_h_predictor_8x8 = aom_h_predictor_8x8_sse2;
|
||||
aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_avx2;
|
||||
aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_sse4_1;
|
||||
aom_highbd_blend_a64_mask = aom_highbd_blend_a64_mask_c;
|
||||
|
|
@ -1962,8 +1965,10 @@ static void setup_rtcd_internal(void)
|
|||
aom_highbd_blend_a64_vmask = aom_highbd_blend_a64_vmask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_vmask = aom_highbd_blend_a64_vmask_sse4_1;
|
||||
aom_highbd_convolve8_horiz = aom_highbd_convolve8_horiz_c;
|
||||
if (flags & HAS_SSE2) aom_highbd_convolve8_horiz = aom_highbd_convolve8_horiz_sse2;
|
||||
if (flags & HAS_AVX2) aom_highbd_convolve8_horiz = aom_highbd_convolve8_horiz_avx2;
|
||||
aom_highbd_convolve8_vert = aom_highbd_convolve8_vert_c;
|
||||
if (flags & HAS_SSE2) aom_highbd_convolve8_vert = aom_highbd_convolve8_vert_sse2;
|
||||
if (flags & HAS_AVX2) aom_highbd_convolve8_vert = aom_highbd_convolve8_vert_avx2;
|
||||
aom_highbd_convolve_copy = aom_highbd_convolve_copy_c;
|
||||
if (flags & HAS_SSE2) aom_highbd_convolve_copy = aom_highbd_convolve_copy_sse2;
|
||||
|
|
@ -2367,8 +2372,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_SSE2) aom_v_predictor_8x4 = aom_v_predictor_8x4_sse2;
|
||||
aom_v_predictor_8x8 = aom_v_predictor_8x8_c;
|
||||
if (flags & HAS_SSE2) aom_v_predictor_8x8 = aom_v_predictor_8x8_sse2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -59,13 +59,22 @@ void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buf
|
|||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ struct txfm_param;
|
|||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
|
|
@ -99,14 +101,38 @@ void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, in
|
|||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z2 av1_dr_prediction_z2_c
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z3 av1_dr_prediction_z3_c
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
|
|
@ -163,40 +189,61 @@ void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_
|
|||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x32)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
|
@ -208,26 +255,6 @@ void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int des
|
|||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
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_sse4_1(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);
|
||||
|
|
@ -301,25 +328,9 @@ void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride,
|
|||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_jnt_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
|
|
@ -351,12 +362,12 @@ void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride,
|
|||
void av1_wiener_convolve_add_src_avx2(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, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(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, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
|
@ -462,6 +473,25 @@ static void setup_rtcd_internal(void)
|
|||
av1_convolve_y_sr = av1_convolve_y_sr_c;
|
||||
if (flags & HAS_SSE2) av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
|
|
@ -484,34 +514,37 @@ static void setup_rtcd_internal(void)
|
|||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_avx2;
|
||||
av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_avx2;
|
||||
av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_avx2;
|
||||
av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_avx2;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
|
|
@ -524,18 +557,8 @@ static void setup_rtcd_internal(void)
|
|||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_jnt_convolve_2d = av1_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSSE3) av1_jnt_convolve_2d = av1_jnt_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d = av1_jnt_convolve_2d_avx2;
|
||||
av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE2) av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_avx2;
|
||||
av1_jnt_convolve_x = av1_jnt_convolve_x_c;
|
||||
if (flags & HAS_SSE2) av1_jnt_convolve_x = av1_jnt_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_x = av1_jnt_convolve_x_avx2;
|
||||
av1_jnt_convolve_y = av1_jnt_convolve_y_c;
|
||||
if (flags & HAS_SSE2) av1_jnt_convolve_y = av1_jnt_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_y = av1_jnt_convolve_y_avx2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
;
|
||||
; Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
; Copyright (c) 2019, 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
|
||||
|
|
@ -22,18 +22,17 @@ CONFIG_AV1_ENCODER equ 0
|
|||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_INTER_MODE_RD_STATS equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_DIST_8X8 equ 0
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_FILEOPTIONS equ 1
|
||||
CONFIG_FIX_GF_LENGTH equ 1
|
||||
CONFIG_FP_MB_STATS equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GLOBAL_MOTION_SEARCH equ 1
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
|
|
@ -44,15 +43,16 @@ CONFIG_MAX_DECODE_PROFILE equ 2
|
|||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_ONE_PASS_SVM equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REDUCED_ENCODER_BORDER equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SHARP_SETTINGS equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_STATIC equ 1
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
* Copyright (c) 2019, 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
|
||||
|
|
@ -24,18 +24,17 @@
|
|||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_INTER_MODE_RD_STATS 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_DIST_8X8 0
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_FILEOPTIONS 1
|
||||
#define CONFIG_FIX_GF_LENGTH 1
|
||||
#define CONFIG_FP_MB_STATS 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GLOBAL_MOTION_SEARCH 1
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
|
|
@ -46,15 +45,16 @@
|
|||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_ONE_PASS_SVM 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REDUCED_ENCODER_BORDER 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SHARP_SETTINGS 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_STATIC 1
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
|
|
@ -76,7 +76,5 @@
|
|||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INCLUDE_INSTALL_DIR INSTALLDIR/include
|
||||
#define INLINE inline
|
||||
#define LIB_INSTALL_DIR INSTALLDIR/lib
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
|
|
|
|||
|
|
@ -472,7 +472,9 @@ void aom_h_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *a
|
|||
#define aom_h_predictor_8x8 aom_h_predictor_8x8_sse2
|
||||
|
||||
void aom_highbd_blend_a64_d16_mask_c(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
#define aom_highbd_blend_a64_d16_mask aom_highbd_blend_a64_d16_mask_c
|
||||
void aom_highbd_blend_a64_d16_mask_sse4_1(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
void aom_highbd_blend_a64_d16_mask_avx2(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
RTCD_EXTERN void (*aom_highbd_blend_a64_d16_mask)(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
|
||||
void aom_highbd_blend_a64_hmask_c(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 w, int h, int bd);
|
||||
void aom_highbd_blend_a64_hmask_sse4_1(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 w, int h, int bd);
|
||||
|
|
@ -1711,10 +1713,6 @@ void aom_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *abov
|
|||
void aom_v_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define aom_v_predictor_8x8 aom_v_predictor_8x8_sse2
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
void aom_dsp_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
|
|
@ -1788,6 +1786,9 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_AVX2) aom_dc_top_predictor_64x64 = aom_dc_top_predictor_64x64_avx2;
|
||||
aom_h_predictor_32x32 = aom_h_predictor_32x32_sse2;
|
||||
if (flags & HAS_AVX2) aom_h_predictor_32x32 = aom_h_predictor_32x32_avx2;
|
||||
aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_avx2;
|
||||
aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_sse4_1;
|
||||
aom_highbd_blend_a64_mask = aom_highbd_blend_a64_mask_c;
|
||||
|
|
@ -1989,8 +1990,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_AVX2) aom_v_predictor_64x32 = aom_v_predictor_64x32_avx2;
|
||||
aom_v_predictor_64x64 = aom_v_predictor_64x64_sse2;
|
||||
if (flags & HAS_AVX2) aom_v_predictor_64x64 = aom_v_predictor_64x64_avx2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -59,13 +59,22 @@ void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buf
|
|||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ struct txfm_param;
|
|||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
|
|
@ -99,14 +101,38 @@ void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, in
|
|||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z2 av1_dr_prediction_z2_c
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z3 av1_dr_prediction_z3_c
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
|
|
@ -166,40 +192,61 @@ void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_
|
|||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x32)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
|
@ -211,26 +258,6 @@ void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int des
|
|||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
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_sse4_1(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);
|
||||
|
|
@ -304,25 +331,9 @@ void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride,
|
|||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_jnt_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
|
|
@ -354,12 +365,12 @@ void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride,
|
|||
void av1_wiener_convolve_add_src_avx2(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, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(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, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
|
@ -461,6 +472,21 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_AVX2) av1_convolve_x_sr = av1_convolve_x_sr_avx2;
|
||||
av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
|
|
@ -482,34 +508,37 @@ static void setup_rtcd_internal(void)
|
|||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_avx2;
|
||||
av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_avx2;
|
||||
av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_avx2;
|
||||
av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_avx2;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
|
|
@ -522,15 +551,8 @@ static void setup_rtcd_internal(void)
|
|||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_jnt_convolve_2d = av1_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSSE3) av1_jnt_convolve_2d = av1_jnt_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d = av1_jnt_convolve_2d_avx2;
|
||||
av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_avx2;
|
||||
av1_jnt_convolve_x = av1_jnt_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_x = av1_jnt_convolve_x_avx2;
|
||||
av1_jnt_convolve_y = av1_jnt_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_y = av1_jnt_convolve_y_avx2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
;
|
||||
; Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
; Copyright (c) 2019, 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
|
||||
|
|
@ -22,18 +22,17 @@ CONFIG_AV1_ENCODER equ 0
|
|||
CONFIG_BIG_ENDIAN equ 0
|
||||
CONFIG_BITSTREAM_DEBUG equ 0
|
||||
CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
|
||||
CONFIG_COLLECT_INTER_MODE_RD_STATS equ 0
|
||||
CONFIG_COLLECT_PARTITION_STATS equ 0
|
||||
CONFIG_COLLECT_RD_STATS equ 0
|
||||
CONFIG_DEBUG equ 0
|
||||
CONFIG_DENOISE equ 1
|
||||
CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1
|
||||
CONFIG_DIST_8X8 equ 0
|
||||
CONFIG_ENTROPY_STATS equ 0
|
||||
CONFIG_FILEOPTIONS equ 1
|
||||
CONFIG_FIX_GF_LENGTH equ 1
|
||||
CONFIG_FP_MB_STATS equ 0
|
||||
CONFIG_GCC equ 1
|
||||
CONFIG_GCOV equ 0
|
||||
CONFIG_GLOBAL_MOTION_SEARCH equ 1
|
||||
CONFIG_GPROF equ 0
|
||||
CONFIG_INSPECTION equ 0
|
||||
CONFIG_INTERNAL_STATS equ 0
|
||||
|
|
@ -44,15 +43,16 @@ CONFIG_MAX_DECODE_PROFILE equ 2
|
|||
CONFIG_MISMATCH_DEBUG equ 0
|
||||
CONFIG_MULTITHREAD equ 1
|
||||
CONFIG_NORMAL_TILE_MODE equ 0
|
||||
CONFIG_ONE_PASS_SVM equ 0
|
||||
CONFIG_OS_SUPPORT equ 1
|
||||
CONFIG_PIC equ 0
|
||||
CONFIG_RD_DEBUG equ 0
|
||||
CONFIG_REDUCED_ENCODER_BORDER equ 0
|
||||
CONFIG_RUNTIME_CPU_DETECT equ 1
|
||||
CONFIG_SHARED equ 0
|
||||
CONFIG_SHARP_SETTINGS equ 0
|
||||
CONFIG_SIZE_LIMIT equ 0
|
||||
CONFIG_SPATIAL_RESAMPLING equ 1
|
||||
CONFIG_SPEED_STATS equ 0
|
||||
CONFIG_STATIC equ 1
|
||||
CONFIG_WEBM_IO equ 0
|
||||
DECODE_HEIGHT_LIMIT equ 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Alliance for Open Media. All rights reserved
|
||||
* Copyright (c) 2019, 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
|
||||
|
|
@ -24,18 +24,17 @@
|
|||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_BITSTREAM_DEBUG 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_COLLECT_INTER_MODE_RD_STATS 0
|
||||
#define CONFIG_COLLECT_PARTITION_STATS 0
|
||||
#define CONFIG_COLLECT_RD_STATS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_DENOISE 1
|
||||
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
|
||||
#define CONFIG_DIST_8X8 0
|
||||
#define CONFIG_ENTROPY_STATS 0
|
||||
#define CONFIG_FILEOPTIONS 1
|
||||
#define CONFIG_FIX_GF_LENGTH 1
|
||||
#define CONFIG_FP_MB_STATS 0
|
||||
#define CONFIG_GCC 1
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_GLOBAL_MOTION_SEARCH 1
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_INSPECTION 0
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
|
|
@ -46,15 +45,16 @@
|
|||
#define CONFIG_MISMATCH_DEBUG 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_NORMAL_TILE_MODE 0
|
||||
#define CONFIG_ONE_PASS_SVM 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_RD_DEBUG 0
|
||||
#define CONFIG_REDUCED_ENCODER_BORDER 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_SHARP_SETTINGS 0
|
||||
#define CONFIG_SIZE_LIMIT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_SPEED_STATS 0
|
||||
#define CONFIG_STATIC 1
|
||||
#define CONFIG_WEBM_IO 0
|
||||
#define DECODE_HEIGHT_LIMIT 0
|
||||
|
|
@ -76,7 +76,5 @@
|
|||
#define HAVE_SSSE3 1
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_WXWIDGETS 0
|
||||
#define INCLUDE_INSTALL_DIR INSTALLDIR/include
|
||||
#define INLINE inline
|
||||
#define LIB_INSTALL_DIR INSTALLDIR/lib
|
||||
#endif /* AOM_CONFIG_H_ */
|
||||
|
|
|
|||
|
|
@ -472,7 +472,9 @@ void aom_h_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *a
|
|||
#define aom_h_predictor_8x8 aom_h_predictor_8x8_sse2
|
||||
|
||||
void aom_highbd_blend_a64_d16_mask_c(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
#define aom_highbd_blend_a64_d16_mask aom_highbd_blend_a64_d16_mask_c
|
||||
void aom_highbd_blend_a64_d16_mask_sse4_1(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
void aom_highbd_blend_a64_d16_mask_avx2(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
RTCD_EXTERN void (*aom_highbd_blend_a64_d16_mask)(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd);
|
||||
|
||||
void aom_highbd_blend_a64_hmask_c(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 w, int h, int bd);
|
||||
void aom_highbd_blend_a64_hmask_sse4_1(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 w, int h, int bd);
|
||||
|
|
@ -1711,10 +1713,6 @@ void aom_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *abov
|
|||
void aom_v_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define aom_v_predictor_8x8 aom_v_predictor_8x8_sse2
|
||||
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
void aom_dsp_rtcd(void);
|
||||
|
||||
#ifdef RTCD_C
|
||||
|
|
@ -1788,6 +1786,9 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_AVX2) aom_dc_top_predictor_64x64 = aom_dc_top_predictor_64x64_avx2;
|
||||
aom_h_predictor_32x32 = aom_h_predictor_32x32_sse2;
|
||||
if (flags & HAS_AVX2) aom_h_predictor_32x32 = aom_h_predictor_32x32_avx2;
|
||||
aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_sse4_1;
|
||||
if (flags & HAS_AVX2) aom_highbd_blend_a64_d16_mask = aom_highbd_blend_a64_d16_mask_avx2;
|
||||
aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_c;
|
||||
if (flags & HAS_SSE4_1) aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_sse4_1;
|
||||
aom_highbd_blend_a64_mask = aom_highbd_blend_a64_mask_c;
|
||||
|
|
@ -1989,8 +1990,6 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_AVX2) aom_v_predictor_64x32 = aom_v_predictor_64x32_avx2;
|
||||
aom_v_predictor_64x64 = aom_v_predictor_64x64_sse2;
|
||||
if (flags & HAS_AVX2) aom_v_predictor_64x64 = aom_v_predictor_64x64_avx2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -59,13 +59,22 @@ void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buf
|
|||
void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes);
|
||||
#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c
|
||||
|
||||
void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c
|
||||
|
||||
void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c
|
||||
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c
|
||||
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend);
|
||||
void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2);
|
||||
#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c
|
||||
|
||||
void aom_scale_rtcd(void);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ struct txfm_param;
|
|||
struct aom_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct yv12_buffer_config;
|
||||
struct NN_CONFIG;
|
||||
typedef struct NN_CONFIG NN_CONFIG;
|
||||
|
||||
/* Function pointers return by CfL functions */
|
||||
typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride,
|
||||
|
|
@ -99,14 +101,38 @@ void av1_convolve_y_sr_sse2(const uint8_t *src, int src_stride, uint8_t *dst, in
|
|||
void av1_convolve_y_sr_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_convolve_y_sr)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_dist_wtd_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_dist_wtd_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
#define av1_dr_prediction_z1 av1_dr_prediction_z1_c
|
||||
void av1_dr_prediction_z1_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z1)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z2 av1_dr_prediction_z2_c
|
||||
void av1_dr_prediction_z2_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z2)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
#define av1_dr_prediction_z3 av1_dr_prediction_z3_c
|
||||
void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
RTCD_EXTERN void (*av1_dr_prediction_z3)(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy);
|
||||
|
||||
void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
|
||||
void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
|
||||
|
|
@ -166,40 +192,61 @@ void av1_highbd_convolve_y_sr_ssse3(const uint16_t *src, int src_stride, uint16_
|
|||
void av1_highbd_convolve_y_sr_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_convolve_y_sr)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dist_wtd_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_dist_wtd_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dist_wtd_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c
|
||||
void av1_highbd_dr_prediction_z1_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z1)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_dr_prediction_z2_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
|
||||
|
||||
void av1_highbd_dr_prediction_z3_c(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
#define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c
|
||||
void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_dr_prediction_z3)(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd);
|
||||
|
||||
void av1_highbd_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_16x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_16x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_32x32_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_32x32)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x16_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x16)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_4x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_4x8)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x4_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_highbd_inv_txfm_add_8x4)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
void av1_highbd_inv_txfm_add_8x8_sse4_1(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
|
@ -211,26 +258,6 @@ void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int des
|
|||
void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
|
||||
#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_2d_copy_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_2d_copy_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_2d_copy)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_x_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_x_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_x)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
void av1_highbd_jnt_convolve_y_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
void av1_highbd_jnt_convolve_y_avx2(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
RTCD_EXTERN void (*av1_highbd_jnt_convolve_y)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
|
||||
|
||||
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_sse4_1(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);
|
||||
|
|
@ -304,25 +331,9 @@ void av1_inv_txfm_add_ssse3(const tran_low_t *dqcoeff, uint8_t *dst, int stride,
|
|||
void av1_inv_txfm_add_avx2(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
RTCD_EXTERN void (*av1_inv_txfm_add)(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param);
|
||||
|
||||
void av1_jnt_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_2d_copy_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_2d_copy)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_x_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_x)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
|
||||
void av1_jnt_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_jnt_convolve_y_avx2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_jnt_convolve_y)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
|
||||
void av1_round_shift_array_c(int32_t *arr, int size, int bit);
|
||||
void av1_round_shift_array_sse4_1(int32_t *arr, int size, int bit);
|
||||
RTCD_EXTERN void (*av1_round_shift_array)(int32_t *arr, int size, int bit);
|
||||
|
||||
int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height,
|
||||
int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
|
||||
|
|
@ -354,12 +365,12 @@ void av1_wiener_convolve_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride,
|
|||
void av1_wiener_convolve_add_src_avx2(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, const ConvolveParams *conv_params);
|
||||
RTCD_EXTERN void (*av1_wiener_convolve_add_src)(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, const ConvolveParams *conv_params);
|
||||
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max, int coeff_shift);
|
||||
void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int coeff_shift);
|
||||
|
||||
int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
|
||||
|
|
@ -461,6 +472,21 @@ static void setup_rtcd_internal(void)
|
|||
if (flags & HAS_AVX2) av1_convolve_x_sr = av1_convolve_x_sr_avx2;
|
||||
av1_convolve_y_sr = av1_convolve_y_sr_sse2;
|
||||
if (flags & HAS_AVX2) av1_convolve_y_sr = av1_convolve_y_sr_avx2;
|
||||
av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_sse2;
|
||||
if (flags & HAS_SSSE3) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d = av1_dist_wtd_convolve_2d_avx2;
|
||||
av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_2d_copy = av1_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_x = av1_dist_wtd_convolve_x_avx2;
|
||||
av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_dist_wtd_convolve_y = av1_dist_wtd_convolve_y_avx2;
|
||||
av1_dr_prediction_z1 = av1_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z1 = av1_dr_prediction_z1_avx2;
|
||||
av1_dr_prediction_z2 = av1_dr_prediction_z2_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z2 = av1_dr_prediction_z2_avx2;
|
||||
av1_dr_prediction_z3 = av1_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_dr_prediction_z3 = av1_dr_prediction_z3_avx2;
|
||||
av1_filter_intra_edge = av1_filter_intra_edge_c;
|
||||
if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
|
||||
av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
|
||||
|
|
@ -482,34 +508,37 @@ static void setup_rtcd_internal(void)
|
|||
av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_c;
|
||||
if (flags & HAS_SSSE3) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_ssse3;
|
||||
if (flags & HAS_AVX2) av1_highbd_convolve_y_sr = av1_highbd_convolve_y_sr_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d = av1_highbd_dist_wtd_convolve_2d_avx2;
|
||||
av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_2d_copy = av1_highbd_dist_wtd_convolve_2d_copy_avx2;
|
||||
av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_x = av1_highbd_dist_wtd_convolve_x_avx2;
|
||||
av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_dist_wtd_convolve_y = av1_highbd_dist_wtd_convolve_y_avx2;
|
||||
av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z1 = av1_highbd_dr_prediction_z1_avx2;
|
||||
av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_c;
|
||||
if (flags & HAS_AVX2) av1_highbd_dr_prediction_z3 = av1_highbd_dr_prediction_z3_avx2;
|
||||
av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add = av1_highbd_inv_txfm_add_avx2;
|
||||
av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x16 = av1_highbd_inv_txfm_add_16x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x8 = av1_highbd_inv_txfm_add_16x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_inv_txfm_add_32x32 = av1_highbd_inv_txfm_add_32x32_avx2;
|
||||
av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_16x4 = av1_highbd_inv_txfm_add_16x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x16 = av1_highbd_inv_txfm_add_4x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x4 = av1_highbd_inv_txfm_add_4x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x16 = av1_highbd_inv_txfm_add_8x16_sse4_1;
|
||||
av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_4x8 = av1_highbd_inv_txfm_add_4x8_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x4 = av1_highbd_inv_txfm_add_8x4_sse4_1;
|
||||
av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_inv_txfm_add_8x8 = av1_highbd_inv_txfm_add_8x8_sse4_1;
|
||||
av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d = av1_highbd_jnt_convolve_2d_avx2;
|
||||
av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_2d_copy = av1_highbd_jnt_convolve_2d_copy_avx2;
|
||||
av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_x = av1_highbd_jnt_convolve_x_avx2;
|
||||
av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_highbd_jnt_convolve_y = av1_highbd_jnt_convolve_y_avx2;
|
||||
av1_highbd_warp_affine = av1_highbd_warp_affine_c;
|
||||
if (flags & HAS_SSE4_1) av1_highbd_warp_affine = av1_highbd_warp_affine_sse4_1;
|
||||
av1_highbd_wiener_convolve_add_src = av1_highbd_wiener_convolve_add_src_c;
|
||||
|
|
@ -522,15 +551,8 @@ static void setup_rtcd_internal(void)
|
|||
av1_inv_txfm_add = av1_inv_txfm_add_c;
|
||||
if (flags & HAS_SSSE3) av1_inv_txfm_add = av1_inv_txfm_add_ssse3;
|
||||
if (flags & HAS_AVX2) av1_inv_txfm_add = av1_inv_txfm_add_avx2;
|
||||
av1_jnt_convolve_2d = av1_jnt_convolve_2d_c;
|
||||
if (flags & HAS_SSSE3) av1_jnt_convolve_2d = av1_jnt_convolve_2d_ssse3;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d = av1_jnt_convolve_2d_avx2;
|
||||
av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_2d_copy = av1_jnt_convolve_2d_copy_avx2;
|
||||
av1_jnt_convolve_x = av1_jnt_convolve_x_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_x = av1_jnt_convolve_x_avx2;
|
||||
av1_jnt_convolve_y = av1_jnt_convolve_y_sse2;
|
||||
if (flags & HAS_AVX2) av1_jnt_convolve_y = av1_jnt_convolve_y_avx2;
|
||||
av1_round_shift_array = av1_round_shift_array_c;
|
||||
if (flags & HAS_SSE4_1) av1_round_shift_array = av1_round_shift_array_sse4_1;
|
||||
av1_selfguided_restoration = av1_selfguided_restoration_c;
|
||||
if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
|
||||
if (flags & HAS_AVX2) av1_selfguided_restoration = av1_selfguided_restoration_avx2;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# This file is automatically generated. Do not edit.
|
||||
# This file is generated. Do not edit.
|
||||
|
||||
files = {
|
||||
'ARM_EXPORTS': [
|
||||
|
|
@ -34,6 +34,7 @@ files = {
|
|||
'../../third_party/aom/aom_dsp/arm/intrapred_neon.c',
|
||||
'../../third_party/aom/aom_dsp/arm/loopfilter_neon.c',
|
||||
'../../third_party/aom/aom_dsp/arm/subtract_neon.c',
|
||||
'../../third_party/aom/aom_dsp/avg.c',
|
||||
'../../third_party/aom/aom_dsp/binary_codes_reader.c',
|
||||
'../../third_party/aom/aom_dsp/bitreader_buffer.c',
|
||||
'../../third_party/aom/aom_dsp/bitwriter_buffer.c',
|
||||
|
|
@ -109,7 +110,6 @@ files = {
|
|||
'../../third_party/aom/av1/decoder/decoder.c',
|
||||
'../../third_party/aom/av1/decoder/decodetxb.c',
|
||||
'../../third_party/aom/av1/decoder/detokenize.c',
|
||||
'../../third_party/aom/av1/decoder/dthread.c',
|
||||
'../../third_party/aom/av1/decoder/obu.c',
|
||||
'../../third_party/aom/av1/encoder/arm/neon/quantize_neon.c',
|
||||
],
|
||||
|
|
@ -140,6 +140,7 @@ files = {
|
|||
'../../third_party/aom/aom/src/aom_integer.c',
|
||||
'../../third_party/aom/aom_dsp/aom_convolve.c',
|
||||
'../../third_party/aom/aom_dsp/aom_dsp_rtcd.c',
|
||||
'../../third_party/aom/aom_dsp/avg.c',
|
||||
'../../third_party/aom/aom_dsp/binary_codes_reader.c',
|
||||
'../../third_party/aom/aom_dsp/bitreader_buffer.c',
|
||||
'../../third_party/aom/aom_dsp/bitwriter_buffer.c',
|
||||
|
|
@ -202,7 +203,6 @@ files = {
|
|||
'../../third_party/aom/av1/decoder/decoder.c',
|
||||
'../../third_party/aom/av1/decoder/decodetxb.c',
|
||||
'../../third_party/aom/av1/decoder/detokenize.c',
|
||||
'../../third_party/aom/av1/decoder/dthread.c',
|
||||
'../../third_party/aom/av1/decoder/obu.c',
|
||||
],
|
||||
'IA32_EXPORTS': [
|
||||
|
|
@ -232,6 +232,7 @@ files = {
|
|||
'../../third_party/aom/aom/src/aom_integer.c',
|
||||
'../../third_party/aom/aom_dsp/aom_convolve.c',
|
||||
'../../third_party/aom/aom_dsp/aom_dsp_rtcd.c',
|
||||
'../../third_party/aom/aom_dsp/avg.c',
|
||||
'../../third_party/aom/aom_dsp/binary_codes_reader.c',
|
||||
'../../third_party/aom/aom_dsp/bitreader_buffer.c',
|
||||
'../../third_party/aom/aom_dsp/bitwriter_buffer.c',
|
||||
|
|
@ -251,11 +252,14 @@ files = {
|
|||
'../../third_party/aom/aom_dsp/x86/aom_high_subpixel_8t_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_high_subpixel_bilinear_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_8t_intrin_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_8t_intrin_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_8t_intrin_ssse3.c',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_8t_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_8t_ssse3.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_bilinear_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_bilinear_ssse3.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/avg_intrin_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/avg_intrin_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/blend_a64_hmask_sse4.c',
|
||||
'../../third_party/aom/aom_dsp/x86/blend_a64_mask_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/blend_a64_mask_sse4.c',
|
||||
|
|
@ -263,14 +267,15 @@ files = {
|
|||
'../../third_party/aom/aom_dsp/x86/fft_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/fft_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_convolve_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_convolve_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_convolve_ssse3.c',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_intrapred_asm_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_intrapred_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_intrapred_sse2_asm.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_loopfilter_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_loopfilter_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/intrapred_asm_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/intrapred_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/intrapred_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/intrapred_sse2_asm.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/intrapred_ssse3.c',
|
||||
'../../third_party/aom/aom_dsp/x86/inv_wht_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/loopfilter_sse2.c',
|
||||
|
|
@ -365,7 +370,6 @@ files = {
|
|||
'../../third_party/aom/av1/decoder/decoder.c',
|
||||
'../../third_party/aom/av1/decoder/decodetxb.c',
|
||||
'../../third_party/aom/av1/decoder/detokenize.c',
|
||||
'../../third_party/aom/av1/decoder/dthread.c',
|
||||
'../../third_party/aom/av1/decoder/obu.c',
|
||||
],
|
||||
'X64_EXPORTS': [
|
||||
|
|
@ -395,6 +399,7 @@ files = {
|
|||
'../../third_party/aom/aom/src/aom_integer.c',
|
||||
'../../third_party/aom/aom_dsp/aom_convolve.c',
|
||||
'../../third_party/aom/aom_dsp/aom_dsp_rtcd.c',
|
||||
'../../third_party/aom/aom_dsp/avg.c',
|
||||
'../../third_party/aom/aom_dsp/binary_codes_reader.c',
|
||||
'../../third_party/aom/aom_dsp/bitreader_buffer.c',
|
||||
'../../third_party/aom/aom_dsp/bitwriter_buffer.c',
|
||||
|
|
@ -414,11 +419,14 @@ files = {
|
|||
'../../third_party/aom/aom_dsp/x86/aom_high_subpixel_8t_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_high_subpixel_bilinear_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_8t_intrin_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_8t_intrin_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_8t_intrin_ssse3.c',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_8t_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_8t_ssse3.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_bilinear_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/aom_subpixel_bilinear_ssse3.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/avg_intrin_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/avg_intrin_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/blend_a64_hmask_sse4.c',
|
||||
'../../third_party/aom/aom_dsp/x86/blend_a64_mask_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/blend_a64_mask_sse4.c',
|
||||
|
|
@ -426,14 +434,15 @@ files = {
|
|||
'../../third_party/aom/aom_dsp/x86/fft_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/fft_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_convolve_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_convolve_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_convolve_ssse3.c',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_intrapred_asm_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_intrapred_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_intrapred_sse2_asm.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_loopfilter_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/highbd_loopfilter_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/intrapred_asm_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/intrapred_avx2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/intrapred_sse2.c',
|
||||
'../../third_party/aom/aom_dsp/x86/intrapred_sse2_asm.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/intrapred_ssse3.c',
|
||||
'../../third_party/aom/aom_dsp/x86/inv_wht_sse2.asm',
|
||||
'../../third_party/aom/aom_dsp/x86/loopfilter_sse2.c',
|
||||
|
|
@ -527,7 +536,6 @@ files = {
|
|||
'../../third_party/aom/av1/decoder/decoder.c',
|
||||
'../../third_party/aom/av1/decoder/decodetxb.c',
|
||||
'../../third_party/aom/av1/decoder/detokenize.c',
|
||||
'../../third_party/aom/av1/decoder/dthread.c',
|
||||
'../../third_party/aom/av1/decoder/obu.c',
|
||||
],
|
||||
}
|
||||
|
|
|
|||
79
third_party/aom/CMakeLists.txt
vendored
79
third_party/aom/CMakeLists.txt
vendored
|
|
@ -22,10 +22,6 @@ project(AOM C CXX)
|
|||
|
||||
set(AOM_ROOT "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
set(AOM_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include"
|
||||
CACHE PATH "Installation path of includes")
|
||||
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib"
|
||||
CACHE PATH "Installation path of libraries")
|
||||
|
||||
if("${AOM_ROOT}" STREQUAL "${AOM_CONFIG_DIR}")
|
||||
message(FATAL_ERROR
|
||||
|
|
@ -42,9 +38,10 @@ include("${AOM_ROOT}/aom_ports/aom_ports.cmake")
|
|||
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/aom_install.cmake")
|
||||
include("${AOM_ROOT}/build/cmake/sanitizers.cmake")
|
||||
include("${AOM_ROOT}/build/cmake/util.cmake")
|
||||
include("${AOM_ROOT}/test/test.cmake")
|
||||
|
||||
list(APPEND AOM_RTCD_SOURCES
|
||||
"${AOM_CONFIG_DIR}/config/aom_dsp_rtcd.h"
|
||||
|
|
@ -158,8 +155,6 @@ list(APPEND AOM_ENCODER_STATS_SOURCES "${AOM_ROOT}/stats/aomstats.c"
|
|||
"${AOM_ROOT}/stats/aomstats.h" "${AOM_ROOT}/stats/rate_hist.c"
|
||||
"${AOM_ROOT}/stats/rate_hist.h")
|
||||
|
||||
list(APPEND AOM_PKG_CONFIG_SOURCES "${AOM_CONFIG_DIR}/aom.pc")
|
||||
|
||||
list(APPEND AOM_VERSION_SOURCES "${AOM_CONFIG_DIR}/config/aom_version.h")
|
||||
|
||||
list(APPEND AOM_WEBM_DECODER_SOURCES "${AOM_ROOT}/common/webmdec.cc"
|
||||
|
|
@ -192,22 +187,6 @@ add_custom_target(aom_version_check
|
|||
COMMENT "Updating version info if necessary." VERBATIM)
|
||||
add_dependencies(aom_version aom_version_check)
|
||||
|
||||
if(NOT MSVC)
|
||||
add_library(aom_pc ${AOM_PKG_CONFIG_SOURCES})
|
||||
add_dummy_source_file_to_target(aom_pc c)
|
||||
add_custom_command(OUTPUT "${AOM_CONFIG_DIR}/aom.pc"
|
||||
COMMAND ${CMAKE_COMMAND} ARGS
|
||||
-DAOM_CONFIG_DIR=${AOM_CONFIG_DIR}
|
||||
-DAOM_ROOT=${AOM_ROOT}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
|
||||
-DCMAKE_PROJECT_NAME=${CMAKE_PROJECT_NAME}
|
||||
-DCONFIG_MULTITHREAD=${CONFIG_MULTITHREAD}
|
||||
-DHAVE_PTHREAD_H=${HAVE_PTHREAD_H} -P
|
||||
"${AOM_ROOT}/build/cmake/pkg_config.cmake"
|
||||
COMMENT "Writing aom.pc" VERBATIM)
|
||||
add_dependencies(aom_pc aom_version)
|
||||
endif()
|
||||
|
||||
# TODO(tomfinegan): Move rtcd target setup where it belongs for each rtcd
|
||||
# source.
|
||||
add_rtcd_build_step("${AOM_ROOT}/aom_dsp/aom_dsp_rtcd_defs.pl"
|
||||
|
|
@ -234,8 +213,7 @@ if(NOT MSVC AND NOT APPLE)
|
|||
endif()
|
||||
|
||||
# List of object and static library targets.
|
||||
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_rtcd aom_encoder_stats aom_mem
|
||||
aom_scale aom)
|
||||
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_rtcd aom_mem aom_scale aom)
|
||||
|
||||
# Setup dependencies.
|
||||
setup_aom_dsp_targets()
|
||||
|
|
@ -403,7 +381,6 @@ endif()
|
|||
|
||||
if(ENABLE_TOOLS)
|
||||
if(CONFIG_AV1_DECODER)
|
||||
require_cxx_flag_nomsvc("-std=c++11" NO)
|
||||
add_executable(dump_obu "${AOM_GEN_SRC_DIR}/usage_exit.cc"
|
||||
"${AOM_ROOT}/tools/dump_obu.cc"
|
||||
"${AOM_ROOT}/tools/obu_parser.cc"
|
||||
|
|
@ -414,10 +391,6 @@ if(ENABLE_TOOLS)
|
|||
list(APPEND AOM_TOOL_TARGETS dump_obu)
|
||||
list(APPEND AOM_APP_TARGETS dump_obu)
|
||||
|
||||
if(NOT MSVC)
|
||||
target_compile_options(dump_obu PUBLIC -std=c++11)
|
||||
endif()
|
||||
|
||||
# Maintain a separate variable listing only the examples to facilitate
|
||||
# installation of example programs into an tools sub directory of
|
||||
# $AOM_DIST_DIR/bin when building the dist target.
|
||||
|
|
@ -489,8 +462,6 @@ if(ENABLE_EXAMPLES OR ENABLE_TESTS OR ENABLE_TOOLS)
|
|||
endif()
|
||||
|
||||
if(CONFIG_WEBM_IO)
|
||||
require_cxx_flag_nomsvc("-std=c++11" NO)
|
||||
|
||||
add_library(webm OBJECT ${AOM_LIBWEBM_SOURCES})
|
||||
include_directories("${AOM_ROOT}/third_party/libwebm")
|
||||
target_compile_definitions(webm PRIVATE __STDC_CONSTANT_MACROS)
|
||||
|
|
@ -498,7 +469,6 @@ if(ENABLE_EXAMPLES OR ENABLE_TESTS OR ENABLE_TOOLS)
|
|||
|
||||
if(NOT MSVC)
|
||||
target_compile_options(webm PRIVATE -Wno-shadow)
|
||||
target_compile_options(webm PUBLIC -std=c++11)
|
||||
endif()
|
||||
|
||||
# Add to existing targets.
|
||||
|
|
@ -593,46 +563,6 @@ if(ENABLE_DOCS)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT (MSVC OR XCODE))
|
||||
|
||||
# Aomedia install rule.
|
||||
list(APPEND AOM_INSTALL_INCS "${AOM_ROOT}/aom/aom.h"
|
||||
"${AOM_ROOT}/aom/aom_codec.h"
|
||||
"${AOM_ROOT}/aom/aom_frame_buffer.h"
|
||||
"${AOM_ROOT}/aom/aom_image.h" "${AOM_ROOT}/aom/aom_integer.h"
|
||||
"${AOM_ROOT}/aom/aom.h")
|
||||
|
||||
if(CONFIG_AV1_DECODER)
|
||||
if(ENABLE_EXAMPLES)
|
||||
list(APPEND AOM_INSTALL_BINS aomdec)
|
||||
endif()
|
||||
|
||||
list(APPEND AOM_INSTALL_INCS "${AOM_ROOT}/aom/aom_decoder.h"
|
||||
"${AOM_ROOT}/aom/aomdx.h")
|
||||
endif()
|
||||
|
||||
if(CONFIG_AV1_ENCODER)
|
||||
if(ENABLE_EXAMPLES)
|
||||
list(APPEND AOM_INSTALL_BINS aomenc)
|
||||
endif()
|
||||
|
||||
list(APPEND AOM_INSTALL_INCS "${AOM_ROOT}/aom/aomcx.h"
|
||||
"${AOM_ROOT}/aom/aom_encoder.h")
|
||||
endif()
|
||||
|
||||
set(AOM_INSTALL_LIBS aom)
|
||||
|
||||
install(FILES ${AOM_INSTALL_INCS} DESTINATION "${INCLUDE_INSTALL_DIR}/aom")
|
||||
install(FILES "${AOM_CONFIG_DIR}/aom.pc" DESTINATION
|
||||
"${LIB_INSTALL_DIR}/pkgconfig")
|
||||
install(TARGETS ${AOM_INSTALL_LIBS} DESTINATION "${LIB_INSTALL_DIR}")
|
||||
|
||||
if(ENABLE_EXAMPLES)
|
||||
install(TARGETS ${AOM_INSTALL_BINS} DESTINATION
|
||||
"${CMAKE_INSTALL_PREFIX}/bin")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Aomedia dist rule.
|
||||
if(CONFIG_AV1_DECODER AND ENABLE_EXAMPLES)
|
||||
list(APPEND AOM_DIST_APPS $<TARGET_FILE:aomdec>)
|
||||
|
|
@ -756,3 +686,6 @@ foreach(aom_source_var ${aom_source_vars})
|
|||
file(APPEND "${libaom_srcs_gni_file}" "]\n")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# Generate aom.pc and setup install rule.
|
||||
setup_aom_install_targets()
|
||||
|
|
|
|||
14
third_party/aom/PATENTS
vendored
14
third_party/aom/PATENTS
vendored
|
|
@ -57,10 +57,10 @@ Alliance for Open Media Patent License 1.0
|
|||
|
||||
2. Definitions.
|
||||
|
||||
2.1. Affiliate. <EFBFBD>Affiliate<EFBFBD> means an entity that directly or indirectly
|
||||
2.1. Affiliate. "Affiliate" means an entity that directly or indirectly
|
||||
Controls, is Controlled by, or is under common Control of that party.
|
||||
|
||||
2.2. Control. <EFBFBD>Control<EFBFBD> means direct or indirect control of more than 50% of
|
||||
2.2. Control. "Control" means direct or indirect control of more than 50% of
|
||||
the voting power to elect directors of that corporation, or for any other
|
||||
entity, the power to direct management of such entity.
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ Alliance for Open Media Patent License 1.0
|
|||
2.4. Encoder. "Encoder" means any encoder that produces a bitstream that can
|
||||
be decoded by a Decoder only to the extent it produces such a bitstream.
|
||||
|
||||
2.5. Final Deliverable. <EFBFBD>Final Deliverable<6C> means the final version of a
|
||||
2.5. Final Deliverable. "Final Deliverable" means the final version of a
|
||||
deliverable approved by the Alliance for Open Media as a Final
|
||||
Deliverable.
|
||||
|
||||
|
|
@ -79,9 +79,9 @@ Alliance for Open Media Patent License 1.0
|
|||
Implementation also includes components of an Implementation only to the
|
||||
extent they are used as part of an Implementation.
|
||||
|
||||
2.7. License. <EFBFBD>License<EFBFBD> means this license.
|
||||
2.7. License. "License" means this license.
|
||||
|
||||
2.8. Licensee. <EFBFBD>Licensee<EFBFBD> means any person or entity who exercises patent
|
||||
2.8. Licensee. "Licensee" means any person or entity who exercises patent
|
||||
rights granted under this License.
|
||||
|
||||
2.9. Licensor. "Licensor" means (i) any Licensee that makes, sells, offers
|
||||
|
|
@ -98,11 +98,11 @@ Alliance for Open Media Patent License 1.0
|
|||
as if the Specification was a W3C Recommendation; or (ii) are infringed
|
||||
by the Reference Implementation.
|
||||
|
||||
2.11. Reference Implementation. <EFBFBD>Reference Implementation<6F> means an Encoder
|
||||
2.11. Reference Implementation. "Reference Implementation" means an Encoder
|
||||
and/or Decoder released by the Alliance for Open Media as a Final
|
||||
Deliverable.
|
||||
|
||||
2.12. Specification. <EFBFBD>Specification<EFBFBD> means the specification designated by
|
||||
2.12. Specification. "Specification" means the specification designated by
|
||||
the Alliance for Open Media as a Final Deliverable for which this
|
||||
License was issued.
|
||||
|
||||
|
|
|
|||
9
third_party/aom/README.md
vendored
9
third_party/aom/README.md
vendored
|
|
@ -210,15 +210,18 @@ compiler documentation to determine which, if any, are available.
|
|||
|
||||
### 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:
|
||||
Building the AV1 codec library in Microsoft Visual Studio is supported. Visual
|
||||
Studio 2015 (14.0) or later is required. 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"
|
||||
~~~
|
||||
|
||||
NOTE: The build system targets Windows 7 or later by compiling files with
|
||||
`-D_WIN32_WINNT=0x0601`.
|
||||
|
||||
### Xcode builds
|
||||
|
||||
Building the AV1 codec library in Xcode is supported. The following example
|
||||
|
|
|
|||
16
third_party/aom/aom/aom_decoder.h
vendored
16
third_party/aom/aom/aom_decoder.h
vendored
|
|
@ -55,8 +55,6 @@ extern "C" {
|
|||
#define AOM_CODEC_CAP_PUT_SLICE 0x10000 /**< Will issue put_slice callbacks */
|
||||
#define AOM_CODEC_CAP_PUT_FRAME 0x20000 /**< Will issue put_frame callbacks */
|
||||
#define AOM_CODEC_CAP_POSTPROC 0x40000 /**< Can postprocess decoded frame */
|
||||
/*!\brief Can receive encoded frames one fragment at a time */
|
||||
#define AOM_CODEC_CAP_INPUT_FRAGMENTS 0x100000
|
||||
|
||||
/*! \brief Initialization-time Feature Enabling
|
||||
*
|
||||
|
|
@ -65,15 +63,10 @@ extern "C" {
|
|||
*
|
||||
* The available flags are specified by AOM_CODEC_USE_* defines.
|
||||
*/
|
||||
/*!\brief Can support frame-based multi-threading */
|
||||
#define AOM_CODEC_CAP_FRAME_THREADING 0x200000
|
||||
/*!brief Can support external frame buffers */
|
||||
#define AOM_CODEC_CAP_EXTERNAL_FRAME_BUFFER 0x400000
|
||||
#define AOM_CODEC_CAP_EXTERNAL_FRAME_BUFFER 0x200000
|
||||
|
||||
#define AOM_CODEC_USE_POSTPROC 0x10000 /**< Postprocess decoded frame */
|
||||
/*!\brief The input frame should be passed to the decoder one fragment at a
|
||||
* time */
|
||||
#define AOM_CODEC_USE_INPUT_FRAGMENTS 0x40000
|
||||
|
||||
/*!\brief Stream properties
|
||||
*
|
||||
|
|
@ -191,13 +184,6 @@ aom_codec_err_t aom_codec_get_stream_info(aom_codec_ctx_t *ctx,
|
|||
* generated, as appropriate. Encoded data \ref MUST be passed in DTS (decode
|
||||
* time stamp) order. Frames produced will always be in PTS (presentation
|
||||
* time stamp) order.
|
||||
* If the decoder is configured with AOM_CODEC_USE_INPUT_FRAGMENTS enabled,
|
||||
* data and data_sz can contain a fragment of the encoded frame. Fragment
|
||||
* \#n must contain at least partition \#n, but can also contain subsequent
|
||||
* partitions (\#n+1 - \#n+i), and if so, fragments \#n+1, .., \#n+i must
|
||||
* be empty. When no more data is available, this function should be called
|
||||
* with NULL as data and 0 as data_sz. The memory passed to this function
|
||||
* must be available until the frame has been decoded.
|
||||
*
|
||||
* \param[in] ctx Pointer to this instance's context
|
||||
* \param[in] data Pointer to this block of new coded data. If
|
||||
|
|
|
|||
12
third_party/aom/aom/aom_encoder.h
vendored
12
third_party/aom/aom/aom_encoder.h
vendored
|
|
@ -97,10 +97,14 @@ typedef uint32_t aom_codec_frame_flags_t;
|
|||
/*!\brief frame can be dropped without affecting the stream (no future frame
|
||||
* depends on this one) */
|
||||
#define AOM_FRAME_IS_DROPPABLE 0x2
|
||||
/*!\brief frame should be decoded but will not be shown */
|
||||
#define AOM_FRAME_IS_INVISIBLE 0x4
|
||||
/*!\brief this is a fragment of the encoded frame */
|
||||
#define AOM_FRAME_IS_FRAGMENT 0x8
|
||||
/*!\brief this is an INTRA_ONLY frame */
|
||||
#define AOM_FRAME_IS_INTRAONLY 0x10
|
||||
/*!\brief this is an S-frame */
|
||||
#define AOM_FRAME_IS_SWITCH 0x20
|
||||
/*!\brief this is an error-resilient frame */
|
||||
#define AOM_FRAME_IS_ERROR_RESILIENT 0x40
|
||||
/*!\brief this is a key-frame dependent recovery-point frame */
|
||||
#define AOM_FRAME_IS_DELAYED_RANDOM_ACCESS_POINT 0x80
|
||||
|
||||
/*!\brief Error Resilient flags
|
||||
*
|
||||
|
|
|
|||
6
third_party/aom/aom/aom_frame_buffer.h
vendored
6
third_party/aom/aom/aom_frame_buffer.h
vendored
|
|
@ -53,9 +53,9 @@ typedef struct aom_codec_frame_buffer {
|
|||
* data. The callback is triggered when the decoder needs a frame buffer to
|
||||
* decode a compressed image into. This function may be called more than once
|
||||
* for every call to aom_codec_decode. The application may set fb->priv to
|
||||
* some data which will be passed back in the ximage and the release function
|
||||
* call. |fb| is guaranteed to not be NULL. On success the callback must
|
||||
* return 0. Any failure the callback must return a value less than 0.
|
||||
* some data which will be passed back in the aom_image_t and the release
|
||||
* function call. |fb| is guaranteed to not be NULL. On success the callback
|
||||
* must return 0. Any failure the callback must return a value less than 0.
|
||||
*
|
||||
* \param[in] priv Callback's private data
|
||||
* \param[in] new_size Size in bytes needed by the buffer
|
||||
|
|
|
|||
15
third_party/aom/aom/aom_image.h
vendored
15
third_party/aom/aom/aom_image.h
vendored
|
|
@ -30,11 +30,11 @@ extern "C" {
|
|||
* types, removing or reassigning enums, adding/removing/rearranging
|
||||
* fields to structures
|
||||
*/
|
||||
#define AOM_IMAGE_ABI_VERSION (4) /**<\hideinitializer*/
|
||||
#define AOM_IMAGE_ABI_VERSION (5) /**<\hideinitializer*/
|
||||
|
||||
#define AOM_IMG_FMT_PLANAR 0x100 /**< Image is a planar format. */
|
||||
#define AOM_IMG_FMT_UV_FLIP 0x200 /**< V plane precedes U in memory. */
|
||||
#define AOM_IMG_FMT_HAS_ALPHA 0x400 /**< Image has an alpha channel. */
|
||||
#define AOM_IMG_FMT_PLANAR 0x100 /**< Image is a planar format. */
|
||||
#define AOM_IMG_FMT_UV_FLIP 0x200 /**< V plane precedes U in memory. */
|
||||
/** 0x400 used to signal alpha channel, skipping for backwards compatibility. */
|
||||
#define AOM_IMG_FMT_HIGHBITDEPTH 0x800 /**< Image uses 16bit framebuffer. */
|
||||
|
||||
/*!\brief List of supported image formats */
|
||||
|
|
@ -48,8 +48,8 @@ typedef enum aom_img_fmt {
|
|||
AOM_IMG_FMT_AOMI420 = AOM_IMG_FMT_PLANAR | 4,
|
||||
AOM_IMG_FMT_I422 = AOM_IMG_FMT_PLANAR | 5,
|
||||
AOM_IMG_FMT_I444 = AOM_IMG_FMT_PLANAR | 6,
|
||||
AOM_IMG_FMT_444A = AOM_IMG_FMT_PLANAR | AOM_IMG_FMT_HAS_ALPHA | 6,
|
||||
AOM_IMG_FMT_I42016 = AOM_IMG_FMT_I420 | AOM_IMG_FMT_HIGHBITDEPTH,
|
||||
AOM_IMG_FMT_YV1216 = AOM_IMG_FMT_YV12 | AOM_IMG_FMT_HIGHBITDEPTH,
|
||||
AOM_IMG_FMT_I42216 = AOM_IMG_FMT_I422 | AOM_IMG_FMT_HIGHBITDEPTH,
|
||||
AOM_IMG_FMT_I44416 = AOM_IMG_FMT_I444 | AOM_IMG_FMT_HIGHBITDEPTH,
|
||||
} aom_img_fmt_t; /**< alias for enum aom_img_fmt */
|
||||
|
|
@ -169,9 +169,8 @@ typedef struct aom_image {
|
|||
#define AOM_PLANE_Y 0 /**< Y (Luminance) plane */
|
||||
#define AOM_PLANE_U 1 /**< U (Chroma) plane */
|
||||
#define AOM_PLANE_V 2 /**< V (Chroma) plane */
|
||||
#define AOM_PLANE_ALPHA 3 /**< A (Transparency) plane */
|
||||
unsigned char *planes[4]; /**< pointer to the top left pixel for each plane */
|
||||
int stride[4]; /**< stride between rows for each plane */
|
||||
unsigned char *planes[3]; /**< pointer to the top left pixel for each plane */
|
||||
int stride[3]; /**< stride between rows for each plane */
|
||||
size_t sz; /**< data size */
|
||||
|
||||
int bps; /**< bits per sample (for packed formats) */
|
||||
|
|
|
|||
319
third_party/aom/aom/aomcx.h
vendored
319
third_party/aom/aom/aomcx.h
vendored
|
|
@ -300,9 +300,6 @@ enum aome_enc_control_id {
|
|||
* 2 = 4 tile columns
|
||||
* .....
|
||||
* n = 2**n tile columns
|
||||
* The requested tile columns will be capped by encoder based on image size
|
||||
* limitation (The minimum width of a tile column is 256 pixel, the maximum
|
||||
* is 4096).
|
||||
*
|
||||
* By default, the value is 0, i.e. one single column tile for entire image.
|
||||
*/
|
||||
|
|
@ -324,6 +321,13 @@ enum aome_enc_control_id {
|
|||
*/
|
||||
AV1E_SET_TILE_ROWS,
|
||||
|
||||
/*!\brief Codec control function to enable RDO modulated by frame temporal
|
||||
* dependency.
|
||||
*
|
||||
* By default, this feature is off.
|
||||
*/
|
||||
AV1E_SET_ENABLE_TPL_MODEL,
|
||||
|
||||
/*!\brief Codec control function to enable frame parallel decoding feature.
|
||||
*
|
||||
* AV1 has a bitstream feature to reduce decoding dependency between frames
|
||||
|
|
@ -557,6 +561,16 @@ enum aome_enc_control_id {
|
|||
*/
|
||||
AV1E_SET_ENABLE_RESTORATION,
|
||||
|
||||
/*!\brief Codec control function to predict with OBMC mode.
|
||||
*
|
||||
* 0 = do not allow OBMC mode
|
||||
* 1 = allow OBMC mode
|
||||
*
|
||||
* By default, the encoder allows OBMC prediction mode.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_OBMC,
|
||||
|
||||
/*!\brief Codec control function to encode without trellis quantization.
|
||||
*
|
||||
* 0 = apply trellis quantization
|
||||
|
|
@ -684,18 +698,6 @@ enum aome_enc_control_id {
|
|||
*/
|
||||
AV1E_SET_MTU,
|
||||
|
||||
/*!\brief Codec control function to set dependent_horz_tiles.
|
||||
*
|
||||
* In encoding and decoding, AV1 allows enabling dependent horizontal tile
|
||||
* The parameter for this control describes the value of this flag,
|
||||
* which has a valid range [0, 1]:
|
||||
* 0 = disable dependent horizontal tile
|
||||
* 1 = enable dependent horizontal tile,
|
||||
*
|
||||
* By default, the value is 0, i.e. disable dependent horizontal tile.
|
||||
*/
|
||||
AV1E_SET_TILE_DEPENDENT_ROWS,
|
||||
|
||||
/*!\brief Codec control function to set the number of symbols in an ANS data
|
||||
* window.
|
||||
*
|
||||
|
|
@ -708,13 +710,22 @@ enum aome_enc_control_id {
|
|||
*/
|
||||
AV1E_SET_ANS_WINDOW_SIZE_LOG2,
|
||||
|
||||
/*!\brief Codec control function to turn on / off dual filter
|
||||
* enabling/disabling.
|
||||
/*!\brief Codec control function to enable/disable rectangular partitions.
|
||||
*
|
||||
* This will enable or disable dual filter. The default value is 1
|
||||
* This will enable or disable usage of rectangular partitions. The default
|
||||
* value is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_DF,
|
||||
AV1E_SET_ENABLE_RECT_PARTITIONS,
|
||||
|
||||
/*!\brief Codec control function to turn on / off intra edge filter
|
||||
* at sequence level.
|
||||
*
|
||||
* This will enable or disable usage of intra-edge filtering. The default
|
||||
* value is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_INTRA_EDGE_FILTER,
|
||||
|
||||
/*!\brief Codec control function to turn on / off frame order hint for a
|
||||
* few tools:
|
||||
|
|
@ -728,14 +739,23 @@ enum aome_enc_control_id {
|
|||
*/
|
||||
AV1E_SET_ENABLE_ORDER_HINT,
|
||||
|
||||
/*!\brief Codec control function to turn on / off joint compound mode
|
||||
* at sequence level.
|
||||
/*!\brief Codec control function to turn on / off 64-length transforms.
|
||||
*
|
||||
* This will enable or disable joint compound mode. The default value is 1.
|
||||
* If AV1E_SET_ENABLE_ORDER_HINT is 0, then this flag is forced to 0.
|
||||
* This will enable or disable usage of length 64 transforms in any
|
||||
* direction. The default value is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_JNT_COMP,
|
||||
AV1E_SET_ENABLE_TX64,
|
||||
|
||||
/*!\brief Codec control function to turn on / off dist-wtd compound mode
|
||||
* at sequence level.
|
||||
*
|
||||
* This will enable or disable distance-weighted compound mode. The default
|
||||
* value is 1. If AV1E_SET_ENABLE_ORDER_HINT is 0, then this flag is forced
|
||||
* to 0.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_DIST_WTD_COMP,
|
||||
|
||||
/*!\brief Codec control function to turn on / off ref frame mvs (mfmv) usage
|
||||
* at sequence level.
|
||||
|
|
@ -755,6 +775,77 @@ enum aome_enc_control_id {
|
|||
*/
|
||||
AV1E_SET_ALLOW_REF_FRAME_MVS,
|
||||
|
||||
/*!\brief Codec control function to turn on / off dual filter usage
|
||||
* for a sequence.
|
||||
*
|
||||
* This will enable or disable use of dual interpolation filter.
|
||||
* The default value is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_DUAL_FILTER,
|
||||
|
||||
/*!\brief Codec control function to turn on / off masked compound usage
|
||||
* for a sequence.
|
||||
*
|
||||
* This will enable or disable usage of wedge and diff-wtd compound
|
||||
* modes. The default value is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_MASKED_COMP,
|
||||
|
||||
/*!\brief Codec control function to turn on / off interintra compound
|
||||
* for a sequence.
|
||||
*
|
||||
* This will enable or disable usage of inter-intra compound modes.
|
||||
* The default value is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_INTERINTRA_COMP,
|
||||
|
||||
/*!\brief Codec control function to turn on / off smooth inter-intra
|
||||
* mode for a sequence.
|
||||
*
|
||||
* This will enable or disable usage of smooth inter-intra mode.
|
||||
* The default value is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_SMOOTH_INTERINTRA,
|
||||
|
||||
/*!\brief Codec control function to turn on / off difference weighted
|
||||
* compound.
|
||||
*
|
||||
* This will enable or disable usage of difference weighted compound.
|
||||
* The default value is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_DIFF_WTD_COMP,
|
||||
|
||||
/*!\brief Codec control function to turn on / off interinter wedge
|
||||
* compound.
|
||||
*
|
||||
* This will enable or disable usage of interinter wedge compound.
|
||||
* The default value is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_INTERINTER_WEDGE,
|
||||
|
||||
/*!\brief Codec control function to turn on / off interintra wedge
|
||||
* compound.
|
||||
*
|
||||
* This will enable or disable usage of interintra wedge compound.
|
||||
* The default value is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_INTERINTRA_WEDGE,
|
||||
|
||||
/*!\brief Codec control function to turn on / off global motion usage
|
||||
* for a sequence.
|
||||
*
|
||||
* This will enable or disable usage of global motion. The default value is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_GLOBAL_MOTION,
|
||||
|
||||
/*!\brief Codec control function to turn on / off warped motion usage
|
||||
* at sequence level.
|
||||
*
|
||||
|
|
@ -772,6 +863,39 @@ enum aome_enc_control_id {
|
|||
*/
|
||||
AV1E_SET_ALLOW_WARPED_MOTION,
|
||||
|
||||
/*!\brief Codec control function to turn on / off filter intra usage at
|
||||
* sequence level.
|
||||
*
|
||||
* This will enable or disable usage of filter intra. The default value is 1.
|
||||
* If AV1E_SET_ENABLE_FILTER_INTRA is 0, then this flag is forced to 0.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_FILTER_INTRA,
|
||||
|
||||
/*!\brief Codec control function to turn on / off smooth intra modes usage.
|
||||
*
|
||||
* This will enable or disable usage of smooth, smooth_h and smooth_v intra
|
||||
* modes. The default value is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_SMOOTH_INTRA,
|
||||
|
||||
/*!\brief Codec control function to turn on / off Paeth intra mode usage.
|
||||
*
|
||||
* This will enable or disable usage of Paeth intra mode. The default value
|
||||
* is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_PAETH_INTRA,
|
||||
|
||||
/*!\brief Codec control function to turn on / off CFL uv intra mode usage.
|
||||
*
|
||||
* This will enable or disable usage of chroma-from-luma intra mode. The
|
||||
* default value is 1.
|
||||
*
|
||||
*/
|
||||
AV1E_SET_ENABLE_CFL_INTRA,
|
||||
|
||||
/*!\brief Codec control function to turn on / off frame superresolution.
|
||||
*
|
||||
* This will enable or disable frame superresolution. The default value is 1
|
||||
|
|
@ -779,34 +903,14 @@ enum aome_enc_control_id {
|
|||
*/
|
||||
AV1E_SET_ENABLE_SUPERRES,
|
||||
|
||||
/*!\brief Codec control function to set loop_filter_across_tiles_v_enabled
|
||||
* and loop_filter_across_tiles_h_enabled.
|
||||
* In encoding and decoding, AV1 allows disabling loop filter across tile
|
||||
* boundary The parameter for this control describes the value of this flag,
|
||||
* which has a valid range [0, 1]:
|
||||
* 0 = disable loop filter across tile boundary
|
||||
* 1 = enable loop filter across tile boundary
|
||||
*
|
||||
* By default, the value is 1, i.e. enable loop filter across tile boundary.
|
||||
*
|
||||
* Experiment: LOOPFILTERING_ACROSS_TILES_EXT
|
||||
*/
|
||||
AV1E_SET_TILE_LOOPFILTER_V,
|
||||
AV1E_SET_TILE_LOOPFILTER_H,
|
||||
/*!\brief Codec control function to turn on/off palette mode */
|
||||
AV1E_SET_ENABLE_PALETTE,
|
||||
|
||||
/*!\brief Codec control function to set loop_filter_across_tiles_enabled.
|
||||
*
|
||||
* In encoding and decoding, AV1 allows disabling loop filter across tile
|
||||
* boundary The parameter for this control describes the value of this flag,
|
||||
* which has a valid range [0, 1]:
|
||||
* 0 = disable loop filter across tile boundary
|
||||
* 1 = enable loop filter across tile boundary
|
||||
*
|
||||
* By default, the value is 1, i.e. enable loop filter across tile boundary.
|
||||
*
|
||||
* Experiment: LOOPFILTERING_ACROSS_TILES
|
||||
*/
|
||||
AV1E_SET_TILE_LOOPFILTER,
|
||||
/*!\brief Codec control function to turn on/off intra block copy mode */
|
||||
AV1E_SET_ENABLE_INTRABC,
|
||||
|
||||
/*!\brief Codec control function to turn on/off intra angle delta */
|
||||
AV1E_SET_ENABLE_ANGLE_DELTA,
|
||||
|
||||
/*!\brief Codec control function to set the delta q mode
|
||||
*
|
||||
|
|
@ -865,6 +969,26 @@ enum aome_enc_control_id {
|
|||
|
||||
/*!\brief Sets the chroma subsampling y value */
|
||||
AV1E_SET_CHROMA_SUBSAMPLING_Y,
|
||||
|
||||
/*!\brief Control to use a reduced tx type set */
|
||||
AV1E_SET_REDUCED_TX_TYPE_SET,
|
||||
|
||||
/*!\brief Control to use dct only for intra modes */
|
||||
AV1E_SET_INTRA_DCT_ONLY,
|
||||
|
||||
/*!\brief Control to use dct only for inter modes */
|
||||
AV1E_SET_INTER_DCT_ONLY,
|
||||
|
||||
/*!\brief Control to use adaptive quantize_b */
|
||||
AV1E_SET_QUANT_B_ADAPT,
|
||||
|
||||
/*!\brief Control to select maximum height for the GF group pyramid structure
|
||||
* (valid values: 1 - 4) */
|
||||
AV1E_SET_GF_MAX_PYRAMID_HEIGHT,
|
||||
|
||||
/*!\brief Control to select maximum reference frames allowed per frame
|
||||
* (valid values: 3 - 7) */
|
||||
AV1E_SET_MAX_REFERENCE_FRAMES,
|
||||
};
|
||||
|
||||
/*!\brief aom 1-D scaling mode
|
||||
|
|
@ -1006,15 +1130,8 @@ AOM_CTRL_USE_TYPE(AV1E_SET_TILE_COLUMNS, int)
|
|||
AOM_CTRL_USE_TYPE(AV1E_SET_TILE_ROWS, int)
|
||||
#define AOM_CTRL_AV1E_SET_TILE_ROWS
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_TILE_DEPENDENT_ROWS, int)
|
||||
#define AOM_CTRL_AV1E_SET_TILE_DEPENDENT_ROWS
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_TILE_LOOPFILTER_V, int)
|
||||
#define AOM_CTRL_AV1E_SET_TILE_LOOPFILTER_V
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_TILE_LOOPFILTER_H, int)
|
||||
#define AOM_CTRL_AV1E_SET_TILE_LOOPFILTER_H
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_TILE_LOOPFILTER, int)
|
||||
#define AOM_CTRL_AV1E_SET_TILE_LOOPFILTER
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_TPL_MODEL, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_TPL_MODEL
|
||||
|
||||
AOM_CTRL_USE_TYPE(AOME_GET_LAST_QUANTIZER, int *)
|
||||
#define AOM_CTRL_AOME_GET_LAST_QUANTIZER
|
||||
|
|
@ -1041,6 +1158,9 @@ AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_CDEF, unsigned int)
|
|||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_RESTORATION, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_RESTORATION
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_OBMC, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_OBMC
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_DISABLE_TRELLIS_QUANT, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_DISABLE_TRELLIS_QUANT
|
||||
|
||||
|
|
@ -1070,17 +1190,23 @@ AOM_CTRL_USE_TYPE(AV1E_SET_NUM_TG, unsigned int)
|
|||
AOM_CTRL_USE_TYPE(AV1E_SET_MTU, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_MTU
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_TIMING_INFO_TYPE, aom_timing_info_type_t)
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_TIMING_INFO_TYPE, int) /* aom_timing_info_type_t */
|
||||
#define AOM_CTRL_AV1E_SET_TIMING_INFO_TYPE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DF, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_DF
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_RECT_PARTITIONS, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_RECT_PARTITIONS
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTRA_EDGE_FILTER, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_INTRA_EDGE_FILTER
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_ORDER_HINT, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_ORDER_HINT
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_JNT_COMP, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_JNT_COMP
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_TX64, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_TX64
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DIST_WTD_COMP, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_DIST_WTD_COMP
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_REF_FRAME_MVS, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_REF_FRAME_MVS
|
||||
|
|
@ -1088,15 +1214,60 @@ AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_REF_FRAME_MVS, unsigned int)
|
|||
AOM_CTRL_USE_TYPE(AV1E_SET_ALLOW_REF_FRAME_MVS, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ALLOW_REF_FRAME_MVS
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DUAL_FILTER, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_DUAL_FILTER
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_MASKED_COMP, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_MASKED_COMP
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTERINTRA_COMP, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_INTERINTRA_COMP
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_SMOOTH_INTERINTRA, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_SMOOTH_INTERINTRA
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DIFF_WTD_COMP, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_DIFF_WTD_COMP
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTERINTER_WEDGE, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_INTERINTER_WEDGE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTERINTRA_WEDGE, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_INTERINTRA_WEDGE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_GLOBAL_MOTION, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_GLOBAL_MOTION
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_WARPED_MOTION, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_WARPED_MOTION
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ALLOW_WARPED_MOTION, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ALLOW_WARPED_MOTION
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_FILTER_INTRA, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_FILTER_INTRA
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_SMOOTH_INTRA, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_SMOOTH_INTRA
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_PAETH_INTRA, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_PAETH_INTRA
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_CFL_INTRA, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_CFL_INTRA
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_SUPERRES, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_SUPERRES
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_PALETTE, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_PALETTE
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTRABC, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_INTRABC
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_ANGLE_DELTA, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_ENABLE_ANGLE_DELTA
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_FRAME_PARALLEL_DECODING, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_FRAME_PARALLEL_DECODING
|
||||
|
||||
|
|
@ -1189,6 +1360,24 @@ AOM_CTRL_USE_TYPE(AV1E_SET_CHROMA_SUBSAMPLING_X, unsigned int)
|
|||
AOM_CTRL_USE_TYPE(AV1E_SET_CHROMA_SUBSAMPLING_Y, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_CHROMA_SUBSAMPLING_Y
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_REDUCED_TX_TYPE_SET, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_REDUCED_TX_TYPE_SET
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_INTRA_DCT_ONLY, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_INTRA_DCT_ONLY
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_INTER_DCT_ONLY, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_INTER_DCT_ONLY
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_QUANT_B_ADAPT, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_QUANT_B_ADAPT
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_GF_MAX_PYRAMID_HEIGHT, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_GF_MAX_PYRAMID_HEIGHT
|
||||
|
||||
AOM_CTRL_USE_TYPE(AV1E_SET_MAX_REFERENCE_FRAMES, unsigned int)
|
||||
#define AOM_CTRL_AV1E_SET_MAX_REFERENCE_FRAMES
|
||||
|
||||
/*!\endcond */
|
||||
/*! @} - end defgroup aom_encoder */
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
21
third_party/aom/aom/aomdx.h
vendored
21
third_party/aom/aom/aomdx.h
vendored
|
|
@ -45,6 +45,7 @@ typedef struct Accounting Accounting;
|
|||
/** Callback that inspects decoder frame data.
|
||||
*/
|
||||
typedef void (*aom_inspect_cb)(void *decoder, void *ctx);
|
||||
|
||||
#endif
|
||||
|
||||
/*!\brief Structure to hold inspection callback and context.
|
||||
|
|
@ -60,6 +61,21 @@ typedef struct aom_inspect_init {
|
|||
void *inspect_ctx;
|
||||
} aom_inspect_init;
|
||||
|
||||
/*!\brief Structure to collect a buffer index when inspecting.
|
||||
*
|
||||
* Defines a structure to hold the buffer and return an index
|
||||
* when calling decode from inspect. This enables us to decode
|
||||
* non showable sub frames.
|
||||
*/
|
||||
typedef struct {
|
||||
/*! Pointer for new position in compressed buffer after decoding 1 OBU. */
|
||||
const unsigned char *buf;
|
||||
/*! Index into reference buffer array to see result of decoding 1 OBU. */
|
||||
int idx;
|
||||
/*! Is a show existing frame. */
|
||||
int show_existing;
|
||||
} Av1DecodeReturn;
|
||||
|
||||
/*!\brief Structure to hold a tile's start address and size in the bitstream.
|
||||
*
|
||||
* Defines a structure to hold a tile's start address and size in the bitstream.
|
||||
|
|
@ -125,6 +141,9 @@ enum aom_dec_control_id {
|
|||
/** control function to get the size of the tile. */
|
||||
AV1D_GET_TILE_SIZE,
|
||||
|
||||
/** control function to get the tile count in a tile list. */
|
||||
AV1D_GET_TILE_COUNT,
|
||||
|
||||
/** control function to set the byte alignment of the planes in the reference
|
||||
* buffers. Valid values are power of 2, from 32 to 1024. A value of 0 sets
|
||||
* legacy alignment. I.e. Y plane is aligned to 32 bytes, U plane directly
|
||||
|
|
@ -260,6 +279,8 @@ AOM_CTRL_USE_TYPE(AV1D_GET_IMG_FORMAT, aom_img_fmt_t *)
|
|||
#define AOM_CTRL_AV1D_GET_IMG_FORMAT
|
||||
AOM_CTRL_USE_TYPE(AV1D_GET_TILE_SIZE, unsigned int *)
|
||||
#define AOM_CTRL_AV1D_GET_TILE_SIZE
|
||||
AOM_CTRL_USE_TYPE(AV1D_GET_TILE_COUNT, unsigned int *)
|
||||
#define AOM_CTRL_AV1D_GET_TILE_COUNT
|
||||
AOM_CTRL_USE_TYPE(AV1D_GET_FRAME_SIZE, int *)
|
||||
#define AOM_CTRL_AV1D_GET_FRAME_SIZE
|
||||
AOM_CTRL_USE_TYPE(AV1_INVERT_TILE_DECODE_ORDER, int)
|
||||
|
|
|
|||
1
third_party/aom/aom/exports_com
vendored
1
third_party/aom/aom/exports_com
vendored
|
|
@ -9,6 +9,7 @@ text aom_codec_iface_name
|
|||
text aom_codec_version
|
||||
text aom_codec_version_extra_str
|
||||
text aom_codec_version_str
|
||||
text aom_free
|
||||
text aom_img_alloc
|
||||
text aom_img_alloc_with_border
|
||||
text aom_img_flip
|
||||
|
|
|
|||
3
third_party/aom/aom/src/aom_decoder.c
vendored
3
third_party/aom/aom/src/aom_decoder.c
vendored
|
|
@ -37,9 +37,6 @@ aom_codec_err_t aom_codec_dec_init_ver(aom_codec_ctx_t *ctx,
|
|||
else if ((flags & AOM_CODEC_USE_POSTPROC) &&
|
||||
!(iface->caps & AOM_CODEC_CAP_POSTPROC))
|
||||
res = AOM_CODEC_INCAPABLE;
|
||||
else if ((flags & AOM_CODEC_USE_INPUT_FRAGMENTS) &&
|
||||
!(iface->caps & AOM_CODEC_CAP_INPUT_FRAGMENTS))
|
||||
res = AOM_CODEC_INCAPABLE;
|
||||
else if (!(iface->caps & AOM_CODEC_CAP_DECODER))
|
||||
res = AOM_CODEC_INCAPABLE;
|
||||
else {
|
||||
|
|
|
|||
16
third_party/aom/aom/src/aom_image.c
vendored
16
third_party/aom/aom/src/aom_image.c
vendored
|
|
@ -59,6 +59,7 @@ static aom_image_t *img_alloc_helper(
|
|||
case AOM_IMG_FMT_AOMYV12: bps = 12; break;
|
||||
case AOM_IMG_FMT_I422:
|
||||
case AOM_IMG_FMT_I444: bps = 24; break;
|
||||
case AOM_IMG_FMT_YV1216:
|
||||
case AOM_IMG_FMT_I42016: bps = 24; break;
|
||||
case AOM_IMG_FMT_I42216:
|
||||
case AOM_IMG_FMT_I44416: bps = 48; break;
|
||||
|
|
@ -73,6 +74,7 @@ static aom_image_t *img_alloc_helper(
|
|||
case AOM_IMG_FMT_AOMYV12:
|
||||
case AOM_IMG_FMT_I422:
|
||||
case AOM_IMG_FMT_I42016:
|
||||
case AOM_IMG_FMT_YV1216:
|
||||
case AOM_IMG_FMT_I42216: xcs = 1; break;
|
||||
default: xcs = 0; break;
|
||||
}
|
||||
|
|
@ -82,6 +84,7 @@ static aom_image_t *img_alloc_helper(
|
|||
case AOM_IMG_FMT_YV12:
|
||||
case AOM_IMG_FMT_AOMI420:
|
||||
case AOM_IMG_FMT_AOMYV12:
|
||||
case AOM_IMG_FMT_YV1216:
|
||||
case AOM_IMG_FMT_I42016: ycs = 1; break;
|
||||
default: ycs = 0; break;
|
||||
}
|
||||
|
|
@ -117,6 +120,7 @@ static aom_image_t *img_alloc_helper(
|
|||
|
||||
img->img_data = (uint8_t *)aom_memalign(buf_align, (size_t)alloc_size);
|
||||
img->img_data_owner = 1;
|
||||
img->sz = (size_t)alloc_size;
|
||||
}
|
||||
|
||||
if (!img->img_data) goto fail;
|
||||
|
|
@ -131,7 +135,7 @@ static aom_image_t *img_alloc_helper(
|
|||
img->bps = bps;
|
||||
|
||||
/* Calculate strides */
|
||||
img->stride[AOM_PLANE_Y] = img->stride[AOM_PLANE_ALPHA] = stride_in_bytes;
|
||||
img->stride[AOM_PLANE_Y] = stride_in_bytes;
|
||||
img->stride[AOM_PLANE_U] = img->stride[AOM_PLANE_V] = stride_in_bytes >> xcs;
|
||||
|
||||
/* Default viewport to entire image */
|
||||
|
|
@ -185,12 +189,6 @@ int aom_img_set_rect(aom_image_t *img, unsigned int x, unsigned int y,
|
|||
(img->fmt & AOM_IMG_FMT_HIGHBITDEPTH) ? 2 : 1;
|
||||
data = img->img_data;
|
||||
|
||||
if (img->fmt & AOM_IMG_FMT_HAS_ALPHA) {
|
||||
img->planes[AOM_PLANE_ALPHA] =
|
||||
data + x * bytes_per_sample + y * img->stride[AOM_PLANE_ALPHA];
|
||||
data += (img->h + 2 * border) * img->stride[AOM_PLANE_ALPHA];
|
||||
}
|
||||
|
||||
img->planes[AOM_PLANE_Y] =
|
||||
data + x * bytes_per_sample + y * img->stride[AOM_PLANE_Y];
|
||||
data += (img->h + 2 * border) * img->stride[AOM_PLANE_Y];
|
||||
|
|
@ -236,10 +234,6 @@ void aom_img_flip(aom_image_t *img) {
|
|||
img->planes[AOM_PLANE_V] += (signed)((img->d_h >> img->y_chroma_shift) - 1) *
|
||||
img->stride[AOM_PLANE_V];
|
||||
img->stride[AOM_PLANE_V] = -img->stride[AOM_PLANE_V];
|
||||
|
||||
img->planes[AOM_PLANE_ALPHA] +=
|
||||
(signed)(img->d_h - 1) * img->stride[AOM_PLANE_ALPHA];
|
||||
img->stride[AOM_PLANE_ALPHA] = -img->stride[AOM_PLANE_ALPHA];
|
||||
}
|
||||
|
||||
void aom_img_free(aom_image_t *img) {
|
||||
|
|
|
|||
2
third_party/aom/aom_dsp/add_noise.c
vendored
2
third_party/aom/aom_dsp/add_noise.c
vendored
|
|
@ -40,7 +40,7 @@ void aom_plane_add_noise_c(uint8_t *start, char *noise, char blackclamp[16],
|
|||
}
|
||||
|
||||
static double gaussian(double sigma, double mu, double x) {
|
||||
return 1 / (sigma * sqrt(2.0 * 3.14159265)) *
|
||||
return 1 / (sigma * sqrt(2.0 * PI)) *
|
||||
(exp(-(x - mu) * (x - mu) / (2 * sigma * sigma)));
|
||||
}
|
||||
|
||||
|
|
|
|||
30
third_party/aom/aom_dsp/aom_dsp.cmake
vendored
30
third_party/aom/aom_dsp/aom_dsp.cmake
vendored
|
|
@ -35,6 +35,7 @@ list(APPEND AOM_DSP_COMMON_SOURCES
|
|||
"${AOM_ROOT}/aom_dsp/intrapred_common.h"
|
||||
"${AOM_ROOT}/aom_dsp/loopfilter.c"
|
||||
"${AOM_ROOT}/aom_dsp/prob.h"
|
||||
"${AOM_ROOT}/aom_dsp/recenter.h"
|
||||
"${AOM_ROOT}/aom_dsp/simd/v128_intrinsics.h"
|
||||
"${AOM_ROOT}/aom_dsp/simd/v128_intrinsics_c.h"
|
||||
"${AOM_ROOT}/aom_dsp/simd/v256_intrinsics.h"
|
||||
|
|
@ -43,7 +44,8 @@ list(APPEND AOM_DSP_COMMON_SOURCES
|
|||
"${AOM_ROOT}/aom_dsp/simd/v64_intrinsics_c.h"
|
||||
"${AOM_ROOT}/aom_dsp/subtract.c"
|
||||
"${AOM_ROOT}/aom_dsp/txfm_common.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/convolve_common_intrin.h")
|
||||
"${AOM_ROOT}/aom_dsp/x86/convolve_common_intrin.h"
|
||||
"${AOM_ROOT}/aom_dsp/avg.c")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_ASM_SSE2
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_convolve_copy_sse2.asm"
|
||||
|
|
@ -51,15 +53,17 @@ list(APPEND AOM_DSP_COMMON_ASM_SSE2
|
|||
"${AOM_ROOT}/aom_dsp/x86/aom_high_subpixel_bilinear_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_bilinear_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_intrapred_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/intrapred_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_intrapred_asm_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/intrapred_asm_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/inv_wht_sse2.asm")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_INTRIN_SSE2
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_asm_stubs.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/convolve.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/convolve_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/fft_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_convolve_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_intrapred_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/intrapred_sse2.c"
|
||||
|
|
@ -68,7 +72,9 @@ list(APPEND AOM_DSP_COMMON_INTRIN_SSE2
|
|||
"${AOM_ROOT}/aom_dsp/x86/mem_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/transpose_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/txfm_common_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/sum_squares_sse2.h")
|
||||
"${AOM_ROOT}/aom_dsp/x86/sum_squares_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/avg_intrin_sse2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/bitdepth_conversion_sse2.h")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_ASM_SSSE3
|
||||
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_ssse3.asm"
|
||||
|
|
@ -94,7 +100,9 @@ list(APPEND AOM_DSP_COMMON_INTRIN_AVX2
|
|||
"${AOM_ROOT}/aom_dsp/x86/highbd_convolve_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/intrapred_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/blend_a64_mask_avx2.c")
|
||||
"${AOM_ROOT}/aom_dsp/x86/blend_a64_mask_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/avg_intrin_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/bitdepth_conversion_avx2.h")
|
||||
|
||||
list(APPEND AOM_DSP_COMMON_INTRIN_NEON
|
||||
"${AOM_ROOT}/aom_dsp/arm/fwd_txfm_neon.c"
|
||||
|
|
@ -175,6 +183,9 @@ if(CONFIG_AV1_ENCODER)
|
|||
"${AOM_ROOT}/aom_dsp/x86/subpel_variance_sse2.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/subtract_sse2.asm")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_ASM_SSE2_X86_64
|
||||
"${AOM_ROOT}/aom_dsp/x86/ssim_sse2_x86_64.asm")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_INTRIN_SSE2
|
||||
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_impl_sse2.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_sse2.c"
|
||||
|
|
@ -189,7 +200,7 @@ if(CONFIG_AV1_ENCODER)
|
|||
|
||||
list(APPEND AOM_DSP_ENCODER_ASM_SSSE3_X86_64
|
||||
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_ssse3_x86_64.asm"
|
||||
"${AOM_ROOT}/aom_dsp/x86/ssim_opt_x86_64.asm")
|
||||
"${AOM_ROOT}/aom_dsp/x86/quantize_ssse3_x86_64.asm")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_INTRIN_AVX2
|
||||
"${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_avx2.c"
|
||||
|
|
@ -207,9 +218,6 @@ if(CONFIG_AV1_ENCODER)
|
|||
"${AOM_ROOT}/aom_dsp/x86/obmc_variance_avx2.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/sum_squares_avx2.c")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_ASM_SSSE3_X86_64
|
||||
"${AOM_ROOT}/aom_dsp/x86/quantize_ssse3_x86_64.asm")
|
||||
|
||||
list(APPEND AOM_DSP_ENCODER_AVX_ASM_X86_64
|
||||
"${AOM_ROOT}/aom_dsp/x86/quantize_avx_x86_64.asm")
|
||||
|
||||
|
|
@ -218,6 +226,7 @@ if(CONFIG_AV1_ENCODER)
|
|||
"${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_ssse3.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/masked_variance_intrin_ssse3.h"
|
||||
"${AOM_ROOT}/aom_dsp/x86/masked_variance_intrin_ssse3.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/quantize_ssse3.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/variance_impl_ssse3.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/jnt_variance_ssse3.c"
|
||||
"${AOM_ROOT}/aom_dsp/x86/jnt_sad_ssse3.c")
|
||||
|
|
@ -278,6 +287,9 @@ function(setup_aom_dsp_targets)
|
|||
"AOM_DSP_COMMON_INTRIN_SSE2" "aom")
|
||||
|
||||
if(CONFIG_AV1_ENCODER)
|
||||
if("${AOM_TARGET_CPU}" STREQUAL "x86_64")
|
||||
list(APPEND AOM_DSP_ENCODER_ASM_SSE2 ${AOM_DSP_ENCODER_ASM_SSE2_X86_64})
|
||||
endif()
|
||||
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")
|
||||
|
|
|
|||
144
third_party/aom/aom_dsp/aom_dsp_rtcd_defs.pl
vendored
144
third_party/aom/aom_dsp/aom_dsp_rtcd_defs.pl
vendored
|
|
@ -362,10 +362,10 @@ add_proto qw/void aom_highbd_convolve_copy/, "const uint8_t *src, ptrdiff_t src_
|
|||
specialize qw/aom_highbd_convolve_copy sse2 avx2/;
|
||||
|
||||
add_proto qw/void aom_highbd_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, int bps";
|
||||
specialize qw/aom_highbd_convolve8_horiz avx2/, "$sse2_x86_64";
|
||||
specialize qw/aom_highbd_convolve8_horiz sse2 avx2/;
|
||||
|
||||
add_proto qw/void aom_highbd_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, int bps";
|
||||
specialize qw/aom_highbd_convolve8_vert avx2/, "$sse2_x86_64";
|
||||
specialize qw/aom_highbd_convolve8_vert sse2 avx2/;
|
||||
|
||||
#
|
||||
# Loopfilter
|
||||
|
|
@ -466,10 +466,6 @@ specialize qw/aom_highbd_lpf_horizontal_4 sse2/;
|
|||
add_proto qw/void aom_highbd_lpf_horizontal_4_dual/, "uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd";
|
||||
specialize qw/aom_highbd_lpf_horizontal_4_dual sse2 avx2/;
|
||||
|
||||
# Helper functions.
|
||||
add_proto qw/void av1_round_shift_array/, "int32_t *arr, int size, int bit";
|
||||
specialize "av1_round_shift_array", qw/sse4_1 neon/;
|
||||
|
||||
#
|
||||
# Encoder functions.
|
||||
#
|
||||
|
|
@ -526,6 +522,7 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
specialize qw/aom_quantize_b_32x32/, "$ssse3_x86_64", "$avx_x86_64";
|
||||
|
||||
add_proto qw/void aom_quantize_b_64x64/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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_quantize_b_64x64 ssse3/;
|
||||
} # CONFIG_AV1_ENCODER
|
||||
|
||||
if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
||||
|
|
@ -544,7 +541,6 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
#
|
||||
add_proto qw/void aom_lowbd_blend_a64_d16_mask/, "uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params";
|
||||
specialize qw/aom_lowbd_blend_a64_d16_mask sse4_1 avx2 neon/;
|
||||
add_proto qw/void aom_highbd_blend_a64_d16_mask/, "uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd";
|
||||
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 w, int h, int subx, int suby";
|
||||
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 w, int h";
|
||||
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 w, int h";
|
||||
|
|
@ -555,9 +551,11 @@ specialize "aom_blend_a64_vmask", qw/sse4_1 neon/;
|
|||
add_proto qw/void aom_highbd_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 w, int h, int subx, int suby, int bd";
|
||||
add_proto qw/void aom_highbd_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 w, int h, int bd";
|
||||
add_proto qw/void aom_highbd_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 w, int h, int bd";
|
||||
add_proto qw/void aom_highbd_blend_a64_d16_mask/, "uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subx, int suby, ConvolveParams *conv_params, const int bd";
|
||||
specialize "aom_highbd_blend_a64_mask", qw/sse4_1/;
|
||||
specialize "aom_highbd_blend_a64_hmask", qw/sse4_1/;
|
||||
specialize "aom_highbd_blend_a64_vmask", qw/sse4_1/;
|
||||
specialize "aom_highbd_blend_a64_d16_mask", qw/sse4_1 avx2/;
|
||||
|
||||
if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
||||
#
|
||||
|
|
@ -595,7 +593,7 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
($w, $h) = @$_;
|
||||
add_proto qw/unsigned int/, "aom_sad${w}x${h}", "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
|
||||
add_proto qw/unsigned int/, "aom_sad${w}x${h}_avg", "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
|
||||
add_proto qw/unsigned int/, "aom_jnt_sad${w}x${h}_avg", "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const JNT_COMP_PARAMS *jcp_param";
|
||||
add_proto qw/unsigned int/, "aom_dist_wtd_sad${w}x${h}_avg", "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param";
|
||||
}
|
||||
|
||||
specialize qw/aom_sad128x128 avx2 sse2/;
|
||||
|
|
@ -646,29 +644,29 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
specialize qw/aom_sad16x64_avg sse2/;
|
||||
specialize qw/aom_sad64x16_avg sse2/;
|
||||
|
||||
specialize qw/aom_jnt_sad128x128_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad128x64_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad64x128_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad64x64_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad64x32_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad32x64_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad32x32_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad32x16_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad16x32_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad16x16_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad16x8_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad8x16_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad8x8_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad8x4_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad4x8_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad4x4_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad128x128_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad128x64_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad64x128_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad64x64_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad64x32_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad32x64_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad32x32_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad32x16_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad16x32_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad16x16_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad16x8_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad8x16_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad8x8_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad8x4_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad4x8_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad4x4_avg ssse3/;
|
||||
|
||||
specialize qw/aom_jnt_sad4x16_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad16x4_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad8x32_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad32x8_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad16x64_avg ssse3/;
|
||||
specialize qw/aom_jnt_sad64x16_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad4x16_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad16x4_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad8x32_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad32x8_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad16x64_avg ssse3/;
|
||||
specialize qw/aom_dist_wtd_sad64x16_avg ssse3/;
|
||||
|
||||
add_proto qw/unsigned int/, "aom_sad4xh", "const uint8_t *a, int a_stride, const uint8_t *b, int b_stride, int width, int height";
|
||||
add_proto qw/unsigned int/, "aom_sad8xh", "const uint8_t *a, int a_stride, const uint8_t *b, int b_stride, int width, int height";
|
||||
|
|
@ -693,7 +691,7 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
specialize "aom_highbd_sad${w}x${h}", qw/sse2/;
|
||||
specialize "aom_highbd_sad${w}x${h}_avg", qw/sse2/;
|
||||
}
|
||||
add_proto qw/unsigned int/, "aom_highbd_jnt_sad${w}x${h}_avg", "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const JNT_COMP_PARAMS* jcp_param";
|
||||
add_proto qw/unsigned int/, "aom_highbd_dist_wtd_sad${w}x${h}_avg", "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS* jcp_param";
|
||||
}
|
||||
specialize qw/aom_highbd_sad128x128 avx2/;
|
||||
specialize qw/aom_highbd_sad128x64 avx2/;
|
||||
|
|
@ -837,6 +835,21 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
specialize qw/aom_highbd_sad16x64x4d sse2/;
|
||||
specialize qw/aom_highbd_sad64x16x4d sse2/;
|
||||
|
||||
#
|
||||
# hamadard transform and satd for implmenting temporal dependency model
|
||||
#
|
||||
add_proto qw/void aom_hadamard_8x8/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff";
|
||||
specialize qw/aom_hadamard_8x8 sse2/;
|
||||
|
||||
add_proto qw/void aom_hadamard_16x16/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff";
|
||||
specialize qw/aom_hadamard_16x16 avx2 sse2/;
|
||||
|
||||
add_proto qw/void aom_hadamard_32x32/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff";
|
||||
specialize qw/aom_hadamard_32x32 avx2 sse2/;
|
||||
|
||||
add_proto qw/int aom_satd/, "const tran_low_t *coeff, int length";
|
||||
specialize qw/aom_satd avx2 sse2/;
|
||||
|
||||
#
|
||||
# Structured Similarity (SSIM)
|
||||
#
|
||||
|
|
@ -903,11 +916,11 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
int ref_stride, int subpel_search";
|
||||
specialize qw/aom_comp_avg_upsampled_pred sse2/;
|
||||
|
||||
add_proto qw/void aom_jnt_comp_avg_upsampled_pred/, "MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col,
|
||||
add_proto qw/void aom_dist_wtd_comp_avg_upsampled_pred/, "MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col,
|
||||
const MV *const mv, uint8_t *comp_pred, const uint8_t *pred, int width,
|
||||
int height, int subpel_x_q3, int subpel_y_q3, const uint8_t *ref,
|
||||
int ref_stride, const JNT_COMP_PARAMS *jcp_param, int subpel_search";
|
||||
specialize qw/aom_jnt_comp_avg_upsampled_pred ssse3/;
|
||||
int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param, int subpel_search";
|
||||
specialize qw/aom_dist_wtd_comp_avg_upsampled_pred ssse3/;
|
||||
|
||||
add_proto qw/void aom_comp_mask_upsampled_pred/, "MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col,
|
||||
const MV *const mv, uint8_t *comp_pred, const uint8_t *pred, int width,
|
||||
|
|
@ -916,7 +929,6 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
int subpel_search";
|
||||
specialize qw/aom_comp_mask_upsampled_pred sse2/;
|
||||
|
||||
|
||||
add_proto qw/void aom_highbd_upsampled_pred/, "MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col,
|
||||
const MV *const mv, uint8_t *comp_pred8, int width, int height, int subpel_x_q3,
|
||||
int subpel_y_q3, const uint8_t *ref8, int ref_stride, int bd, int subpel_search";
|
||||
|
|
@ -927,11 +939,11 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
int height, int subpel_x_q3, int subpel_y_q3, const uint8_t *ref8, int ref_stride, int bd, int subpel_search";
|
||||
specialize qw/aom_highbd_comp_avg_upsampled_pred sse2/;
|
||||
|
||||
add_proto qw/void aom_highbd_jnt_comp_avg_upsampled_pred/, "MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col,
|
||||
add_proto qw/void aom_highbd_dist_wtd_comp_avg_upsampled_pred/, "MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col,
|
||||
const MV *const mv, uint8_t *comp_pred8, const uint8_t *pred8, int width,
|
||||
int height, int subpel_x_q3, int subpel_y_q3, const uint8_t *ref8,
|
||||
int ref_stride, int bd, const JNT_COMP_PARAMS *jcp_param, int subpel_search";
|
||||
specialize qw/aom_highbd_jnt_comp_avg_upsampled_pred sse2/;
|
||||
int ref_stride, int bd, const DIST_WTD_COMP_PARAMS *jcp_param, int subpel_search";
|
||||
specialize qw/aom_highbd_dist_wtd_comp_avg_upsampled_pred sse2/;
|
||||
|
||||
|
||||
#
|
||||
|
|
@ -957,7 +969,7 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
add_proto qw/unsigned int/, "aom_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
|
||||
add_proto qw/uint32_t/, "aom_sub_pixel_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
|
||||
add_proto qw/uint32_t/, "aom_sub_pixel_avg_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
|
||||
add_proto qw/uint32_t/, "aom_jnt_sub_pixel_avg_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const JNT_COMP_PARAMS *jcp_param";
|
||||
add_proto qw/uint32_t/, "aom_dist_wtd_sub_pixel_avg_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param";
|
||||
}
|
||||
specialize qw/aom_variance128x128 sse2 avx2 /;
|
||||
specialize qw/aom_variance128x64 sse2 avx2 /;
|
||||
|
|
@ -1029,30 +1041,30 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
specialize qw/aom_sub_pixel_avg_variance16x64 sse2 ssse3/;
|
||||
specialize qw/aom_sub_pixel_avg_variance64x16 sse2 ssse3/;
|
||||
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance64x64 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance64x32 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance32x64 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance32x32 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance32x16 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance16x32 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance16x16 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance16x8 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance8x16 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance8x8 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance8x4 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance4x8 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance4x4 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance64x64 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance64x32 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance32x64 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance32x32 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance32x16 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance16x32 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance16x16 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance16x8 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance8x16 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance8x8 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance8x4 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance4x8 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance4x4 ssse3/;
|
||||
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance4x16 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance16x4 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance8x32 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance32x8 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance16x64 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance64x16 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance4x16 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance16x4 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance8x32 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance32x8 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance16x64 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance64x16 ssse3/;
|
||||
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance128x128 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance128x64 ssse3/;
|
||||
specialize qw/aom_jnt_sub_pixel_avg_variance64x128 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance128x128 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance128x64 ssse3/;
|
||||
specialize qw/aom_dist_wtd_sub_pixel_avg_variance64x128 ssse3/;
|
||||
|
||||
|
||||
foreach $bd (8, 10, 12) {
|
||||
|
|
@ -1084,7 +1096,7 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
specialize "aom_highbd_${bd}_sub_pixel_avg_variance${w}x${h}", "sse4_1";
|
||||
}
|
||||
|
||||
add_proto qw/uint32_t/, "aom_highbd_${bd}_jnt_sub_pixel_avg_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const JNT_COMP_PARAMS* jcp_param";
|
||||
add_proto qw/uint32_t/, "aom_highbd_${bd}_dist_wtd_sub_pixel_avg_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS* jcp_param";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1173,8 +1185,8 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
#
|
||||
add_proto qw/void aom_comp_avg_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_jnt_comp_avg_pred/, "uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride, const JNT_COMP_PARAMS *jcp_param";
|
||||
specialize qw/aom_jnt_comp_avg_pred ssse3/;
|
||||
add_proto qw/void aom_dist_wtd_comp_avg_pred/, "uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param";
|
||||
specialize qw/aom_dist_wtd_comp_avg_pred ssse3/;
|
||||
|
||||
add_proto qw/unsigned int aom_highbd_12_variance128x128/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
|
||||
specialize qw/aom_highbd_12_variance128x128 sse2/;
|
||||
|
|
@ -1340,8 +1352,8 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
|
|||
|
||||
add_proto qw/void aom_highbd_comp_avg_pred/, "uint8_t *comp_pred8, const uint8_t *pred8, int width, int height, const uint8_t *ref8, int ref_stride";
|
||||
|
||||
add_proto qw/void aom_highbd_jnt_comp_avg_pred/, "uint8_t *comp_pred8, const uint8_t *pred8, int width, int height, const uint8_t *ref8, int ref_stride, const JNT_COMP_PARAMS *jcp_param";
|
||||
specialize qw/aom_highbd_jnt_comp_avg_pred sse2/;
|
||||
add_proto qw/void aom_highbd_dist_wtd_comp_avg_pred/, "uint8_t *comp_pred8, const uint8_t *pred8, int width, int height, const uint8_t *ref8, int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param";
|
||||
specialize qw/aom_highbd_dist_wtd_comp_avg_pred sse2/;
|
||||
|
||||
#
|
||||
# Subpixel Variance
|
||||
|
|
|
|||
17
third_party/aom/aom_dsp/arm/loopfilter_neon.c
vendored
17
third_party/aom/aom_dsp/arm/loopfilter_neon.c
vendored
|
|
@ -785,16 +785,15 @@ void aom_lpf_vertical_4_neon(uint8_t *src, int stride, const uint8_t *blimit,
|
|||
const uint8_t *limit, const uint8_t *thresh) {
|
||||
uint32x2x2_t p1q0_p0q1, p1q1_p0q0, p1p0_q1q0;
|
||||
uint32x2_t pq_rev;
|
||||
uint8x8_t UNINITIALIZED_IS_SAFE(p1p0), q0q1, p0q0, p1q1;
|
||||
uint8x8_t UNINITIALIZED_IS_SAFE(p1p0), UNINITIALIZED_IS_SAFE(q0q1);
|
||||
uint8x8_t p0q0, p1q1;
|
||||
|
||||
// row0: p1 p0 | q0 q1
|
||||
// row1: p1 p0 | q0 q1
|
||||
// row2: p1 p0 | q0 q1
|
||||
// row3: p1 p0 | q0 q1
|
||||
load_u8_4x1(src - 2, &p1p0, 0);
|
||||
load_u8_4x1((src - 2) + 1 * stride, &p1p0, 1);
|
||||
load_u8_4x1((src - 2) + 2 * stride, &q0q1, 0);
|
||||
load_u8_4x1((src - 2) + 3 * stride, &q0q1, 1);
|
||||
load_unaligned_u8_4x4(src - 2, stride, (uint32x2_t *)&p1p0,
|
||||
(uint32x2_t *)&q0q1);
|
||||
|
||||
transpose_u8_4x4(&p1p0, &q0q1);
|
||||
|
||||
|
|
@ -815,10 +814,10 @@ void aom_lpf_vertical_4_neon(uint8_t *src, int stride, const uint8_t *blimit,
|
|||
|
||||
transpose_u8_4x4(&p1p0, &q0q1);
|
||||
|
||||
store_u8_4x1(src - 2, p1p0, 0);
|
||||
store_u8_4x1((src - 2) + 1 * stride, q0q1, 0);
|
||||
store_u8_4x1((src - 2) + 2 * stride, p1p0, 1);
|
||||
store_u8_4x1((src - 2) + 3 * stride, q0q1, 1);
|
||||
store_unaligned_u8_4x1(src - 2, p1p0, 0);
|
||||
store_unaligned_u8_4x1((src - 2) + 1 * stride, q0q1, 0);
|
||||
store_unaligned_u8_4x1((src - 2) + 2 * stride, p1p0, 1);
|
||||
store_unaligned_u8_4x1((src - 2) + 3 * stride, q0q1, 1);
|
||||
}
|
||||
|
||||
void aom_lpf_horizontal_14_neon(uint8_t *src, int stride, const uint8_t *blimit,
|
||||
|
|
|
|||
148
third_party/aom/aom_dsp/avg.c
vendored
Normal file
148
third_party/aom/aom_dsp/avg.c
vendored
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
/*
|
||||
* 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 <stdlib.h>
|
||||
|
||||
#include "config/aom_dsp_rtcd.h"
|
||||
#include "aom_ports/mem.h"
|
||||
|
||||
// src_diff: first pass, 9 bit, dynamic range [-255, 255]
|
||||
// second pass, 12 bit, dynamic range [-2040, 2040]
|
||||
static void hadamard_col8(const int16_t *src_diff, ptrdiff_t src_stride,
|
||||
int16_t *coeff) {
|
||||
int16_t b0 = src_diff[0 * src_stride] + src_diff[1 * src_stride];
|
||||
int16_t b1 = src_diff[0 * src_stride] - src_diff[1 * src_stride];
|
||||
int16_t b2 = src_diff[2 * src_stride] + src_diff[3 * src_stride];
|
||||
int16_t b3 = src_diff[2 * src_stride] - src_diff[3 * src_stride];
|
||||
int16_t b4 = src_diff[4 * src_stride] + src_diff[5 * src_stride];
|
||||
int16_t b5 = src_diff[4 * src_stride] - src_diff[5 * src_stride];
|
||||
int16_t b6 = src_diff[6 * src_stride] + src_diff[7 * src_stride];
|
||||
int16_t b7 = src_diff[6 * src_stride] - src_diff[7 * src_stride];
|
||||
|
||||
int16_t c0 = b0 + b2;
|
||||
int16_t c1 = b1 + b3;
|
||||
int16_t c2 = b0 - b2;
|
||||
int16_t c3 = b1 - b3;
|
||||
int16_t c4 = b4 + b6;
|
||||
int16_t c5 = b5 + b7;
|
||||
int16_t c6 = b4 - b6;
|
||||
int16_t c7 = b5 - b7;
|
||||
|
||||
coeff[0] = c0 + c4;
|
||||
coeff[7] = c1 + c5;
|
||||
coeff[3] = c2 + c6;
|
||||
coeff[4] = c3 + c7;
|
||||
coeff[2] = c0 - c4;
|
||||
coeff[6] = c1 - c5;
|
||||
coeff[1] = c2 - c6;
|
||||
coeff[5] = c3 - c7;
|
||||
}
|
||||
|
||||
// The order of the output coeff of the hadamard is not important. For
|
||||
// optimization purposes the final transpose may be skipped.
|
||||
void aom_hadamard_8x8_c(const int16_t *src_diff, ptrdiff_t src_stride,
|
||||
tran_low_t *coeff) {
|
||||
int idx;
|
||||
int16_t buffer[64];
|
||||
int16_t buffer2[64];
|
||||
int16_t *tmp_buf = &buffer[0];
|
||||
for (idx = 0; idx < 8; ++idx) {
|
||||
hadamard_col8(src_diff, src_stride, tmp_buf); // src_diff: 9 bit
|
||||
// dynamic range [-255, 255]
|
||||
tmp_buf += 8;
|
||||
++src_diff;
|
||||
}
|
||||
|
||||
tmp_buf = &buffer[0];
|
||||
for (idx = 0; idx < 8; ++idx) {
|
||||
hadamard_col8(tmp_buf, 8, buffer2 + 8 * idx); // tmp_buf: 12 bit
|
||||
// dynamic range [-2040, 2040]
|
||||
// buffer2: 15 bit
|
||||
// dynamic range [-16320, 16320]
|
||||
++tmp_buf;
|
||||
}
|
||||
|
||||
for (idx = 0; idx < 64; ++idx) coeff[idx] = (tran_low_t)buffer2[idx];
|
||||
}
|
||||
|
||||
// In place 16x16 2D Hadamard transform
|
||||
void aom_hadamard_16x16_c(const int16_t *src_diff, ptrdiff_t src_stride,
|
||||
tran_low_t *coeff) {
|
||||
int idx;
|
||||
for (idx = 0; idx < 4; ++idx) {
|
||||
// src_diff: 9 bit, dynamic range [-255, 255]
|
||||
const int16_t *src_ptr =
|
||||
src_diff + (idx >> 1) * 8 * src_stride + (idx & 0x01) * 8;
|
||||
aom_hadamard_8x8_c(src_ptr, src_stride, coeff + idx * 64);
|
||||
}
|
||||
|
||||
// coeff: 15 bit, dynamic range [-16320, 16320]
|
||||
for (idx = 0; idx < 64; ++idx) {
|
||||
tran_low_t a0 = coeff[0];
|
||||
tran_low_t a1 = coeff[64];
|
||||
tran_low_t a2 = coeff[128];
|
||||
tran_low_t a3 = coeff[192];
|
||||
|
||||
tran_low_t b0 = (a0 + a1) >> 1; // (a0 + a1): 16 bit, [-32640, 32640]
|
||||
tran_low_t b1 = (a0 - a1) >> 1; // b0-b3: 15 bit, dynamic range
|
||||
tran_low_t b2 = (a2 + a3) >> 1; // [-16320, 16320]
|
||||
tran_low_t b3 = (a2 - a3) >> 1;
|
||||
|
||||
coeff[0] = b0 + b2; // 16 bit, [-32640, 32640]
|
||||
coeff[64] = b1 + b3;
|
||||
coeff[128] = b0 - b2;
|
||||
coeff[192] = b1 - b3;
|
||||
|
||||
++coeff;
|
||||
}
|
||||
}
|
||||
|
||||
void aom_hadamard_32x32_c(const int16_t *src_diff, ptrdiff_t src_stride,
|
||||
tran_low_t *coeff) {
|
||||
int idx;
|
||||
for (idx = 0; idx < 4; ++idx) {
|
||||
// src_diff: 9 bit, dynamic range [-255, 255]
|
||||
const int16_t *src_ptr =
|
||||
src_diff + (idx >> 1) * 16 * src_stride + (idx & 0x01) * 16;
|
||||
aom_hadamard_16x16_c(src_ptr, src_stride, coeff + idx * 256);
|
||||
}
|
||||
|
||||
// coeff: 15 bit, dynamic range [-16320, 16320]
|
||||
for (idx = 0; idx < 256; ++idx) {
|
||||
tran_low_t a0 = coeff[0];
|
||||
tran_low_t a1 = coeff[256];
|
||||
tran_low_t a2 = coeff[512];
|
||||
tran_low_t a3 = coeff[768];
|
||||
|
||||
tran_low_t b0 = (a0 + a1) >> 2; // (a0 + a1): 16 bit, [-32640, 32640]
|
||||
tran_low_t b1 = (a0 - a1) >> 2; // b0-b3: 15 bit, dynamic range
|
||||
tran_low_t b2 = (a2 + a3) >> 2; // [-16320, 16320]
|
||||
tran_low_t b3 = (a2 - a3) >> 2;
|
||||
|
||||
coeff[0] = b0 + b2; // 16 bit, [-32640, 32640]
|
||||
coeff[256] = b1 + b3;
|
||||
coeff[512] = b0 - b2;
|
||||
coeff[768] = b1 - b3;
|
||||
|
||||
++coeff;
|
||||
}
|
||||
}
|
||||
|
||||
// coeff: 16 bits, dynamic range [-32640, 32640].
|
||||
// length: value range {16, 64, 256, 1024}.
|
||||
int aom_satd_c(const tran_low_t *coeff, int length) {
|
||||
int i;
|
||||
int satd = 0;
|
||||
for (i = 0; i < length; ++i) satd += abs(coeff[i]);
|
||||
|
||||
// satd: 26 bits, dynamic range [-32640 * 1024, 32640 * 1024]
|
||||
return satd;
|
||||
}
|
||||
69
third_party/aom/aom_dsp/binary_codes_reader.c
vendored
69
third_party/aom/aom_dsp/binary_codes_reader.c
vendored
|
|
@ -10,29 +10,9 @@
|
|||
*/
|
||||
|
||||
#include "aom_dsp/binary_codes_reader.h"
|
||||
|
||||
#include "aom_dsp/recenter.h"
|
||||
#include "av1/common/common.h"
|
||||
|
||||
// Inverse recenters a non-negative literal v around a reference r
|
||||
static uint16_t inv_recenter_nonneg(uint16_t r, uint16_t v) {
|
||||
if (v > (r << 1))
|
||||
return v;
|
||||
else if ((v & 1) == 0)
|
||||
return (v >> 1) + r;
|
||||
else
|
||||
return r - ((v + 1) >> 1);
|
||||
}
|
||||
|
||||
// Inverse recenters a non-negative literal v in [0, n-1] around a
|
||||
// reference r also in [0, n-1]
|
||||
static uint16_t inv_recenter_finite_nonneg(uint16_t n, uint16_t r, uint16_t v) {
|
||||
if ((r << 1) <= n) {
|
||||
return inv_recenter_nonneg(r, v);
|
||||
} else {
|
||||
return n - 1 - inv_recenter_nonneg(n - 1 - r, v);
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t aom_read_primitive_quniform_(aom_reader *r,
|
||||
uint16_t n ACCT_STR_PARAM) {
|
||||
if (n <= 1) return 0;
|
||||
|
|
@ -42,15 +22,6 @@ uint16_t aom_read_primitive_quniform_(aom_reader *r,
|
|||
return v < m ? v : (v << 1) - m + aom_read_bit(r, ACCT_STR_NAME);
|
||||
}
|
||||
|
||||
static uint16_t aom_rb_read_primitive_quniform(struct aom_read_bit_buffer *rb,
|
||||
uint16_t n) {
|
||||
if (n <= 1) return 0;
|
||||
const int l = get_msb(n) + 1;
|
||||
const int m = (1 << l) - n;
|
||||
const int v = aom_rb_read_literal(rb, l - 1);
|
||||
return v < m ? v : (v << 1) - m + aom_rb_read_bit(rb);
|
||||
}
|
||||
|
||||
// Decode finite subexponential code that for a symbol v in [0, n-1] with
|
||||
// parameter k
|
||||
uint16_t aom_read_primitive_subexpfin_(aom_reader *r, uint16_t n,
|
||||
|
|
@ -78,46 +49,8 @@ uint16_t aom_read_primitive_subexpfin_(aom_reader *r, uint16_t n,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static uint16_t aom_rb_read_primitive_subexpfin(struct aom_read_bit_buffer *rb,
|
||||
uint16_t n, uint16_t k) {
|
||||
int i = 0;
|
||||
int mk = 0;
|
||||
|
||||
while (1) {
|
||||
int b = (i ? k + i - 1 : k);
|
||||
int a = (1 << b);
|
||||
|
||||
if (n <= mk + 3 * a) {
|
||||
return aom_rb_read_primitive_quniform(rb, n - mk) + mk;
|
||||
}
|
||||
|
||||
if (!aom_rb_read_bit(rb)) {
|
||||
return aom_rb_read_literal(rb, b) + mk;
|
||||
}
|
||||
|
||||
i = i + 1;
|
||||
mk += a;
|
||||
}
|
||||
|
||||
assert(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t aom_read_primitive_refsubexpfin_(aom_reader *r, uint16_t n, uint16_t k,
|
||||
uint16_t ref ACCT_STR_PARAM) {
|
||||
return inv_recenter_finite_nonneg(
|
||||
n, ref, aom_read_primitive_subexpfin(r, n, k, ACCT_STR_NAME));
|
||||
}
|
||||
|
||||
static uint16_t aom_rb_read_primitive_refsubexpfin(
|
||||
struct aom_read_bit_buffer *rb, uint16_t n, uint16_t k, uint16_t ref) {
|
||||
return inv_recenter_finite_nonneg(n, ref,
|
||||
aom_rb_read_primitive_subexpfin(rb, n, k));
|
||||
}
|
||||
|
||||
int16_t aom_rb_read_signed_primitive_refsubexpfin(
|
||||
struct aom_read_bit_buffer *rb, uint16_t n, uint16_t k, int16_t ref) {
|
||||
ref += n - 1;
|
||||
const uint16_t scaled_n = (n << 1) - 1;
|
||||
return aom_rb_read_primitive_refsubexpfin(rb, scaled_n, k, ref) - n + 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,9 +37,6 @@ uint16_t aom_read_primitive_subexpfin_(aom_reader *r, uint16_t n,
|
|||
uint16_t aom_read_primitive_refsubexpfin_(aom_reader *r, uint16_t n, uint16_t k,
|
||||
uint16_t ref ACCT_STR_PARAM);
|
||||
|
||||
int16_t aom_rb_read_signed_primitive_refsubexpfin(
|
||||
struct aom_read_bit_buffer *rb, uint16_t n, uint16_t k, int16_t ref);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
|
|
|||
76
third_party/aom/aom_dsp/binary_codes_writer.c
vendored
76
third_party/aom/aom_dsp/binary_codes_writer.c
vendored
|
|
@ -11,29 +11,10 @@
|
|||
|
||||
#include "aom_dsp/bitwriter.h"
|
||||
#include "aom_dsp/binary_codes_writer.h"
|
||||
|
||||
#include "aom_dsp/recenter.h"
|
||||
#include "aom_ports/bitops.h"
|
||||
#include "av1/common/common.h"
|
||||
|
||||
// Recenters a non-negative literal v around a reference r
|
||||
static uint16_t recenter_nonneg(uint16_t r, uint16_t v) {
|
||||
if (v > (r << 1))
|
||||
return v;
|
||||
else if (v >= r)
|
||||
return ((v - r) << 1);
|
||||
else
|
||||
return ((r - v) << 1) - 1;
|
||||
}
|
||||
|
||||
// Recenters a non-negative literal v in [0, n-1] around a
|
||||
// reference r also in [0, n-1]
|
||||
static uint16_t recenter_finite_nonneg(uint16_t n, uint16_t r, uint16_t v) {
|
||||
if ((r << 1) <= n) {
|
||||
return recenter_nonneg(r, v);
|
||||
} else {
|
||||
return recenter_nonneg(n - 1 - r, n - 1 - v);
|
||||
}
|
||||
}
|
||||
|
||||
// Codes a symbol v in [-2^mag_bits, 2^mag_bits].
|
||||
// mag_bits is number of bits for magnitude. The alphabet is of size
|
||||
// 2 * 2^mag_bits + 1, symmetric around 0, where one bit is used to
|
||||
|
|
@ -69,19 +50,6 @@ void aom_write_primitive_quniform(aom_writer *w, uint16_t n, uint16_t v) {
|
|||
}
|
||||
}
|
||||
|
||||
static void aom_wb_write_primitive_quniform(struct aom_write_bit_buffer *wb,
|
||||
uint16_t n, uint16_t v) {
|
||||
if (n <= 1) return;
|
||||
const int l = get_msb(n) + 1;
|
||||
const int m = (1 << l) - n;
|
||||
if (v < m) {
|
||||
aom_wb_write_literal(wb, v, l - 1);
|
||||
} else {
|
||||
aom_wb_write_literal(wb, m + ((v - m) >> 1), l - 1);
|
||||
aom_wb_write_bit(wb, (v - m) & 1);
|
||||
}
|
||||
}
|
||||
|
||||
int aom_count_primitive_quniform(uint16_t n, uint16_t v) {
|
||||
if (n <= 1) return 0;
|
||||
const int l = get_msb(n) + 1;
|
||||
|
|
@ -114,31 +82,6 @@ void aom_write_primitive_subexpfin(aom_writer *w, uint16_t n, uint16_t k,
|
|||
}
|
||||
}
|
||||
|
||||
static void aom_wb_write_primitive_subexpfin(struct aom_write_bit_buffer *wb,
|
||||
uint16_t n, uint16_t k,
|
||||
uint16_t v) {
|
||||
int i = 0;
|
||||
int mk = 0;
|
||||
while (1) {
|
||||
int b = (i ? k + i - 1 : k);
|
||||
int a = (1 << b);
|
||||
if (n <= mk + 3 * a) {
|
||||
aom_wb_write_primitive_quniform(wb, n - mk, v - mk);
|
||||
break;
|
||||
} else {
|
||||
int t = (v >= mk + a);
|
||||
aom_wb_write_bit(wb, t);
|
||||
if (t) {
|
||||
i = i + 1;
|
||||
mk += a;
|
||||
} else {
|
||||
aom_wb_write_literal(wb, v - mk, b);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int aom_count_primitive_subexpfin(uint16_t n, uint16_t k, uint16_t v) {
|
||||
int count = 0;
|
||||
int i = 0;
|
||||
|
|
@ -172,12 +115,6 @@ void aom_write_primitive_refsubexpfin(aom_writer *w, uint16_t n, uint16_t k,
|
|||
aom_write_primitive_subexpfin(w, n, k, recenter_finite_nonneg(n, ref, v));
|
||||
}
|
||||
|
||||
static void aom_wb_write_primitive_refsubexpfin(struct aom_write_bit_buffer *wb,
|
||||
uint16_t n, uint16_t k,
|
||||
uint16_t ref, uint16_t v) {
|
||||
aom_wb_write_primitive_subexpfin(wb, n, k, recenter_finite_nonneg(n, ref, v));
|
||||
}
|
||||
|
||||
void aom_write_signed_primitive_refsubexpfin(aom_writer *w, uint16_t n,
|
||||
uint16_t k, int16_t ref,
|
||||
int16_t v) {
|
||||
|
|
@ -187,15 +124,6 @@ void aom_write_signed_primitive_refsubexpfin(aom_writer *w, uint16_t n,
|
|||
aom_write_primitive_refsubexpfin(w, scaled_n, k, ref, v);
|
||||
}
|
||||
|
||||
void aom_wb_write_signed_primitive_refsubexpfin(struct aom_write_bit_buffer *wb,
|
||||
uint16_t n, uint16_t k,
|
||||
int16_t ref, int16_t v) {
|
||||
ref += n - 1;
|
||||
v += n - 1;
|
||||
const uint16_t scaled_n = (n << 1) - 1;
|
||||
aom_wb_write_primitive_refsubexpfin(wb, scaled_n, k, ref, v);
|
||||
}
|
||||
|
||||
int aom_count_primitive_refsubexpfin(uint16_t n, uint16_t k, uint16_t ref,
|
||||
uint16_t v) {
|
||||
return aom_count_primitive_subexpfin(n, k, recenter_finite_nonneg(n, ref, v));
|
||||
|
|
|
|||
|
|
@ -49,10 +49,6 @@ void aom_write_signed_primitive_refsubexpfin(aom_writer *w, uint16_t n,
|
|||
uint16_t k, int16_t ref,
|
||||
int16_t v);
|
||||
|
||||
void aom_wb_write_signed_primitive_refsubexpfin(struct aom_write_bit_buffer *wb,
|
||||
uint16_t n, uint16_t k,
|
||||
int16_t ref, int16_t v);
|
||||
|
||||
// Functions that counts bits for the above primitives
|
||||
int aom_count_primitive_symmetric(int16_t v, unsigned int mag_bits);
|
||||
int aom_count_primitive_quniform(uint16_t n, uint16_t v);
|
||||
|
|
@ -61,6 +57,7 @@ int aom_count_primitive_refsubexpfin(uint16_t n, uint16_t k, uint16_t ref,
|
|||
uint16_t v);
|
||||
int aom_count_signed_primitive_refsubexpfin(uint16_t n, uint16_t k, int16_t ref,
|
||||
int16_t v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
|
|
|||
4
third_party/aom/aom_dsp/bitreader.h
vendored
4
third_party/aom/aom_dsp/bitreader.h
vendored
|
|
@ -65,10 +65,6 @@ static INLINE const uint8_t *aom_reader_find_end(aom_reader *r) {
|
|||
return aom_daala_reader_find_end(r);
|
||||
}
|
||||
|
||||
static INLINE int aom_reader_has_error(aom_reader *r) {
|
||||
return aom_daala_reader_has_error(r);
|
||||
}
|
||||
|
||||
// Returns true if the bit reader has tried to decode more data from the buffer
|
||||
// than was actually provided.
|
||||
static INLINE int aom_reader_has_overflowed(const aom_reader *r) {
|
||||
|
|
|
|||
49
third_party/aom/aom_dsp/bitreader_buffer.c
vendored
49
third_party/aom/aom_dsp/bitreader_buffer.c
vendored
|
|
@ -14,6 +14,8 @@
|
|||
#include "config/aom_config.h"
|
||||
|
||||
#include "aom_dsp/bitreader_buffer.h"
|
||||
#include "aom_dsp/recenter.h"
|
||||
#include "aom_ports/bitops.h"
|
||||
|
||||
size_t aom_rb_bytes_read(const struct aom_read_bit_buffer *rb) {
|
||||
return (rb->bit_offset + 7) >> 3;
|
||||
|
|
@ -65,3 +67,50 @@ uint32_t aom_rb_read_uvlc(struct aom_read_bit_buffer *rb) {
|
|||
const uint32_t value = aom_rb_read_literal(rb, leading_zeros);
|
||||
return base + value;
|
||||
}
|
||||
|
||||
static uint16_t aom_rb_read_primitive_quniform(struct aom_read_bit_buffer *rb,
|
||||
uint16_t n) {
|
||||
if (n <= 1) return 0;
|
||||
const int l = get_msb(n) + 1;
|
||||
const int m = (1 << l) - n;
|
||||
const int v = aom_rb_read_literal(rb, l - 1);
|
||||
return v < m ? v : (v << 1) - m + aom_rb_read_bit(rb);
|
||||
}
|
||||
|
||||
static uint16_t aom_rb_read_primitive_subexpfin(struct aom_read_bit_buffer *rb,
|
||||
uint16_t n, uint16_t k) {
|
||||
int i = 0;
|
||||
int mk = 0;
|
||||
|
||||
while (1) {
|
||||
int b = (i ? k + i - 1 : k);
|
||||
int a = (1 << b);
|
||||
|
||||
if (n <= mk + 3 * a) {
|
||||
return aom_rb_read_primitive_quniform(rb, n - mk) + mk;
|
||||
}
|
||||
|
||||
if (!aom_rb_read_bit(rb)) {
|
||||
return aom_rb_read_literal(rb, b) + mk;
|
||||
}
|
||||
|
||||
i = i + 1;
|
||||
mk += a;
|
||||
}
|
||||
|
||||
assert(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static uint16_t aom_rb_read_primitive_refsubexpfin(
|
||||
struct aom_read_bit_buffer *rb, uint16_t n, uint16_t k, uint16_t ref) {
|
||||
return inv_recenter_finite_nonneg(n, ref,
|
||||
aom_rb_read_primitive_subexpfin(rb, n, k));
|
||||
}
|
||||
|
||||
int16_t aom_rb_read_signed_primitive_refsubexpfin(
|
||||
struct aom_read_bit_buffer *rb, uint16_t n, uint16_t k, int16_t ref) {
|
||||
ref += n - 1;
|
||||
const uint16_t scaled_n = (n << 1) - 1;
|
||||
return aom_rb_read_primitive_refsubexpfin(rb, scaled_n, k, ref) - n + 1;
|
||||
}
|
||||
|
|
|
|||
3
third_party/aom/aom_dsp/bitreader_buffer.h
vendored
3
third_party/aom/aom_dsp/bitreader_buffer.h
vendored
|
|
@ -43,6 +43,9 @@ int aom_rb_read_inv_signed_literal(struct aom_read_bit_buffer *rb, int bits);
|
|||
|
||||
uint32_t aom_rb_read_uvlc(struct aom_read_bit_buffer *rb);
|
||||
|
||||
int16_t aom_rb_read_signed_primitive_refsubexpfin(
|
||||
struct aom_read_bit_buffer *rb, uint16_t n, uint16_t k, int16_t ref);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
|
|
|||
55
third_party/aom/aom_dsp/bitwriter_buffer.c
vendored
55
third_party/aom/aom_dsp/bitwriter_buffer.c
vendored
|
|
@ -16,6 +16,8 @@
|
|||
#include "config/aom_config.h"
|
||||
|
||||
#include "aom_dsp/bitwriter_buffer.h"
|
||||
#include "aom_dsp/recenter.h"
|
||||
#include "aom_ports/bitops.h"
|
||||
|
||||
int aom_wb_is_byte_aligned(const struct aom_write_bit_buffer *wb) {
|
||||
return (wb->bit_offset % CHAR_BIT == 0);
|
||||
|
|
@ -85,3 +87,56 @@ void aom_wb_write_uvlc(struct aom_write_bit_buffer *wb, uint32_t v) {
|
|||
aom_wb_write_literal(wb, 0, leading_zeroes >> 1);
|
||||
aom_wb_write_unsigned_literal(wb, v, (leading_zeroes + 1) >> 1);
|
||||
}
|
||||
|
||||
static void aom_wb_write_primitive_quniform(struct aom_write_bit_buffer *wb,
|
||||
uint16_t n, uint16_t v) {
|
||||
if (n <= 1) return;
|
||||
const int l = get_msb(n) + 1;
|
||||
const int m = (1 << l) - n;
|
||||
if (v < m) {
|
||||
aom_wb_write_literal(wb, v, l - 1);
|
||||
} else {
|
||||
aom_wb_write_literal(wb, m + ((v - m) >> 1), l - 1);
|
||||
aom_wb_write_bit(wb, (v - m) & 1);
|
||||
}
|
||||
}
|
||||
|
||||
static void aom_wb_write_primitive_subexpfin(struct aom_write_bit_buffer *wb,
|
||||
uint16_t n, uint16_t k,
|
||||
uint16_t v) {
|
||||
int i = 0;
|
||||
int mk = 0;
|
||||
while (1) {
|
||||
int b = (i ? k + i - 1 : k);
|
||||
int a = (1 << b);
|
||||
if (n <= mk + 3 * a) {
|
||||
aom_wb_write_primitive_quniform(wb, n - mk, v - mk);
|
||||
break;
|
||||
} else {
|
||||
int t = (v >= mk + a);
|
||||
aom_wb_write_bit(wb, t);
|
||||
if (t) {
|
||||
i = i + 1;
|
||||
mk += a;
|
||||
} else {
|
||||
aom_wb_write_literal(wb, v - mk, b);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void aom_wb_write_primitive_refsubexpfin(struct aom_write_bit_buffer *wb,
|
||||
uint16_t n, uint16_t k,
|
||||
uint16_t ref, uint16_t v) {
|
||||
aom_wb_write_primitive_subexpfin(wb, n, k, recenter_finite_nonneg(n, ref, v));
|
||||
}
|
||||
|
||||
void aom_wb_write_signed_primitive_refsubexpfin(struct aom_write_bit_buffer *wb,
|
||||
uint16_t n, uint16_t k,
|
||||
int16_t ref, int16_t v) {
|
||||
ref += n - 1;
|
||||
v += n - 1;
|
||||
const uint16_t scaled_n = (n << 1) - 1;
|
||||
aom_wb_write_primitive_refsubexpfin(wb, scaled_n, k, ref, v);
|
||||
}
|
||||
|
|
|
|||
4
third_party/aom/aom_dsp/bitwriter_buffer.h
vendored
4
third_party/aom/aom_dsp/bitwriter_buffer.h
vendored
|
|
@ -44,6 +44,10 @@ void aom_wb_write_inv_signed_literal(struct aom_write_bit_buffer *wb, int data,
|
|||
|
||||
void aom_wb_write_uvlc(struct aom_write_bit_buffer *wb, uint32_t v);
|
||||
|
||||
void aom_wb_write_signed_primitive_refsubexpfin(struct aom_write_bit_buffer *wb,
|
||||
uint16_t n, uint16_t k,
|
||||
int16_t ref, int16_t v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
|
|
|||
4
third_party/aom/aom_dsp/blend_a64_mask.c
vendored
4
third_party/aom/aom_dsp/blend_a64_mask.c
vendored
|
|
@ -22,7 +22,7 @@
|
|||
// 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.
|
||||
|
||||
// NOTE(david.barker): The input and output of aom_blend_a64_d32_mask_c() are
|
||||
// NOTE(david.barker): The input and output of aom_blend_a64_d16_mask_c() are
|
||||
// in a higher intermediate precision, and will later be rounded down to pixel
|
||||
// precision.
|
||||
// Thus, in order to avoid double-rounding, we want to use normal right shifts
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
// This works because of the identity:
|
||||
// ROUND_POWER_OF_TWO(x >> y, z) == ROUND_POWER_OF_TWO(x, y+z)
|
||||
//
|
||||
// In contrast, the output of the non-d32 functions will not be further rounded,
|
||||
// In contrast, the output of the non-d16 functions will not be further rounded,
|
||||
// so we *should* use ROUND_POWER_OF_TWO there.
|
||||
|
||||
void aom_lowbd_blend_a64_d16_mask_c(
|
||||
|
|
|
|||
4
third_party/aom/aom_dsp/daalaboolreader.h
vendored
4
third_party/aom/aom_dsp/daalaboolreader.h
vendored
|
|
@ -101,10 +101,6 @@ static INLINE int aom_daala_read(daala_reader *r, int prob) {
|
|||
return bit;
|
||||
}
|
||||
|
||||
static INLINE int aom_daala_reader_has_error(daala_reader *r) {
|
||||
return r->ec.error;
|
||||
}
|
||||
|
||||
static INLINE int daala_read_symbol(daala_reader *r, const aom_cdf_prob *cdf,
|
||||
int nsymbs) {
|
||||
int symb;
|
||||
|
|
|
|||
1
third_party/aom/aom_dsp/entcode.h
vendored
1
third_party/aom/aom_dsp/entcode.h
vendored
|
|
@ -24,6 +24,7 @@
|
|||
on a larger type, you can speed up the decoder by using it here.*/
|
||||
typedef uint32_t od_ec_window;
|
||||
|
||||
/*The size in bits of od_ec_window.*/
|
||||
#define OD_EC_WINDOW_SIZE ((int)sizeof(od_ec_window) * CHAR_BIT)
|
||||
|
||||
/*The resolution of fractional-precision bit usage measurements, i.e.,
|
||||
|
|
|
|||
24
third_party/aom/aom_dsp/entdec.c
vendored
24
third_party/aom/aom_dsp/entdec.c
vendored
|
|
@ -87,11 +87,25 @@ static void od_ec_dec_refill(od_ec_dec *dec) {
|
|||
end = dec->end;
|
||||
s = OD_EC_WINDOW_SIZE - 9 - (cnt + 15);
|
||||
for (; s >= 0 && bptr < end; s -= 8, bptr++) {
|
||||
/*Each time a byte is inserted into the window (dif), bptr advances and cnt
|
||||
is incremented by 8, so the total number of consumed bits (the return
|
||||
value of od_ec_dec_tell) does not change.*/
|
||||
assert(s <= OD_EC_WINDOW_SIZE - 8);
|
||||
dif ^= (od_ec_window)bptr[0] << s;
|
||||
cnt += 8;
|
||||
}
|
||||
if (bptr >= end) {
|
||||
/*We've reached the end of the buffer. It is perfectly valid for us to need
|
||||
to fill the window with additional bits past the end of the buffer (and
|
||||
this happens in normal operation). These bits should all just be taken
|
||||
as zero. But we cannot increment bptr past 'end' (this is undefined
|
||||
behavior), so we start to increment dec->tell_offs. We also don't want
|
||||
to keep testing bptr against 'end', so we set cnt to OD_EC_LOTS_OF_BITS
|
||||
and adjust dec->tell_offs so that the total number of unconsumed bits in
|
||||
the window (dec->cnt - dec->tell_offs) does not change. This effectively
|
||||
puts lots of zero bits into the window, and means we won't try to refill
|
||||
it from the buffer for a very long time (at which point we'll put lots
|
||||
of zero bits into the window again).*/
|
||||
dec->tell_offs += OD_EC_LOTS_OF_BITS - cnt;
|
||||
cnt = OD_EC_LOTS_OF_BITS;
|
||||
}
|
||||
|
|
@ -112,8 +126,9 @@ static int od_ec_dec_normalize(od_ec_dec *dec, od_ec_window dif, unsigned rng,
|
|||
int ret) {
|
||||
int d;
|
||||
assert(rng <= 65535U);
|
||||
// The number of leading zeros in the 16-bit binary representation of rng.
|
||||
/*The number of leading zeros in the 16-bit binary representation of rng.*/
|
||||
d = 16 - OD_ILOG_NZ(rng);
|
||||
/*d bits in dec->dif are consumed.*/
|
||||
dec->cnt -= d;
|
||||
/*This is equivalent to shifting in 1's instead of 0's.*/
|
||||
dec->dif = ((dif + 1) << d) - 1;
|
||||
|
|
@ -124,7 +139,7 @@ static int od_ec_dec_normalize(od_ec_dec *dec, od_ec_window dif, unsigned rng,
|
|||
|
||||
/*Initializes the decoder.
|
||||
buf: The input buffer to use.
|
||||
Return: 0 on success, or a negative value on error.*/
|
||||
storage: The size in bytes of the input buffer.*/
|
||||
void od_ec_dec_init(od_ec_dec *dec, const unsigned char *buf,
|
||||
uint32_t storage) {
|
||||
dec->buf = buf;
|
||||
|
|
@ -134,7 +149,6 @@ void od_ec_dec_init(od_ec_dec *dec, const unsigned char *buf,
|
|||
dec->dif = ((od_ec_window)1 << (OD_EC_WINDOW_SIZE - 1)) - 1;
|
||||
dec->rng = 0x8000;
|
||||
dec->cnt = -15;
|
||||
dec->error = 0;
|
||||
od_ec_dec_refill(dec);
|
||||
}
|
||||
|
||||
|
|
@ -215,6 +229,10 @@ int od_ec_decode_cdf_q15(od_ec_dec *dec, const uint16_t *icdf, int nsyms) {
|
|||
This will always be slightly larger than the exact value (e.g., all
|
||||
rounding error is in the positive direction).*/
|
||||
int od_ec_dec_tell(const od_ec_dec *dec) {
|
||||
/*There is a window of bits stored in dec->dif. The difference
|
||||
(dec->bptr - dec->buf) tells us how many bytes have been read into this
|
||||
window. The difference (dec->cnt - dec->tell_offs) tells us how many of
|
||||
the bits in that window remain unconsumed.*/
|
||||
return (int)((dec->bptr - dec->buf) * 8 - dec->cnt + dec->tell_offs);
|
||||
}
|
||||
|
||||
|
|
|
|||
4
third_party/aom/aom_dsp/entdec.h
vendored
4
third_party/aom/aom_dsp/entdec.h
vendored
|
|
@ -34,7 +34,7 @@ struct od_ec_dec {
|
|||
const unsigned char *buf;
|
||||
/*An offset used to keep track of tell after reaching the end of the stream.
|
||||
This is constant throughout most of the decoding process, but becomes
|
||||
important once we hit the end of the buffer and stop incrementing pointers
|
||||
important once we hit the end of the buffer and stop incrementing bptr
|
||||
(and instead pretend cnt has lots of bits).*/
|
||||
int32_t tell_offs;
|
||||
/*The end of the current input buffer.*/
|
||||
|
|
@ -53,8 +53,6 @@ struct od_ec_dec {
|
|||
uint16_t rng;
|
||||
/*The number of bits of data in the current value.*/
|
||||
int16_t cnt;
|
||||
/*Nonzero if an error occurred.*/
|
||||
int error;
|
||||
};
|
||||
|
||||
/*See entdec.c for further documentation.*/
|
||||
|
|
|
|||
2
third_party/aom/aom_dsp/entenc.c
vendored
2
third_party/aom/aom_dsp/entenc.c
vendored
|
|
@ -60,7 +60,7 @@ static void od_ec_enc_normalize(od_ec_enc *enc, od_ec_window low,
|
|||
int s;
|
||||
c = enc->cnt;
|
||||
assert(rng <= 65535U);
|
||||
// The number of leading zeros in the 16-bit binary representation of rng.
|
||||
/*The number of leading zeros in the 16-bit binary representation of rng.*/
|
||||
d = 16 - OD_ILOG_NZ(rng);
|
||||
s = c + d;
|
||||
/*TODO: Right now we flush every time we have at least one byte available.
|
||||
|
|
|
|||
70
third_party/aom/aom_dsp/grain_synthesis.h
vendored
70
third_party/aom/aom_dsp/grain_synthesis.h
vendored
|
|
@ -20,6 +20,8 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "aom_dsp/aom_dsp_common.h"
|
||||
#include "aom/aom_image.h"
|
||||
|
||||
|
|
@ -28,6 +30,9 @@ extern "C" {
|
|||
* This structure contains input parameters for film grain synthesis
|
||||
*/
|
||||
typedef struct {
|
||||
// This structure is compared element-by-element in the function
|
||||
// av1_check_grain_params_equiv: this function must be updated if any changes
|
||||
// are made to this structure.
|
||||
int apply_grain;
|
||||
|
||||
int update_parameters;
|
||||
|
|
@ -79,8 +84,73 @@ typedef struct {
|
|||
int grain_scale_shift;
|
||||
|
||||
uint16_t random_seed;
|
||||
// This structure is compared element-by-element in the function
|
||||
// av1_check_grain_params_equiv: this function must be updated if any changes
|
||||
// are made to this structure.
|
||||
} aom_film_grain_t;
|
||||
|
||||
/*!\brief Check if two film grain parameters structs are equivalent
|
||||
*
|
||||
* Check if two film grain parameters are equal, except for the
|
||||
* update_parameters and random_seed elements which are ignored.
|
||||
*
|
||||
* \param[in] pa The first set of parameters to compare
|
||||
* \param[in] pb The second set of parameters to compare
|
||||
* \return Returns 1 if the params are equivalent, 0 otherwise
|
||||
*/
|
||||
static INLINE int av1_check_grain_params_equiv(
|
||||
const aom_film_grain_t *const pa, const aom_film_grain_t *const pb) {
|
||||
if (pa->apply_grain != pb->apply_grain) return 0;
|
||||
// Don't compare update_parameters
|
||||
|
||||
if (pa->num_y_points != pb->num_y_points) return 0;
|
||||
if (memcmp(pa->scaling_points_y, pb->scaling_points_y,
|
||||
pa->num_y_points * 2 * sizeof(*pa->scaling_points_y)) != 0)
|
||||
return 0;
|
||||
|
||||
if (pa->num_cb_points != pb->num_cb_points) return 0;
|
||||
if (memcmp(pa->scaling_points_cb, pb->scaling_points_cb,
|
||||
pa->num_cb_points * 2 * sizeof(*pa->scaling_points_cb)) != 0)
|
||||
return 0;
|
||||
|
||||
if (pa->num_cr_points != pb->num_cr_points) return 0;
|
||||
if (memcmp(pa->scaling_points_cr, pb->scaling_points_cr,
|
||||
pa->num_cr_points * 2 * sizeof(*pa->scaling_points_cr)) != 0)
|
||||
return 0;
|
||||
|
||||
if (pa->scaling_shift != pb->scaling_shift) return 0;
|
||||
if (pa->ar_coeff_lag != pb->ar_coeff_lag) return 0;
|
||||
|
||||
const int num_pos = 2 * pa->ar_coeff_lag * (pa->ar_coeff_lag + 1);
|
||||
if (memcmp(pa->ar_coeffs_y, pb->ar_coeffs_y,
|
||||
num_pos * sizeof(*pa->ar_coeffs_y)) != 0)
|
||||
return 0;
|
||||
if (memcmp(pa->ar_coeffs_cb, pb->ar_coeffs_cb,
|
||||
num_pos * sizeof(*pa->ar_coeffs_cb)) != 0)
|
||||
return 0;
|
||||
if (memcmp(pa->ar_coeffs_cr, pb->ar_coeffs_cr,
|
||||
num_pos * sizeof(*pa->ar_coeffs_cr)) != 0)
|
||||
return 0;
|
||||
|
||||
if (pa->ar_coeff_shift != pb->ar_coeff_shift) return 0;
|
||||
|
||||
if (pa->cb_mult != pb->cb_mult) return 0;
|
||||
if (pa->cb_luma_mult != pb->cb_luma_mult) return 0;
|
||||
if (pa->cb_offset != pb->cb_offset) return 0;
|
||||
|
||||
if (pa->cr_mult != pb->cr_mult) return 0;
|
||||
if (pa->cr_luma_mult != pb->cr_luma_mult) return 0;
|
||||
if (pa->cr_offset != pb->cr_offset) return 0;
|
||||
|
||||
if (pa->overlap_flag != pb->overlap_flag) return 0;
|
||||
if (pa->clip_to_restricted_range != pb->clip_to_restricted_range) return 0;
|
||||
if (pa->bit_depth != pb->bit_depth) return 0;
|
||||
if (pa->chroma_scaling_from_luma != pb->chroma_scaling_from_luma) return 0;
|
||||
if (pa->grain_scale_shift != pb->grain_scale_shift) return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*!\brief Add film grain
|
||||
*
|
||||
* Add film grain to an image
|
||||
|
|
|
|||
3
third_party/aom/aom_dsp/grain_table.c
vendored
3
third_party/aom/aom_dsp/grain_table.c
vendored
|
|
@ -134,7 +134,8 @@ static void grain_table_entry_read(FILE *file,
|
|||
}
|
||||
}
|
||||
|
||||
void grain_table_entry_write(FILE *file, aom_film_grain_table_entry_t *entry) {
|
||||
static void grain_table_entry_write(FILE *file,
|
||||
aom_film_grain_table_entry_t *entry) {
|
||||
const aom_film_grain_t *pars = &entry->params;
|
||||
fprintf(file, "E %" PRId64 " %" PRId64 " %d %d %d\n", entry->start_time,
|
||||
entry->end_time, pars->apply_grain, pars->random_seed,
|
||||
|
|
|
|||
32
third_party/aom/aom_dsp/intrapred.c
vendored
32
third_party/aom/aom_dsp/intrapred.c
vendored
|
|
@ -239,23 +239,23 @@ static INLINE int divide_using_multiply_shift(int num, int shift1,
|
|||
return interm * multiplier >> shift2;
|
||||
}
|
||||
|
||||
// The constants (multiplier and shifts) for a given block size are obtained
|
||||
// as follows:
|
||||
// - Let sum_w_h = block width + block height.
|
||||
// - Shift 'sum_w_h' right until we reach an odd number. Let the number of
|
||||
// shifts for that block size be called 'shift1' (see the parameter in
|
||||
// dc_predictor_rect() function), and let the odd number be 'd'. [d has only 2
|
||||
// possible values: d = 3 for a 1:2 rect block and d = 5 for a 1:4 rect
|
||||
// block].
|
||||
// - Find multipliers for (i) dividing by 3, and (ii) dividing by 5,
|
||||
// using the "Algorithm 1" in:
|
||||
// http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1467632
|
||||
// by ensuring that m + n = 16 (in that algorithm). This ensures that our 2nd
|
||||
// shift will be 16, regardless of the block size.
|
||||
// The constants (multiplier and shifts) for a given block size are obtained
|
||||
// as follows:
|
||||
// - Let sum_w_h = block width + block height.
|
||||
// - Shift 'sum_w_h' right until we reach an odd number. Let the number of
|
||||
// shifts for that block size be called 'shift1' (see the parameter in
|
||||
// dc_predictor_rect() function), and let the odd number be 'd'. [d has only 2
|
||||
// possible values: d = 3 for a 1:2 rect block and d = 5 for a 1:4 rect
|
||||
// block].
|
||||
// - Find multipliers for (i) dividing by 3, and (ii) dividing by 5,
|
||||
// using the "Algorithm 1" in:
|
||||
// http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1467632
|
||||
// by ensuring that m + n = 16 (in that algorithm). This ensures that our 2nd
|
||||
// shift will be 16, regardless of the block size.
|
||||
|
||||
// Note: For low bitdepth, assembly code may be optimized by using smaller
|
||||
// constants for smaller block sizes, where the range of the 'sum' is
|
||||
// restricted to fewer bits.
|
||||
// Note: For low bitdepth, assembly code may be optimized by using smaller
|
||||
// constants for smaller block sizes, where the range of the 'sum' is
|
||||
// restricted to fewer bits.
|
||||
|
||||
#define DC_MULTIPLIER_1X2 0x5556
|
||||
#define DC_MULTIPLIER_1X4 0x3334
|
||||
|
|
|
|||
8
third_party/aom/aom_dsp/noise_model.h
vendored
8
third_party/aom/aom_dsp/noise_model.h
vendored
|
|
@ -158,10 +158,10 @@ int aom_flat_block_finder_run(const aom_flat_block_finder_t *block_finder,
|
|||
int stride, uint8_t *flat_blocks);
|
||||
|
||||
// The noise shape indicates the allowed coefficients in the AR model.
|
||||
typedef enum {
|
||||
enum {
|
||||
AOM_NOISE_SHAPE_DIAMOND = 0,
|
||||
AOM_NOISE_SHAPE_SQUARE = 1
|
||||
} aom_noise_shape;
|
||||
} UENUM1BYTE(aom_noise_shape);
|
||||
|
||||
// The parameters of the noise model include the shape type, lag, the
|
||||
// bit depth of the input images provided, and whether the input images
|
||||
|
|
@ -202,13 +202,13 @@ typedef struct {
|
|||
} aom_noise_model_t;
|
||||
|
||||
/*!\brief Result of a noise model update. */
|
||||
typedef enum {
|
||||
enum {
|
||||
AOM_NOISE_STATUS_OK = 0,
|
||||
AOM_NOISE_STATUS_INVALID_ARGUMENT,
|
||||
AOM_NOISE_STATUS_INSUFFICIENT_FLAT_BLOCKS,
|
||||
AOM_NOISE_STATUS_DIFFERENT_NOISE_TYPE,
|
||||
AOM_NOISE_STATUS_INTERNAL_ERROR,
|
||||
} aom_noise_status_t;
|
||||
} UENUM1BYTE(aom_noise_status_t);
|
||||
|
||||
/*!\brief Initializes a noise model with the given parameters.
|
||||
*
|
||||
|
|
|
|||
2
third_party/aom/aom_dsp/prob.h
vendored
2
third_party/aom/aom_dsp/prob.h
vendored
|
|
@ -641,7 +641,7 @@ static INLINE uint8_t get_prob(unsigned int num, unsigned int den) {
|
|||
}
|
||||
}
|
||||
|
||||
static INLINE void update_cdf(aom_cdf_prob *cdf, int val, int nsymbs) {
|
||||
static INLINE void update_cdf(aom_cdf_prob *cdf, int8_t val, int nsymbs) {
|
||||
int rate;
|
||||
int i, tmp;
|
||||
|
||||
|
|
|
|||
194
third_party/aom/aom_dsp/quantize.c
vendored
194
third_party/aom/aom_dsp/quantize.c
vendored
|
|
@ -12,6 +12,68 @@
|
|||
#include "aom_dsp/quantize.h"
|
||||
#include "aom_mem/aom_mem.h"
|
||||
|
||||
void quantize_b_adaptive_helper_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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, const int log_scale) {
|
||||
const int zbins[2] = { ROUND_POWER_OF_TWO(zbin_ptr[0], log_scale),
|
||||
ROUND_POWER_OF_TWO(zbin_ptr[1], log_scale) };
|
||||
const int nzbins[2] = { zbins[0] * -1, zbins[1] * -1 };
|
||||
int i, non_zero_count = (int)n_coeffs, eob = -1;
|
||||
(void)iscan;
|
||||
|
||||
memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr));
|
||||
memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr));
|
||||
|
||||
// Pre-scan pass
|
||||
for (i = (int)n_coeffs - 1; i >= 0; i--) {
|
||||
const int rc = scan[i];
|
||||
const qm_val_t wt = qm_ptr != NULL ? qm_ptr[rc] : (1 << AOM_QM_BITS);
|
||||
const int coeff = coeff_ptr[rc] * wt;
|
||||
|
||||
int prescan_add = ROUND_POWER_OF_TWO(dequant_ptr[rc != 0] * 325, 7);
|
||||
if (coeff < (zbins[rc != 0] * (1 << AOM_QM_BITS) + prescan_add) &&
|
||||
coeff > (nzbins[rc != 0] * (1 << AOM_QM_BITS) - prescan_add))
|
||||
non_zero_count--;
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
// Quantization pass: All coefficients with index >= zero_flag are
|
||||
// skippable. Note: zero_flag can be zero.
|
||||
for (i = 0; i < non_zero_count; i++) {
|
||||
const int rc = scan[i];
|
||||
const int coeff = coeff_ptr[rc];
|
||||
const int coeff_sign = (coeff >> 31);
|
||||
const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign;
|
||||
int tmp32;
|
||||
|
||||
const qm_val_t wt = qm_ptr != NULL ? qm_ptr[rc] : (1 << AOM_QM_BITS);
|
||||
if (abs_coeff * wt >= (zbins[rc != 0] << AOM_QM_BITS)) {
|
||||
int64_t tmp =
|
||||
clamp(abs_coeff + ROUND_POWER_OF_TWO(round_ptr[rc != 0], log_scale),
|
||||
INT16_MIN, INT16_MAX);
|
||||
tmp *= wt;
|
||||
tmp32 = (int)(((((tmp * quant_ptr[rc != 0]) >> 16) + tmp) *
|
||||
quant_shift_ptr[rc != 0]) >>
|
||||
(16 - log_scale + AOM_QM_BITS)); // quantization
|
||||
qcoeff_ptr[rc] = (tmp32 ^ coeff_sign) - coeff_sign;
|
||||
const int iwt = iqm_ptr != NULL ? iqm_ptr[rc] : (1 << AOM_QM_BITS);
|
||||
const int dequant =
|
||||
(dequant_ptr[rc != 0] * iwt + (1 << (AOM_QM_BITS - 1))) >>
|
||||
AOM_QM_BITS;
|
||||
const tran_low_t abs_dqcoeff = (tmp32 * dequant) >> log_scale;
|
||||
dqcoeff_ptr[rc] = (tran_low_t)((abs_dqcoeff ^ coeff_sign) - coeff_sign);
|
||||
|
||||
if (tmp32) eob = i;
|
||||
}
|
||||
}
|
||||
*eob_ptr = eob + 1;
|
||||
}
|
||||
|
||||
void quantize_b_helper_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs,
|
||||
const int16_t *zbin_ptr, const int16_t *round_ptr,
|
||||
const int16_t *quant_ptr,
|
||||
|
|
@ -74,6 +136,64 @@ void quantize_b_helper_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs,
|
|||
*eob_ptr = eob + 1;
|
||||
}
|
||||
|
||||
void highbd_quantize_b_adaptive_helper_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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, const int log_scale) {
|
||||
int i, eob = -1;
|
||||
const int zbins[2] = { ROUND_POWER_OF_TWO(zbin_ptr[0], log_scale),
|
||||
ROUND_POWER_OF_TWO(zbin_ptr[1], log_scale) };
|
||||
const int nzbins[2] = { zbins[0] * -1, zbins[1] * -1 };
|
||||
int dequant;
|
||||
int idx_arr[4096];
|
||||
(void)iscan;
|
||||
int idx = 0;
|
||||
|
||||
memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr));
|
||||
memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr));
|
||||
|
||||
// Pre-scan pass
|
||||
for (i = 0; i < n_coeffs; i++) {
|
||||
const int rc = scan[i];
|
||||
const qm_val_t wt = qm_ptr != NULL ? qm_ptr[rc] : (1 << AOM_QM_BITS);
|
||||
const int coeff = coeff_ptr[rc] * wt;
|
||||
|
||||
// If the coefficient is out of the base ZBIN range, keep it for
|
||||
// quantization.
|
||||
int prescan_add = ROUND_POWER_OF_TWO(dequant_ptr[rc != 0] * 325, 7);
|
||||
if (coeff >= (zbins[rc != 0] * (1 << AOM_QM_BITS) + prescan_add) &&
|
||||
coeff <= (nzbins[rc != 0] * (1 << AOM_QM_BITS) - prescan_add))
|
||||
idx_arr[idx++] = i;
|
||||
}
|
||||
|
||||
// Quantization pass: only process the coefficients selected in
|
||||
// pre-scan pass. Note: idx can be zero.
|
||||
for (i = 0; i < idx; i++) {
|
||||
const int rc = scan[idx_arr[i]];
|
||||
const int coeff = coeff_ptr[rc];
|
||||
const int coeff_sign = (coeff >> 31);
|
||||
const qm_val_t wt = qm_ptr != NULL ? qm_ptr[rc] : (1 << AOM_QM_BITS);
|
||||
const qm_val_t iwt = iqm_ptr != NULL ? iqm_ptr[rc] : (1 << AOM_QM_BITS);
|
||||
const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign;
|
||||
const int64_t tmp1 =
|
||||
abs_coeff + ROUND_POWER_OF_TWO(round_ptr[rc != 0], log_scale);
|
||||
const int64_t tmpw = tmp1 * wt;
|
||||
const int64_t tmp2 = ((tmpw * quant_ptr[rc != 0]) >> 16) + tmpw;
|
||||
const int abs_qcoeff = (int)((tmp2 * quant_shift_ptr[rc != 0]) >>
|
||||
(16 - log_scale + AOM_QM_BITS));
|
||||
qcoeff_ptr[rc] = (tran_low_t)((abs_qcoeff ^ coeff_sign) - coeff_sign);
|
||||
dequant =
|
||||
(dequant_ptr[rc != 0] * iwt + (1 << (AOM_QM_BITS - 1))) >> AOM_QM_BITS;
|
||||
const tran_low_t abs_dqcoeff = (abs_qcoeff * dequant) >> log_scale;
|
||||
dqcoeff_ptr[rc] = (tran_low_t)((abs_dqcoeff ^ coeff_sign) - coeff_sign);
|
||||
if (abs_qcoeff) eob = idx_arr[i];
|
||||
}
|
||||
*eob_ptr = eob + 1;
|
||||
}
|
||||
|
||||
void highbd_quantize_b_helper_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr,
|
||||
const int16_t *round_ptr, const int16_t *quant_ptr,
|
||||
|
|
@ -133,6 +253,80 @@ void highbd_quantize_b_helper_c(
|
|||
|
||||
/* These functions should only be called when quantisation matrices
|
||||
are not used. */
|
||||
void aom_quantize_b_adaptive_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs,
|
||||
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) {
|
||||
quantize_b_adaptive_helper_c(coeff_ptr, n_coeffs, zbin_ptr, round_ptr,
|
||||
quant_ptr, quant_shift_ptr, qcoeff_ptr,
|
||||
dqcoeff_ptr, dequant_ptr, eob_ptr, scan, iscan,
|
||||
NULL, NULL, 0);
|
||||
}
|
||||
|
||||
void aom_quantize_b_32x32_adaptive_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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) {
|
||||
quantize_b_adaptive_helper_c(coeff_ptr, n_coeffs, zbin_ptr, round_ptr,
|
||||
quant_ptr, quant_shift_ptr, qcoeff_ptr,
|
||||
dqcoeff_ptr, dequant_ptr, eob_ptr, scan, iscan,
|
||||
NULL, NULL, 1);
|
||||
}
|
||||
|
||||
void aom_quantize_b_64x64_adaptive_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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) {
|
||||
quantize_b_adaptive_helper_c(coeff_ptr, n_coeffs, zbin_ptr, round_ptr,
|
||||
quant_ptr, quant_shift_ptr, qcoeff_ptr,
|
||||
dqcoeff_ptr, dequant_ptr, eob_ptr, scan, iscan,
|
||||
NULL, NULL, 2);
|
||||
}
|
||||
|
||||
void aom_highbd_quantize_b_adaptive_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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) {
|
||||
highbd_quantize_b_adaptive_helper_c(coeff_ptr, n_coeffs, zbin_ptr, round_ptr,
|
||||
quant_ptr, quant_shift_ptr, qcoeff_ptr,
|
||||
dqcoeff_ptr, dequant_ptr, eob_ptr, scan,
|
||||
iscan, NULL, NULL, 0);
|
||||
}
|
||||
|
||||
void aom_highbd_quantize_b_32x32_adaptive_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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) {
|
||||
highbd_quantize_b_adaptive_helper_c(coeff_ptr, n_coeffs, zbin_ptr, round_ptr,
|
||||
quant_ptr, quant_shift_ptr, qcoeff_ptr,
|
||||
dqcoeff_ptr, dequant_ptr, eob_ptr, scan,
|
||||
iscan, NULL, NULL, 1);
|
||||
}
|
||||
|
||||
void aom_highbd_quantize_b_64x64_adaptive_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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) {
|
||||
highbd_quantize_b_adaptive_helper_c(coeff_ptr, n_coeffs, zbin_ptr, round_ptr,
|
||||
quant_ptr, quant_shift_ptr, qcoeff_ptr,
|
||||
dqcoeff_ptr, dequant_ptr, eob_ptr, scan,
|
||||
iscan, NULL, NULL, 2);
|
||||
}
|
||||
|
||||
void aom_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs,
|
||||
const int16_t *zbin_ptr, const int16_t *round_ptr,
|
||||
const int16_t *quant_ptr, const int16_t *quant_shift_ptr,
|
||||
|
|
|
|||
60
third_party/aom/aom_dsp/quantize.h
vendored
60
third_party/aom/aom_dsp/quantize.h
vendored
|
|
@ -20,6 +20,66 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
void quantize_b_adaptive_helper_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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, const int log_scale);
|
||||
|
||||
void aom_quantize_b_adaptive_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs,
|
||||
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 aom_quantize_b_32x32_adaptive_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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 aom_quantize_b_64x64_adaptive_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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 highbd_quantize_b_adaptive_helper_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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, const int log_scale);
|
||||
|
||||
void aom_highbd_quantize_b_adaptive_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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 aom_highbd_quantize_b_32x32_adaptive_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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 aom_highbd_quantize_b_64x64_adaptive_c(
|
||||
const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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 quantize_b_helper_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs,
|
||||
const int16_t *zbin_ptr, const int16_t *round_ptr,
|
||||
const int16_t *quant_ptr,
|
||||
|
|
|
|||
61
third_party/aom/aom_dsp/recenter.h
vendored
Normal file
61
third_party/aom/aom_dsp/recenter.h
vendored
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright (c) 2018, 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.
|
||||
*/
|
||||
|
||||
#ifndef AOM_AOM_DSP_RECENTER_H_
|
||||
#define AOM_AOM_DSP_RECENTER_H_
|
||||
|
||||
#include "config/aom_config.h"
|
||||
|
||||
#include "aom/aom_integer.h"
|
||||
|
||||
// Inverse recenters a non-negative literal v around a reference r
|
||||
static INLINE uint16_t inv_recenter_nonneg(uint16_t r, uint16_t v) {
|
||||
if (v > (r << 1))
|
||||
return v;
|
||||
else if ((v & 1) == 0)
|
||||
return (v >> 1) + r;
|
||||
else
|
||||
return r - ((v + 1) >> 1);
|
||||
}
|
||||
|
||||
// Inverse recenters a non-negative literal v in [0, n-1] around a
|
||||
// reference r also in [0, n-1]
|
||||
static INLINE uint16_t inv_recenter_finite_nonneg(uint16_t n, uint16_t r,
|
||||
uint16_t v) {
|
||||
if ((r << 1) <= n) {
|
||||
return inv_recenter_nonneg(r, v);
|
||||
} else {
|
||||
return n - 1 - inv_recenter_nonneg(n - 1 - r, v);
|
||||
}
|
||||
}
|
||||
|
||||
// Recenters a non-negative literal v around a reference r
|
||||
static INLINE uint16_t recenter_nonneg(uint16_t r, uint16_t v) {
|
||||
if (v > (r << 1))
|
||||
return v;
|
||||
else if (v >= r)
|
||||
return ((v - r) << 1);
|
||||
else
|
||||
return ((r - v) << 1) - 1;
|
||||
}
|
||||
|
||||
// Recenters a non-negative literal v in [0, n-1] around a
|
||||
// reference r also in [0, n-1]
|
||||
static INLINE uint16_t recenter_finite_nonneg(uint16_t n, uint16_t r,
|
||||
uint16_t v) {
|
||||
if ((r << 1) <= n) {
|
||||
return recenter_nonneg(r, v);
|
||||
} else {
|
||||
return recenter_nonneg(n - 1 - r, n - 1 - v);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // AOM_AOM_DSP_RECENTER_H_
|
||||
219
third_party/aom/aom_dsp/sad.c
vendored
219
third_party/aom/aom_dsp/sad.c
vendored
|
|
@ -25,7 +25,9 @@ static INLINE unsigned int sad(const uint8_t *a, int a_stride, const uint8_t *b,
|
|||
unsigned int sad = 0;
|
||||
|
||||
for (y = 0; y < height; y++) {
|
||||
for (x = 0; x < width; x++) sad += abs(a[x] - b[x]);
|
||||
for (x = 0; x < width; x++) {
|
||||
sad += abs(a[x] - b[x]);
|
||||
}
|
||||
|
||||
a += a_stride;
|
||||
b += b_stride;
|
||||
|
|
@ -52,12 +54,12 @@ static INLINE unsigned int sad(const uint8_t *a, int a_stride, const uint8_t *b,
|
|||
aom_comp_avg_pred(comp_pred, second_pred, m, n, ref, ref_stride); \
|
||||
return sad(src, src_stride, comp_pred, m, m, n); \
|
||||
} \
|
||||
unsigned int aom_jnt_sad##m##x##n##_avg_c( \
|
||||
unsigned int aom_dist_wtd_sad##m##x##n##_avg_c( \
|
||||
const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, \
|
||||
const uint8_t *second_pred, const JNT_COMP_PARAMS *jcp_param) { \
|
||||
const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param) { \
|
||||
uint8_t comp_pred[m * n]; \
|
||||
aom_jnt_comp_avg_pred_c(comp_pred, second_pred, m, n, ref, ref_stride, \
|
||||
jcp_param); \
|
||||
aom_dist_wtd_comp_avg_pred_c(comp_pred, second_pred, m, n, ref, \
|
||||
ref_stride, jcp_param); \
|
||||
return sad(src, src_stride, comp_pred, m, m, n); \
|
||||
}
|
||||
|
||||
|
|
@ -67,75 +69,75 @@ static INLINE unsigned int sad(const uint8_t *a, int a_stride, const uint8_t *b,
|
|||
const uint8_t *const ref_array[], \
|
||||
int ref_stride, uint32_t *sad_array) { \
|
||||
int i; \
|
||||
for (i = 0; i < 4; ++i) \
|
||||
for (i = 0; i < 4; ++i) { \
|
||||
sad_array[i] = \
|
||||
aom_sad##m##x##n##_c(src, src_stride, ref_array[i], ref_stride); \
|
||||
} \
|
||||
}
|
||||
|
||||
/* clang-format off */
|
||||
// 128x128
|
||||
sadMxN(128, 128)
|
||||
sadMxNx4D(128, 128)
|
||||
sadMxN(128, 128);
|
||||
sadMxNx4D(128, 128);
|
||||
|
||||
// 128x64
|
||||
sadMxN(128, 64)
|
||||
sadMxNx4D(128, 64)
|
||||
sadMxN(128, 64);
|
||||
sadMxNx4D(128, 64);
|
||||
|
||||
// 64x128
|
||||
sadMxN(64, 128)
|
||||
sadMxNx4D(64, 128)
|
||||
sadMxN(64, 128);
|
||||
sadMxNx4D(64, 128);
|
||||
|
||||
// 64x64
|
||||
sadMxN(64, 64)
|
||||
sadMxNx4D(64, 64)
|
||||
sadMxN(64, 64);
|
||||
sadMxNx4D(64, 64);
|
||||
|
||||
// 64x32
|
||||
sadMxN(64, 32)
|
||||
sadMxNx4D(64, 32)
|
||||
sadMxN(64, 32);
|
||||
sadMxNx4D(64, 32);
|
||||
|
||||
// 32x64
|
||||
sadMxN(32, 64)
|
||||
sadMxNx4D(32, 64)
|
||||
sadMxN(32, 64);
|
||||
sadMxNx4D(32, 64);
|
||||
|
||||
// 32x32
|
||||
sadMxN(32, 32)
|
||||
sadMxNx4D(32, 32)
|
||||
sadMxN(32, 32);
|
||||
sadMxNx4D(32, 32);
|
||||
|
||||
// 32x16
|
||||
sadMxN(32, 16)
|
||||
sadMxNx4D(32, 16)
|
||||
sadMxN(32, 16);
|
||||
sadMxNx4D(32, 16);
|
||||
|
||||
// 16x32
|
||||
sadMxN(16, 32)
|
||||
sadMxNx4D(16, 32)
|
||||
sadMxN(16, 32);
|
||||
sadMxNx4D(16, 32);
|
||||
|
||||
// 16x16
|
||||
sadMxN(16, 16)
|
||||
sadMxNx4D(16, 16)
|
||||
sadMxN(16, 16);
|
||||
sadMxNx4D(16, 16);
|
||||
|
||||
// 16x8
|
||||
sadMxN(16, 8)
|
||||
sadMxNx4D(16, 8)
|
||||
sadMxN(16, 8);
|
||||
sadMxNx4D(16, 8);
|
||||
|
||||
// 8x16
|
||||
sadMxN(8, 16)
|
||||
sadMxNx4D(8, 16)
|
||||
sadMxN(8, 16);
|
||||
sadMxNx4D(8, 16);
|
||||
|
||||
// 8x8
|
||||
sadMxN(8, 8)
|
||||
sadMxNx4D(8, 8)
|
||||
sadMxN(8, 8);
|
||||
sadMxNx4D(8, 8);
|
||||
|
||||
// 8x4
|
||||
sadMxN(8, 4)
|
||||
sadMxNx4D(8, 4)
|
||||
sadMxN(8, 4);
|
||||
sadMxNx4D(8, 4);
|
||||
|
||||
// 4x8
|
||||
sadMxN(4, 8)
|
||||
sadMxNx4D(4, 8)
|
||||
sadMxN(4, 8);
|
||||
sadMxNx4D(4, 8);
|
||||
|
||||
// 4x4
|
||||
sadMxN(4, 4)
|
||||
sadMxNx4D(4, 4)
|
||||
sadMxN(4, 4);
|
||||
sadMxNx4D(4, 4);
|
||||
|
||||
sadMxh(128);
|
||||
sadMxh(64);
|
||||
|
|
@ -144,30 +146,30 @@ sadMxh(16);
|
|||
sadMxh(8);
|
||||
sadMxh(4);
|
||||
|
||||
sadMxN(4, 16)
|
||||
sadMxNx4D(4, 16)
|
||||
sadMxN(16, 4)
|
||||
sadMxNx4D(16, 4)
|
||||
sadMxN(8, 32)
|
||||
sadMxNx4D(8, 32)
|
||||
sadMxN(32, 8)
|
||||
sadMxNx4D(32, 8)
|
||||
sadMxN(16, 64)
|
||||
sadMxNx4D(16, 64)
|
||||
sadMxN(64, 16)
|
||||
sadMxNx4D(64, 16)
|
||||
sadMxN(4, 16);
|
||||
sadMxNx4D(4, 16);
|
||||
sadMxN(16, 4);
|
||||
sadMxNx4D(16, 4);
|
||||
sadMxN(8, 32);
|
||||
sadMxNx4D(8, 32);
|
||||
sadMxN(32, 8);
|
||||
sadMxNx4D(32, 8);
|
||||
sadMxN(16, 64);
|
||||
sadMxNx4D(16, 64);
|
||||
sadMxN(64, 16);
|
||||
sadMxNx4D(64, 16);
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
static INLINE
|
||||
unsigned int highbd_sad(const uint8_t *a8, int a_stride, const uint8_t *b8,
|
||||
int b_stride, int width, int height) {
|
||||
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;
|
||||
unsigned int sad = 0;
|
||||
const uint16_t *a = CONVERT_TO_SHORTPTR(a8);
|
||||
const uint16_t *b = CONVERT_TO_SHORTPTR(b8);
|
||||
for (y = 0; y < height; y++) {
|
||||
for (x = 0; x < width; x++) sad += abs(a[x] - b[x]);
|
||||
for (x = 0; x < width; x++) {
|
||||
sad += abs(a[x] - b[x]);
|
||||
}
|
||||
|
||||
a += a_stride;
|
||||
b += b_stride;
|
||||
|
|
@ -182,7 +184,9 @@ static INLINE unsigned int highbd_sadb(const uint8_t *a8, int a_stride,
|
|||
unsigned int sad = 0;
|
||||
const uint16_t *a = CONVERT_TO_SHORTPTR(a8);
|
||||
for (y = 0; y < height; y++) {
|
||||
for (x = 0; x < width; x++) sad += abs(a[x] - b[x]);
|
||||
for (x = 0; x < width; x++) {
|
||||
sad += abs(a[x] - b[x]);
|
||||
}
|
||||
|
||||
a += a_stride;
|
||||
b += b_stride;
|
||||
|
|
@ -204,12 +208,13 @@ static INLINE unsigned int highbd_sadb(const uint8_t *a8, int a_stride,
|
|||
ref, ref_stride); \
|
||||
return highbd_sadb(src, src_stride, comp_pred, m, m, n); \
|
||||
} \
|
||||
unsigned int aom_highbd_jnt_sad##m##x##n##_avg_c( \
|
||||
unsigned int aom_highbd_dist_wtd_sad##m##x##n##_avg_c( \
|
||||
const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, \
|
||||
const uint8_t *second_pred, const JNT_COMP_PARAMS *jcp_param) { \
|
||||
const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param) { \
|
||||
uint16_t comp_pred[m * n]; \
|
||||
aom_highbd_jnt_comp_avg_pred(CONVERT_TO_BYTEPTR(comp_pred), second_pred, \
|
||||
m, n, ref, ref_stride, jcp_param); \
|
||||
aom_highbd_dist_wtd_comp_avg_pred(CONVERT_TO_BYTEPTR(comp_pred), \
|
||||
second_pred, m, n, ref, ref_stride, \
|
||||
jcp_param); \
|
||||
return highbd_sadb(src, src_stride, comp_pred, m, m, n); \
|
||||
}
|
||||
|
||||
|
|
@ -224,81 +229,79 @@ static INLINE unsigned int highbd_sadb(const uint8_t *a8, int a_stride,
|
|||
} \
|
||||
}
|
||||
|
||||
/* clang-format off */
|
||||
// 128x128
|
||||
highbd_sadMxN(128, 128)
|
||||
highbd_sadMxNx4D(128, 128)
|
||||
highbd_sadMxN(128, 128);
|
||||
highbd_sadMxNx4D(128, 128);
|
||||
|
||||
// 128x64
|
||||
highbd_sadMxN(128, 64)
|
||||
highbd_sadMxNx4D(128, 64)
|
||||
highbd_sadMxN(128, 64);
|
||||
highbd_sadMxNx4D(128, 64);
|
||||
|
||||
// 64x128
|
||||
highbd_sadMxN(64, 128)
|
||||
highbd_sadMxNx4D(64, 128)
|
||||
highbd_sadMxN(64, 128);
|
||||
highbd_sadMxNx4D(64, 128);
|
||||
|
||||
// 64x64
|
||||
highbd_sadMxN(64, 64)
|
||||
highbd_sadMxNx4D(64, 64)
|
||||
highbd_sadMxN(64, 64);
|
||||
highbd_sadMxNx4D(64, 64);
|
||||
|
||||
// 64x32
|
||||
highbd_sadMxN(64, 32)
|
||||
highbd_sadMxNx4D(64, 32)
|
||||
highbd_sadMxN(64, 32);
|
||||
highbd_sadMxNx4D(64, 32);
|
||||
|
||||
// 32x64
|
||||
highbd_sadMxN(32, 64)
|
||||
highbd_sadMxNx4D(32, 64)
|
||||
highbd_sadMxN(32, 64);
|
||||
highbd_sadMxNx4D(32, 64);
|
||||
|
||||
// 32x32
|
||||
highbd_sadMxN(32, 32)
|
||||
highbd_sadMxNx4D(32, 32)
|
||||
highbd_sadMxN(32, 32);
|
||||
highbd_sadMxNx4D(32, 32);
|
||||
|
||||
// 32x16
|
||||
highbd_sadMxN(32, 16)
|
||||
highbd_sadMxNx4D(32, 16)
|
||||
highbd_sadMxN(32, 16);
|
||||
highbd_sadMxNx4D(32, 16);
|
||||
|
||||
// 16x32
|
||||
highbd_sadMxN(16, 32)
|
||||
highbd_sadMxNx4D(16, 32)
|
||||
highbd_sadMxN(16, 32);
|
||||
highbd_sadMxNx4D(16, 32);
|
||||
|
||||
// 16x16
|
||||
highbd_sadMxN(16, 16)
|
||||
highbd_sadMxNx4D(16, 16)
|
||||
highbd_sadMxN(16, 16);
|
||||
highbd_sadMxNx4D(16, 16);
|
||||
|
||||
// 16x8
|
||||
highbd_sadMxN(16, 8)
|
||||
highbd_sadMxNx4D(16, 8)
|
||||
highbd_sadMxN(16, 8);
|
||||
highbd_sadMxNx4D(16, 8);
|
||||
|
||||
// 8x16
|
||||
highbd_sadMxN(8, 16)
|
||||
highbd_sadMxNx4D(8, 16)
|
||||
highbd_sadMxN(8, 16);
|
||||
highbd_sadMxNx4D(8, 16);
|
||||
|
||||
// 8x8
|
||||
highbd_sadMxN(8, 8)
|
||||
highbd_sadMxNx4D(8, 8)
|
||||
highbd_sadMxN(8, 8);
|
||||
highbd_sadMxNx4D(8, 8);
|
||||
|
||||
// 8x4
|
||||
highbd_sadMxN(8, 4)
|
||||
highbd_sadMxNx4D(8, 4)
|
||||
highbd_sadMxN(8, 4);
|
||||
highbd_sadMxNx4D(8, 4);
|
||||
|
||||
// 4x8
|
||||
highbd_sadMxN(4, 8)
|
||||
highbd_sadMxNx4D(4, 8)
|
||||
highbd_sadMxN(4, 8);
|
||||
highbd_sadMxNx4D(4, 8);
|
||||
|
||||
// 4x4
|
||||
highbd_sadMxN(4, 4)
|
||||
highbd_sadMxNx4D(4, 4)
|
||||
highbd_sadMxN(4, 4);
|
||||
highbd_sadMxNx4D(4, 4);
|
||||
|
||||
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)
|
||||
highbd_sadMxN(16, 64)
|
||||
highbd_sadMxNx4D(16, 64)
|
||||
highbd_sadMxN(64, 16)
|
||||
highbd_sadMxNx4D(64, 16)
|
||||
/* clang-format on */
|
||||
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);
|
||||
highbd_sadMxN(16, 64);
|
||||
highbd_sadMxNx4D(16, 64);
|
||||
highbd_sadMxN(64, 16);
|
||||
highbd_sadMxNx4D(64, 16);
|
||||
|
|
|
|||
2
third_party/aom/aom_dsp/txfm_common.h
vendored
2
third_party/aom/aom_dsp/txfm_common.h
vendored
|
|
@ -39,7 +39,7 @@ typedef struct txfm_param {
|
|||
// Constants:
|
||||
// for (int i = 1; i< 32; ++i)
|
||||
// printf("static const int cospi_%d_64 = %.0f;\n", i,
|
||||
// round(16384 * cos(i*M_PI/64)));
|
||||
// round(16384 * cos(i*PI/64)));
|
||||
// Note: sin(k*Pi/64) = cos((32-k)*Pi/64)
|
||||
static const tran_high_t cospi_1_64 = 16364;
|
||||
static const tran_high_t cospi_2_64 = 16305;
|
||||
|
|
|
|||
370
third_party/aom/aom_dsp/variance.c
vendored
370
third_party/aom/aom_dsp/variance.c
vendored
|
|
@ -164,40 +164,40 @@ void aom_var_filter_block2d_bil_second_pass_c(const uint16_t *a, uint8_t *b,
|
|||
return aom_variance##W##x##H##_c(temp2, W, b, b_stride, sse); \
|
||||
}
|
||||
|
||||
#define SUBPIX_AVG_VAR(W, H) \
|
||||
uint32_t aom_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *a, int a_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *b, int b_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint8_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint8_t, temp3[H * W]); \
|
||||
\
|
||||
aom_var_filter_block2d_bil_first_pass_c(a, fdata3, a_stride, 1, H + 1, W, \
|
||||
bilinear_filters_2t[xoffset]); \
|
||||
aom_var_filter_block2d_bil_second_pass_c(fdata3, temp2, W, W, H, W, \
|
||||
bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_comp_avg_pred(temp3, second_pred, W, H, temp2, W); \
|
||||
\
|
||||
return aom_variance##W##x##H##_c(temp3, W, b, b_stride, sse); \
|
||||
} \
|
||||
uint32_t aom_jnt_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *a, int a_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *b, int b_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred, const JNT_COMP_PARAMS *jcp_param) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint8_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint8_t, temp3[H * W]); \
|
||||
\
|
||||
aom_var_filter_block2d_bil_first_pass_c(a, fdata3, a_stride, 1, H + 1, W, \
|
||||
bilinear_filters_2t[xoffset]); \
|
||||
aom_var_filter_block2d_bil_second_pass_c(fdata3, temp2, W, W, H, W, \
|
||||
bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_jnt_comp_avg_pred(temp3, second_pred, W, H, temp2, W, jcp_param); \
|
||||
\
|
||||
return aom_variance##W##x##H(temp3, W, b, b_stride, sse); \
|
||||
#define SUBPIX_AVG_VAR(W, H) \
|
||||
uint32_t aom_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *a, int a_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *b, int b_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint8_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint8_t, temp3[H * W]); \
|
||||
\
|
||||
aom_var_filter_block2d_bil_first_pass_c(a, fdata3, a_stride, 1, H + 1, W, \
|
||||
bilinear_filters_2t[xoffset]); \
|
||||
aom_var_filter_block2d_bil_second_pass_c(fdata3, temp2, W, W, H, W, \
|
||||
bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_comp_avg_pred(temp3, second_pred, W, H, temp2, W); \
|
||||
\
|
||||
return aom_variance##W##x##H##_c(temp3, W, b, b_stride, sse); \
|
||||
} \
|
||||
uint32_t aom_dist_wtd_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *a, int a_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *b, int b_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint8_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint8_t, temp3[H * W]); \
|
||||
\
|
||||
aom_var_filter_block2d_bil_first_pass_c(a, fdata3, a_stride, 1, H + 1, W, \
|
||||
bilinear_filters_2t[xoffset]); \
|
||||
aom_var_filter_block2d_bil_second_pass_c(fdata3, temp2, W, W, H, W, \
|
||||
bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_dist_wtd_comp_avg_pred(temp3, second_pred, W, H, temp2, W, jcp_param); \
|
||||
\
|
||||
return aom_variance##W##x##H(temp3, W, b, b_stride, sse); \
|
||||
}
|
||||
|
||||
/* Identical to the variance call except it takes an additional parameter, sum,
|
||||
|
|
@ -291,7 +291,7 @@ void aom_upsampled_pred_c(MACROBLOCKD *xd, const AV1_COMMON *const cm,
|
|||
const int ref_num = 0;
|
||||
const int is_intrabc = is_intrabc_block(mi);
|
||||
const struct scale_factors *const sf =
|
||||
is_intrabc ? &cm->sf_identity : &xd->block_refs[ref_num]->sf;
|
||||
is_intrabc ? &cm->sf_identity : xd->block_ref_scale_factors[ref_num];
|
||||
const int is_scaled = av1_is_scaled(sf);
|
||||
|
||||
if (is_scaled) {
|
||||
|
|
@ -368,10 +368,7 @@ void aom_upsampled_pred_c(MACROBLOCKD *xd, const AV1_COMMON *const cm,
|
|||
}
|
||||
}
|
||||
|
||||
const InterpFilterParams *filter =
|
||||
(subpel_search == 1)
|
||||
? av1_get_4tap_interp_filter_params(EIGHTTAP_REGULAR)
|
||||
: av1_get_interp_filter_params_with_block_size(EIGHTTAP_REGULAR, 8);
|
||||
const InterpFilterParams *filter = av1_get_filter(subpel_search);
|
||||
|
||||
if (!subpel_x_q3 && !subpel_y_q3) {
|
||||
for (int i = 0; i < height; i++) {
|
||||
|
|
@ -427,9 +424,10 @@ void aom_comp_avg_upsampled_pred_c(MACROBLOCKD *xd, const AV1_COMMON *const cm,
|
|||
}
|
||||
}
|
||||
|
||||
void aom_jnt_comp_avg_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width,
|
||||
int height, const uint8_t *ref, int ref_stride,
|
||||
const JNT_COMP_PARAMS *jcp_param) {
|
||||
void aom_dist_wtd_comp_avg_pred_c(uint8_t *comp_pred, const uint8_t *pred,
|
||||
int width, int height, const uint8_t *ref,
|
||||
int ref_stride,
|
||||
const DIST_WTD_COMP_PARAMS *jcp_param) {
|
||||
int i, j;
|
||||
const int fwd_offset = jcp_param->fwd_offset;
|
||||
const int bck_offset = jcp_param->bck_offset;
|
||||
|
|
@ -446,11 +444,11 @@ void aom_jnt_comp_avg_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width,
|
|||
}
|
||||
}
|
||||
|
||||
void aom_jnt_comp_avg_upsampled_pred_c(
|
||||
void aom_dist_wtd_comp_avg_upsampled_pred_c(
|
||||
MACROBLOCKD *xd, const AV1_COMMON *const cm, int mi_row, int mi_col,
|
||||
const MV *const mv, uint8_t *comp_pred, const uint8_t *pred, int width,
|
||||
int height, int subpel_x_q3, int subpel_y_q3, const uint8_t *ref,
|
||||
int ref_stride, const JNT_COMP_PARAMS *jcp_param, int subpel_search) {
|
||||
int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param, int subpel_search) {
|
||||
int i, j;
|
||||
const int fwd_offset = jcp_param->fwd_offset;
|
||||
const int bck_offset = jcp_param->bck_offset;
|
||||
|
|
@ -691,125 +689,128 @@ void aom_highbd_var_filter_block2d_bil_second_pass(
|
|||
dst, dst_stride, sse); \
|
||||
}
|
||||
|
||||
#define HIGHBD_SUBPIX_AVG_VAR(W, H) \
|
||||
uint32_t aom_highbd_8_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *src, int src_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *dst, int dst_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint16_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \
|
||||
\
|
||||
aom_highbd_var_filter_block2d_bil_first_pass( \
|
||||
src, fdata3, src_stride, 1, H + 1, W, bilinear_filters_2t[xoffset]); \
|
||||
aom_highbd_var_filter_block2d_bil_second_pass( \
|
||||
fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_highbd_comp_avg_pred_c(CONVERT_TO_BYTEPTR(temp3), second_pred, W, H, \
|
||||
CONVERT_TO_BYTEPTR(temp2), W); \
|
||||
\
|
||||
return aom_highbd_8_variance##W##x##H##_c(CONVERT_TO_BYTEPTR(temp3), W, \
|
||||
dst, dst_stride, sse); \
|
||||
} \
|
||||
\
|
||||
uint32_t aom_highbd_10_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *src, int src_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *dst, int dst_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint16_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \
|
||||
\
|
||||
aom_highbd_var_filter_block2d_bil_first_pass( \
|
||||
src, fdata3, src_stride, 1, H + 1, W, bilinear_filters_2t[xoffset]); \
|
||||
aom_highbd_var_filter_block2d_bil_second_pass( \
|
||||
fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_highbd_comp_avg_pred_c(CONVERT_TO_BYTEPTR(temp3), second_pred, W, H, \
|
||||
CONVERT_TO_BYTEPTR(temp2), W); \
|
||||
\
|
||||
return aom_highbd_10_variance##W##x##H##_c(CONVERT_TO_BYTEPTR(temp3), W, \
|
||||
dst, dst_stride, sse); \
|
||||
} \
|
||||
\
|
||||
uint32_t aom_highbd_12_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *src, int src_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *dst, int dst_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint16_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \
|
||||
\
|
||||
aom_highbd_var_filter_block2d_bil_first_pass( \
|
||||
src, fdata3, src_stride, 1, H + 1, W, bilinear_filters_2t[xoffset]); \
|
||||
aom_highbd_var_filter_block2d_bil_second_pass( \
|
||||
fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_highbd_comp_avg_pred_c(CONVERT_TO_BYTEPTR(temp3), second_pred, W, H, \
|
||||
CONVERT_TO_BYTEPTR(temp2), W); \
|
||||
\
|
||||
return aom_highbd_12_variance##W##x##H##_c(CONVERT_TO_BYTEPTR(temp3), W, \
|
||||
dst, dst_stride, sse); \
|
||||
} \
|
||||
\
|
||||
uint32_t aom_highbd_8_jnt_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *src, int src_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *dst, int dst_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred, const JNT_COMP_PARAMS *jcp_param) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint16_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \
|
||||
\
|
||||
aom_highbd_var_filter_block2d_bil_first_pass( \
|
||||
src, fdata3, src_stride, 1, H + 1, W, bilinear_filters_2t[xoffset]); \
|
||||
aom_highbd_var_filter_block2d_bil_second_pass( \
|
||||
fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_highbd_jnt_comp_avg_pred(CONVERT_TO_BYTEPTR(temp3), second_pred, W, H, \
|
||||
CONVERT_TO_BYTEPTR(temp2), W, jcp_param); \
|
||||
\
|
||||
return aom_highbd_8_variance##W##x##H(CONVERT_TO_BYTEPTR(temp3), W, dst, \
|
||||
dst_stride, sse); \
|
||||
} \
|
||||
\
|
||||
uint32_t aom_highbd_10_jnt_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *src, int src_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *dst, int dst_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred, const JNT_COMP_PARAMS *jcp_param) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint16_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \
|
||||
\
|
||||
aom_highbd_var_filter_block2d_bil_first_pass( \
|
||||
src, fdata3, src_stride, 1, H + 1, W, bilinear_filters_2t[xoffset]); \
|
||||
aom_highbd_var_filter_block2d_bil_second_pass( \
|
||||
fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_highbd_jnt_comp_avg_pred(CONVERT_TO_BYTEPTR(temp3), second_pred, W, H, \
|
||||
CONVERT_TO_BYTEPTR(temp2), W, jcp_param); \
|
||||
\
|
||||
return aom_highbd_10_variance##W##x##H(CONVERT_TO_BYTEPTR(temp3), W, dst, \
|
||||
dst_stride, sse); \
|
||||
} \
|
||||
\
|
||||
uint32_t aom_highbd_12_jnt_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *src, int src_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *dst, int dst_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred, const JNT_COMP_PARAMS *jcp_param) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint16_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \
|
||||
\
|
||||
aom_highbd_var_filter_block2d_bil_first_pass( \
|
||||
src, fdata3, src_stride, 1, H + 1, W, bilinear_filters_2t[xoffset]); \
|
||||
aom_highbd_var_filter_block2d_bil_second_pass( \
|
||||
fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_highbd_jnt_comp_avg_pred(CONVERT_TO_BYTEPTR(temp3), second_pred, W, H, \
|
||||
CONVERT_TO_BYTEPTR(temp2), W, jcp_param); \
|
||||
\
|
||||
return aom_highbd_12_variance##W##x##H(CONVERT_TO_BYTEPTR(temp3), W, dst, \
|
||||
dst_stride, sse); \
|
||||
#define HIGHBD_SUBPIX_AVG_VAR(W, H) \
|
||||
uint32_t aom_highbd_8_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *src, int src_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *dst, int dst_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint16_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \
|
||||
\
|
||||
aom_highbd_var_filter_block2d_bil_first_pass( \
|
||||
src, fdata3, src_stride, 1, H + 1, W, bilinear_filters_2t[xoffset]); \
|
||||
aom_highbd_var_filter_block2d_bil_second_pass( \
|
||||
fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_highbd_comp_avg_pred_c(CONVERT_TO_BYTEPTR(temp3), second_pred, W, H, \
|
||||
CONVERT_TO_BYTEPTR(temp2), W); \
|
||||
\
|
||||
return aom_highbd_8_variance##W##x##H##_c(CONVERT_TO_BYTEPTR(temp3), W, \
|
||||
dst, dst_stride, sse); \
|
||||
} \
|
||||
\
|
||||
uint32_t aom_highbd_10_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *src, int src_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *dst, int dst_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint16_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \
|
||||
\
|
||||
aom_highbd_var_filter_block2d_bil_first_pass( \
|
||||
src, fdata3, src_stride, 1, H + 1, W, bilinear_filters_2t[xoffset]); \
|
||||
aom_highbd_var_filter_block2d_bil_second_pass( \
|
||||
fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_highbd_comp_avg_pred_c(CONVERT_TO_BYTEPTR(temp3), second_pred, W, H, \
|
||||
CONVERT_TO_BYTEPTR(temp2), W); \
|
||||
\
|
||||
return aom_highbd_10_variance##W##x##H##_c(CONVERT_TO_BYTEPTR(temp3), W, \
|
||||
dst, dst_stride, sse); \
|
||||
} \
|
||||
\
|
||||
uint32_t aom_highbd_12_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *src, int src_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *dst, int dst_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint16_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \
|
||||
\
|
||||
aom_highbd_var_filter_block2d_bil_first_pass( \
|
||||
src, fdata3, src_stride, 1, H + 1, W, bilinear_filters_2t[xoffset]); \
|
||||
aom_highbd_var_filter_block2d_bil_second_pass( \
|
||||
fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_highbd_comp_avg_pred_c(CONVERT_TO_BYTEPTR(temp3), second_pred, W, H, \
|
||||
CONVERT_TO_BYTEPTR(temp2), W); \
|
||||
\
|
||||
return aom_highbd_12_variance##W##x##H##_c(CONVERT_TO_BYTEPTR(temp3), W, \
|
||||
dst, dst_stride, sse); \
|
||||
} \
|
||||
\
|
||||
uint32_t aom_highbd_8_dist_wtd_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *src, int src_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *dst, int dst_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint16_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \
|
||||
\
|
||||
aom_highbd_var_filter_block2d_bil_first_pass( \
|
||||
src, fdata3, src_stride, 1, H + 1, W, bilinear_filters_2t[xoffset]); \
|
||||
aom_highbd_var_filter_block2d_bil_second_pass( \
|
||||
fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_highbd_dist_wtd_comp_avg_pred(CONVERT_TO_BYTEPTR(temp3), second_pred, \
|
||||
W, H, CONVERT_TO_BYTEPTR(temp2), W, \
|
||||
jcp_param); \
|
||||
\
|
||||
return aom_highbd_8_variance##W##x##H(CONVERT_TO_BYTEPTR(temp3), W, dst, \
|
||||
dst_stride, sse); \
|
||||
} \
|
||||
\
|
||||
uint32_t aom_highbd_10_dist_wtd_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *src, int src_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *dst, int dst_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint16_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \
|
||||
\
|
||||
aom_highbd_var_filter_block2d_bil_first_pass( \
|
||||
src, fdata3, src_stride, 1, H + 1, W, bilinear_filters_2t[xoffset]); \
|
||||
aom_highbd_var_filter_block2d_bil_second_pass( \
|
||||
fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_highbd_dist_wtd_comp_avg_pred(CONVERT_TO_BYTEPTR(temp3), second_pred, \
|
||||
W, H, CONVERT_TO_BYTEPTR(temp2), W, \
|
||||
jcp_param); \
|
||||
\
|
||||
return aom_highbd_10_variance##W##x##H(CONVERT_TO_BYTEPTR(temp3), W, dst, \
|
||||
dst_stride, sse); \
|
||||
} \
|
||||
\
|
||||
uint32_t aom_highbd_12_dist_wtd_sub_pixel_avg_variance##W##x##H##_c( \
|
||||
const uint8_t *src, int src_stride, int xoffset, int yoffset, \
|
||||
const uint8_t *dst, int dst_stride, uint32_t *sse, \
|
||||
const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param) { \
|
||||
uint16_t fdata3[(H + 1) * W]; \
|
||||
uint16_t temp2[H * W]; \
|
||||
DECLARE_ALIGNED(16, uint16_t, temp3[H * W]); \
|
||||
\
|
||||
aom_highbd_var_filter_block2d_bil_first_pass( \
|
||||
src, fdata3, src_stride, 1, H + 1, W, bilinear_filters_2t[xoffset]); \
|
||||
aom_highbd_var_filter_block2d_bil_second_pass( \
|
||||
fdata3, temp2, W, W, H, W, bilinear_filters_2t[yoffset]); \
|
||||
\
|
||||
aom_highbd_dist_wtd_comp_avg_pred(CONVERT_TO_BYTEPTR(temp3), second_pred, \
|
||||
W, H, CONVERT_TO_BYTEPTR(temp2), W, \
|
||||
jcp_param); \
|
||||
\
|
||||
return aom_highbd_12_variance##W##x##H(CONVERT_TO_BYTEPTR(temp3), W, dst, \
|
||||
dst_stride, sse); \
|
||||
}
|
||||
|
||||
/* All three forms of the variance are available in the same sizes. */
|
||||
|
|
@ -883,7 +884,7 @@ void aom_highbd_upsampled_pred_c(MACROBLOCKD *xd,
|
|||
const int ref_num = 0;
|
||||
const int is_intrabc = is_intrabc_block(mi);
|
||||
const struct scale_factors *const sf =
|
||||
is_intrabc ? &cm->sf_identity : &xd->block_refs[ref_num]->sf;
|
||||
is_intrabc ? &cm->sf_identity : xd->block_ref_scale_factors[ref_num];
|
||||
const int is_scaled = av1_is_scaled(sf);
|
||||
|
||||
if (is_scaled) {
|
||||
|
|
@ -959,10 +960,7 @@ void aom_highbd_upsampled_pred_c(MACROBLOCKD *xd,
|
|||
}
|
||||
}
|
||||
|
||||
const InterpFilterParams *filter =
|
||||
(subpel_search == 1)
|
||||
? av1_get_4tap_interp_filter_params(EIGHTTAP_REGULAR)
|
||||
: av1_get_interp_filter_params_with_block_size(EIGHTTAP_REGULAR, 8);
|
||||
const InterpFilterParams *filter = av1_get_filter(subpel_search);
|
||||
|
||||
if (!subpel_x_q3 && !subpel_y_q3) {
|
||||
const uint16_t *ref = CONVERT_TO_SHORTPTR(ref8);
|
||||
|
|
@ -975,13 +973,13 @@ void aom_highbd_upsampled_pred_c(MACROBLOCKD *xd,
|
|||
} else if (!subpel_y_q3) {
|
||||
const int16_t *const kernel =
|
||||
av1_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1);
|
||||
aom_highbd_convolve8_horiz(ref8, ref_stride, comp_pred8, width, kernel, 16,
|
||||
NULL, -1, width, height, bd);
|
||||
aom_highbd_convolve8_horiz_c(ref8, ref_stride, comp_pred8, width, kernel,
|
||||
16, NULL, -1, width, height, bd);
|
||||
} else if (!subpel_x_q3) {
|
||||
const int16_t *const kernel =
|
||||
av1_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1);
|
||||
aom_highbd_convolve8_vert(ref8, ref_stride, comp_pred8, width, NULL, -1,
|
||||
kernel, 16, width, height, bd);
|
||||
aom_highbd_convolve8_vert_c(ref8, ref_stride, comp_pred8, width, NULL, -1,
|
||||
kernel, 16, width, height, bd);
|
||||
} else {
|
||||
DECLARE_ALIGNED(16, uint16_t,
|
||||
temp[((MAX_SB_SIZE + 16) + 16) * MAX_SB_SIZE]);
|
||||
|
|
@ -992,11 +990,11 @@ void aom_highbd_upsampled_pred_c(MACROBLOCKD *xd,
|
|||
const int 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(
|
||||
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, comp_pred8, width, NULL, -1, kernel_y, 16, width, height,
|
||||
bd);
|
||||
|
|
@ -1024,10 +1022,10 @@ void aom_highbd_comp_avg_upsampled_pred_c(
|
|||
}
|
||||
}
|
||||
|
||||
void aom_highbd_jnt_comp_avg_pred_c(uint8_t *comp_pred8, const uint8_t *pred8,
|
||||
int width, int height, const uint8_t *ref8,
|
||||
int ref_stride,
|
||||
const JNT_COMP_PARAMS *jcp_param) {
|
||||
void aom_highbd_dist_wtd_comp_avg_pred_c(
|
||||
uint8_t *comp_pred8, const uint8_t *pred8, int width, int height,
|
||||
const uint8_t *ref8, int ref_stride,
|
||||
const DIST_WTD_COMP_PARAMS *jcp_param) {
|
||||
int i, j;
|
||||
const int fwd_offset = jcp_param->fwd_offset;
|
||||
const int bck_offset = jcp_param->bck_offset;
|
||||
|
|
@ -1047,20 +1045,20 @@ void aom_highbd_jnt_comp_avg_pred_c(uint8_t *comp_pred8, const uint8_t *pred8,
|
|||
}
|
||||
}
|
||||
|
||||
void aom_highbd_jnt_comp_avg_upsampled_pred_c(
|
||||
void aom_highbd_dist_wtd_comp_avg_upsampled_pred_c(
|
||||
MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col,
|
||||
const MV *const mv, uint8_t *comp_pred8, const uint8_t *pred8, int width,
|
||||
int height, int subpel_x_q3, int subpel_y_q3, const uint8_t *ref8,
|
||||
int ref_stride, int bd, const JNT_COMP_PARAMS *jcp_param,
|
||||
int ref_stride, int bd, const DIST_WTD_COMP_PARAMS *jcp_param,
|
||||
int subpel_search) {
|
||||
int i, j;
|
||||
const int fwd_offset = jcp_param->fwd_offset;
|
||||
const int bck_offset = jcp_param->bck_offset;
|
||||
const uint16_t *pred = CONVERT_TO_SHORTPTR(pred8);
|
||||
uint16_t *comp_pred = CONVERT_TO_SHORTPTR(comp_pred8);
|
||||
aom_highbd_upsampled_pred(xd, cm, mi_row, mi_col, mv, comp_pred8, width,
|
||||
height, subpel_x_q3, subpel_y_q3, ref8, ref_stride,
|
||||
bd, subpel_search);
|
||||
aom_highbd_upsampled_pred_c(xd, cm, mi_row, mi_col, mv, comp_pred8, width,
|
||||
height, subpel_x_q3, subpel_y_q3, ref8,
|
||||
ref_stride, bd, subpel_search);
|
||||
|
||||
for (i = 0; i < height; i++) {
|
||||
for (j = 0; j < width; j++) {
|
||||
|
|
|
|||
15
third_party/aom/aom_dsp/variance.h
vendored
15
third_party/aom/aom_dsp/variance.h
vendored
|
|
@ -50,15 +50,14 @@ typedef unsigned int (*aom_subp_avg_variance_fn_t)(
|
|||
const uint8_t *a, int a_stride, int xoffset, int yoffset, const uint8_t *b,
|
||||
int b_stride, unsigned int *sse, const uint8_t *second_pred);
|
||||
|
||||
typedef unsigned int (*aom_jnt_sad_avg_fn_t)(const uint8_t *a, int a_stride,
|
||||
const uint8_t *b, int b_stride,
|
||||
const uint8_t *second_pred,
|
||||
const JNT_COMP_PARAMS *jcp_param);
|
||||
typedef unsigned int (*aom_dist_wtd_sad_avg_fn_t)(
|
||||
const uint8_t *a, int a_stride, const uint8_t *b, int b_stride,
|
||||
const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param);
|
||||
|
||||
typedef unsigned int (*aom_jnt_subp_avg_variance_fn_t)(
|
||||
typedef unsigned int (*aom_dist_wtd_subp_avg_variance_fn_t)(
|
||||
const uint8_t *a, int a_stride, int xoffset, int yoffset, const uint8_t *b,
|
||||
int b_stride, unsigned int *sse, const uint8_t *second_pred,
|
||||
const JNT_COMP_PARAMS *jcp_param);
|
||||
const DIST_WTD_COMP_PARAMS *jcp_param);
|
||||
|
||||
typedef unsigned int (*aom_masked_sad_fn_t)(const uint8_t *src, int src_stride,
|
||||
const uint8_t *ref, int ref_stride,
|
||||
|
|
@ -101,8 +100,8 @@ typedef struct aom_variance_vtable {
|
|||
aom_obmc_sad_fn_t osdf;
|
||||
aom_obmc_variance_fn_t ovf;
|
||||
aom_obmc_subpixvariance_fn_t osvf;
|
||||
aom_jnt_sad_avg_fn_t jsdaf;
|
||||
aom_jnt_subp_avg_variance_fn_t jsvaf;
|
||||
aom_dist_wtd_sad_avg_fn_t jsdaf;
|
||||
aom_dist_wtd_subp_avg_variance_fn_t jsvaf;
|
||||
} aom_variance_fn_ptr_t;
|
||||
|
||||
void aom_highbd_var_filter_block2d_bil_first_pass(
|
||||
|
|
|
|||
21
third_party/aom/aom_dsp/x86/aom_asm_stubs.c
vendored
21
third_party/aom/aom_dsp/x86/aom_asm_stubs.c
vendored
|
|
@ -21,13 +21,13 @@ filter8_1dfunction aom_filter_block1d8_v8_sse2;
|
|||
filter8_1dfunction aom_filter_block1d8_h8_sse2;
|
||||
filter8_1dfunction aom_filter_block1d4_v8_sse2;
|
||||
filter8_1dfunction aom_filter_block1d4_h8_sse2;
|
||||
filter8_1dfunction aom_filter_block1d16_v4_sse2;
|
||||
filter8_1dfunction aom_filter_block1d16_h4_sse2;
|
||||
|
||||
#define aom_filter_block1d16_h4_sse2 aom_filter_block1d16_h8_sse2
|
||||
#define aom_filter_block1d16_v4_sse2 aom_filter_block1d16_v8_sse2
|
||||
#define aom_filter_block1d8_h4_sse2 aom_filter_block1d8_h8_sse2
|
||||
#define aom_filter_block1d8_v4_sse2 aom_filter_block1d8_v8_sse2
|
||||
#define aom_filter_block1d4_h4_sse2 aom_filter_block1d4_h8_sse2
|
||||
#define aom_filter_block1d4_v4_sse2 aom_filter_block1d4_v8_sse2
|
||||
filter8_1dfunction aom_filter_block1d8_h4_sse2;
|
||||
filter8_1dfunction aom_filter_block1d8_v4_sse2;
|
||||
filter8_1dfunction aom_filter_block1d4_h4_sse2;
|
||||
filter8_1dfunction aom_filter_block1d4_v4_sse2;
|
||||
|
||||
filter8_1dfunction aom_filter_block1d16_v2_sse2;
|
||||
filter8_1dfunction aom_filter_block1d16_h2_sse2;
|
||||
|
|
@ -49,7 +49,6 @@ filter8_1dfunction aom_filter_block1d4_h2_sse2;
|
|||
FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , sse2);
|
||||
FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , sse2);
|
||||
|
||||
#if ARCH_X86_64
|
||||
highbd_filter8_1dfunction aom_highbd_filter_block1d16_v8_sse2;
|
||||
highbd_filter8_1dfunction aom_highbd_filter_block1d16_h8_sse2;
|
||||
highbd_filter8_1dfunction aom_highbd_filter_block1d8_v8_sse2;
|
||||
|
|
@ -57,6 +56,13 @@ highbd_filter8_1dfunction aom_highbd_filter_block1d8_h8_sse2;
|
|||
highbd_filter8_1dfunction aom_highbd_filter_block1d4_v8_sse2;
|
||||
highbd_filter8_1dfunction aom_highbd_filter_block1d4_h8_sse2;
|
||||
|
||||
highbd_filter8_1dfunction aom_highbd_filter_block1d16_v4_sse2;
|
||||
highbd_filter8_1dfunction aom_highbd_filter_block1d16_h4_sse2;
|
||||
highbd_filter8_1dfunction aom_highbd_filter_block1d8_v4_sse2;
|
||||
highbd_filter8_1dfunction aom_highbd_filter_block1d8_h4_sse2;
|
||||
highbd_filter8_1dfunction aom_highbd_filter_block1d4_v4_sse2;
|
||||
highbd_filter8_1dfunction aom_highbd_filter_block1d4_h4_sse2;
|
||||
|
||||
highbd_filter8_1dfunction aom_highbd_filter_block1d16_v2_sse2;
|
||||
highbd_filter8_1dfunction aom_highbd_filter_block1d16_h2_sse2;
|
||||
highbd_filter8_1dfunction aom_highbd_filter_block1d8_v2_sse2;
|
||||
|
|
@ -85,5 +91,4 @@ highbd_filter8_1dfunction aom_highbd_filter_block1d4_h2_sse2;
|
|||
HIGH_FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , sse2);
|
||||
HIGH_FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , sse2);
|
||||
|
||||
#endif // ARCH_X86_64
|
||||
#endif // HAVE_SSE2
|
||||
|
|
|
|||
|
|
@ -67,7 +67,6 @@
|
|||
dec rcx
|
||||
%endm
|
||||
|
||||
%if ARCH_X86_64
|
||||
%macro HIGH_GET_PARAM 0
|
||||
mov rdx, arg(5) ;filter ptr
|
||||
mov rsi, arg(0) ;src_ptr
|
||||
|
|
@ -86,14 +85,17 @@
|
|||
|
||||
mov rdx, 0x00010001
|
||||
movsxd rcx, DWORD PTR arg(6) ;bps
|
||||
movq xmm8, rdx
|
||||
movq xmm3, rdx
|
||||
movq xmm5, rcx
|
||||
pshufd xmm8, xmm8, 0b
|
||||
movdqa xmm1, xmm8
|
||||
psllw xmm8, xmm5
|
||||
psubw xmm8, xmm1 ;max value (for clamping)
|
||||
pshufd xmm3, xmm3, 0b
|
||||
movdqa xmm1, xmm3
|
||||
psllw xmm3, xmm5
|
||||
psubw xmm3, xmm1 ;max value (for clamping)
|
||||
pxor xmm5, xmm5 ;min value (for clamping)
|
||||
|
||||
movdqa max, xmm3
|
||||
movdqa min, xmm5
|
||||
|
||||
movsxd rax, DWORD PTR arg(1) ;pixels_per_line
|
||||
movsxd rdx, DWORD PTR arg(3) ;out_pitch
|
||||
movsxd rcx, DWORD PTR arg(4) ;output_height
|
||||
|
|
@ -113,8 +115,8 @@
|
|||
packssdw xmm0, xmm6 ;pack back to word
|
||||
|
||||
;clamp the values
|
||||
pminsw xmm0, xmm8
|
||||
pmaxsw xmm0, xmm5
|
||||
pminsw xmm0, max
|
||||
pmaxsw xmm0, min
|
||||
|
||||
%if %1
|
||||
movdqu xmm1, [rdi]
|
||||
|
|
@ -128,36 +130,36 @@
|
|||
%endm
|
||||
|
||||
%macro HIGH_APPLY_FILTER_16 1
|
||||
movdqa xmm9, xmm0
|
||||
movdqa xmm5, xmm0
|
||||
movdqa xmm6, xmm2
|
||||
punpckhwd xmm9, xmm1
|
||||
punpckhwd xmm5, xmm1
|
||||
punpckhwd xmm6, xmm3
|
||||
punpcklwd xmm0, xmm1
|
||||
punpcklwd xmm2, xmm3
|
||||
|
||||
pmaddwd xmm9, xmm7
|
||||
pmaddwd xmm5, xmm7
|
||||
pmaddwd xmm6, xmm7
|
||||
pmaddwd xmm0, xmm7
|
||||
pmaddwd xmm2, xmm7
|
||||
|
||||
paddd xmm9, xmm4 ;rounding
|
||||
paddd xmm5, xmm4 ;rounding
|
||||
paddd xmm6, xmm4
|
||||
paddd xmm0, xmm4
|
||||
paddd xmm2, xmm4
|
||||
|
||||
psrad xmm9, 7 ;shift
|
||||
psrad xmm5, 7 ;shift
|
||||
psrad xmm6, 7
|
||||
psrad xmm0, 7
|
||||
psrad xmm2, 7
|
||||
|
||||
packssdw xmm0, xmm9 ;pack back to word
|
||||
packssdw xmm0, xmm5 ;pack back to word
|
||||
packssdw xmm2, xmm6 ;pack back to word
|
||||
|
||||
;clamp the values
|
||||
pminsw xmm0, xmm8
|
||||
pmaxsw xmm0, xmm5
|
||||
pminsw xmm2, xmm8
|
||||
pmaxsw xmm2, xmm5
|
||||
pminsw xmm0, max
|
||||
pmaxsw xmm0, min
|
||||
pminsw xmm2, max
|
||||
pmaxsw xmm2, min
|
||||
|
||||
%if %1
|
||||
movdqu xmm1, [rdi]
|
||||
|
|
@ -172,7 +174,6 @@
|
|||
lea rdi, [rdi + 2*rdx]
|
||||
dec rcx
|
||||
%endm
|
||||
%endif
|
||||
|
||||
SECTION .text
|
||||
|
||||
|
|
@ -200,7 +201,6 @@ sym(aom_highbd_filter_block1d4_v2_sse2):
|
|||
pop rbp
|
||||
ret
|
||||
|
||||
%if ARCH_X86_64
|
||||
global sym(aom_highbd_filter_block1d8_v2_sse2) PRIVATE
|
||||
sym(aom_highbd_filter_block1d8_v2_sse2):
|
||||
push rbp
|
||||
|
|
@ -211,6 +211,11 @@ sym(aom_highbd_filter_block1d8_v2_sse2):
|
|||
push rdi
|
||||
; end prolog
|
||||
|
||||
ALIGN_STACK 16, rax
|
||||
sub rsp, 16 * 2
|
||||
%define max [rsp + 16 * 0]
|
||||
%define min [rsp + 16 * 1]
|
||||
|
||||
HIGH_GET_PARAM
|
||||
.loop:
|
||||
movdqu xmm0, [rsi] ;0
|
||||
|
|
@ -219,6 +224,9 @@ sym(aom_highbd_filter_block1d8_v2_sse2):
|
|||
HIGH_APPLY_FILTER_8 0
|
||||
jnz .loop
|
||||
|
||||
add rsp, 16 * 2
|
||||
pop rsp
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
|
|
@ -237,6 +245,11 @@ sym(aom_highbd_filter_block1d16_v2_sse2):
|
|||
push rdi
|
||||
; end prolog
|
||||
|
||||
ALIGN_STACK 16, rax
|
||||
sub rsp, 16 * 2
|
||||
%define max [rsp + 16 * 0]
|
||||
%define min [rsp + 16 * 1]
|
||||
|
||||
HIGH_GET_PARAM
|
||||
.loop:
|
||||
movdqu xmm0, [rsi] ;0
|
||||
|
|
@ -247,6 +260,9 @@ sym(aom_highbd_filter_block1d16_v2_sse2):
|
|||
HIGH_APPLY_FILTER_16 0
|
||||
jnz .loop
|
||||
|
||||
add rsp, 16 * 2
|
||||
pop rsp
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
|
|
@ -254,7 +270,6 @@ sym(aom_highbd_filter_block1d16_v2_sse2):
|
|||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
%endif
|
||||
|
||||
global sym(aom_highbd_filter_block1d4_h2_sse2) PRIVATE
|
||||
sym(aom_highbd_filter_block1d4_h2_sse2):
|
||||
|
|
@ -281,7 +296,6 @@ sym(aom_highbd_filter_block1d4_h2_sse2):
|
|||
pop rbp
|
||||
ret
|
||||
|
||||
%if ARCH_X86_64
|
||||
global sym(aom_highbd_filter_block1d8_h2_sse2) PRIVATE
|
||||
sym(aom_highbd_filter_block1d8_h2_sse2):
|
||||
push rbp
|
||||
|
|
@ -292,6 +306,11 @@ sym(aom_highbd_filter_block1d8_h2_sse2):
|
|||
push rdi
|
||||
; end prolog
|
||||
|
||||
ALIGN_STACK 16, rax
|
||||
sub rsp, 16 * 2
|
||||
%define max [rsp + 16 * 0]
|
||||
%define min [rsp + 16 * 1]
|
||||
|
||||
HIGH_GET_PARAM
|
||||
.loop:
|
||||
movdqu xmm0, [rsi] ;load src
|
||||
|
|
@ -300,6 +319,9 @@ sym(aom_highbd_filter_block1d8_h2_sse2):
|
|||
HIGH_APPLY_FILTER_8 0
|
||||
jnz .loop
|
||||
|
||||
add rsp, 16 * 2
|
||||
pop rsp
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
|
|
@ -318,6 +340,11 @@ sym(aom_highbd_filter_block1d16_h2_sse2):
|
|||
push rdi
|
||||
; end prolog
|
||||
|
||||
ALIGN_STACK 16, rax
|
||||
sub rsp, 16 * 2
|
||||
%define max [rsp + 16 * 0]
|
||||
%define min [rsp + 16 * 1]
|
||||
|
||||
HIGH_GET_PARAM
|
||||
.loop:
|
||||
movdqu xmm0, [rsi] ;load src
|
||||
|
|
@ -328,6 +355,9 @@ sym(aom_highbd_filter_block1d16_h2_sse2):
|
|||
HIGH_APPLY_FILTER_16 0
|
||||
jnz .loop
|
||||
|
||||
add rsp, 16 * 2
|
||||
pop rsp
|
||||
|
||||
; begin epilog
|
||||
pop rdi
|
||||
pop rsi
|
||||
|
|
@ -335,4 +365,3 @@ sym(aom_highbd_filter_block1d16_h2_sse2):
|
|||
UNSHADOW_ARGS
|
||||
pop rbp
|
||||
ret
|
||||
%endif
|
||||
|
|
|
|||
569
third_party/aom/aom_dsp/x86/aom_subpixel_8t_intrin_sse2.c
vendored
Normal file
569
third_party/aom/aom_dsp/x86/aom_subpixel_8t_intrin_sse2.c
vendored
Normal file
|
|
@ -0,0 +1,569 @@
|
|||
/*
|
||||
* Copyright (c) 2018, 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 <emmintrin.h> // SSE2
|
||||
|
||||
#include "config/aom_dsp_rtcd.h"
|
||||
#include "aom_dsp/x86/convolve.h"
|
||||
#include "aom_ports/mem.h"
|
||||
|
||||
void aom_filter_block1d16_h4_sse2(const uint8_t *src_ptr,
|
||||
ptrdiff_t src_pixels_per_line,
|
||||
uint8_t *output_ptr, ptrdiff_t output_pitch,
|
||||
uint32_t output_height,
|
||||
const int16_t *filter) {
|
||||
__m128i filtersReg;
|
||||
__m128i addFilterReg32;
|
||||
__m128i secondFilters, thirdFilters;
|
||||
__m128i srcRegFilt32b1_1, srcRegFilt32b1_2, srcRegFilt32b2_1,
|
||||
srcRegFilt32b2_2;
|
||||
__m128i srcReg32b1, srcReg32b2;
|
||||
unsigned int i;
|
||||
src_ptr -= 3;
|
||||
addFilterReg32 = _mm_set1_epi16(32);
|
||||
filtersReg = _mm_loadu_si128((const __m128i *)filter);
|
||||
filtersReg = _mm_srai_epi16(filtersReg, 1);
|
||||
|
||||
// coeffs 0 1 0 1 2 3 2 3
|
||||
const __m128i tmp_0 = _mm_unpacklo_epi32(filtersReg, filtersReg);
|
||||
// coeffs 4 5 4 5 6 7 6 7
|
||||
const __m128i tmp_1 = _mm_unpackhi_epi32(filtersReg, filtersReg);
|
||||
|
||||
secondFilters = _mm_unpackhi_epi64(tmp_0, tmp_0); // coeffs 2 3 2 3 2 3 2 3
|
||||
thirdFilters = _mm_unpacklo_epi64(tmp_1, tmp_1); // coeffs 4 5 4 5 4 5 4 5
|
||||
|
||||
for (i = output_height; i > 0; i -= 1) {
|
||||
srcReg32b1 = _mm_loadu_si128((const __m128i *)src_ptr);
|
||||
|
||||
__m128i ss_2 = _mm_srli_si128(srcReg32b1, 2);
|
||||
__m128i ss_4 = _mm_srli_si128(srcReg32b1, 4);
|
||||
__m128i ss_1_1 = _mm_unpacklo_epi8(ss_2, _mm_setzero_si128());
|
||||
__m128i ss_2_1 = _mm_unpacklo_epi8(ss_4, _mm_setzero_si128());
|
||||
__m128i d1 = _mm_madd_epi16(ss_1_1, secondFilters);
|
||||
__m128i d2 = _mm_madd_epi16(ss_2_1, thirdFilters);
|
||||
srcRegFilt32b1_1 = _mm_add_epi32(d1, d2);
|
||||
|
||||
__m128i ss_1 = _mm_srli_si128(srcReg32b1, 3);
|
||||
__m128i ss_3 = _mm_srli_si128(srcReg32b1, 5);
|
||||
__m128i ss_1_2 = _mm_unpacklo_epi8(ss_1, _mm_setzero_si128());
|
||||
__m128i ss_2_2 = _mm_unpacklo_epi8(ss_3, _mm_setzero_si128());
|
||||
d1 = _mm_madd_epi16(ss_1_2, secondFilters);
|
||||
d2 = _mm_madd_epi16(ss_2_2, thirdFilters);
|
||||
srcRegFilt32b1_2 = _mm_add_epi32(d1, d2);
|
||||
|
||||
__m128i res_lo = _mm_unpacklo_epi32(srcRegFilt32b1_1, srcRegFilt32b1_2);
|
||||
__m128i res_hi = _mm_unpackhi_epi32(srcRegFilt32b1_1, srcRegFilt32b1_2);
|
||||
srcRegFilt32b1_1 = _mm_packs_epi32(res_lo, res_hi);
|
||||
|
||||
// reading stride of the next 16 bytes
|
||||
// (part of it was being read by earlier read)
|
||||
srcReg32b2 = _mm_loadu_si128((const __m128i *)(src_ptr + 8));
|
||||
|
||||
ss_2 = _mm_srli_si128(srcReg32b2, 2);
|
||||
ss_4 = _mm_srli_si128(srcReg32b2, 4);
|
||||
ss_1_1 = _mm_unpacklo_epi8(ss_2, _mm_setzero_si128());
|
||||
ss_2_1 = _mm_unpacklo_epi8(ss_4, _mm_setzero_si128());
|
||||
d1 = _mm_madd_epi16(ss_1_1, secondFilters);
|
||||
d2 = _mm_madd_epi16(ss_2_1, thirdFilters);
|
||||
srcRegFilt32b2_1 = _mm_add_epi32(d1, d2);
|
||||
|
||||
ss_1 = _mm_srli_si128(srcReg32b2, 3);
|
||||
ss_3 = _mm_srli_si128(srcReg32b2, 5);
|
||||
ss_1_2 = _mm_unpacklo_epi8(ss_1, _mm_setzero_si128());
|
||||
ss_2_2 = _mm_unpacklo_epi8(ss_3, _mm_setzero_si128());
|
||||
d1 = _mm_madd_epi16(ss_1_2, secondFilters);
|
||||
d2 = _mm_madd_epi16(ss_2_2, thirdFilters);
|
||||
srcRegFilt32b2_2 = _mm_add_epi32(d1, d2);
|
||||
|
||||
res_lo = _mm_unpacklo_epi32(srcRegFilt32b2_1, srcRegFilt32b2_2);
|
||||
res_hi = _mm_unpackhi_epi32(srcRegFilt32b2_1, srcRegFilt32b2_2);
|
||||
srcRegFilt32b2_1 = _mm_packs_epi32(res_lo, res_hi);
|
||||
|
||||
// shift by 6 bit each 16 bit
|
||||
srcRegFilt32b1_1 = _mm_adds_epi16(srcRegFilt32b1_1, addFilterReg32);
|
||||
srcRegFilt32b2_1 = _mm_adds_epi16(srcRegFilt32b2_1, addFilterReg32);
|
||||
srcRegFilt32b1_1 = _mm_srai_epi16(srcRegFilt32b1_1, 6);
|
||||
srcRegFilt32b2_1 = _mm_srai_epi16(srcRegFilt32b2_1, 6);
|
||||
|
||||
// shrink to 8 bit each 16 bits, the first lane contain the first
|
||||
// convolve result and the second lane contain the second convolve result
|
||||
srcRegFilt32b1_1 = _mm_packus_epi16(srcRegFilt32b1_1, srcRegFilt32b2_1);
|
||||
|
||||
src_ptr += src_pixels_per_line;
|
||||
|
||||
_mm_store_si128((__m128i *)output_ptr, srcRegFilt32b1_1);
|
||||
|
||||
output_ptr += output_pitch;
|
||||
}
|
||||
}
|
||||
|
||||
void aom_filter_block1d16_v4_sse2(const uint8_t *src_ptr, ptrdiff_t src_pitch,
|
||||
uint8_t *output_ptr, ptrdiff_t out_pitch,
|
||||
uint32_t output_height,
|
||||
const int16_t *filter) {
|
||||
__m128i filtersReg;
|
||||
__m128i srcReg2, srcReg3, srcReg4, srcReg5, srcReg6;
|
||||
__m128i srcReg23_lo, srcReg23_hi, srcReg34_lo, srcReg34_hi;
|
||||
__m128i srcReg45_lo, srcReg45_hi, srcReg56_lo, srcReg56_hi;
|
||||
__m128i resReg23_lo, resReg34_lo, resReg45_lo, resReg56_lo;
|
||||
__m128i resReg23_hi, resReg34_hi, resReg45_hi, resReg56_hi;
|
||||
__m128i resReg23_45_lo, resReg34_56_lo, resReg23_45_hi, resReg34_56_hi;
|
||||
__m128i resReg23_45, resReg34_56;
|
||||
__m128i addFilterReg32, secondFilters, thirdFilters;
|
||||
__m128i tmp_0, tmp_1;
|
||||
unsigned int i;
|
||||
ptrdiff_t src_stride, dst_stride;
|
||||
|
||||
addFilterReg32 = _mm_set1_epi16(32);
|
||||
filtersReg = _mm_loadu_si128((const __m128i *)filter);
|
||||
filtersReg = _mm_srai_epi16(filtersReg, 1);
|
||||
|
||||
// coeffs 0 1 0 1 2 3 2 3
|
||||
const __m128i tmp0 = _mm_unpacklo_epi32(filtersReg, filtersReg);
|
||||
// coeffs 4 5 4 5 6 7 6 7
|
||||
const __m128i tmp1 = _mm_unpackhi_epi32(filtersReg, filtersReg);
|
||||
|
||||
secondFilters = _mm_unpackhi_epi64(tmp0, tmp0); // coeffs 2 3 2 3 2 3 2 3
|
||||
thirdFilters = _mm_unpacklo_epi64(tmp1, tmp1); // coeffs 4 5 4 5 4 5 4 5
|
||||
|
||||
// multiply the size of the source and destination stride by two
|
||||
src_stride = src_pitch << 1;
|
||||
dst_stride = out_pitch << 1;
|
||||
|
||||
srcReg2 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 2));
|
||||
srcReg3 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 3));
|
||||
srcReg23_lo = _mm_unpacklo_epi8(srcReg2, srcReg3);
|
||||
srcReg23_hi = _mm_unpackhi_epi8(srcReg2, srcReg3);
|
||||
__m128i resReg23_lo_1 = _mm_unpacklo_epi8(srcReg23_lo, _mm_setzero_si128());
|
||||
__m128i resReg23_lo_2 = _mm_unpackhi_epi8(srcReg23_lo, _mm_setzero_si128());
|
||||
__m128i resReg23_hi_1 = _mm_unpacklo_epi8(srcReg23_hi, _mm_setzero_si128());
|
||||
__m128i resReg23_hi_2 = _mm_unpackhi_epi8(srcReg23_hi, _mm_setzero_si128());
|
||||
|
||||
srcReg4 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 4));
|
||||
srcReg34_lo = _mm_unpacklo_epi8(srcReg3, srcReg4);
|
||||
srcReg34_hi = _mm_unpackhi_epi8(srcReg3, srcReg4);
|
||||
__m128i resReg34_lo_1 = _mm_unpacklo_epi8(srcReg34_lo, _mm_setzero_si128());
|
||||
__m128i resReg34_lo_2 = _mm_unpackhi_epi8(srcReg34_lo, _mm_setzero_si128());
|
||||
__m128i resReg34_hi_1 = _mm_unpacklo_epi8(srcReg34_hi, _mm_setzero_si128());
|
||||
__m128i resReg34_hi_2 = _mm_unpackhi_epi8(srcReg34_hi, _mm_setzero_si128());
|
||||
|
||||
for (i = output_height; i > 1; i -= 2) {
|
||||
srcReg5 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 5));
|
||||
|
||||
srcReg45_lo = _mm_unpacklo_epi8(srcReg4, srcReg5);
|
||||
srcReg45_hi = _mm_unpackhi_epi8(srcReg4, srcReg5);
|
||||
|
||||
srcReg6 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 6));
|
||||
|
||||
srcReg56_lo = _mm_unpacklo_epi8(srcReg5, srcReg6);
|
||||
srcReg56_hi = _mm_unpackhi_epi8(srcReg5, srcReg6);
|
||||
|
||||
// multiply 2 adjacent elements with the filter and add the result
|
||||
|
||||
tmp_0 = _mm_madd_epi16(resReg23_lo_1, secondFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg23_lo_2, secondFilters);
|
||||
resReg23_lo = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
tmp_0 = _mm_madd_epi16(resReg34_lo_1, secondFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg34_lo_2, secondFilters);
|
||||
resReg34_lo = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
__m128i resReg45_lo_1 = _mm_unpacklo_epi8(srcReg45_lo, _mm_setzero_si128());
|
||||
__m128i resReg45_lo_2 = _mm_unpackhi_epi8(srcReg45_lo, _mm_setzero_si128());
|
||||
tmp_0 = _mm_madd_epi16(resReg45_lo_1, thirdFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg45_lo_2, thirdFilters);
|
||||
resReg45_lo = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
__m128i resReg56_lo_1 = _mm_unpacklo_epi8(srcReg56_lo, _mm_setzero_si128());
|
||||
__m128i resReg56_lo_2 = _mm_unpackhi_epi8(srcReg56_lo, _mm_setzero_si128());
|
||||
tmp_0 = _mm_madd_epi16(resReg56_lo_1, thirdFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg56_lo_2, thirdFilters);
|
||||
resReg56_lo = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
// add and saturate the results together
|
||||
resReg23_45_lo = _mm_adds_epi16(resReg23_lo, resReg45_lo);
|
||||
resReg34_56_lo = _mm_adds_epi16(resReg34_lo, resReg56_lo);
|
||||
|
||||
// multiply 2 adjacent elements with the filter and add the result
|
||||
|
||||
tmp_0 = _mm_madd_epi16(resReg23_hi_1, secondFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg23_hi_2, secondFilters);
|
||||
resReg23_hi = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
tmp_0 = _mm_madd_epi16(resReg34_hi_1, secondFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg34_hi_2, secondFilters);
|
||||
resReg34_hi = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
__m128i resReg45_hi_1 = _mm_unpacklo_epi8(srcReg45_hi, _mm_setzero_si128());
|
||||
__m128i resReg45_hi_2 = _mm_unpackhi_epi8(srcReg45_hi, _mm_setzero_si128());
|
||||
tmp_0 = _mm_madd_epi16(resReg45_hi_1, thirdFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg45_hi_2, thirdFilters);
|
||||
resReg45_hi = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
__m128i resReg56_hi_1 = _mm_unpacklo_epi8(srcReg56_hi, _mm_setzero_si128());
|
||||
__m128i resReg56_hi_2 = _mm_unpackhi_epi8(srcReg56_hi, _mm_setzero_si128());
|
||||
tmp_0 = _mm_madd_epi16(resReg56_hi_1, thirdFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg56_hi_2, thirdFilters);
|
||||
resReg56_hi = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
// add and saturate the results together
|
||||
resReg23_45_hi = _mm_adds_epi16(resReg23_hi, resReg45_hi);
|
||||
resReg34_56_hi = _mm_adds_epi16(resReg34_hi, resReg56_hi);
|
||||
|
||||
// shift by 6 bit each 16 bit
|
||||
resReg23_45_lo = _mm_adds_epi16(resReg23_45_lo, addFilterReg32);
|
||||
resReg34_56_lo = _mm_adds_epi16(resReg34_56_lo, addFilterReg32);
|
||||
resReg23_45_hi = _mm_adds_epi16(resReg23_45_hi, addFilterReg32);
|
||||
resReg34_56_hi = _mm_adds_epi16(resReg34_56_hi, addFilterReg32);
|
||||
resReg23_45_lo = _mm_srai_epi16(resReg23_45_lo, 6);
|
||||
resReg34_56_lo = _mm_srai_epi16(resReg34_56_lo, 6);
|
||||
resReg23_45_hi = _mm_srai_epi16(resReg23_45_hi, 6);
|
||||
resReg34_56_hi = _mm_srai_epi16(resReg34_56_hi, 6);
|
||||
|
||||
// shrink to 8 bit each 16 bits, the first lane contain the first
|
||||
// convolve result and the second lane contain the second convolve
|
||||
// result
|
||||
resReg23_45 = _mm_packus_epi16(resReg23_45_lo, resReg23_45_hi);
|
||||
resReg34_56 = _mm_packus_epi16(resReg34_56_lo, resReg34_56_hi);
|
||||
|
||||
src_ptr += src_stride;
|
||||
|
||||
_mm_store_si128((__m128i *)output_ptr, (resReg23_45));
|
||||
_mm_store_si128((__m128i *)(output_ptr + out_pitch), (resReg34_56));
|
||||
|
||||
output_ptr += dst_stride;
|
||||
|
||||
// save part of the registers for next strides
|
||||
resReg23_lo_1 = resReg45_lo_1;
|
||||
resReg23_lo_2 = resReg45_lo_2;
|
||||
resReg23_hi_1 = resReg45_hi_1;
|
||||
resReg23_hi_2 = resReg45_hi_2;
|
||||
resReg34_lo_1 = resReg56_lo_1;
|
||||
resReg34_lo_2 = resReg56_lo_2;
|
||||
resReg34_hi_1 = resReg56_hi_1;
|
||||
resReg34_hi_2 = resReg56_hi_2;
|
||||
srcReg4 = srcReg6;
|
||||
}
|
||||
}
|
||||
|
||||
void aom_filter_block1d8_h4_sse2(const uint8_t *src_ptr,
|
||||
ptrdiff_t src_pixels_per_line,
|
||||
uint8_t *output_ptr, ptrdiff_t output_pitch,
|
||||
uint32_t output_height,
|
||||
const int16_t *filter) {
|
||||
__m128i filtersReg;
|
||||
__m128i addFilterReg32;
|
||||
__m128i secondFilters, thirdFilters;
|
||||
__m128i srcRegFilt32b1_1, srcRegFilt32b1_2;
|
||||
__m128i srcReg32b1;
|
||||
unsigned int i;
|
||||
src_ptr -= 3;
|
||||
addFilterReg32 = _mm_set1_epi16(32);
|
||||
filtersReg = _mm_loadu_si128((const __m128i *)filter);
|
||||
filtersReg = _mm_srai_epi16(filtersReg, 1);
|
||||
|
||||
// coeffs 0 1 0 1 2 3 2 3
|
||||
const __m128i tmp_0 = _mm_unpacklo_epi32(filtersReg, filtersReg);
|
||||
// coeffs 4 5 4 5 6 7 6 7
|
||||
const __m128i tmp_1 = _mm_unpackhi_epi32(filtersReg, filtersReg);
|
||||
|
||||
secondFilters = _mm_unpackhi_epi64(tmp_0, tmp_0); // coeffs 2 3 2 3 2 3 2 3
|
||||
thirdFilters = _mm_unpacklo_epi64(tmp_1, tmp_1); // coeffs 4 5 4 5 4 5 4 5
|
||||
|
||||
for (i = output_height; i > 0; i -= 1) {
|
||||
srcReg32b1 = _mm_loadu_si128((const __m128i *)src_ptr);
|
||||
|
||||
__m128i ss_2 = _mm_srli_si128(srcReg32b1, 2);
|
||||
__m128i ss_4 = _mm_srli_si128(srcReg32b1, 4);
|
||||
ss_2 = _mm_unpacklo_epi8(ss_2, _mm_setzero_si128());
|
||||
ss_4 = _mm_unpacklo_epi8(ss_4, _mm_setzero_si128());
|
||||
__m128i d1 = _mm_madd_epi16(ss_2, secondFilters);
|
||||
__m128i d2 = _mm_madd_epi16(ss_4, thirdFilters);
|
||||
srcRegFilt32b1_1 = _mm_add_epi32(d1, d2);
|
||||
|
||||
__m128i ss_3 = _mm_srli_si128(srcReg32b1, 3);
|
||||
__m128i ss_5 = _mm_srli_si128(srcReg32b1, 5);
|
||||
ss_3 = _mm_unpacklo_epi8(ss_3, _mm_setzero_si128());
|
||||
ss_5 = _mm_unpacklo_epi8(ss_5, _mm_setzero_si128());
|
||||
d1 = _mm_madd_epi16(ss_3, secondFilters);
|
||||
d2 = _mm_madd_epi16(ss_5, thirdFilters);
|
||||
srcRegFilt32b1_2 = _mm_add_epi32(d1, d2);
|
||||
|
||||
__m128i res_lo = _mm_unpacklo_epi32(srcRegFilt32b1_1, srcRegFilt32b1_2);
|
||||
__m128i res_hi = _mm_unpackhi_epi32(srcRegFilt32b1_1, srcRegFilt32b1_2);
|
||||
srcRegFilt32b1_1 = _mm_packs_epi32(res_lo, res_hi);
|
||||
|
||||
// shift by 6 bit each 16 bit
|
||||
srcRegFilt32b1_1 = _mm_adds_epi16(srcRegFilt32b1_1, addFilterReg32);
|
||||
srcRegFilt32b1_1 = _mm_srai_epi16(srcRegFilt32b1_1, 6);
|
||||
|
||||
// shrink to 8 bit each 16 bits, the first lane contain the first
|
||||
// convolve result and the second lane contain the second convolve result
|
||||
srcRegFilt32b1_1 = _mm_packus_epi16(srcRegFilt32b1_1, _mm_setzero_si128());
|
||||
|
||||
src_ptr += src_pixels_per_line;
|
||||
|
||||
_mm_storel_epi64((__m128i *)output_ptr, srcRegFilt32b1_1);
|
||||
|
||||
output_ptr += output_pitch;
|
||||
}
|
||||
}
|
||||
|
||||
void aom_filter_block1d8_v4_sse2(const uint8_t *src_ptr, ptrdiff_t src_pitch,
|
||||
uint8_t *output_ptr, ptrdiff_t out_pitch,
|
||||
uint32_t output_height,
|
||||
const int16_t *filter) {
|
||||
__m128i filtersReg;
|
||||
__m128i srcReg2, srcReg3, srcReg4, srcReg5, srcReg6;
|
||||
__m128i srcReg23_lo, srcReg34_lo;
|
||||
__m128i srcReg45_lo, srcReg56_lo;
|
||||
__m128i resReg23_lo, resReg34_lo, resReg45_lo, resReg56_lo;
|
||||
__m128i resReg23_45_lo, resReg34_56_lo;
|
||||
__m128i resReg23_45, resReg34_56;
|
||||
__m128i addFilterReg32, secondFilters, thirdFilters;
|
||||
__m128i tmp_0, tmp_1;
|
||||
unsigned int i;
|
||||
ptrdiff_t src_stride, dst_stride;
|
||||
|
||||
addFilterReg32 = _mm_set1_epi16(32);
|
||||
filtersReg = _mm_loadu_si128((const __m128i *)filter);
|
||||
filtersReg = _mm_srai_epi16(filtersReg, 1);
|
||||
|
||||
// coeffs 0 1 0 1 2 3 2 3
|
||||
const __m128i tmp0 = _mm_unpacklo_epi32(filtersReg, filtersReg);
|
||||
// coeffs 4 5 4 5 6 7 6 7
|
||||
const __m128i tmp1 = _mm_unpackhi_epi32(filtersReg, filtersReg);
|
||||
|
||||
secondFilters = _mm_unpackhi_epi64(tmp0, tmp0); // coeffs 2 3 2 3 2 3 2 3
|
||||
thirdFilters = _mm_unpacklo_epi64(tmp1, tmp1); // coeffs 4 5 4 5 4 5 4 5
|
||||
|
||||
// multiply the size of the source and destination stride by two
|
||||
src_stride = src_pitch << 1;
|
||||
dst_stride = out_pitch << 1;
|
||||
|
||||
srcReg2 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 2));
|
||||
srcReg3 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 3));
|
||||
srcReg23_lo = _mm_unpacklo_epi8(srcReg2, srcReg3);
|
||||
__m128i resReg23_lo_1 = _mm_unpacklo_epi8(srcReg23_lo, _mm_setzero_si128());
|
||||
__m128i resReg23_lo_2 = _mm_unpackhi_epi8(srcReg23_lo, _mm_setzero_si128());
|
||||
|
||||
srcReg4 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 4));
|
||||
srcReg34_lo = _mm_unpacklo_epi8(srcReg3, srcReg4);
|
||||
__m128i resReg34_lo_1 = _mm_unpacklo_epi8(srcReg34_lo, _mm_setzero_si128());
|
||||
__m128i resReg34_lo_2 = _mm_unpackhi_epi8(srcReg34_lo, _mm_setzero_si128());
|
||||
|
||||
for (i = output_height; i > 1; i -= 2) {
|
||||
srcReg5 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 5));
|
||||
srcReg45_lo = _mm_unpacklo_epi8(srcReg4, srcReg5);
|
||||
|
||||
srcReg6 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 6));
|
||||
srcReg56_lo = _mm_unpacklo_epi8(srcReg5, srcReg6);
|
||||
|
||||
// multiply 2 adjacent elements with the filter and add the result
|
||||
|
||||
tmp_0 = _mm_madd_epi16(resReg23_lo_1, secondFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg23_lo_2, secondFilters);
|
||||
resReg23_lo = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
tmp_0 = _mm_madd_epi16(resReg34_lo_1, secondFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg34_lo_2, secondFilters);
|
||||
resReg34_lo = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
__m128i resReg45_lo_1 = _mm_unpacklo_epi8(srcReg45_lo, _mm_setzero_si128());
|
||||
__m128i resReg45_lo_2 = _mm_unpackhi_epi8(srcReg45_lo, _mm_setzero_si128());
|
||||
tmp_0 = _mm_madd_epi16(resReg45_lo_1, thirdFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg45_lo_2, thirdFilters);
|
||||
resReg45_lo = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
__m128i resReg56_lo_1 = _mm_unpacklo_epi8(srcReg56_lo, _mm_setzero_si128());
|
||||
__m128i resReg56_lo_2 = _mm_unpackhi_epi8(srcReg56_lo, _mm_setzero_si128());
|
||||
tmp_0 = _mm_madd_epi16(resReg56_lo_1, thirdFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg56_lo_2, thirdFilters);
|
||||
resReg56_lo = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
// add and saturate the results together
|
||||
resReg23_45_lo = _mm_adds_epi16(resReg23_lo, resReg45_lo);
|
||||
resReg34_56_lo = _mm_adds_epi16(resReg34_lo, resReg56_lo);
|
||||
|
||||
// shift by 6 bit each 16 bit
|
||||
resReg23_45_lo = _mm_adds_epi16(resReg23_45_lo, addFilterReg32);
|
||||
resReg34_56_lo = _mm_adds_epi16(resReg34_56_lo, addFilterReg32);
|
||||
resReg23_45_lo = _mm_srai_epi16(resReg23_45_lo, 6);
|
||||
resReg34_56_lo = _mm_srai_epi16(resReg34_56_lo, 6);
|
||||
|
||||
// shrink to 8 bit each 16 bits, the first lane contain the first
|
||||
// convolve result and the second lane contain the second convolve
|
||||
// result
|
||||
resReg23_45 = _mm_packus_epi16(resReg23_45_lo, _mm_setzero_si128());
|
||||
resReg34_56 = _mm_packus_epi16(resReg34_56_lo, _mm_setzero_si128());
|
||||
|
||||
src_ptr += src_stride;
|
||||
|
||||
_mm_storel_epi64((__m128i *)output_ptr, (resReg23_45));
|
||||
_mm_storel_epi64((__m128i *)(output_ptr + out_pitch), (resReg34_56));
|
||||
|
||||
output_ptr += dst_stride;
|
||||
|
||||
// save part of the registers for next strides
|
||||
resReg23_lo_1 = resReg45_lo_1;
|
||||
resReg23_lo_2 = resReg45_lo_2;
|
||||
resReg34_lo_1 = resReg56_lo_1;
|
||||
resReg34_lo_2 = resReg56_lo_2;
|
||||
srcReg4 = srcReg6;
|
||||
}
|
||||
}
|
||||
|
||||
void aom_filter_block1d4_h4_sse2(const uint8_t *src_ptr,
|
||||
ptrdiff_t src_pixels_per_line,
|
||||
uint8_t *output_ptr, ptrdiff_t output_pitch,
|
||||
uint32_t output_height,
|
||||
const int16_t *filter) {
|
||||
__m128i filtersReg;
|
||||
__m128i addFilterReg32;
|
||||
__m128i secondFilters, thirdFilters;
|
||||
__m128i srcRegFilt32b1_1;
|
||||
__m128i srcReg32b1;
|
||||
unsigned int i;
|
||||
src_ptr -= 3;
|
||||
addFilterReg32 = _mm_set1_epi16(32);
|
||||
filtersReg = _mm_loadu_si128((const __m128i *)filter);
|
||||
filtersReg = _mm_srai_epi16(filtersReg, 1);
|
||||
|
||||
// coeffs 0 1 0 1 2 3 2 3
|
||||
const __m128i tmp_0 = _mm_unpacklo_epi32(filtersReg, filtersReg);
|
||||
// coeffs 4 5 4 5 6 7 6 7
|
||||
const __m128i tmp_1 = _mm_unpackhi_epi32(filtersReg, filtersReg);
|
||||
|
||||
secondFilters = _mm_unpackhi_epi64(tmp_0, tmp_0); // coeffs 2 3 2 3 2 3 2 3
|
||||
thirdFilters = _mm_unpacklo_epi64(tmp_1, tmp_1); // coeffs 4 5 4 5 4 5 4 5
|
||||
|
||||
for (i = output_height; i > 0; i -= 1) {
|
||||
srcReg32b1 = _mm_loadu_si128((const __m128i *)src_ptr);
|
||||
|
||||
__m128i ss_2 = _mm_srli_si128(srcReg32b1, 2);
|
||||
__m128i ss_3 = _mm_srli_si128(srcReg32b1, 3);
|
||||
__m128i ss_4 = _mm_srli_si128(srcReg32b1, 4);
|
||||
__m128i ss_5 = _mm_srli_si128(srcReg32b1, 5);
|
||||
|
||||
ss_2 = _mm_unpacklo_epi8(ss_2, _mm_setzero_si128());
|
||||
ss_3 = _mm_unpacklo_epi8(ss_3, _mm_setzero_si128());
|
||||
ss_4 = _mm_unpacklo_epi8(ss_4, _mm_setzero_si128());
|
||||
ss_5 = _mm_unpacklo_epi8(ss_5, _mm_setzero_si128());
|
||||
|
||||
__m128i ss_1_1 = _mm_unpacklo_epi32(ss_2, ss_3);
|
||||
__m128i ss_1_2 = _mm_unpacklo_epi32(ss_4, ss_5);
|
||||
|
||||
__m128i d1 = _mm_madd_epi16(ss_1_1, secondFilters);
|
||||
__m128i d2 = _mm_madd_epi16(ss_1_2, thirdFilters);
|
||||
srcRegFilt32b1_1 = _mm_add_epi32(d1, d2);
|
||||
|
||||
srcRegFilt32b1_1 = _mm_packs_epi32(srcRegFilt32b1_1, _mm_setzero_si128());
|
||||
|
||||
// shift by 6 bit each 16 bit
|
||||
srcRegFilt32b1_1 = _mm_adds_epi16(srcRegFilt32b1_1, addFilterReg32);
|
||||
srcRegFilt32b1_1 = _mm_srai_epi16(srcRegFilt32b1_1, 6);
|
||||
|
||||
// shrink to 8 bit each 16 bits, the first lane contain the first
|
||||
// convolve result and the second lane contain the second convolve result
|
||||
srcRegFilt32b1_1 = _mm_packus_epi16(srcRegFilt32b1_1, _mm_setzero_si128());
|
||||
|
||||
src_ptr += src_pixels_per_line;
|
||||
|
||||
*((uint32_t *)(output_ptr)) = _mm_cvtsi128_si32(srcRegFilt32b1_1);
|
||||
|
||||
output_ptr += output_pitch;
|
||||
}
|
||||
}
|
||||
|
||||
void aom_filter_block1d4_v4_sse2(const uint8_t *src_ptr, ptrdiff_t src_pitch,
|
||||
uint8_t *output_ptr, ptrdiff_t out_pitch,
|
||||
uint32_t output_height,
|
||||
const int16_t *filter) {
|
||||
__m128i filtersReg;
|
||||
__m128i srcReg2, srcReg3, srcReg4, srcReg5, srcReg6;
|
||||
__m128i srcReg23, srcReg34, srcReg45, srcReg56;
|
||||
__m128i resReg23_34, resReg45_56;
|
||||
__m128i resReg23_34_45_56;
|
||||
__m128i addFilterReg32, secondFilters, thirdFilters;
|
||||
__m128i tmp_0, tmp_1;
|
||||
unsigned int i;
|
||||
ptrdiff_t src_stride, dst_stride;
|
||||
|
||||
addFilterReg32 = _mm_set1_epi16(32);
|
||||
filtersReg = _mm_loadu_si128((const __m128i *)filter);
|
||||
filtersReg = _mm_srai_epi16(filtersReg, 1);
|
||||
|
||||
// coeffs 0 1 0 1 2 3 2 3
|
||||
const __m128i tmp0 = _mm_unpacklo_epi32(filtersReg, filtersReg);
|
||||
// coeffs 4 5 4 5 6 7 6 7
|
||||
const __m128i tmp1 = _mm_unpackhi_epi32(filtersReg, filtersReg);
|
||||
|
||||
secondFilters = _mm_unpackhi_epi64(tmp0, tmp0); // coeffs 2 3 2 3 2 3 2 3
|
||||
thirdFilters = _mm_unpacklo_epi64(tmp1, tmp1); // coeffs 4 5 4 5 4 5 4 5
|
||||
|
||||
// multiply the size of the source and destination stride by two
|
||||
src_stride = src_pitch << 1;
|
||||
dst_stride = out_pitch << 1;
|
||||
|
||||
srcReg2 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 2));
|
||||
srcReg3 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 3));
|
||||
srcReg23 = _mm_unpacklo_epi8(srcReg2, srcReg3);
|
||||
__m128i resReg23 = _mm_unpacklo_epi8(srcReg23, _mm_setzero_si128());
|
||||
|
||||
srcReg4 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 4));
|
||||
srcReg34 = _mm_unpacklo_epi8(srcReg3, srcReg4);
|
||||
__m128i resReg34 = _mm_unpacklo_epi8(srcReg34, _mm_setzero_si128());
|
||||
|
||||
for (i = output_height; i > 1; i -= 2) {
|
||||
srcReg5 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 5));
|
||||
srcReg45 = _mm_unpacklo_epi8(srcReg4, srcReg5);
|
||||
srcReg6 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 6));
|
||||
srcReg56 = _mm_unpacklo_epi8(srcReg5, srcReg6);
|
||||
|
||||
// multiply 2 adjacent elements with the filter and add the result
|
||||
tmp_0 = _mm_madd_epi16(resReg23, secondFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg34, secondFilters);
|
||||
resReg23_34 = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
__m128i resReg45 = _mm_unpacklo_epi8(srcReg45, _mm_setzero_si128());
|
||||
__m128i resReg56 = _mm_unpacklo_epi8(srcReg56, _mm_setzero_si128());
|
||||
|
||||
tmp_0 = _mm_madd_epi16(resReg45, thirdFilters);
|
||||
tmp_1 = _mm_madd_epi16(resReg56, thirdFilters);
|
||||
resReg45_56 = _mm_packs_epi32(tmp_0, tmp_1);
|
||||
|
||||
// add and saturate the results together
|
||||
resReg23_34_45_56 = _mm_adds_epi16(resReg23_34, resReg45_56);
|
||||
|
||||
// shift by 6 bit each 16 bit
|
||||
resReg23_34_45_56 = _mm_adds_epi16(resReg23_34_45_56, addFilterReg32);
|
||||
resReg23_34_45_56 = _mm_srai_epi16(resReg23_34_45_56, 6);
|
||||
|
||||
// shrink to 8 bit each 16 bits, the first lane contain the first
|
||||
// convolve result and the second lane contain the second convolve
|
||||
// result
|
||||
resReg23_34_45_56 =
|
||||
_mm_packus_epi16(resReg23_34_45_56, _mm_setzero_si128());
|
||||
|
||||
src_ptr += src_stride;
|
||||
|
||||
*((uint32_t *)(output_ptr)) = _mm_cvtsi128_si32(resReg23_34_45_56);
|
||||
*((uint32_t *)(output_ptr + out_pitch)) =
|
||||
_mm_cvtsi128_si32(_mm_srli_si128(resReg23_34_45_56, 4));
|
||||
|
||||
output_ptr += dst_stride;
|
||||
|
||||
// save part of the registers for next strides
|
||||
resReg23 = resReg45;
|
||||
resReg34 = resReg56;
|
||||
srcReg4 = srcReg6;
|
||||
}
|
||||
}
|
||||
|
|
@ -45,11 +45,153 @@ DECLARE_ALIGNED(16, static const uint8_t, filt4_global[16]) = {
|
|||
6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14
|
||||
};
|
||||
|
||||
DECLARE_ALIGNED(32, static const uint8_t, filt_h4[]) = {
|
||||
0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 0, 1, 1,
|
||||
2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 2, 3, 3, 4, 4, 5,
|
||||
5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 2, 3, 3, 4, 4, 5, 5, 6, 6,
|
||||
7, 7, 8, 8, 9, 9, 10, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10,
|
||||
10, 11, 11, 12, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
|
||||
12, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 6, 7,
|
||||
7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14
|
||||
};
|
||||
|
||||
DECLARE_ALIGNED(32, static const uint8_t, filtd4[]) = {
|
||||
2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 8,
|
||||
2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 8,
|
||||
};
|
||||
|
||||
// These are reused by the avx2 intrinsics.
|
||||
filter8_1dfunction aom_filter_block1d8_v8_intrin_ssse3;
|
||||
filter8_1dfunction aom_filter_block1d8_h8_intrin_ssse3;
|
||||
filter8_1dfunction aom_filter_block1d4_h8_intrin_ssse3;
|
||||
|
||||
static void aom_filter_block1d4_h4_ssse3(
|
||||
const uint8_t *src_ptr, ptrdiff_t src_pixels_per_line, uint8_t *output_ptr,
|
||||
ptrdiff_t output_pitch, uint32_t output_height, const int16_t *filter) {
|
||||
__m128i filtersReg;
|
||||
__m128i addFilterReg32, filt1Reg, firstFilters, srcReg32b1, srcRegFilt32b1_1;
|
||||
unsigned int i;
|
||||
src_ptr -= 3;
|
||||
addFilterReg32 = _mm_set1_epi16(32);
|
||||
filtersReg = _mm_loadu_si128((const __m128i *)filter);
|
||||
filtersReg = _mm_srai_epi16(filtersReg, 1);
|
||||
// converting the 16 bit (short) to 8 bit (byte) and have the same data
|
||||
// in both lanes of 128 bit register.
|
||||
filtersReg = _mm_packs_epi16(filtersReg, filtersReg);
|
||||
|
||||
firstFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi32(0x5040302u));
|
||||
filt1Reg = _mm_load_si128((__m128i const *)(filtd4));
|
||||
|
||||
for (i = output_height; i > 0; i -= 1) {
|
||||
// load the 2 strides of source
|
||||
srcReg32b1 = _mm_loadu_si128((const __m128i *)src_ptr);
|
||||
|
||||
// filter the source buffer
|
||||
srcRegFilt32b1_1 = _mm_shuffle_epi8(srcReg32b1, filt1Reg);
|
||||
|
||||
// multiply 4 adjacent elements with the filter and add the result
|
||||
srcRegFilt32b1_1 = _mm_maddubs_epi16(srcRegFilt32b1_1, firstFilters);
|
||||
|
||||
srcRegFilt32b1_1 = _mm_hadds_epi16(srcRegFilt32b1_1, _mm_setzero_si128());
|
||||
|
||||
// shift by 6 bit each 16 bit
|
||||
srcRegFilt32b1_1 = _mm_adds_epi16(srcRegFilt32b1_1, addFilterReg32);
|
||||
srcRegFilt32b1_1 = _mm_srai_epi16(srcRegFilt32b1_1, 6);
|
||||
|
||||
// shrink to 8 bit each 16 bits, the first lane contain the first
|
||||
// convolve result and the second lane contain the second convolve result
|
||||
srcRegFilt32b1_1 = _mm_packus_epi16(srcRegFilt32b1_1, _mm_setzero_si128());
|
||||
|
||||
src_ptr += src_pixels_per_line;
|
||||
|
||||
*((uint32_t *)(output_ptr)) = _mm_cvtsi128_si32(srcRegFilt32b1_1);
|
||||
output_ptr += output_pitch;
|
||||
}
|
||||
}
|
||||
|
||||
static void aom_filter_block1d4_v4_ssse3(
|
||||
const uint8_t *src_ptr, ptrdiff_t src_pitch, uint8_t *output_ptr,
|
||||
ptrdiff_t out_pitch, uint32_t output_height, const int16_t *filter) {
|
||||
__m128i filtersReg;
|
||||
__m128i addFilterReg32;
|
||||
__m128i srcReg2, srcReg3, srcReg23, srcReg4, srcReg34, srcReg5, srcReg45,
|
||||
srcReg6, srcReg56;
|
||||
__m128i srcReg23_34_lo, srcReg45_56_lo;
|
||||
__m128i srcReg2345_3456_lo, srcReg2345_3456_hi;
|
||||
__m128i resReglo, resReghi;
|
||||
__m128i firstFilters;
|
||||
unsigned int i;
|
||||
ptrdiff_t src_stride, dst_stride;
|
||||
|
||||
addFilterReg32 = _mm_set1_epi16(32);
|
||||
filtersReg = _mm_loadu_si128((const __m128i *)filter);
|
||||
// converting the 16 bit (short) to 8 bit (byte) and have the
|
||||
// same data in both lanes of 128 bit register.
|
||||
filtersReg = _mm_srai_epi16(filtersReg, 1);
|
||||
filtersReg = _mm_packs_epi16(filtersReg, filtersReg);
|
||||
|
||||
firstFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi32(0x5040302u));
|
||||
|
||||
// multiple the size of the source and destination stride by two
|
||||
src_stride = src_pitch << 1;
|
||||
dst_stride = out_pitch << 1;
|
||||
|
||||
srcReg2 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 2));
|
||||
srcReg3 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 3));
|
||||
srcReg23 = _mm_unpacklo_epi32(srcReg2, srcReg3);
|
||||
|
||||
srcReg4 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 4));
|
||||
|
||||
// have consecutive loads on the same 256 register
|
||||
srcReg34 = _mm_unpacklo_epi32(srcReg3, srcReg4);
|
||||
|
||||
srcReg23_34_lo = _mm_unpacklo_epi8(srcReg23, srcReg34);
|
||||
|
||||
for (i = output_height; i > 1; i -= 2) {
|
||||
srcReg5 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 5));
|
||||
srcReg45 = _mm_unpacklo_epi32(srcReg4, srcReg5);
|
||||
|
||||
srcReg6 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 6));
|
||||
srcReg56 = _mm_unpacklo_epi32(srcReg5, srcReg6);
|
||||
|
||||
// merge every two consecutive registers
|
||||
srcReg45_56_lo = _mm_unpacklo_epi8(srcReg45, srcReg56);
|
||||
|
||||
srcReg2345_3456_lo = _mm_unpacklo_epi16(srcReg23_34_lo, srcReg45_56_lo);
|
||||
srcReg2345_3456_hi = _mm_unpackhi_epi16(srcReg23_34_lo, srcReg45_56_lo);
|
||||
|
||||
// multiply 2 adjacent elements with the filter and add the result
|
||||
resReglo = _mm_maddubs_epi16(srcReg2345_3456_lo, firstFilters);
|
||||
resReghi = _mm_maddubs_epi16(srcReg2345_3456_hi, firstFilters);
|
||||
|
||||
resReglo = _mm_hadds_epi16(resReglo, _mm_setzero_si128());
|
||||
resReghi = _mm_hadds_epi16(resReghi, _mm_setzero_si128());
|
||||
|
||||
// shift by 6 bit each 16 bit
|
||||
resReglo = _mm_adds_epi16(resReglo, addFilterReg32);
|
||||
resReghi = _mm_adds_epi16(resReghi, addFilterReg32);
|
||||
resReglo = _mm_srai_epi16(resReglo, 6);
|
||||
resReghi = _mm_srai_epi16(resReghi, 6);
|
||||
|
||||
// shrink to 8 bit each 16 bits, the first lane contain the first
|
||||
// convolve result and the second lane contain the second convolve
|
||||
// result
|
||||
resReglo = _mm_packus_epi16(resReglo, resReglo);
|
||||
resReghi = _mm_packus_epi16(resReghi, resReghi);
|
||||
|
||||
src_ptr += src_stride;
|
||||
|
||||
*((uint32_t *)(output_ptr)) = _mm_cvtsi128_si32(resReglo);
|
||||
*((uint32_t *)(output_ptr + out_pitch)) = _mm_cvtsi128_si32(resReghi);
|
||||
|
||||
output_ptr += dst_stride;
|
||||
|
||||
// save part of the registers for next strides
|
||||
srcReg23_34_lo = srcReg45_56_lo;
|
||||
srcReg4 = srcReg6;
|
||||
}
|
||||
}
|
||||
|
||||
void aom_filter_block1d4_h8_intrin_ssse3(
|
||||
const uint8_t *src_ptr, ptrdiff_t src_pixels_per_line, uint8_t *output_ptr,
|
||||
ptrdiff_t output_pitch, uint32_t output_height, const int16_t *filter) {
|
||||
|
|
@ -118,6 +260,145 @@ void aom_filter_block1d4_h8_intrin_ssse3(
|
|||
}
|
||||
}
|
||||
|
||||
static void aom_filter_block1d8_h4_ssse3(
|
||||
const uint8_t *src_ptr, ptrdiff_t src_pixels_per_line, uint8_t *output_ptr,
|
||||
ptrdiff_t output_pitch, uint32_t output_height, const int16_t *filter) {
|
||||
__m128i filtersReg;
|
||||
__m128i addFilterReg32, filt2Reg, filt3Reg;
|
||||
__m128i secondFilters, thirdFilters;
|
||||
__m128i srcRegFilt32b1_1, srcRegFilt32b2, srcRegFilt32b3;
|
||||
__m128i srcReg32b1;
|
||||
unsigned int i;
|
||||
src_ptr -= 3;
|
||||
addFilterReg32 = _mm_set1_epi16(32);
|
||||
filtersReg = _mm_loadu_si128((const __m128i *)filter);
|
||||
filtersReg = _mm_srai_epi16(filtersReg, 1);
|
||||
// converting the 16 bit (short) to 8 bit (byte) and have the same data
|
||||
// in both lanes of 128 bit register.
|
||||
filtersReg = _mm_packs_epi16(filtersReg, filtersReg);
|
||||
|
||||
// duplicate only the second 16 bits (third and forth byte)
|
||||
// across 256 bit register
|
||||
secondFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x302u));
|
||||
// duplicate only the third 16 bits (fifth and sixth byte)
|
||||
// across 256 bit register
|
||||
thirdFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x504u));
|
||||
|
||||
filt2Reg = _mm_load_si128((__m128i const *)(filt_h4 + 32));
|
||||
filt3Reg = _mm_load_si128((__m128i const *)(filt_h4 + 32 * 2));
|
||||
|
||||
for (i = output_height; i > 0; i -= 1) {
|
||||
srcReg32b1 = _mm_loadu_si128((const __m128i *)src_ptr);
|
||||
|
||||
// filter the source buffer
|
||||
srcRegFilt32b3 = _mm_shuffle_epi8(srcReg32b1, filt2Reg);
|
||||
srcRegFilt32b2 = _mm_shuffle_epi8(srcReg32b1, filt3Reg);
|
||||
|
||||
// multiply 2 adjacent elements with the filter and add the result
|
||||
srcRegFilt32b3 = _mm_maddubs_epi16(srcRegFilt32b3, secondFilters);
|
||||
srcRegFilt32b2 = _mm_maddubs_epi16(srcRegFilt32b2, thirdFilters);
|
||||
|
||||
srcRegFilt32b1_1 = _mm_adds_epi16(srcRegFilt32b3, srcRegFilt32b2);
|
||||
|
||||
// shift by 6 bit each 16 bit
|
||||
srcRegFilt32b1_1 = _mm_adds_epi16(srcRegFilt32b1_1, addFilterReg32);
|
||||
srcRegFilt32b1_1 = _mm_srai_epi16(srcRegFilt32b1_1, 6);
|
||||
|
||||
// shrink to 8 bit each 16 bits
|
||||
srcRegFilt32b1_1 = _mm_packus_epi16(srcRegFilt32b1_1, _mm_setzero_si128());
|
||||
|
||||
src_ptr += src_pixels_per_line;
|
||||
|
||||
_mm_storel_epi64((__m128i *)output_ptr, srcRegFilt32b1_1);
|
||||
|
||||
output_ptr += output_pitch;
|
||||
}
|
||||
}
|
||||
|
||||
static void aom_filter_block1d8_v4_ssse3(
|
||||
const uint8_t *src_ptr, ptrdiff_t src_pitch, uint8_t *output_ptr,
|
||||
ptrdiff_t out_pitch, uint32_t output_height, const int16_t *filter) {
|
||||
__m128i filtersReg;
|
||||
__m128i srcReg2, srcReg3, srcReg4, srcReg5, srcReg6;
|
||||
__m128i srcReg23, srcReg34, srcReg45, srcReg56;
|
||||
__m128i resReg23, resReg34, resReg45, resReg56;
|
||||
__m128i resReg23_45, resReg34_56;
|
||||
__m128i addFilterReg32, secondFilters, thirdFilters;
|
||||
unsigned int i;
|
||||
ptrdiff_t src_stride, dst_stride;
|
||||
|
||||
addFilterReg32 = _mm_set1_epi16(32);
|
||||
filtersReg = _mm_loadu_si128((const __m128i *)filter);
|
||||
// converting the 16 bit (short) to 8 bit (byte) and have the
|
||||
// same data in both lanes of 128 bit register.
|
||||
filtersReg = _mm_srai_epi16(filtersReg, 1);
|
||||
filtersReg = _mm_packs_epi16(filtersReg, filtersReg);
|
||||
|
||||
// duplicate only the second 16 bits (third and forth byte)
|
||||
// across 128 bit register
|
||||
secondFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x302u));
|
||||
// duplicate only the third 16 bits (fifth and sixth byte)
|
||||
// across 128 bit register
|
||||
thirdFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x504u));
|
||||
|
||||
// multiple the size of the source and destination stride by two
|
||||
src_stride = src_pitch << 1;
|
||||
dst_stride = out_pitch << 1;
|
||||
|
||||
srcReg2 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 2));
|
||||
srcReg3 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 3));
|
||||
srcReg23 = _mm_unpacklo_epi8(srcReg2, srcReg3);
|
||||
|
||||
srcReg4 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 4));
|
||||
|
||||
// have consecutive loads on the same 256 register
|
||||
srcReg34 = _mm_unpacklo_epi8(srcReg3, srcReg4);
|
||||
|
||||
for (i = output_height; i > 1; i -= 2) {
|
||||
srcReg5 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 5));
|
||||
|
||||
srcReg45 = _mm_unpacklo_epi8(srcReg4, srcReg5);
|
||||
|
||||
srcReg6 = _mm_loadl_epi64((const __m128i *)(src_ptr + src_pitch * 6));
|
||||
|
||||
srcReg56 = _mm_unpacklo_epi8(srcReg5, srcReg6);
|
||||
|
||||
// multiply 2 adjacent elements with the filter and add the result
|
||||
resReg23 = _mm_maddubs_epi16(srcReg23, secondFilters);
|
||||
resReg34 = _mm_maddubs_epi16(srcReg34, secondFilters);
|
||||
resReg45 = _mm_maddubs_epi16(srcReg45, thirdFilters);
|
||||
resReg56 = _mm_maddubs_epi16(srcReg56, thirdFilters);
|
||||
|
||||
// add and saturate the results together
|
||||
resReg23_45 = _mm_adds_epi16(resReg23, resReg45);
|
||||
resReg34_56 = _mm_adds_epi16(resReg34, resReg56);
|
||||
|
||||
// shift by 6 bit each 16 bit
|
||||
resReg23_45 = _mm_adds_epi16(resReg23_45, addFilterReg32);
|
||||
resReg34_56 = _mm_adds_epi16(resReg34_56, addFilterReg32);
|
||||
resReg23_45 = _mm_srai_epi16(resReg23_45, 6);
|
||||
resReg34_56 = _mm_srai_epi16(resReg34_56, 6);
|
||||
|
||||
// shrink to 8 bit each 16 bits, the first lane contain the first
|
||||
// convolve result and the second lane contain the second convolve
|
||||
// result
|
||||
resReg23_45 = _mm_packus_epi16(resReg23_45, _mm_setzero_si128());
|
||||
resReg34_56 = _mm_packus_epi16(resReg34_56, _mm_setzero_si128());
|
||||
|
||||
src_ptr += src_stride;
|
||||
|
||||
_mm_storel_epi64((__m128i *)output_ptr, (resReg23_45));
|
||||
_mm_storel_epi64((__m128i *)(output_ptr + out_pitch), (resReg34_56));
|
||||
|
||||
output_ptr += dst_stride;
|
||||
|
||||
// save part of the registers for next strides
|
||||
srcReg23 = srcReg45;
|
||||
srcReg34 = srcReg56;
|
||||
srcReg4 = srcReg6;
|
||||
}
|
||||
}
|
||||
|
||||
void aom_filter_block1d8_h8_intrin_ssse3(
|
||||
const uint8_t *src_ptr, ptrdiff_t src_pixels_per_line, uint8_t *output_ptr,
|
||||
ptrdiff_t output_pitch, uint32_t output_height, const int16_t *filter) {
|
||||
|
|
@ -280,6 +561,187 @@ void aom_filter_block1d8_v8_intrin_ssse3(
|
|||
}
|
||||
}
|
||||
|
||||
static void aom_filter_block1d16_h4_ssse3(
|
||||
const uint8_t *src_ptr, ptrdiff_t src_pixels_per_line, uint8_t *output_ptr,
|
||||
ptrdiff_t output_pitch, uint32_t output_height, const int16_t *filter) {
|
||||
__m128i filtersReg;
|
||||
__m128i addFilterReg32, filt2Reg, filt3Reg;
|
||||
__m128i secondFilters, thirdFilters;
|
||||
__m128i srcRegFilt32b1_1, srcRegFilt32b2_1, srcRegFilt32b2, srcRegFilt32b3;
|
||||
__m128i srcReg32b1, srcReg32b2;
|
||||
unsigned int i;
|
||||
src_ptr -= 3;
|
||||
addFilterReg32 = _mm_set1_epi16(32);
|
||||
filtersReg = _mm_loadu_si128((const __m128i *)filter);
|
||||
filtersReg = _mm_srai_epi16(filtersReg, 1);
|
||||
// converting the 16 bit (short) to 8 bit (byte) and have the same data
|
||||
// in both lanes of 128 bit register.
|
||||
filtersReg = _mm_packs_epi16(filtersReg, filtersReg);
|
||||
|
||||
// duplicate only the second 16 bits (third and forth byte)
|
||||
// across 256 bit register
|
||||
secondFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x302u));
|
||||
// duplicate only the third 16 bits (fifth and sixth byte)
|
||||
// across 256 bit register
|
||||
thirdFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x504u));
|
||||
|
||||
filt2Reg = _mm_load_si128((__m128i const *)(filt_h4 + 32));
|
||||
filt3Reg = _mm_load_si128((__m128i const *)(filt_h4 + 32 * 2));
|
||||
|
||||
for (i = output_height; i > 0; i -= 1) {
|
||||
srcReg32b1 = _mm_loadu_si128((const __m128i *)src_ptr);
|
||||
|
||||
// filter the source buffer
|
||||
srcRegFilt32b3 = _mm_shuffle_epi8(srcReg32b1, filt2Reg);
|
||||
srcRegFilt32b2 = _mm_shuffle_epi8(srcReg32b1, filt3Reg);
|
||||
|
||||
// multiply 2 adjacent elements with the filter and add the result
|
||||
srcRegFilt32b3 = _mm_maddubs_epi16(srcRegFilt32b3, secondFilters);
|
||||
srcRegFilt32b2 = _mm_maddubs_epi16(srcRegFilt32b2, thirdFilters);
|
||||
|
||||
srcRegFilt32b1_1 = _mm_adds_epi16(srcRegFilt32b3, srcRegFilt32b2);
|
||||
|
||||
// reading stride of the next 16 bytes
|
||||
// (part of it was being read by earlier read)
|
||||
srcReg32b2 = _mm_loadu_si128((const __m128i *)(src_ptr + 8));
|
||||
|
||||
// filter the source buffer
|
||||
srcRegFilt32b3 = _mm_shuffle_epi8(srcReg32b2, filt2Reg);
|
||||
srcRegFilt32b2 = _mm_shuffle_epi8(srcReg32b2, filt3Reg);
|
||||
|
||||
// multiply 2 adjacent elements with the filter and add the result
|
||||
srcRegFilt32b3 = _mm_maddubs_epi16(srcRegFilt32b3, secondFilters);
|
||||
srcRegFilt32b2 = _mm_maddubs_epi16(srcRegFilt32b2, thirdFilters);
|
||||
|
||||
// add and saturate the results together
|
||||
srcRegFilt32b2_1 = _mm_adds_epi16(srcRegFilt32b3, srcRegFilt32b2);
|
||||
|
||||
// shift by 6 bit each 16 bit
|
||||
srcRegFilt32b1_1 = _mm_adds_epi16(srcRegFilt32b1_1, addFilterReg32);
|
||||
srcRegFilt32b2_1 = _mm_adds_epi16(srcRegFilt32b2_1, addFilterReg32);
|
||||
srcRegFilt32b1_1 = _mm_srai_epi16(srcRegFilt32b1_1, 6);
|
||||
srcRegFilt32b2_1 = _mm_srai_epi16(srcRegFilt32b2_1, 6);
|
||||
|
||||
// shrink to 8 bit each 16 bits, the first lane contain the first
|
||||
// convolve result and the second lane contain the second convolve result
|
||||
srcRegFilt32b1_1 = _mm_packus_epi16(srcRegFilt32b1_1, srcRegFilt32b2_1);
|
||||
|
||||
src_ptr += src_pixels_per_line;
|
||||
|
||||
_mm_store_si128((__m128i *)output_ptr, srcRegFilt32b1_1);
|
||||
|
||||
output_ptr += output_pitch;
|
||||
}
|
||||
}
|
||||
|
||||
static void aom_filter_block1d16_v4_ssse3(
|
||||
const uint8_t *src_ptr, ptrdiff_t src_pitch, uint8_t *output_ptr,
|
||||
ptrdiff_t out_pitch, uint32_t output_height, const int16_t *filter) {
|
||||
__m128i filtersReg;
|
||||
__m128i srcReg2, srcReg3, srcReg4, srcReg5, srcReg6;
|
||||
__m128i srcReg23_lo, srcReg23_hi, srcReg34_lo, srcReg34_hi;
|
||||
__m128i srcReg45_lo, srcReg45_hi, srcReg56_lo, srcReg56_hi;
|
||||
__m128i resReg23_lo, resReg34_lo, resReg45_lo, resReg56_lo;
|
||||
__m128i resReg23_hi, resReg34_hi, resReg45_hi, resReg56_hi;
|
||||
__m128i resReg23_45_lo, resReg34_56_lo, resReg23_45_hi, resReg34_56_hi;
|
||||
__m128i resReg23_45, resReg34_56;
|
||||
__m128i addFilterReg32, secondFilters, thirdFilters;
|
||||
unsigned int i;
|
||||
ptrdiff_t src_stride, dst_stride;
|
||||
|
||||
addFilterReg32 = _mm_set1_epi16(32);
|
||||
filtersReg = _mm_loadu_si128((const __m128i *)filter);
|
||||
// converting the 16 bit (short) to 8 bit (byte) and have the
|
||||
// same data in both lanes of 128 bit register.
|
||||
filtersReg = _mm_srai_epi16(filtersReg, 1);
|
||||
filtersReg = _mm_packs_epi16(filtersReg, filtersReg);
|
||||
|
||||
// duplicate only the second 16 bits (third and forth byte)
|
||||
// across 128 bit register
|
||||
secondFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x302u));
|
||||
// duplicate only the third 16 bits (fifth and sixth byte)
|
||||
// across 128 bit register
|
||||
thirdFilters = _mm_shuffle_epi8(filtersReg, _mm_set1_epi16(0x504u));
|
||||
|
||||
// multiple the size of the source and destination stride by two
|
||||
src_stride = src_pitch << 1;
|
||||
dst_stride = out_pitch << 1;
|
||||
|
||||
srcReg2 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 2));
|
||||
srcReg3 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 3));
|
||||
srcReg23_lo = _mm_unpacklo_epi8(srcReg2, srcReg3);
|
||||
srcReg23_hi = _mm_unpackhi_epi8(srcReg2, srcReg3);
|
||||
|
||||
srcReg4 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 4));
|
||||
|
||||
// have consecutive loads on the same 256 register
|
||||
srcReg34_lo = _mm_unpacklo_epi8(srcReg3, srcReg4);
|
||||
srcReg34_hi = _mm_unpackhi_epi8(srcReg3, srcReg4);
|
||||
|
||||
for (i = output_height; i > 1; i -= 2) {
|
||||
srcReg5 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 5));
|
||||
|
||||
srcReg45_lo = _mm_unpacklo_epi8(srcReg4, srcReg5);
|
||||
srcReg45_hi = _mm_unpackhi_epi8(srcReg4, srcReg5);
|
||||
|
||||
srcReg6 = _mm_loadu_si128((const __m128i *)(src_ptr + src_pitch * 6));
|
||||
|
||||
srcReg56_lo = _mm_unpacklo_epi8(srcReg5, srcReg6);
|
||||
srcReg56_hi = _mm_unpackhi_epi8(srcReg5, srcReg6);
|
||||
|
||||
// multiply 2 adjacent elements with the filter and add the result
|
||||
resReg23_lo = _mm_maddubs_epi16(srcReg23_lo, secondFilters);
|
||||
resReg34_lo = _mm_maddubs_epi16(srcReg34_lo, secondFilters);
|
||||
resReg45_lo = _mm_maddubs_epi16(srcReg45_lo, thirdFilters);
|
||||
resReg56_lo = _mm_maddubs_epi16(srcReg56_lo, thirdFilters);
|
||||
|
||||
// add and saturate the results together
|
||||
resReg23_45_lo = _mm_adds_epi16(resReg23_lo, resReg45_lo);
|
||||
resReg34_56_lo = _mm_adds_epi16(resReg34_lo, resReg56_lo);
|
||||
|
||||
// multiply 2 adjacent elements with the filter and add the result
|
||||
|
||||
resReg23_hi = _mm_maddubs_epi16(srcReg23_hi, secondFilters);
|
||||
resReg34_hi = _mm_maddubs_epi16(srcReg34_hi, secondFilters);
|
||||
resReg45_hi = _mm_maddubs_epi16(srcReg45_hi, thirdFilters);
|
||||
resReg56_hi = _mm_maddubs_epi16(srcReg56_hi, thirdFilters);
|
||||
|
||||
// add and saturate the results together
|
||||
resReg23_45_hi = _mm_adds_epi16(resReg23_hi, resReg45_hi);
|
||||
resReg34_56_hi = _mm_adds_epi16(resReg34_hi, resReg56_hi);
|
||||
|
||||
// shift by 6 bit each 16 bit
|
||||
resReg23_45_lo = _mm_adds_epi16(resReg23_45_lo, addFilterReg32);
|
||||
resReg34_56_lo = _mm_adds_epi16(resReg34_56_lo, addFilterReg32);
|
||||
resReg23_45_hi = _mm_adds_epi16(resReg23_45_hi, addFilterReg32);
|
||||
resReg34_56_hi = _mm_adds_epi16(resReg34_56_hi, addFilterReg32);
|
||||
resReg23_45_lo = _mm_srai_epi16(resReg23_45_lo, 6);
|
||||
resReg34_56_lo = _mm_srai_epi16(resReg34_56_lo, 6);
|
||||
resReg23_45_hi = _mm_srai_epi16(resReg23_45_hi, 6);
|
||||
resReg34_56_hi = _mm_srai_epi16(resReg34_56_hi, 6);
|
||||
|
||||
// shrink to 8 bit each 16 bits, the first lane contain the first
|
||||
// convolve result and the second lane contain the second convolve
|
||||
// result
|
||||
resReg23_45 = _mm_packus_epi16(resReg23_45_lo, resReg23_45_hi);
|
||||
resReg34_56 = _mm_packus_epi16(resReg34_56_lo, resReg34_56_hi);
|
||||
|
||||
src_ptr += src_stride;
|
||||
|
||||
_mm_store_si128((__m128i *)output_ptr, (resReg23_45));
|
||||
_mm_store_si128((__m128i *)(output_ptr + out_pitch), (resReg34_56));
|
||||
|
||||
output_ptr += dst_stride;
|
||||
|
||||
// save part of the registers for next strides
|
||||
srcReg23_lo = srcReg45_lo;
|
||||
srcReg34_lo = srcReg56_lo;
|
||||
srcReg23_hi = srcReg45_hi;
|
||||
srcReg34_hi = srcReg56_hi;
|
||||
srcReg4 = srcReg6;
|
||||
}
|
||||
}
|
||||
|
||||
filter8_1dfunction aom_filter_block1d16_v8_ssse3;
|
||||
filter8_1dfunction aom_filter_block1d16_h8_ssse3;
|
||||
filter8_1dfunction aom_filter_block1d8_v8_ssse3;
|
||||
|
|
@ -287,13 +749,6 @@ filter8_1dfunction aom_filter_block1d8_h8_ssse3;
|
|||
filter8_1dfunction aom_filter_block1d4_v8_ssse3;
|
||||
filter8_1dfunction aom_filter_block1d4_h8_ssse3;
|
||||
|
||||
#define aom_filter_block1d16_h4_ssse3 aom_filter_block1d16_h8_ssse3
|
||||
#define aom_filter_block1d16_v4_ssse3 aom_filter_block1d16_v8_ssse3
|
||||
#define aom_filter_block1d8_h4_ssse3 aom_filter_block1d8_h8_ssse3
|
||||
#define aom_filter_block1d8_v4_ssse3 aom_filter_block1d8_v8_ssse3
|
||||
#define aom_filter_block1d4_h4_ssse3 aom_filter_block1d4_h8_ssse3
|
||||
#define aom_filter_block1d4_v4_ssse3 aom_filter_block1d4_v8_ssse3
|
||||
|
||||
filter8_1dfunction aom_filter_block1d16_v2_ssse3;
|
||||
filter8_1dfunction aom_filter_block1d16_h2_ssse3;
|
||||
filter8_1dfunction aom_filter_block1d8_v2_ssse3;
|
||||
|
|
|
|||
249
third_party/aom/aom_dsp/x86/avg_intrin_avx2.c
vendored
Normal file
249
third_party/aom/aom_dsp/x86/avg_intrin_avx2.c
vendored
Normal file
|
|
@ -0,0 +1,249 @@
|
|||
/*
|
||||
* 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 <immintrin.h>
|
||||
|
||||
#include "config/aom_dsp_rtcd.h"
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/x86/bitdepth_conversion_avx2.h"
|
||||
#include "aom_ports/mem.h"
|
||||
|
||||
static void hadamard_col8x2_avx2(__m256i *in, int iter) {
|
||||
__m256i a0 = in[0];
|
||||
__m256i a1 = in[1];
|
||||
__m256i a2 = in[2];
|
||||
__m256i a3 = in[3];
|
||||
__m256i a4 = in[4];
|
||||
__m256i a5 = in[5];
|
||||
__m256i a6 = in[6];
|
||||
__m256i a7 = in[7];
|
||||
|
||||
__m256i b0 = _mm256_add_epi16(a0, a1);
|
||||
__m256i b1 = _mm256_sub_epi16(a0, a1);
|
||||
__m256i b2 = _mm256_add_epi16(a2, a3);
|
||||
__m256i b3 = _mm256_sub_epi16(a2, a3);
|
||||
__m256i b4 = _mm256_add_epi16(a4, a5);
|
||||
__m256i b5 = _mm256_sub_epi16(a4, a5);
|
||||
__m256i b6 = _mm256_add_epi16(a6, a7);
|
||||
__m256i b7 = _mm256_sub_epi16(a6, a7);
|
||||
|
||||
a0 = _mm256_add_epi16(b0, b2);
|
||||
a1 = _mm256_add_epi16(b1, b3);
|
||||
a2 = _mm256_sub_epi16(b0, b2);
|
||||
a3 = _mm256_sub_epi16(b1, b3);
|
||||
a4 = _mm256_add_epi16(b4, b6);
|
||||
a5 = _mm256_add_epi16(b5, b7);
|
||||
a6 = _mm256_sub_epi16(b4, b6);
|
||||
a7 = _mm256_sub_epi16(b5, b7);
|
||||
|
||||
if (iter == 0) {
|
||||
b0 = _mm256_add_epi16(a0, a4);
|
||||
b7 = _mm256_add_epi16(a1, a5);
|
||||
b3 = _mm256_add_epi16(a2, a6);
|
||||
b4 = _mm256_add_epi16(a3, a7);
|
||||
b2 = _mm256_sub_epi16(a0, a4);
|
||||
b6 = _mm256_sub_epi16(a1, a5);
|
||||
b1 = _mm256_sub_epi16(a2, a6);
|
||||
b5 = _mm256_sub_epi16(a3, a7);
|
||||
|
||||
a0 = _mm256_unpacklo_epi16(b0, b1);
|
||||
a1 = _mm256_unpacklo_epi16(b2, b3);
|
||||
a2 = _mm256_unpackhi_epi16(b0, b1);
|
||||
a3 = _mm256_unpackhi_epi16(b2, b3);
|
||||
a4 = _mm256_unpacklo_epi16(b4, b5);
|
||||
a5 = _mm256_unpacklo_epi16(b6, b7);
|
||||
a6 = _mm256_unpackhi_epi16(b4, b5);
|
||||
a7 = _mm256_unpackhi_epi16(b6, b7);
|
||||
|
||||
b0 = _mm256_unpacklo_epi32(a0, a1);
|
||||
b1 = _mm256_unpacklo_epi32(a4, a5);
|
||||
b2 = _mm256_unpackhi_epi32(a0, a1);
|
||||
b3 = _mm256_unpackhi_epi32(a4, a5);
|
||||
b4 = _mm256_unpacklo_epi32(a2, a3);
|
||||
b5 = _mm256_unpacklo_epi32(a6, a7);
|
||||
b6 = _mm256_unpackhi_epi32(a2, a3);
|
||||
b7 = _mm256_unpackhi_epi32(a6, a7);
|
||||
|
||||
in[0] = _mm256_unpacklo_epi64(b0, b1);
|
||||
in[1] = _mm256_unpackhi_epi64(b0, b1);
|
||||
in[2] = _mm256_unpacklo_epi64(b2, b3);
|
||||
in[3] = _mm256_unpackhi_epi64(b2, b3);
|
||||
in[4] = _mm256_unpacklo_epi64(b4, b5);
|
||||
in[5] = _mm256_unpackhi_epi64(b4, b5);
|
||||
in[6] = _mm256_unpacklo_epi64(b6, b7);
|
||||
in[7] = _mm256_unpackhi_epi64(b6, b7);
|
||||
} else {
|
||||
in[0] = _mm256_add_epi16(a0, a4);
|
||||
in[7] = _mm256_add_epi16(a1, a5);
|
||||
in[3] = _mm256_add_epi16(a2, a6);
|
||||
in[4] = _mm256_add_epi16(a3, a7);
|
||||
in[2] = _mm256_sub_epi16(a0, a4);
|
||||
in[6] = _mm256_sub_epi16(a1, a5);
|
||||
in[1] = _mm256_sub_epi16(a2, a6);
|
||||
in[5] = _mm256_sub_epi16(a3, a7);
|
||||
}
|
||||
}
|
||||
|
||||
static void hadamard_8x8x2_avx2(const int16_t *src_diff, ptrdiff_t src_stride,
|
||||
int16_t *coeff) {
|
||||
__m256i src[8];
|
||||
src[0] = _mm256_loadu_si256((const __m256i *)src_diff);
|
||||
src[1] = _mm256_loadu_si256((const __m256i *)(src_diff += src_stride));
|
||||
src[2] = _mm256_loadu_si256((const __m256i *)(src_diff += src_stride));
|
||||
src[3] = _mm256_loadu_si256((const __m256i *)(src_diff += src_stride));
|
||||
src[4] = _mm256_loadu_si256((const __m256i *)(src_diff += src_stride));
|
||||
src[5] = _mm256_loadu_si256((const __m256i *)(src_diff += src_stride));
|
||||
src[6] = _mm256_loadu_si256((const __m256i *)(src_diff += src_stride));
|
||||
src[7] = _mm256_loadu_si256((const __m256i *)(src_diff += src_stride));
|
||||
|
||||
hadamard_col8x2_avx2(src, 0);
|
||||
hadamard_col8x2_avx2(src, 1);
|
||||
|
||||
_mm256_storeu_si256((__m256i *)coeff,
|
||||
_mm256_permute2x128_si256(src[0], src[1], 0x20));
|
||||
coeff += 16;
|
||||
_mm256_storeu_si256((__m256i *)coeff,
|
||||
_mm256_permute2x128_si256(src[2], src[3], 0x20));
|
||||
coeff += 16;
|
||||
_mm256_storeu_si256((__m256i *)coeff,
|
||||
_mm256_permute2x128_si256(src[4], src[5], 0x20));
|
||||
coeff += 16;
|
||||
_mm256_storeu_si256((__m256i *)coeff,
|
||||
_mm256_permute2x128_si256(src[6], src[7], 0x20));
|
||||
coeff += 16;
|
||||
_mm256_storeu_si256((__m256i *)coeff,
|
||||
_mm256_permute2x128_si256(src[0], src[1], 0x31));
|
||||
coeff += 16;
|
||||
_mm256_storeu_si256((__m256i *)coeff,
|
||||
_mm256_permute2x128_si256(src[2], src[3], 0x31));
|
||||
coeff += 16;
|
||||
_mm256_storeu_si256((__m256i *)coeff,
|
||||
_mm256_permute2x128_si256(src[4], src[5], 0x31));
|
||||
coeff += 16;
|
||||
_mm256_storeu_si256((__m256i *)coeff,
|
||||
_mm256_permute2x128_si256(src[6], src[7], 0x31));
|
||||
}
|
||||
|
||||
static INLINE void hadamard_16x16_avx2(const int16_t *src_diff,
|
||||
ptrdiff_t src_stride, tran_low_t *coeff,
|
||||
int is_final) {
|
||||
DECLARE_ALIGNED(32, int16_t, temp_coeff[16 * 16]);
|
||||
int16_t *t_coeff = temp_coeff;
|
||||
int16_t *coeff16 = (int16_t *)coeff;
|
||||
int idx;
|
||||
for (idx = 0; idx < 2; ++idx) {
|
||||
const int16_t *src_ptr = src_diff + idx * 8 * src_stride;
|
||||
hadamard_8x8x2_avx2(src_ptr, src_stride, t_coeff + (idx * 64 * 2));
|
||||
}
|
||||
|
||||
for (idx = 0; idx < 64; idx += 16) {
|
||||
const __m256i coeff0 = _mm256_loadu_si256((const __m256i *)t_coeff);
|
||||
const __m256i coeff1 = _mm256_loadu_si256((const __m256i *)(t_coeff + 64));
|
||||
const __m256i coeff2 = _mm256_loadu_si256((const __m256i *)(t_coeff + 128));
|
||||
const __m256i coeff3 = _mm256_loadu_si256((const __m256i *)(t_coeff + 192));
|
||||
|
||||
__m256i b0 = _mm256_add_epi16(coeff0, coeff1);
|
||||
__m256i b1 = _mm256_sub_epi16(coeff0, coeff1);
|
||||
__m256i b2 = _mm256_add_epi16(coeff2, coeff3);
|
||||
__m256i b3 = _mm256_sub_epi16(coeff2, coeff3);
|
||||
|
||||
b0 = _mm256_srai_epi16(b0, 1);
|
||||
b1 = _mm256_srai_epi16(b1, 1);
|
||||
b2 = _mm256_srai_epi16(b2, 1);
|
||||
b3 = _mm256_srai_epi16(b3, 1);
|
||||
if (is_final) {
|
||||
store_tran_low(_mm256_add_epi16(b0, b2), coeff);
|
||||
store_tran_low(_mm256_add_epi16(b1, b3), coeff + 64);
|
||||
store_tran_low(_mm256_sub_epi16(b0, b2), coeff + 128);
|
||||
store_tran_low(_mm256_sub_epi16(b1, b3), coeff + 192);
|
||||
coeff += 16;
|
||||
} else {
|
||||
_mm256_storeu_si256((__m256i *)coeff16, _mm256_add_epi16(b0, b2));
|
||||
_mm256_storeu_si256((__m256i *)(coeff16 + 64), _mm256_add_epi16(b1, b3));
|
||||
_mm256_storeu_si256((__m256i *)(coeff16 + 128), _mm256_sub_epi16(b0, b2));
|
||||
_mm256_storeu_si256((__m256i *)(coeff16 + 192), _mm256_sub_epi16(b1, b3));
|
||||
coeff16 += 16;
|
||||
}
|
||||
t_coeff += 16;
|
||||
}
|
||||
}
|
||||
|
||||
void aom_hadamard_16x16_avx2(const int16_t *src_diff, ptrdiff_t src_stride,
|
||||
tran_low_t *coeff) {
|
||||
hadamard_16x16_avx2(src_diff, src_stride, coeff, 1);
|
||||
}
|
||||
|
||||
void aom_hadamard_32x32_avx2(const int16_t *src_diff, ptrdiff_t src_stride,
|
||||
tran_low_t *coeff) {
|
||||
// For high bitdepths, it is unnecessary to store_tran_low
|
||||
// (mult/unpack/store), then load_tran_low (load/pack) the same memory in the
|
||||
// next stage. Output to an intermediate buffer first, then store_tran_low()
|
||||
// in the final stage.
|
||||
DECLARE_ALIGNED(32, int16_t, temp_coeff[32 * 32]);
|
||||
int16_t *t_coeff = temp_coeff;
|
||||
int idx;
|
||||
for (idx = 0; idx < 4; ++idx) {
|
||||
// src_diff: 9 bit, dynamic range [-255, 255]
|
||||
const int16_t *src_ptr =
|
||||
src_diff + (idx >> 1) * 16 * src_stride + (idx & 0x01) * 16;
|
||||
hadamard_16x16_avx2(src_ptr, src_stride,
|
||||
(tran_low_t *)(t_coeff + idx * 256), 0);
|
||||
}
|
||||
|
||||
for (idx = 0; idx < 256; idx += 16) {
|
||||
const __m256i coeff0 = _mm256_loadu_si256((const __m256i *)t_coeff);
|
||||
const __m256i coeff1 = _mm256_loadu_si256((const __m256i *)(t_coeff + 256));
|
||||
const __m256i coeff2 = _mm256_loadu_si256((const __m256i *)(t_coeff + 512));
|
||||
const __m256i coeff3 = _mm256_loadu_si256((const __m256i *)(t_coeff + 768));
|
||||
|
||||
__m256i b0 = _mm256_add_epi16(coeff0, coeff1);
|
||||
__m256i b1 = _mm256_sub_epi16(coeff0, coeff1);
|
||||
__m256i b2 = _mm256_add_epi16(coeff2, coeff3);
|
||||
__m256i b3 = _mm256_sub_epi16(coeff2, coeff3);
|
||||
|
||||
b0 = _mm256_srai_epi16(b0, 2);
|
||||
b1 = _mm256_srai_epi16(b1, 2);
|
||||
b2 = _mm256_srai_epi16(b2, 2);
|
||||
b3 = _mm256_srai_epi16(b3, 2);
|
||||
|
||||
store_tran_low(_mm256_add_epi16(b0, b2), coeff);
|
||||
store_tran_low(_mm256_add_epi16(b1, b3), coeff + 256);
|
||||
store_tran_low(_mm256_sub_epi16(b0, b2), coeff + 512);
|
||||
store_tran_low(_mm256_sub_epi16(b1, b3), coeff + 768);
|
||||
|
||||
coeff += 16;
|
||||
t_coeff += 16;
|
||||
}
|
||||
}
|
||||
|
||||
int aom_satd_avx2(const tran_low_t *coeff, int length) {
|
||||
const __m256i one = _mm256_set1_epi16(1);
|
||||
__m256i accum = _mm256_setzero_si256();
|
||||
int i;
|
||||
|
||||
for (i = 0; i < length; i += 16) {
|
||||
const __m256i src_line = load_tran_low(coeff);
|
||||
const __m256i abs = _mm256_abs_epi16(src_line);
|
||||
const __m256i sum = _mm256_madd_epi16(abs, one);
|
||||
accum = _mm256_add_epi32(accum, sum);
|
||||
coeff += 16;
|
||||
}
|
||||
|
||||
{ // 32 bit horizontal add
|
||||
const __m256i a = _mm256_srli_si256(accum, 8);
|
||||
const __m256i b = _mm256_add_epi32(accum, a);
|
||||
const __m256i c = _mm256_srli_epi64(b, 32);
|
||||
const __m256i d = _mm256_add_epi32(b, c);
|
||||
const __m128i accum_128 = _mm_add_epi32(_mm256_castsi256_si128(d),
|
||||
_mm256_extractf128_si256(d, 1));
|
||||
return _mm_cvtsi128_si32(accum_128);
|
||||
}
|
||||
}
|
||||
285
third_party/aom/aom_dsp/x86/avg_intrin_sse2.c
vendored
Normal file
285
third_party/aom/aom_dsp/x86/avg_intrin_sse2.c
vendored
Normal file
|
|
@ -0,0 +1,285 @@
|
|||
/*
|
||||
* 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 <immintrin.h>
|
||||
|
||||
#include "config/aom_dsp_rtcd.h"
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/x86/bitdepth_conversion_sse2.h"
|
||||
#include "aom_ports/mem.h"
|
||||
|
||||
static void hadamard_col8_sse2(__m128i *in, int iter) {
|
||||
__m128i a0 = in[0];
|
||||
__m128i a1 = in[1];
|
||||
__m128i a2 = in[2];
|
||||
__m128i a3 = in[3];
|
||||
__m128i a4 = in[4];
|
||||
__m128i a5 = in[5];
|
||||
__m128i a6 = in[6];
|
||||
__m128i a7 = in[7];
|
||||
|
||||
__m128i b0 = _mm_add_epi16(a0, a1);
|
||||
__m128i b1 = _mm_sub_epi16(a0, a1);
|
||||
__m128i b2 = _mm_add_epi16(a2, a3);
|
||||
__m128i b3 = _mm_sub_epi16(a2, a3);
|
||||
__m128i b4 = _mm_add_epi16(a4, a5);
|
||||
__m128i b5 = _mm_sub_epi16(a4, a5);
|
||||
__m128i b6 = _mm_add_epi16(a6, a7);
|
||||
__m128i b7 = _mm_sub_epi16(a6, a7);
|
||||
|
||||
a0 = _mm_add_epi16(b0, b2);
|
||||
a1 = _mm_add_epi16(b1, b3);
|
||||
a2 = _mm_sub_epi16(b0, b2);
|
||||
a3 = _mm_sub_epi16(b1, b3);
|
||||
a4 = _mm_add_epi16(b4, b6);
|
||||
a5 = _mm_add_epi16(b5, b7);
|
||||
a6 = _mm_sub_epi16(b4, b6);
|
||||
a7 = _mm_sub_epi16(b5, b7);
|
||||
|
||||
if (iter == 0) {
|
||||
b0 = _mm_add_epi16(a0, a4);
|
||||
b7 = _mm_add_epi16(a1, a5);
|
||||
b3 = _mm_add_epi16(a2, a6);
|
||||
b4 = _mm_add_epi16(a3, a7);
|
||||
b2 = _mm_sub_epi16(a0, a4);
|
||||
b6 = _mm_sub_epi16(a1, a5);
|
||||
b1 = _mm_sub_epi16(a2, a6);
|
||||
b5 = _mm_sub_epi16(a3, a7);
|
||||
|
||||
a0 = _mm_unpacklo_epi16(b0, b1);
|
||||
a1 = _mm_unpacklo_epi16(b2, b3);
|
||||
a2 = _mm_unpackhi_epi16(b0, b1);
|
||||
a3 = _mm_unpackhi_epi16(b2, b3);
|
||||
a4 = _mm_unpacklo_epi16(b4, b5);
|
||||
a5 = _mm_unpacklo_epi16(b6, b7);
|
||||
a6 = _mm_unpackhi_epi16(b4, b5);
|
||||
a7 = _mm_unpackhi_epi16(b6, b7);
|
||||
|
||||
b0 = _mm_unpacklo_epi32(a0, a1);
|
||||
b1 = _mm_unpacklo_epi32(a4, a5);
|
||||
b2 = _mm_unpackhi_epi32(a0, a1);
|
||||
b3 = _mm_unpackhi_epi32(a4, a5);
|
||||
b4 = _mm_unpacklo_epi32(a2, a3);
|
||||
b5 = _mm_unpacklo_epi32(a6, a7);
|
||||
b6 = _mm_unpackhi_epi32(a2, a3);
|
||||
b7 = _mm_unpackhi_epi32(a6, a7);
|
||||
|
||||
in[0] = _mm_unpacklo_epi64(b0, b1);
|
||||
in[1] = _mm_unpackhi_epi64(b0, b1);
|
||||
in[2] = _mm_unpacklo_epi64(b2, b3);
|
||||
in[3] = _mm_unpackhi_epi64(b2, b3);
|
||||
in[4] = _mm_unpacklo_epi64(b4, b5);
|
||||
in[5] = _mm_unpackhi_epi64(b4, b5);
|
||||
in[6] = _mm_unpacklo_epi64(b6, b7);
|
||||
in[7] = _mm_unpackhi_epi64(b6, b7);
|
||||
} else {
|
||||
in[0] = _mm_add_epi16(a0, a4);
|
||||
in[7] = _mm_add_epi16(a1, a5);
|
||||
in[3] = _mm_add_epi16(a2, a6);
|
||||
in[4] = _mm_add_epi16(a3, a7);
|
||||
in[2] = _mm_sub_epi16(a0, a4);
|
||||
in[6] = _mm_sub_epi16(a1, a5);
|
||||
in[1] = _mm_sub_epi16(a2, a6);
|
||||
in[5] = _mm_sub_epi16(a3, a7);
|
||||
}
|
||||
}
|
||||
|
||||
static INLINE void hadamard_8x8_sse2(const int16_t *src_diff,
|
||||
ptrdiff_t src_stride, tran_low_t *coeff,
|
||||
int is_final) {
|
||||
__m128i src[8];
|
||||
src[0] = _mm_load_si128((const __m128i *)src_diff);
|
||||
src[1] = _mm_load_si128((const __m128i *)(src_diff += src_stride));
|
||||
src[2] = _mm_load_si128((const __m128i *)(src_diff += src_stride));
|
||||
src[3] = _mm_load_si128((const __m128i *)(src_diff += src_stride));
|
||||
src[4] = _mm_load_si128((const __m128i *)(src_diff += src_stride));
|
||||
src[5] = _mm_load_si128((const __m128i *)(src_diff += src_stride));
|
||||
src[6] = _mm_load_si128((const __m128i *)(src_diff += src_stride));
|
||||
src[7] = _mm_load_si128((const __m128i *)(src_diff += src_stride));
|
||||
|
||||
hadamard_col8_sse2(src, 0);
|
||||
hadamard_col8_sse2(src, 1);
|
||||
|
||||
if (is_final) {
|
||||
store_tran_low(src[0], coeff);
|
||||
coeff += 8;
|
||||
store_tran_low(src[1], coeff);
|
||||
coeff += 8;
|
||||
store_tran_low(src[2], coeff);
|
||||
coeff += 8;
|
||||
store_tran_low(src[3], coeff);
|
||||
coeff += 8;
|
||||
store_tran_low(src[4], coeff);
|
||||
coeff += 8;
|
||||
store_tran_low(src[5], coeff);
|
||||
coeff += 8;
|
||||
store_tran_low(src[6], coeff);
|
||||
coeff += 8;
|
||||
store_tran_low(src[7], coeff);
|
||||
} else {
|
||||
int16_t *coeff16 = (int16_t *)coeff;
|
||||
_mm_store_si128((__m128i *)coeff16, src[0]);
|
||||
coeff16 += 8;
|
||||
_mm_store_si128((__m128i *)coeff16, src[1]);
|
||||
coeff16 += 8;
|
||||
_mm_store_si128((__m128i *)coeff16, src[2]);
|
||||
coeff16 += 8;
|
||||
_mm_store_si128((__m128i *)coeff16, src[3]);
|
||||
coeff16 += 8;
|
||||
_mm_store_si128((__m128i *)coeff16, src[4]);
|
||||
coeff16 += 8;
|
||||
_mm_store_si128((__m128i *)coeff16, src[5]);
|
||||
coeff16 += 8;
|
||||
_mm_store_si128((__m128i *)coeff16, src[6]);
|
||||
coeff16 += 8;
|
||||
_mm_store_si128((__m128i *)coeff16, src[7]);
|
||||
}
|
||||
}
|
||||
|
||||
void aom_hadamard_8x8_sse2(const int16_t *src_diff, ptrdiff_t src_stride,
|
||||
tran_low_t *coeff) {
|
||||
hadamard_8x8_sse2(src_diff, src_stride, coeff, 1);
|
||||
}
|
||||
|
||||
static INLINE void hadamard_16x16_sse2(const int16_t *src_diff,
|
||||
ptrdiff_t src_stride, tran_low_t *coeff,
|
||||
int is_final) {
|
||||
// For high bitdepths, it is unnecessary to store_tran_low
|
||||
// (mult/unpack/store), then load_tran_low (load/pack) the same memory in the
|
||||
// next stage. Output to an intermediate buffer first, then store_tran_low()
|
||||
// in the final stage.
|
||||
DECLARE_ALIGNED(32, int16_t, temp_coeff[16 * 16]);
|
||||
int16_t *t_coeff = temp_coeff;
|
||||
int16_t *coeff16 = (int16_t *)coeff;
|
||||
int idx;
|
||||
for (idx = 0; idx < 4; ++idx) {
|
||||
const int16_t *src_ptr =
|
||||
src_diff + (idx >> 1) * 8 * src_stride + (idx & 0x01) * 8;
|
||||
hadamard_8x8_sse2(src_ptr, src_stride, (tran_low_t *)(t_coeff + idx * 64),
|
||||
0);
|
||||
}
|
||||
|
||||
for (idx = 0; idx < 64; idx += 8) {
|
||||
__m128i coeff0 = _mm_load_si128((const __m128i *)t_coeff);
|
||||
__m128i coeff1 = _mm_load_si128((const __m128i *)(t_coeff + 64));
|
||||
__m128i coeff2 = _mm_load_si128((const __m128i *)(t_coeff + 128));
|
||||
__m128i coeff3 = _mm_load_si128((const __m128i *)(t_coeff + 192));
|
||||
|
||||
__m128i b0 = _mm_add_epi16(coeff0, coeff1);
|
||||
__m128i b1 = _mm_sub_epi16(coeff0, coeff1);
|
||||
__m128i b2 = _mm_add_epi16(coeff2, coeff3);
|
||||
__m128i b3 = _mm_sub_epi16(coeff2, coeff3);
|
||||
|
||||
b0 = _mm_srai_epi16(b0, 1);
|
||||
b1 = _mm_srai_epi16(b1, 1);
|
||||
b2 = _mm_srai_epi16(b2, 1);
|
||||
b3 = _mm_srai_epi16(b3, 1);
|
||||
|
||||
coeff0 = _mm_add_epi16(b0, b2);
|
||||
coeff1 = _mm_add_epi16(b1, b3);
|
||||
coeff2 = _mm_sub_epi16(b0, b2);
|
||||
coeff3 = _mm_sub_epi16(b1, b3);
|
||||
|
||||
if (is_final) {
|
||||
store_tran_low(coeff0, coeff);
|
||||
store_tran_low(coeff1, coeff + 64);
|
||||
store_tran_low(coeff2, coeff + 128);
|
||||
store_tran_low(coeff3, coeff + 192);
|
||||
coeff += 8;
|
||||
} else {
|
||||
_mm_store_si128((__m128i *)coeff16, coeff0);
|
||||
_mm_store_si128((__m128i *)(coeff16 + 64), coeff1);
|
||||
_mm_store_si128((__m128i *)(coeff16 + 128), coeff2);
|
||||
_mm_store_si128((__m128i *)(coeff16 + 192), coeff3);
|
||||
coeff16 += 8;
|
||||
}
|
||||
|
||||
t_coeff += 8;
|
||||
}
|
||||
}
|
||||
|
||||
void aom_hadamard_16x16_sse2(const int16_t *src_diff, ptrdiff_t src_stride,
|
||||
tran_low_t *coeff) {
|
||||
hadamard_16x16_sse2(src_diff, src_stride, coeff, 1);
|
||||
}
|
||||
|
||||
void aom_hadamard_32x32_sse2(const int16_t *src_diff, ptrdiff_t src_stride,
|
||||
tran_low_t *coeff) {
|
||||
// For high bitdepths, it is unnecessary to store_tran_low
|
||||
// (mult/unpack/store), then load_tran_low (load/pack) the same memory in the
|
||||
// next stage. Output to an intermediate buffer first, then store_tran_low()
|
||||
// in the final stage.
|
||||
DECLARE_ALIGNED(32, int16_t, temp_coeff[32 * 32]);
|
||||
int16_t *t_coeff = temp_coeff;
|
||||
int idx;
|
||||
for (idx = 0; idx < 4; ++idx) {
|
||||
const int16_t *src_ptr =
|
||||
src_diff + (idx >> 1) * 16 * src_stride + (idx & 0x01) * 16;
|
||||
hadamard_16x16_sse2(src_ptr, src_stride,
|
||||
(tran_low_t *)(t_coeff + idx * 256), 0);
|
||||
}
|
||||
|
||||
for (idx = 0; idx < 256; idx += 8) {
|
||||
__m128i coeff0 = _mm_load_si128((const __m128i *)t_coeff);
|
||||
__m128i coeff1 = _mm_load_si128((const __m128i *)(t_coeff + 256));
|
||||
__m128i coeff2 = _mm_load_si128((const __m128i *)(t_coeff + 512));
|
||||
__m128i coeff3 = _mm_load_si128((const __m128i *)(t_coeff + 768));
|
||||
|
||||
__m128i b0 = _mm_add_epi16(coeff0, coeff1);
|
||||
__m128i b1 = _mm_sub_epi16(coeff0, coeff1);
|
||||
__m128i b2 = _mm_add_epi16(coeff2, coeff3);
|
||||
__m128i b3 = _mm_sub_epi16(coeff2, coeff3);
|
||||
|
||||
b0 = _mm_srai_epi16(b0, 2);
|
||||
b1 = _mm_srai_epi16(b1, 2);
|
||||
b2 = _mm_srai_epi16(b2, 2);
|
||||
b3 = _mm_srai_epi16(b3, 2);
|
||||
|
||||
coeff0 = _mm_add_epi16(b0, b2);
|
||||
coeff1 = _mm_add_epi16(b1, b3);
|
||||
store_tran_low(coeff0, coeff);
|
||||
store_tran_low(coeff1, coeff + 256);
|
||||
|
||||
coeff2 = _mm_sub_epi16(b0, b2);
|
||||
coeff3 = _mm_sub_epi16(b1, b3);
|
||||
store_tran_low(coeff2, coeff + 512);
|
||||
store_tran_low(coeff3, coeff + 768);
|
||||
|
||||
coeff += 8;
|
||||
t_coeff += 8;
|
||||
}
|
||||
}
|
||||
|
||||
int aom_satd_sse2(const tran_low_t *coeff, int length) {
|
||||
int i;
|
||||
const __m128i zero = _mm_setzero_si128();
|
||||
__m128i accum = zero;
|
||||
|
||||
for (i = 0; i < length; i += 8) {
|
||||
const __m128i src_line = load_tran_low(coeff);
|
||||
const __m128i inv = _mm_sub_epi16(zero, src_line);
|
||||
const __m128i abs = _mm_max_epi16(src_line, inv); // abs(src_line)
|
||||
const __m128i abs_lo = _mm_unpacklo_epi16(abs, zero);
|
||||
const __m128i abs_hi = _mm_unpackhi_epi16(abs, zero);
|
||||
const __m128i sum = _mm_add_epi32(abs_lo, abs_hi);
|
||||
accum = _mm_add_epi32(accum, sum);
|
||||
coeff += 8;
|
||||
}
|
||||
|
||||
{ // cascading summation of accum
|
||||
__m128i hi = _mm_srli_si128(accum, 8);
|
||||
accum = _mm_add_epi32(accum, hi);
|
||||
hi = _mm_srli_epi64(accum, 32);
|
||||
accum = _mm_add_epi32(accum, hi);
|
||||
}
|
||||
|
||||
return _mm_cvtsi128_si32(accum);
|
||||
}
|
||||
32
third_party/aom/aom_dsp/x86/bitdepth_conversion_avx2.h
vendored
Normal file
32
third_party/aom/aom_dsp/x86/bitdepth_conversion_avx2.h
vendored
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* 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 <immintrin.h>
|
||||
|
||||
#include "config/aom_config.h"
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/aom_dsp_common.h"
|
||||
|
||||
static INLINE __m256i load_tran_low(const tran_low_t *a) {
|
||||
const __m256i a_low = _mm256_loadu_si256((const __m256i *)a);
|
||||
const __m256i a_high = _mm256_loadu_si256((const __m256i *)(a + 8));
|
||||
return _mm256_packs_epi32(a_low, a_high);
|
||||
}
|
||||
|
||||
static INLINE void store_tran_low(__m256i a, tran_low_t *b) {
|
||||
const __m256i one = _mm256_set1_epi16(1);
|
||||
const __m256i a_hi = _mm256_mulhi_epi16(a, one);
|
||||
const __m256i a_lo = _mm256_mullo_epi16(a, one);
|
||||
const __m256i a_1 = _mm256_unpacklo_epi16(a_lo, a_hi);
|
||||
const __m256i a_2 = _mm256_unpackhi_epi16(a_lo, a_hi);
|
||||
_mm256_storeu_si256((__m256i *)b, a_1);
|
||||
_mm256_storeu_si256((__m256i *)(b + 8), a_2);
|
||||
}
|
||||
35
third_party/aom/aom_dsp/x86/bitdepth_conversion_sse2.h
vendored
Normal file
35
third_party/aom/aom_dsp/x86/bitdepth_conversion_sse2.h
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* 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 <xmmintrin.h>
|
||||
|
||||
#include "config/aom_config.h"
|
||||
#include "aom/aom_integer.h"
|
||||
#include "aom_dsp/aom_dsp_common.h"
|
||||
|
||||
// Load 8 16 bit values. If the source is 32 bits then pack down with
|
||||
// saturation.
|
||||
static INLINE __m128i load_tran_low(const tran_low_t *a) {
|
||||
const __m128i a_low = _mm_load_si128((const __m128i *)a);
|
||||
return _mm_packs_epi32(a_low, *(const __m128i *)(a + 4));
|
||||
}
|
||||
|
||||
// Store 8 16 bit values. If the destination is 32 bits then sign extend the
|
||||
// values by multiplying by 1.
|
||||
static INLINE void store_tran_low(__m128i a, tran_low_t *b) {
|
||||
const __m128i one = _mm_set1_epi16(1);
|
||||
const __m128i a_hi = _mm_mulhi_epi16(a, one);
|
||||
const __m128i a_lo = _mm_mullo_epi16(a, one);
|
||||
const __m128i a_1 = _mm_unpacklo_epi16(a_lo, a_hi);
|
||||
const __m128i a_2 = _mm_unpackhi_epi16(a_lo, a_hi);
|
||||
_mm_store_si128((__m128i *)(b), a_1);
|
||||
_mm_store_si128((__m128i *)(b + 4), a_2);
|
||||
}
|
||||
472
third_party/aom/aom_dsp/x86/blend_a64_mask_avx2.c
vendored
472
third_party/aom/aom_dsp/x86/blend_a64_mask_avx2.c
vendored
|
|
@ -898,3 +898,475 @@ void aom_blend_a64_mask_avx2(uint8_t *dst, uint32_t dst_stride,
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// aom_highbd_blend_a64_d16_mask_avx2()
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static INLINE void highbd_blend_a64_d16_mask_w4_avx2(
|
||||
uint16_t *dst, int dst_stride, const CONV_BUF_TYPE *src0, int src0_stride,
|
||||
const CONV_BUF_TYPE *src1, int src1_stride, const __m256i *mask0,
|
||||
const __m256i *round_offset, int shift, const __m256i *clip_low,
|
||||
const __m256i *clip_high, const __m256i *mask_max) {
|
||||
// Load 4x u16 pixels from each of 4 rows from each source
|
||||
const __m256i s0 = _mm256_set_epi64x(*(uint64_t *)(src0 + 3 * src0_stride),
|
||||
*(uint64_t *)(src0 + 2 * src0_stride),
|
||||
*(uint64_t *)(src0 + 1 * src0_stride),
|
||||
*(uint64_t *)(src0 + 0 * src0_stride));
|
||||
const __m256i s1 = _mm256_set_epi64x(*(uint64_t *)(src1 + 3 * src1_stride),
|
||||
*(uint64_t *)(src1 + 2 * src1_stride),
|
||||
*(uint64_t *)(src1 + 1 * src1_stride),
|
||||
*(uint64_t *)(src1 + 0 * src1_stride));
|
||||
// Generate the inverse mask
|
||||
const __m256i mask1 = _mm256_sub_epi16(*mask_max, *mask0);
|
||||
|
||||
// Multiply each mask by the respective source
|
||||
const __m256i mul0_highs = _mm256_mulhi_epu16(*mask0, s0);
|
||||
const __m256i mul0_lows = _mm256_mullo_epi16(*mask0, s0);
|
||||
const __m256i mul0h = _mm256_unpackhi_epi16(mul0_lows, mul0_highs);
|
||||
const __m256i mul0l = _mm256_unpacklo_epi16(mul0_lows, mul0_highs);
|
||||
// Note that AVX2 unpack orders 64-bit words as [3 1] [2 0] to keep within
|
||||
// lanes Later, packs does the same again which cancels this out with no need
|
||||
// for a permute. The intermediate values being reordered makes no difference
|
||||
|
||||
const __m256i mul1_highs = _mm256_mulhi_epu16(mask1, s1);
|
||||
const __m256i mul1_lows = _mm256_mullo_epi16(mask1, s1);
|
||||
const __m256i mul1h = _mm256_unpackhi_epi16(mul1_lows, mul1_highs);
|
||||
const __m256i mul1l = _mm256_unpacklo_epi16(mul1_lows, mul1_highs);
|
||||
|
||||
const __m256i sumh = _mm256_add_epi32(mul0h, mul1h);
|
||||
const __m256i suml = _mm256_add_epi32(mul0l, mul1l);
|
||||
|
||||
const __m256i roundh =
|
||||
_mm256_srai_epi32(_mm256_sub_epi32(sumh, *round_offset), shift);
|
||||
const __m256i roundl =
|
||||
_mm256_srai_epi32(_mm256_sub_epi32(suml, *round_offset), shift);
|
||||
|
||||
const __m256i pack = _mm256_packs_epi32(roundl, roundh);
|
||||
const __m256i clip =
|
||||
_mm256_min_epi16(_mm256_max_epi16(pack, *clip_low), *clip_high);
|
||||
|
||||
// _mm256_extract_epi64 doesn't exist on x86, so do it the old-fashioned way:
|
||||
const __m128i cliph = _mm256_extracti128_si256(clip, 1);
|
||||
xx_storel_64(dst + 3 * dst_stride, _mm_srli_si128(cliph, 8));
|
||||
xx_storel_64(dst + 2 * dst_stride, cliph);
|
||||
const __m128i clipl = _mm256_castsi256_si128(clip);
|
||||
xx_storel_64(dst + 1 * dst_stride, _mm_srli_si128(clipl, 8));
|
||||
xx_storel_64(dst + 0 * dst_stride, clipl);
|
||||
}
|
||||
|
||||
static INLINE void highbd_blend_a64_d16_mask_subw0_subh0_w4_avx2(
|
||||
uint16_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0,
|
||||
uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride,
|
||||
const uint8_t *mask, uint32_t mask_stride, int h,
|
||||
const __m256i *round_offset, int shift, const __m256i *clip_low,
|
||||
const __m256i *clip_high, const __m256i *mask_max) {
|
||||
do {
|
||||
// Load 8x u8 pixels from each of 4 rows of the mask, pad each to u16
|
||||
const __m128i mask08 = _mm_set_epi32(*(uint32_t *)(mask + 3 * mask_stride),
|
||||
*(uint32_t *)(mask + 2 * mask_stride),
|
||||
*(uint32_t *)(mask + 1 * mask_stride),
|
||||
*(uint32_t *)(mask + 0 * mask_stride));
|
||||
const __m256i mask0 = _mm256_cvtepu8_epi16(mask08);
|
||||
|
||||
highbd_blend_a64_d16_mask_w4_avx2(dst, dst_stride, src0, src0_stride, src1,
|
||||
src1_stride, &mask0, round_offset, shift,
|
||||
clip_low, clip_high, mask_max);
|
||||
|
||||
dst += dst_stride * 4;
|
||||
src0 += src0_stride * 4;
|
||||
src1 += src1_stride * 4;
|
||||
mask += mask_stride * 4;
|
||||
} while (h -= 4);
|
||||
}
|
||||
|
||||
static INLINE void highbd_blend_a64_d16_mask_subw1_subh1_w4_avx2(
|
||||
uint16_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0,
|
||||
uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride,
|
||||
const uint8_t *mask, uint32_t mask_stride, int h,
|
||||
const __m256i *round_offset, int shift, const __m256i *clip_low,
|
||||
const __m256i *clip_high, const __m256i *mask_max) {
|
||||
const __m256i one_b = _mm256_set1_epi8(1);
|
||||
const __m256i two_w = _mm256_set1_epi16(2);
|
||||
do {
|
||||
// Load 8 pixels from each of 8 rows of mask,
|
||||
// (saturating) add together rows then use madd to add adjacent pixels
|
||||
// Finally, divide each value by 4 (with rounding)
|
||||
const __m256i m0246 =
|
||||
_mm256_set_epi64x(*(uint64_t *)(mask + 6 * mask_stride),
|
||||
*(uint64_t *)(mask + 4 * mask_stride),
|
||||
*(uint64_t *)(mask + 2 * mask_stride),
|
||||
*(uint64_t *)(mask + 0 * mask_stride));
|
||||
const __m256i m1357 =
|
||||
_mm256_set_epi64x(*(uint64_t *)(mask + 7 * mask_stride),
|
||||
*(uint64_t *)(mask + 5 * mask_stride),
|
||||
*(uint64_t *)(mask + 3 * mask_stride),
|
||||
*(uint64_t *)(mask + 1 * mask_stride));
|
||||
const __m256i addrows = _mm256_adds_epu8(m0246, m1357);
|
||||
const __m256i adjacent = _mm256_maddubs_epi16(addrows, one_b);
|
||||
const __m256i mask0 =
|
||||
_mm256_srli_epi16(_mm256_add_epi16(adjacent, two_w), 2);
|
||||
|
||||
highbd_blend_a64_d16_mask_w4_avx2(dst, dst_stride, src0, src0_stride, src1,
|
||||
src1_stride, &mask0, round_offset, shift,
|
||||
clip_low, clip_high, mask_max);
|
||||
|
||||
dst += dst_stride * 4;
|
||||
src0 += src0_stride * 4;
|
||||
src1 += src1_stride * 4;
|
||||
mask += mask_stride * 8;
|
||||
} while (h -= 4);
|
||||
}
|
||||
|
||||
static INLINE void highbd_blend_a64_d16_mask_w8_avx2(
|
||||
uint16_t *dst, int dst_stride, const CONV_BUF_TYPE *src0, int src0_stride,
|
||||
const CONV_BUF_TYPE *src1, int src1_stride, const __m256i *mask0a,
|
||||
const __m256i *mask0b, const __m256i *round_offset, int shift,
|
||||
const __m256i *clip_low, const __m256i *clip_high,
|
||||
const __m256i *mask_max) {
|
||||
// Load 8x u16 pixels from each of 4 rows from each source
|
||||
const __m256i s0a =
|
||||
yy_loadu2_128(src0 + 0 * src0_stride, src0 + 1 * src0_stride);
|
||||
const __m256i s0b =
|
||||
yy_loadu2_128(src0 + 2 * src0_stride, src0 + 3 * src0_stride);
|
||||
const __m256i s1a =
|
||||
yy_loadu2_128(src1 + 0 * src1_stride, src1 + 1 * src1_stride);
|
||||
const __m256i s1b =
|
||||
yy_loadu2_128(src1 + 2 * src1_stride, src1 + 3 * src1_stride);
|
||||
|
||||
// Generate inverse masks
|
||||
const __m256i mask1a = _mm256_sub_epi16(*mask_max, *mask0a);
|
||||
const __m256i mask1b = _mm256_sub_epi16(*mask_max, *mask0b);
|
||||
|
||||
// Multiply sources by respective masks
|
||||
const __m256i mul0a_highs = _mm256_mulhi_epu16(*mask0a, s0a);
|
||||
const __m256i mul0a_lows = _mm256_mullo_epi16(*mask0a, s0a);
|
||||
const __m256i mul0ah = _mm256_unpackhi_epi16(mul0a_lows, mul0a_highs);
|
||||
const __m256i mul0al = _mm256_unpacklo_epi16(mul0a_lows, mul0a_highs);
|
||||
// Note that AVX2 unpack orders 64-bit words as [3 1] [2 0] to keep within
|
||||
// lanes Later, packs does the same again which cancels this out with no need
|
||||
// for a permute. The intermediate values being reordered makes no difference
|
||||
|
||||
const __m256i mul1a_highs = _mm256_mulhi_epu16(mask1a, s1a);
|
||||
const __m256i mul1a_lows = _mm256_mullo_epi16(mask1a, s1a);
|
||||
const __m256i mul1ah = _mm256_unpackhi_epi16(mul1a_lows, mul1a_highs);
|
||||
const __m256i mul1al = _mm256_unpacklo_epi16(mul1a_lows, mul1a_highs);
|
||||
|
||||
const __m256i sumah = _mm256_add_epi32(mul0ah, mul1ah);
|
||||
const __m256i sumal = _mm256_add_epi32(mul0al, mul1al);
|
||||
|
||||
const __m256i mul0b_highs = _mm256_mulhi_epu16(*mask0b, s0b);
|
||||
const __m256i mul0b_lows = _mm256_mullo_epi16(*mask0b, s0b);
|
||||
const __m256i mul0bh = _mm256_unpackhi_epi16(mul0b_lows, mul0b_highs);
|
||||
const __m256i mul0bl = _mm256_unpacklo_epi16(mul0b_lows, mul0b_highs);
|
||||
|
||||
const __m256i mul1b_highs = _mm256_mulhi_epu16(mask1b, s1b);
|
||||
const __m256i mul1b_lows = _mm256_mullo_epi16(mask1b, s1b);
|
||||
const __m256i mul1bh = _mm256_unpackhi_epi16(mul1b_lows, mul1b_highs);
|
||||
const __m256i mul1bl = _mm256_unpacklo_epi16(mul1b_lows, mul1b_highs);
|
||||
|
||||
const __m256i sumbh = _mm256_add_epi32(mul0bh, mul1bh);
|
||||
const __m256i sumbl = _mm256_add_epi32(mul0bl, mul1bl);
|
||||
|
||||
// Divide down each result, with rounding
|
||||
const __m256i roundah =
|
||||
_mm256_srai_epi32(_mm256_sub_epi32(sumah, *round_offset), shift);
|
||||
const __m256i roundal =
|
||||
_mm256_srai_epi32(_mm256_sub_epi32(sumal, *round_offset), shift);
|
||||
const __m256i roundbh =
|
||||
_mm256_srai_epi32(_mm256_sub_epi32(sumbh, *round_offset), shift);
|
||||
const __m256i roundbl =
|
||||
_mm256_srai_epi32(_mm256_sub_epi32(sumbl, *round_offset), shift);
|
||||
|
||||
// Pack each i32 down to an i16 with saturation, then clip to valid range
|
||||
const __m256i packa = _mm256_packs_epi32(roundal, roundah);
|
||||
const __m256i clipa =
|
||||
_mm256_min_epi16(_mm256_max_epi16(packa, *clip_low), *clip_high);
|
||||
const __m256i packb = _mm256_packs_epi32(roundbl, roundbh);
|
||||
const __m256i clipb =
|
||||
_mm256_min_epi16(_mm256_max_epi16(packb, *clip_low), *clip_high);
|
||||
|
||||
// Store 8x u16 pixels to each of 4 rows in the destination
|
||||
yy_storeu2_128(dst + 0 * dst_stride, dst + 1 * dst_stride, clipa);
|
||||
yy_storeu2_128(dst + 2 * dst_stride, dst + 3 * dst_stride, clipb);
|
||||
}
|
||||
|
||||
static INLINE void highbd_blend_a64_d16_mask_subw0_subh0_w8_avx2(
|
||||
uint16_t *dst, int dst_stride, const CONV_BUF_TYPE *src0, int src0_stride,
|
||||
const CONV_BUF_TYPE *src1, int src1_stride, const uint8_t *mask,
|
||||
int mask_stride, int h, const __m256i *round_offset, int shift,
|
||||
const __m256i *clip_low, const __m256i *clip_high,
|
||||
const __m256i *mask_max) {
|
||||
do {
|
||||
// Load 8x u8 pixels from each of 4 rows in the mask
|
||||
const __m128i mask0a8 =
|
||||
_mm_set_epi64x(*(uint64_t *)mask, *(uint64_t *)(mask + mask_stride));
|
||||
const __m128i mask0b8 =
|
||||
_mm_set_epi64x(*(uint64_t *)(mask + 2 * mask_stride),
|
||||
*(uint64_t *)(mask + 3 * mask_stride));
|
||||
const __m256i mask0a = _mm256_cvtepu8_epi16(mask0a8);
|
||||
const __m256i mask0b = _mm256_cvtepu8_epi16(mask0b8);
|
||||
|
||||
highbd_blend_a64_d16_mask_w8_avx2(
|
||||
dst, dst_stride, src0, src0_stride, src1, src1_stride, &mask0a, &mask0b,
|
||||
round_offset, shift, clip_low, clip_high, mask_max);
|
||||
|
||||
dst += dst_stride * 4;
|
||||
src0 += src0_stride * 4;
|
||||
src1 += src1_stride * 4;
|
||||
mask += mask_stride * 4;
|
||||
} while (h -= 4);
|
||||
}
|
||||
|
||||
static INLINE void highbd_blend_a64_d16_mask_subw1_subh1_w8_avx2(
|
||||
uint16_t *dst, int dst_stride, const CONV_BUF_TYPE *src0, int src0_stride,
|
||||
const CONV_BUF_TYPE *src1, int src1_stride, const uint8_t *mask,
|
||||
int mask_stride, int h, const __m256i *round_offset, int shift,
|
||||
const __m256i *clip_low, const __m256i *clip_high,
|
||||
const __m256i *mask_max) {
|
||||
const __m256i one_b = _mm256_set1_epi8(1);
|
||||
const __m256i two_w = _mm256_set1_epi16(2);
|
||||
do {
|
||||
// Load 16x u8 pixels from each of 8 rows in the mask,
|
||||
// (saturating) add together rows then use madd to add adjacent pixels
|
||||
// Finally, divide each value by 4 (with rounding)
|
||||
const __m256i m02 =
|
||||
yy_loadu2_128(mask + 0 * mask_stride, mask + 2 * mask_stride);
|
||||
const __m256i m13 =
|
||||
yy_loadu2_128(mask + 1 * mask_stride, mask + 3 * mask_stride);
|
||||
const __m256i m0123 =
|
||||
_mm256_maddubs_epi16(_mm256_adds_epu8(m02, m13), one_b);
|
||||
const __m256i mask_0a =
|
||||
_mm256_srli_epi16(_mm256_add_epi16(m0123, two_w), 2);
|
||||
const __m256i m46 =
|
||||
yy_loadu2_128(mask + 4 * mask_stride, mask + 6 * mask_stride);
|
||||
const __m256i m57 =
|
||||
yy_loadu2_128(mask + 5 * mask_stride, mask + 7 * mask_stride);
|
||||
const __m256i m4567 =
|
||||
_mm256_maddubs_epi16(_mm256_adds_epu8(m46, m57), one_b);
|
||||
const __m256i mask_0b =
|
||||
_mm256_srli_epi16(_mm256_add_epi16(m4567, two_w), 2);
|
||||
|
||||
highbd_blend_a64_d16_mask_w8_avx2(
|
||||
dst, dst_stride, src0, src0_stride, src1, src1_stride, &mask_0a,
|
||||
&mask_0b, round_offset, shift, clip_low, clip_high, mask_max);
|
||||
|
||||
dst += dst_stride * 4;
|
||||
src0 += src0_stride * 4;
|
||||
src1 += src1_stride * 4;
|
||||
mask += mask_stride * 8;
|
||||
} while (h -= 4);
|
||||
}
|
||||
|
||||
static INLINE void highbd_blend_a64_d16_mask_w16_avx2(
|
||||
uint16_t *dst, int dst_stride, const CONV_BUF_TYPE *src0, int src0_stride,
|
||||
const CONV_BUF_TYPE *src1, int src1_stride, const __m256i *mask0a,
|
||||
const __m256i *mask0b, const __m256i *round_offset, int shift,
|
||||
const __m256i *clip_low, const __m256i *clip_high,
|
||||
const __m256i *mask_max) {
|
||||
// Load 16x pixels from each of 2 rows from each source
|
||||
const __m256i s0a = yy_loadu_256(src0);
|
||||
const __m256i s0b = yy_loadu_256(src0 + src0_stride);
|
||||
const __m256i s1a = yy_loadu_256(src1);
|
||||
const __m256i s1b = yy_loadu_256(src1 + src1_stride);
|
||||
|
||||
// Calculate inverse masks
|
||||
const __m256i mask1a = _mm256_sub_epi16(*mask_max, *mask0a);
|
||||
const __m256i mask1b = _mm256_sub_epi16(*mask_max, *mask0b);
|
||||
|
||||
// Multiply each source by appropriate mask
|
||||
const __m256i mul0a_highs = _mm256_mulhi_epu16(*mask0a, s0a);
|
||||
const __m256i mul0a_lows = _mm256_mullo_epi16(*mask0a, s0a);
|
||||
const __m256i mul0ah = _mm256_unpackhi_epi16(mul0a_lows, mul0a_highs);
|
||||
const __m256i mul0al = _mm256_unpacklo_epi16(mul0a_lows, mul0a_highs);
|
||||
// Note that AVX2 unpack orders 64-bit words as [3 1] [2 0] to keep within
|
||||
// lanes Later, packs does the same again which cancels this out with no need
|
||||
// for a permute. The intermediate values being reordered makes no difference
|
||||
|
||||
const __m256i mul1a_highs = _mm256_mulhi_epu16(mask1a, s1a);
|
||||
const __m256i mul1a_lows = _mm256_mullo_epi16(mask1a, s1a);
|
||||
const __m256i mul1ah = _mm256_unpackhi_epi16(mul1a_lows, mul1a_highs);
|
||||
const __m256i mul1al = _mm256_unpacklo_epi16(mul1a_lows, mul1a_highs);
|
||||
|
||||
const __m256i mulah = _mm256_add_epi32(mul0ah, mul1ah);
|
||||
const __m256i mulal = _mm256_add_epi32(mul0al, mul1al);
|
||||
|
||||
const __m256i mul0b_highs = _mm256_mulhi_epu16(*mask0b, s0b);
|
||||
const __m256i mul0b_lows = _mm256_mullo_epi16(*mask0b, s0b);
|
||||
const __m256i mul0bh = _mm256_unpackhi_epi16(mul0b_lows, mul0b_highs);
|
||||
const __m256i mul0bl = _mm256_unpacklo_epi16(mul0b_lows, mul0b_highs);
|
||||
|
||||
const __m256i mul1b_highs = _mm256_mulhi_epu16(mask1b, s1b);
|
||||
const __m256i mul1b_lows = _mm256_mullo_epi16(mask1b, s1b);
|
||||
const __m256i mul1bh = _mm256_unpackhi_epi16(mul1b_lows, mul1b_highs);
|
||||
const __m256i mul1bl = _mm256_unpacklo_epi16(mul1b_lows, mul1b_highs);
|
||||
|
||||
const __m256i mulbh = _mm256_add_epi32(mul0bh, mul1bh);
|
||||
const __m256i mulbl = _mm256_add_epi32(mul0bl, mul1bl);
|
||||
|
||||
const __m256i resah =
|
||||
_mm256_srai_epi32(_mm256_sub_epi32(mulah, *round_offset), shift);
|
||||
const __m256i resal =
|
||||
_mm256_srai_epi32(_mm256_sub_epi32(mulal, *round_offset), shift);
|
||||
const __m256i resbh =
|
||||
_mm256_srai_epi32(_mm256_sub_epi32(mulbh, *round_offset), shift);
|
||||
const __m256i resbl =
|
||||
_mm256_srai_epi32(_mm256_sub_epi32(mulbl, *round_offset), shift);
|
||||
|
||||
// Signed saturating pack from i32 to i16:
|
||||
const __m256i packa = _mm256_packs_epi32(resal, resah);
|
||||
const __m256i packb = _mm256_packs_epi32(resbl, resbh);
|
||||
|
||||
// Clip the values to the valid range
|
||||
const __m256i clipa =
|
||||
_mm256_min_epi16(_mm256_max_epi16(packa, *clip_low), *clip_high);
|
||||
const __m256i clipb =
|
||||
_mm256_min_epi16(_mm256_max_epi16(packb, *clip_low), *clip_high);
|
||||
|
||||
// Store 16 pixels
|
||||
yy_storeu_256(dst, clipa);
|
||||
yy_storeu_256(dst + dst_stride, clipb);
|
||||
}
|
||||
|
||||
static INLINE void highbd_blend_a64_d16_mask_subw0_subh0_w16_avx2(
|
||||
uint16_t *dst, int dst_stride, const CONV_BUF_TYPE *src0, int src0_stride,
|
||||
const CONV_BUF_TYPE *src1, int src1_stride, const uint8_t *mask,
|
||||
int mask_stride, int h, int w, const __m256i *round_offset, int shift,
|
||||
const __m256i *clip_low, const __m256i *clip_high,
|
||||
const __m256i *mask_max) {
|
||||
for (int i = 0; i < h; i += 2) {
|
||||
for (int j = 0; j < w; j += 16) {
|
||||
// Load 16x u8 alpha-mask values from each of two rows and pad to u16
|
||||
const __m128i masks_a8 = xx_loadu_128(mask + j);
|
||||
const __m128i masks_b8 = xx_loadu_128(mask + mask_stride + j);
|
||||
const __m256i mask0a = _mm256_cvtepu8_epi16(masks_a8);
|
||||
const __m256i mask0b = _mm256_cvtepu8_epi16(masks_b8);
|
||||
|
||||
highbd_blend_a64_d16_mask_w16_avx2(
|
||||
dst + j, dst_stride, src0 + j, src0_stride, src1 + j, src1_stride,
|
||||
&mask0a, &mask0b, round_offset, shift, clip_low, clip_high, mask_max);
|
||||
}
|
||||
dst += dst_stride * 2;
|
||||
src0 += src0_stride * 2;
|
||||
src1 += src1_stride * 2;
|
||||
mask += mask_stride * 2;
|
||||
}
|
||||
}
|
||||
|
||||
static INLINE void highbd_blend_a64_d16_mask_subw1_subh1_w16_avx2(
|
||||
uint16_t *dst, int dst_stride, const CONV_BUF_TYPE *src0, int src0_stride,
|
||||
const CONV_BUF_TYPE *src1, int src1_stride, const uint8_t *mask,
|
||||
int mask_stride, int h, int w, const __m256i *round_offset, int shift,
|
||||
const __m256i *clip_low, const __m256i *clip_high,
|
||||
const __m256i *mask_max) {
|
||||
const __m256i one_b = _mm256_set1_epi8(1);
|
||||
const __m256i two_w = _mm256_set1_epi16(2);
|
||||
for (int i = 0; i < h; i += 2) {
|
||||
for (int j = 0; j < w; j += 16) {
|
||||
// Load 32x u8 alpha-mask values from each of four rows
|
||||
// (saturating) add pairs of rows, then use madd to add adjacent values
|
||||
// Finally, divide down each result with rounding
|
||||
const __m256i m0 = yy_loadu_256(mask + 0 * mask_stride + 2 * j);
|
||||
const __m256i m1 = yy_loadu_256(mask + 1 * mask_stride + 2 * j);
|
||||
const __m256i m2 = yy_loadu_256(mask + 2 * mask_stride + 2 * j);
|
||||
const __m256i m3 = yy_loadu_256(mask + 3 * mask_stride + 2 * j);
|
||||
|
||||
const __m256i m01_8 = _mm256_adds_epu8(m0, m1);
|
||||
const __m256i m23_8 = _mm256_adds_epu8(m2, m3);
|
||||
|
||||
const __m256i m01 = _mm256_maddubs_epi16(m01_8, one_b);
|
||||
const __m256i m23 = _mm256_maddubs_epi16(m23_8, one_b);
|
||||
|
||||
const __m256i mask0a = _mm256_srli_epi16(_mm256_add_epi16(m01, two_w), 2);
|
||||
const __m256i mask0b = _mm256_srli_epi16(_mm256_add_epi16(m23, two_w), 2);
|
||||
|
||||
highbd_blend_a64_d16_mask_w16_avx2(
|
||||
dst + j, dst_stride, src0 + j, src0_stride, src1 + j, src1_stride,
|
||||
&mask0a, &mask0b, round_offset, shift, clip_low, clip_high, mask_max);
|
||||
}
|
||||
dst += dst_stride * 2;
|
||||
src0 += src0_stride * 2;
|
||||
src1 += src1_stride * 2;
|
||||
mask += mask_stride * 4;
|
||||
}
|
||||
}
|
||||
|
||||
void aom_highbd_blend_a64_d16_mask_avx2(
|
||||
uint8_t *dst8, uint32_t dst_stride, const CONV_BUF_TYPE *src0,
|
||||
uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride,
|
||||
const uint8_t *mask, uint32_t mask_stride, int w, int h, int subw, int subh,
|
||||
ConvolveParams *conv_params, const int bd) {
|
||||
uint16_t *dst = CONVERT_TO_SHORTPTR(dst8);
|
||||
const int round_bits =
|
||||
2 * FILTER_BITS - conv_params->round_0 - conv_params->round_1;
|
||||
const int32_t round_offset =
|
||||
((1 << (round_bits + bd)) + (1 << (round_bits + bd - 1)) -
|
||||
(1 << (round_bits - 1)))
|
||||
<< AOM_BLEND_A64_ROUND_BITS;
|
||||
const __m256i v_round_offset = _mm256_set1_epi32(round_offset);
|
||||
const int shift = round_bits + AOM_BLEND_A64_ROUND_BITS;
|
||||
|
||||
const __m256i clip_low = _mm256_set1_epi16(0);
|
||||
const __m256i clip_high = _mm256_set1_epi16((1 << bd) - 1);
|
||||
const __m256i mask_max = _mm256_set1_epi16(AOM_BLEND_A64_MAX_ALPHA);
|
||||
|
||||
assert(IMPLIES((void *)src0 == dst, src0_stride == dst_stride));
|
||||
assert(IMPLIES((void *)src1 == dst, src1_stride == dst_stride));
|
||||
|
||||
assert(h >= 4);
|
||||
assert(w >= 4);
|
||||
assert(IS_POWER_OF_TWO(h));
|
||||
assert(IS_POWER_OF_TWO(w));
|
||||
|
||||
if (subw == 0 && subh == 0) {
|
||||
switch (w) {
|
||||
case 4:
|
||||
highbd_blend_a64_d16_mask_subw0_subh0_w4_avx2(
|
||||
dst, dst_stride, src0, src0_stride, src1, src1_stride, mask,
|
||||
mask_stride, h, &v_round_offset, shift, &clip_low, &clip_high,
|
||||
&mask_max);
|
||||
break;
|
||||
case 8:
|
||||
highbd_blend_a64_d16_mask_subw0_subh0_w8_avx2(
|
||||
dst, dst_stride, src0, src0_stride, src1, src1_stride, mask,
|
||||
mask_stride, h, &v_round_offset, shift, &clip_low, &clip_high,
|
||||
&mask_max);
|
||||
break;
|
||||
default: // >= 16
|
||||
highbd_blend_a64_d16_mask_subw0_subh0_w16_avx2(
|
||||
dst, dst_stride, src0, src0_stride, src1, src1_stride, mask,
|
||||
mask_stride, h, w, &v_round_offset, shift, &clip_low, &clip_high,
|
||||
&mask_max);
|
||||
break;
|
||||
}
|
||||
|
||||
} else if (subw == 1 && subh == 1) {
|
||||
switch (w) {
|
||||
case 4:
|
||||
highbd_blend_a64_d16_mask_subw1_subh1_w4_avx2(
|
||||
dst, dst_stride, src0, src0_stride, src1, src1_stride, mask,
|
||||
mask_stride, h, &v_round_offset, shift, &clip_low, &clip_high,
|
||||
&mask_max);
|
||||
break;
|
||||
case 8:
|
||||
highbd_blend_a64_d16_mask_subw1_subh1_w8_avx2(
|
||||
dst, dst_stride, src0, src0_stride, src1, src1_stride, mask,
|
||||
mask_stride, h, &v_round_offset, shift, &clip_low, &clip_high,
|
||||
&mask_max);
|
||||
break;
|
||||
default: // >= 16
|
||||
highbd_blend_a64_d16_mask_subw1_subh1_w16_avx2(
|
||||
dst, dst_stride, src0, src0_stride, src1, src1_stride, mask,
|
||||
mask_stride, h, w, &v_round_offset, shift, &clip_low, &clip_high,
|
||||
&mask_max);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// Sub-sampling in only one axis doesn't seem to happen very much, so fall
|
||||
// back to the vanilla C implementation instead of having all the optimised
|
||||
// code for these.
|
||||
aom_highbd_blend_a64_d16_mask_c(dst8, dst_stride, src0, src0_stride, src1,
|
||||
src1_stride, mask, mask_stride, w, h, subw,
|
||||
subh, conv_params, bd);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue