2012-11-09 02:09:30 +01:00
vp9_common_forward_decls( ) {
2012-08-09 00:47:36 +02:00
cat <<EOF
2012-11-09 02:09:30 +01:00
/*
* VP9
*/
2012-10-14 03:49:44 +02:00
2012-12-19 00:31:19 +01:00
#include "vpx/vpx_integer.h"
2013-04-10 06:28:27 +02:00
#include "vp9/common/vp9_enums.h"
2012-12-19 00:31:19 +01:00
2012-10-28 18:38:23 +01:00
struct macroblockd;
2012-10-14 03:49:44 +02:00
2012-10-28 18:38:23 +01:00
/* Encoder forward decls */
struct macroblock;
2013-02-23 01:06:48 +01:00
struct vp9_variance_vtable;
2012-10-28 18:38:23 +01:00
2012-11-06 01:58:03 +01:00
#define DEC_MVCOSTS int *mvjcost, int *mvcost[2]
2012-10-14 03:49:44 +02:00
union int_mv;
struct yv12_buffer_config;
2012-08-09 00:47:36 +02:00
EOF
}
2012-11-09 02:09:30 +01:00
forward_decls vp9_common_forward_decls
2012-08-15 03:19:09 +02:00
2013-08-05 21:07:30 +02:00
# x86inc.asm doesn't work if pic is enabled on 32 bit platforms so no assembly.
2013-08-06 18:39:30 +02:00
[ " $CONFIG_USE_X86INC " = "yes" ] && mmx_x86inc = mmx && sse_x86inc = sse &&
sse2_x86inc = sse2 && ssse3_x86inc = ssse3
2013-08-05 21:07:30 +02:00
# this variable is for functions that are 64 bit only.
2013-08-06 18:39:30 +02:00
[ $arch = "x86_64" ] && mmx_x86_64 = mmx && sse2_x86_64 = sse2 && ssse3_x86_64 = ssse3
2013-07-10 04:46:01 +02:00
2012-10-10 02:09:08 +02:00
#
# RECON
#
2013-08-15 20:09:49 +02:00
prototype void vp9_d207_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-10-19 02:00:18 +02:00
specialize vp9_d207_predictor_4x4 $ssse3_x86inc
2013-07-09 02:25:51 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d45_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 16:44:56 +02:00
specialize vp9_d45_predictor_4x4 $ssse3_x86inc
2013-07-09 02:25:51 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d63_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-09-25 22:16:44 +02:00
specialize vp9_d63_predictor_4x4 $ssse3_x86inc
2013-07-09 02:25:51 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_h_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 16:44:56 +02:00
specialize vp9_h_predictor_4x4 $ssse3_x86inc
2013-07-09 02:25:51 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d117_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_d117_predictor_4x4
2013-07-09 02:25:51 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d135_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_d135_predictor_4x4
2013-07-09 02:25:51 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d153_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-10-01 15:05:20 +02:00
specialize vp9_d153_predictor_4x4 $ssse3_x86inc
2013-07-09 02:25:51 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_v_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 18:39:30 +02:00
specialize vp9_v_predictor_4x4 $sse_x86inc
2013-07-09 02:25:51 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_tm_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 18:39:30 +02:00
specialize vp9_tm_predictor_4x4 $sse_x86inc
2013-07-09 02:25:51 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 18:39:30 +02:00
specialize vp9_dc_predictor_4x4 $sse_x86inc
2013-07-09 02:25:51 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_top_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_dc_top_predictor_4x4
2013-07-09 02:25:51 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_left_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_dc_left_predictor_4x4
2013-07-09 02:25:51 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_128_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_dc_128_predictor_4x4
2013-08-15 20:09:49 +02:00
prototype void vp9_d207_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-10-19 02:00:18 +02:00
specialize vp9_d207_predictor_8x8 $ssse3_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d45_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 16:44:56 +02:00
specialize vp9_d45_predictor_8x8 $ssse3_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d63_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-09-25 22:16:44 +02:00
specialize vp9_d63_predictor_8x8 $ssse3_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_h_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 16:44:56 +02:00
specialize vp9_h_predictor_8x8 $ssse3_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d117_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_d117_predictor_8x8
2013-08-14 19:35:56 +02:00
prototype void vp9_d135_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_d135_predictor_8x8
2013-08-14 19:35:56 +02:00
prototype void vp9_d153_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-10-01 15:05:20 +02:00
specialize vp9_d153_predictor_8x8 $ssse3_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_v_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 18:39:30 +02:00
specialize vp9_v_predictor_8x8 $sse_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_tm_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 18:39:30 +02:00
specialize vp9_tm_predictor_8x8 $sse2_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 18:39:30 +02:00
specialize vp9_dc_predictor_8x8 $sse_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_top_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_dc_top_predictor_8x8
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_left_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_dc_left_predictor_8x8
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_128_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_dc_128_predictor_8x8
2013-08-15 20:09:49 +02:00
prototype void vp9_d207_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-10-19 02:00:18 +02:00
specialize vp9_d207_predictor_16x16 $ssse3_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d45_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 16:44:56 +02:00
specialize vp9_d45_predictor_16x16 $ssse3_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d63_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-09-25 22:16:44 +02:00
specialize vp9_d63_predictor_16x16 $ssse3_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_h_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 16:44:56 +02:00
specialize vp9_h_predictor_16x16 $ssse3_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d117_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_d117_predictor_16x16
2013-08-14 19:35:56 +02:00
prototype void vp9_d135_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_d135_predictor_16x16
2013-08-14 19:35:56 +02:00
prototype void vp9_d153_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-10-02 22:34:05 +02:00
specialize vp9_d153_predictor_16x16 $ssse3_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_v_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 18:39:30 +02:00
specialize vp9_v_predictor_16x16 $sse2_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_tm_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 18:39:30 +02:00
specialize vp9_tm_predictor_16x16 $sse2_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 18:39:30 +02:00
specialize vp9_dc_predictor_16x16 $sse2_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_top_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_dc_top_predictor_16x16
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_left_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_dc_left_predictor_16x16
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_128_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_dc_128_predictor_16x16
2013-08-15 20:09:49 +02:00
prototype void vp9_d207_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-10-19 02:00:18 +02:00
specialize vp9_d207_predictor_32x32 $ssse3_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d45_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 16:44:56 +02:00
specialize vp9_d45_predictor_32x32 $ssse3_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d63_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-09-25 22:16:44 +02:00
specialize vp9_d63_predictor_32x32 $ssse3_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_h_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 16:44:56 +02:00
specialize vp9_h_predictor_32x32 $ssse3 x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_d117_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_d117_predictor_32x32
2013-08-14 19:35:56 +02:00
prototype void vp9_d135_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_d135_predictor_32x32
2013-08-14 19:35:56 +02:00
prototype void vp9_d153_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_d153_predictor_32x32
2013-08-14 19:35:56 +02:00
prototype void vp9_v_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 18:39:30 +02:00
specialize vp9_v_predictor_32x32 $sse2_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_tm_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 18:39:30 +02:00
specialize vp9_tm_predictor_32x32 $sse2_x86_64
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-08-06 18:39:30 +02:00
specialize vp9_dc_predictor_32x32 $sse2_x86inc
2013-07-09 23:52:20 +02:00
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_top_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_dc_top_predictor_32x32
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_left_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_dc_left_predictor_32x32
2013-08-14 19:35:56 +02:00
prototype void vp9_dc_128_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
2013-07-09 23:52:20 +02:00
specialize vp9_dc_128_predictor_32x32
2013-04-15 18:31:27 +02:00
2012-10-17 01:19:35 +02:00
#
# Loopfilter
#
2013-06-12 22:40:22 +02:00
prototype void vp9_mb_lpf_vertical_edge_w "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh"
2013-07-04 20:58:41 +02:00
specialize vp9_mb_lpf_vertical_edge_w sse2 neon
2013-05-30 18:12:57 +02:00
prototype void vp9_mbloop_filter_vertical_edge "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count"
2013-07-01 21:52:38 +02:00
specialize vp9_mbloop_filter_vertical_edge sse2 neon
2013-05-30 18:12:57 +02:00
prototype void vp9_loop_filter_vertical_edge "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count"
2013-06-21 21:58:46 +02:00
specialize vp9_loop_filter_vertical_edge mmx neon
2013-05-30 18:12:57 +02:00
2013-06-12 23:37:01 +02:00
prototype void vp9_mb_lpf_horizontal_edge_w "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count"
2013-07-04 20:58:41 +02:00
specialize vp9_mb_lpf_horizontal_edge_w sse2 neon
2013-05-30 18:12:57 +02:00
prototype void vp9_mbloop_filter_horizontal_edge "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count"
2013-07-01 21:52:38 +02:00
specialize vp9_mbloop_filter_horizontal_edge sse2 neon
2013-05-30 18:12:57 +02:00
prototype void vp9_loop_filter_horizontal_edge "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count"
2013-06-21 21:58:46 +02:00
specialize vp9_loop_filter_horizontal_edge mmx neon
2013-01-11 23:54:14 +01:00
2012-11-28 19:00:25 +01:00
#
# post proc
#
2013-09-04 19:02:08 +02:00
if [ " $CONFIG_VP9_POSTPROC " = "yes" ] ; then
2012-12-19 00:31:19 +01:00
prototype void vp9_mbpost_proc_down "uint8_t *dst, int pitch, int rows, int cols, int flimit"
2012-11-28 19:00:25 +01:00
specialize vp9_mbpost_proc_down mmx sse2
vp9_mbpost_proc_down_sse2 = vp9_mbpost_proc_down_xmm
2012-12-19 00:31:19 +01:00
prototype void vp9_mbpost_proc_across_ip "uint8_t *src, int pitch, int rows, int cols, int flimit"
2012-11-28 19:00:25 +01:00
specialize vp9_mbpost_proc_across_ip sse2
vp9_mbpost_proc_across_ip_sse2 = vp9_mbpost_proc_across_ip_xmm
2013-05-14 20:01:57 +02:00
prototype void vp9_post_proc_down_and_across "const uint8_t *src_ptr, uint8_t *dst_ptr, int src_pixels_per_line, int dst_pixels_per_line, int rows, int cols, int flimit"
2012-11-28 19:00:25 +01:00
specialize vp9_post_proc_down_and_across mmx sse2
vp9_post_proc_down_and_across_sse2 = vp9_post_proc_down_and_across_xmm
2012-12-19 00:31:19 +01:00
prototype void vp9_plane_add_noise "uint8_t *Start, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int Width, unsigned int Height, int Pitch"
2012-11-28 19:00:25 +01:00
specialize vp9_plane_add_noise mmx sse2
vp9_plane_add_noise_sse2 = vp9_plane_add_noise_wmt
2012-12-23 16:20:10 +01:00
fi
2012-11-28 19:00:25 +01:00
2012-12-19 00:31:19 +01:00
prototype void vp9_blend_mb_inner "uint8_t *y, uint8_t *u, uint8_t *v, int y1, int u1, int v1, int alpha, int stride"
2012-11-28 19:00:25 +01:00
specialize vp9_blend_mb_inner
2012-12-19 00:31:19 +01:00
prototype void vp9_blend_mb_outer "uint8_t *y, uint8_t *u, uint8_t *v, int y1, int u1, int v1, int alpha, int stride"
2012-11-28 19:00:25 +01:00
specialize vp9_blend_mb_outer
2012-12-19 00:31:19 +01:00
prototype void vp9_blend_b "uint8_t *y, uint8_t *u, uint8_t *v, int y1, int u1, int v1, int alpha, int stride"
2012-11-28 19:00:25 +01:00
specialize vp9_blend_b
2012-11-25 04:33:58 +01:00
#
# Sub Pixel Filters
#
2013-07-10 20:17:19 +02:00
prototype void vp9_convolve_copy "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h"
2013-09-13 11:48:32 +02:00
specialize vp9_convolve_copy $sse2_x86inc neon dspr2
2013-07-10 20:17:19 +02:00
prototype void vp9_convolve_avg "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h"
2013-09-13 11:48:32 +02:00
specialize vp9_convolve_avg $sse2_x86inc neon dspr2
2013-07-10 20:17:19 +02:00
prototype void vp9_convolve8 "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h"
2013-10-10 22:51:35 +02:00
specialize vp9_convolve8 sse2 ssse3 neon dspr2
2012-11-21 18:16:30 +01:00
2013-07-10 20:17:19 +02:00
prototype void vp9_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"
2013-10-10 22:51:35 +02:00
specialize vp9_convolve8_horiz sse2 ssse3 neon dspr2
2012-11-21 18:16:30 +01:00
2013-07-10 20:17:19 +02:00
prototype void vp9_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"
2013-10-10 22:51:35 +02:00
specialize vp9_convolve8_vert sse2 ssse3 neon dspr2
2012-11-21 18:16:30 +01:00
2013-07-10 20:17:19 +02:00
prototype void vp9_convolve8_avg "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h"
2013-10-10 22:51:35 +02:00
specialize vp9_convolve8_avg sse2 ssse3 neon dspr2
2012-11-21 18:16:30 +01:00
2013-07-10 20:17:19 +02:00
prototype void vp9_convolve8_avg_horiz "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h"
2013-10-10 22:51:35 +02:00
specialize vp9_convolve8_avg_horiz sse2 ssse3 neon dspr2
2012-11-21 18:16:30 +01:00
2013-07-10 20:17:19 +02:00
prototype void vp9_convolve8_avg_vert "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h"
2013-10-10 22:51:35 +02:00
specialize vp9_convolve8_avg_vert sse2 ssse3 neon dspr2
2012-11-21 18:16:30 +01:00
2012-11-25 04:33:58 +01:00
#
# dct
#
2013-10-12 03:27:12 +02:00
prototype void vp9_idct4x4_1_add "const int16_t *input, uint8_t *dest, int dest_stride"
2013-10-04 23:17:06 +02:00
specialize vp9_idct4x4_1_add sse2 neon
2012-11-25 04:33:58 +01:00
2013-10-12 03:27:12 +02:00
prototype void vp9_idct4x4_16_add "const int16_t *input, uint8_t *dest, int dest_stride"
2013-10-04 23:17:06 +02:00
specialize vp9_idct4x4_16_add sse2 neon
2012-11-25 04:33:58 +01:00
2013-10-12 03:27:12 +02:00
prototype void vp9_idct8x8_1_add "const int16_t *input, uint8_t *dest, int dest_stride"
2013-10-06 09:24:09 +02:00
specialize vp9_idct8x8_1_add sse2 neon
2013-07-26 23:11:37 +02:00
2013-10-12 03:27:12 +02:00
prototype void vp9_idct8x8_64_add "const int16_t *input, uint8_t *dest, int dest_stride"
2013-10-06 09:24:09 +02:00
specialize vp9_idct8x8_64_add sse2 neon
2012-11-25 04:33:58 +01:00
2013-10-12 03:27:12 +02:00
prototype void vp9_idct8x8_10_add "const int16_t *input, uint8_t *dest, int dest_stride"
2013-10-06 09:24:09 +02:00
specialize vp9_idct8x8_10_add sse2 neon
2012-11-25 04:33:58 +01:00
2013-10-12 03:27:12 +02:00
prototype void vp9_idct16x16_1_add "const int16_t *input, uint8_t *dest, int dest_stride"
2013-10-07 23:31:10 +02:00
specialize vp9_idct16x16_1_add sse2 neon
2013-07-29 22:55:22 +02:00
2013-10-12 03:27:12 +02:00
prototype void vp9_idct16x16_256_add "const int16_t *input, uint8_t *dest, int dest_stride"
2013-10-07 23:31:10 +02:00
specialize vp9_idct16x16_256_add sse2 neon
2012-11-25 04:33:58 +01:00
2013-10-12 03:27:12 +02:00
prototype void vp9_idct16x16_10_add "const int16_t *input, uint8_t *dest, int dest_stride"
2013-10-07 23:31:10 +02:00
specialize vp9_idct16x16_10_add sse2 neon
2012-11-25 04:33:58 +01:00
2013-10-12 03:27:12 +02:00
prototype void vp9_idct32x32_1024_add "const int16_t *input, uint8_t *dest, int dest_stride"
2013-10-10 20:27:39 +02:00
specialize vp9_idct32x32_1024_add sse2 neon
32x32 transform for superblocks.
This adds Debargha's DCT/DWT hybrid and a regular 32x32 DCT, and adds
code all over the place to wrap that in the bitstream/encoder/decoder/RD.
Some implementation notes (these probably need careful review):
- token range is extended by 1 bit, since the value range out of this
transform is [-16384,16383].
- the coefficients coming out of the FDCT are manually scaled back by
1 bit, or else they won't fit in int16_t (they are 17 bits). Because
of this, the RD error scoring does not right-shift the MSE score by
two (unlike for 4x4/8x8/16x16).
- to compensate for this loss in precision, the quantizer is halved
also. This is currently a little hacky.
- FDCT and IDCT is double-only right now. Needs a fixed-point impl.
- There are no default probabilities for the 32x32 transform yet; I'm
simply using the 16x16 luma ones. A future commit will add newly
generated probabilities for all transforms.
- No ADST version. I don't think we'll add one for this level; if an
ADST is desired, transform-size selection can scale back to 16x16
or lower, and use an ADST at that level.
Additional notes specific to Debargha's DWT/DCT hybrid:
- coefficient scale is different for the top/left 16x16 (DCT-over-DWT)
block than for the rest (DWT pixel differences) of the block. Therefore,
RD error scoring isn't easily scalable between coefficient and pixel
domain. Thus, unfortunately, we need to compute the RD distortion in
the pixel domain until we figure out how to scale these appropriately.
Change-Id: I00386f20f35d7fabb19aba94c8162f8aee64ef2b
2012-12-07 23:45:05 +01:00
2013-10-12 03:27:12 +02:00
prototype void vp9_idct32x32_1_add "const int16_t *input, uint8_t *dest, int dest_stride"
2013-10-10 20:27:39 +02:00
specialize vp9_idct32x32_1_add sse2
2013-02-05 01:49:17 +01:00
2013-10-12 03:27:12 +02:00
prototype void vp9_iht4x4_16_add "const int16_t *input, uint8_t *dest, int dest_stride, int tx_type"
2013-10-11 22:31:32 +02:00
specialize vp9_iht4x4_16_add sse2 neon
2013-05-20 19:03:17 +02:00
2013-10-12 03:27:12 +02:00
prototype void vp9_iht8x8_64_add "const int16_t *input, uint8_t *dest, int dest_stride, int tx_type"
2013-10-11 22:31:32 +02:00
specialize vp9_iht8x8_64_add sse2 neon
2013-02-05 21:37:13 +01:00
2013-10-12 03:27:12 +02:00
prototype void vp9_iht16x16_256_add "const int16_t *input, uint8_t *output, int pitch, int tx_type"
2013-10-11 22:31:32 +02:00
specialize vp9_iht16x16_256_add sse2
2012-11-25 04:33:58 +01:00
# dct and add
2013-10-12 03:27:12 +02:00
prototype void vp9_iwht4x4_1_add "const int16_t *input, uint8_t *dest, int dest_stride"
2013-10-04 23:17:06 +02:00
specialize vp9_iwht4x4_1_add
2013-05-20 19:03:17 +02:00
2013-10-12 03:27:12 +02:00
prototype void vp9_iwht4x4_16_add "const int16_t *input, uint8_t *dest, int dest_stride"
2013-10-04 23:17:06 +02:00
specialize vp9_iwht4x4_16_add
2012-11-25 04:33:58 +01:00
2012-10-22 05:47:57 +02:00
#
# Encoder functions below this point.
#
2012-11-01 19:09:58 +01:00
if [ " $CONFIG_VP9_ENCODER " = "yes" ] ; then
2012-10-22 05:47:57 +02:00
# variance
2013-04-15 19:00:34 +02:00
prototype unsigned int vp9_variance32x16 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance32x16 $sse2_x86inc
2013-04-15 19:00:34 +02:00
prototype unsigned int vp9_variance16x32 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance16x32 $sse2_x86inc
2013-04-15 19:00:34 +02:00
prototype unsigned int vp9_variance64x32 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance64x32 $sse2_x86inc
2013-04-15 19:00:34 +02:00
prototype unsigned int vp9_variance32x64 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance32x64 $sse2_x86inc
2013-04-17 19:31:59 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_variance32x32 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance32x32 $sse2_x86inc
2012-10-22 05:47:57 +02:00
2013-01-06 03:20:25 +01:00
prototype unsigned int vp9_variance64x64 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance64x64 $sse2_x86inc
2013-01-06 03:20:25 +01:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_variance16x16 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance16x16 mmx $sse2_x86inc
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_variance16x8 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance16x8 mmx $sse2_x86inc
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_variance8x16 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance8x16 mmx $sse2_x86inc
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_variance8x8 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance8x8 mmx $sse2_x86inc
2012-10-22 05:47:57 +02:00
2013-05-31 00:13:08 +02:00
prototype void vp9_get_sse_sum_8x8 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum"
specialize vp9_get_sse_sum_8x8 sse2
vp9_get_sse_sum_8x8_sse2 = vp9_get8x8var_sse2
2013-05-01 23:45:27 +02:00
prototype unsigned int vp9_variance8x4 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance8x4 $sse2_x86inc
2013-05-01 23:45:27 +02:00
prototype unsigned int vp9_variance4x8 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance4x8 $sse2_x86inc
2013-05-01 23:45:27 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_variance4x4 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance4x4 mmx $sse2_x86inc
2012-10-22 05:47:57 +02:00
2013-02-02 01:45:54 +01:00
prototype unsigned int vp9_sub_pixel_variance64x64 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_variance64x64 $sse2_x86inc $ssse3_x86inc
2013-01-06 03:20:25 +01:00
2013-05-07 18:45:28 +02:00
prototype unsigned int vp9_sub_pixel_avg_variance64x64 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_avg_variance64x64 $sse2_x86inc $ssse3_x86inc
2013-05-07 18:45:28 +02:00
2013-04-15 19:00:34 +02:00
prototype unsigned int vp9_sub_pixel_variance32x64 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_variance32x64 $sse2_x86inc $ssse3_x86inc
2013-04-15 19:00:34 +02:00
2013-05-07 18:45:28 +02:00
prototype unsigned int vp9_sub_pixel_avg_variance32x64 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_avg_variance32x64 $sse2_x86inc $ssse3_x86inc
2013-05-07 18:45:28 +02:00
2013-04-15 19:00:34 +02:00
prototype unsigned int vp9_sub_pixel_variance64x32 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_variance64x32 $sse2_x86inc $ssse3_x86inc
2013-04-15 19:00:34 +02:00
2013-05-07 18:45:28 +02:00
prototype unsigned int vp9_sub_pixel_avg_variance64x32 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_avg_variance64x32 $sse2_x86inc $ssse3_x86inc
2013-05-07 18:45:28 +02:00
2013-04-15 19:00:34 +02:00
prototype unsigned int vp9_sub_pixel_variance32x16 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_variance32x16 $sse2_x86inc $ssse3_x86inc
2013-04-15 19:00:34 +02:00
2013-05-07 18:45:28 +02:00
prototype unsigned int vp9_sub_pixel_avg_variance32x16 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_avg_variance32x16 $sse2_x86inc $ssse3_x86inc
2013-05-07 18:45:28 +02:00
2013-04-15 19:00:34 +02:00
prototype unsigned int vp9_sub_pixel_variance16x32 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_variance16x32 $sse2_x86inc $ssse3_x86inc
2013-04-17 19:31:59 +02:00
2013-05-07 18:45:28 +02:00
prototype unsigned int vp9_sub_pixel_avg_variance16x32 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_avg_variance16x32 $sse2_x86inc $ssse3_x86inc
2013-05-07 18:45:28 +02:00
2013-02-02 01:45:54 +01:00
prototype unsigned int vp9_sub_pixel_variance32x32 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_variance32x32 $sse2_x86inc $ssse3_x86inc
2012-10-22 05:47:57 +02:00
2013-05-07 18:45:28 +02:00
prototype unsigned int vp9_sub_pixel_avg_variance32x32 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_avg_variance32x32 $sse2_x86inc $ssse3_x86inc
2013-05-07 18:45:28 +02:00
2013-02-02 01:45:54 +01:00
prototype unsigned int vp9_sub_pixel_variance16x16 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_variance16x16 $sse2_x86inc $ssse3_x86inc
2012-10-22 05:47:57 +02:00
2013-05-07 18:45:28 +02:00
prototype unsigned int vp9_sub_pixel_avg_variance16x16 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_avg_variance16x16 $sse2_x86inc $ssse3_x86inc
2013-05-07 18:45:28 +02:00
2013-02-02 01:45:54 +01:00
prototype unsigned int vp9_sub_pixel_variance8x16 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_variance8x16 $sse2_x86inc $ssse3_x86inc
2012-10-22 05:47:57 +02:00
2013-05-07 18:45:28 +02:00
prototype unsigned int vp9_sub_pixel_avg_variance8x16 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_avg_variance8x16 $sse2_x86inc $ssse3_x86inc
2013-05-07 18:45:28 +02:00
2013-02-02 01:45:54 +01:00
prototype unsigned int vp9_sub_pixel_variance16x8 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_variance16x8 $sse2_x86inc $ssse3_x86inc
2012-10-22 05:47:57 +02:00
2013-05-07 18:45:28 +02:00
prototype unsigned int vp9_sub_pixel_avg_variance16x8 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_avg_variance16x8 $sse2_x86inc $ssse3_x86inc
2013-05-07 18:45:28 +02:00
2013-02-02 01:45:54 +01:00
prototype unsigned int vp9_sub_pixel_variance8x8 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_variance8x8 $sse2_x86inc $ssse3_x86inc
2012-10-22 05:47:57 +02:00
2013-05-07 18:45:28 +02:00
prototype unsigned int vp9_sub_pixel_avg_variance8x8 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_avg_variance8x8 $sse2_x86inc $ssse3_x86inc
2013-05-07 18:45:28 +02:00
2013-05-15 21:19:59 +02:00
# TODO(jingning): need to convert 8x4/4x8 functions into mmx/sse form
prototype unsigned int vp9_sub_pixel_variance8x4 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_variance8x4 $sse2_x86inc $ssse3_x86inc
2013-05-15 21:19:59 +02:00
prototype unsigned int vp9_sub_pixel_avg_variance8x4 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_avg_variance8x4 $sse2_x86inc $ssse3_x86inc
2013-05-15 21:19:59 +02:00
prototype unsigned int vp9_sub_pixel_variance4x8 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_variance4x8 $sse_x86inc $ssse3_x86inc
2013-05-15 21:19:59 +02:00
prototype unsigned int vp9_sub_pixel_avg_variance4x8 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_avg_variance4x8 $sse_x86inc $ssse3_x86inc
2013-05-15 21:19:59 +02:00
2013-02-02 01:45:54 +01:00
prototype unsigned int vp9_sub_pixel_variance4x4 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_variance4x4 $sse_x86inc $ssse3_x86inc
2013-06-20 18:34:25 +02:00
#vp9_sub_pixel_variance4x4_sse2=vp9_sub_pixel_variance4x4_wmt
2012-10-22 05:47:57 +02:00
2013-05-07 18:45:28 +02:00
prototype unsigned int vp9_sub_pixel_avg_variance4x4 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred"
2013-08-06 17:25:10 +02:00
specialize vp9_sub_pixel_avg_variance4x4 $sse_x86inc $ssse3_x86inc
2013-05-07 18:45:28 +02:00
2013-01-06 03:20:25 +01:00
prototype unsigned int vp9_sad64x64 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad64x64 $sse2_x86inc
2013-01-06 03:20:25 +01:00
2013-04-15 19:00:34 +02:00
prototype unsigned int vp9_sad32x64 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad32x64 $sse2_x86inc
2013-04-15 19:00:34 +02:00
prototype unsigned int vp9_sad64x32 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad64x32 $sse2_x86inc
2013-04-15 19:00:34 +02:00
prototype unsigned int vp9_sad32x16 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad32x16 $sse2_x86inc
2013-04-15 19:00:34 +02:00
prototype unsigned int vp9_sad16x32 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad16x32 $sse2_x86inc
2013-04-17 19:31:59 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_sad32x32 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad32x32 $sse2_x86inc
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_sad16x16 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad16x16 mmx $sse2_x86inc
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_sad16x8 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad16x8 mmx $sse2_x86inc
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_sad8x16 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad8x16 mmx $sse2_x86inc
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_sad8x8 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad8x8 mmx $sse2_x86inc
2012-10-22 05:47:57 +02:00
2013-05-15 21:19:59 +02:00
prototype unsigned int vp9_sad8x4 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad8x4 $sse2_x86inc
2013-05-15 21:19:59 +02:00
prototype unsigned int vp9_sad4x8 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad4x8 $sse_x86inc
2013-05-15 21:19:59 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_sad4x4 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad4x4 mmx $sse_x86inc
2012-10-22 05:47:57 +02:00
2013-06-25 20:26:49 +02:00
prototype unsigned int vp9_sad64x64_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad64x64_avg $sse2_x86inc
2013-06-25 20:26:49 +02:00
prototype unsigned int vp9_sad32x64_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad32x64_avg $sse2_x86inc
2013-06-25 20:26:49 +02:00
prototype unsigned int vp9_sad64x32_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad64x32_avg $sse2_x86inc
2013-06-25 20:26:49 +02:00
prototype unsigned int vp9_sad32x16_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad32x16_avg $sse2_x86inc
2013-06-25 20:26:49 +02:00
prototype unsigned int vp9_sad16x32_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad16x32_avg $sse2_x86inc
2013-06-25 20:26:49 +02:00
prototype unsigned int vp9_sad32x32_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad32x32_avg $sse2_x86inc
2013-06-25 20:26:49 +02:00
prototype unsigned int vp9_sad16x16_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad16x16_avg $sse2_x86inc
2013-06-25 20:26:49 +02:00
prototype unsigned int vp9_sad16x8_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad16x8_avg $sse2_x86inc
2013-06-25 20:26:49 +02:00
prototype unsigned int vp9_sad8x16_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad8x16_avg $sse2_x86inc
2013-06-25 20:26:49 +02:00
prototype unsigned int vp9_sad8x8_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad8x8_avg $sse2_x86inc
2013-06-25 20:26:49 +02:00
prototype unsigned int vp9_sad8x4_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad8x4_avg $sse2_x86inc
2013-06-25 20:26:49 +02:00
prototype unsigned int vp9_sad4x8_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad4x8_avg $sse_x86inc
2013-06-25 20:26:49 +02:00
prototype unsigned int vp9_sad4x4_avg "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, unsigned int max_sad"
2013-08-06 16:31:54 +02:00
specialize vp9_sad4x4_avg $sse_x86inc
2013-06-25 20:26:49 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_variance_halfpixvar16x16_h "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance_halfpixvar16x16_h $sse2_x86inc
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_variance_halfpixvar16x16_v "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance_halfpixvar16x16_v $sse2_x86inc
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_variance_halfpixvar16x16_hv "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_variance_halfpixvar16x16_hv $sse2_x86inc
2012-10-22 05:47:57 +02:00
2013-01-06 03:20:25 +01:00
prototype unsigned int vp9_variance_halfpixvar64x64_h "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
specialize vp9_variance_halfpixvar64x64_h
prototype unsigned int vp9_variance_halfpixvar64x64_v "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
specialize vp9_variance_halfpixvar64x64_v
prototype unsigned int vp9_variance_halfpixvar64x64_hv "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
specialize vp9_variance_halfpixvar64x64_hv
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_variance_halfpixvar32x32_h "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2012-10-30 20:58:42 +01:00
specialize vp9_variance_halfpixvar32x32_h
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_variance_halfpixvar32x32_v "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2012-10-30 20:58:42 +01:00
specialize vp9_variance_halfpixvar32x32_v
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_variance_halfpixvar32x32_hv "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2012-10-30 20:58:42 +01:00
specialize vp9_variance_halfpixvar32x32_hv
2012-10-22 05:47:57 +02:00
2013-01-06 03:20:25 +01:00
prototype void vp9_sad64x64x3 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array"
specialize vp9_sad64x64x3
2012-12-19 00:31:19 +01:00
prototype void vp9_sad32x32x3 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array"
2012-10-30 20:58:42 +01:00
specialize vp9_sad32x32x3
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype void vp9_sad16x16x3 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array"
2012-10-30 20:58:42 +01:00
specialize vp9_sad16x16x3 sse3 ssse3
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype void vp9_sad16x8x3 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array"
2012-10-30 20:58:42 +01:00
specialize vp9_sad16x8x3 sse3 ssse3
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype void vp9_sad8x16x3 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array"
2012-10-30 20:58:42 +01:00
specialize vp9_sad8x16x3 sse3
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype void vp9_sad8x8x3 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array"
2012-10-30 20:58:42 +01:00
specialize vp9_sad8x8x3 sse3
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype void vp9_sad4x4x3 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array"
2012-10-30 20:58:42 +01:00
specialize vp9_sad4x4x3 sse3
2012-10-22 05:47:57 +02:00
2013-02-28 17:32:14 +01:00
prototype void vp9_sad64x64x8 "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"
2013-01-06 03:20:25 +01:00
specialize vp9_sad64x64x8
2013-02-28 17:32:14 +01:00
prototype void vp9_sad32x32x8 "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"
2012-10-30 20:58:42 +01:00
specialize vp9_sad32x32x8
2012-10-22 05:47:57 +02:00
2013-02-28 17:32:14 +01:00
prototype void vp9_sad16x16x8 "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"
2012-10-30 20:58:42 +01:00
specialize vp9_sad16x16x8 sse4
2012-10-22 05:47:57 +02:00
2013-02-28 17:32:14 +01:00
prototype void vp9_sad16x8x8 "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"
2012-10-30 20:58:42 +01:00
specialize vp9_sad16x8x8 sse4
2012-10-22 05:47:57 +02:00
2013-02-28 17:32:14 +01:00
prototype void vp9_sad8x16x8 "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"
2012-10-30 20:58:42 +01:00
specialize vp9_sad8x16x8 sse4
2012-10-22 05:47:57 +02:00
2013-02-28 17:32:14 +01:00
prototype void vp9_sad8x8x8 "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"
2012-10-30 20:58:42 +01:00
specialize vp9_sad8x8x8 sse4
2012-10-22 05:47:57 +02:00
2013-05-22 06:28:42 +02:00
prototype void vp9_sad8x4x8 "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"
specialize vp9_sad8x4x8
prototype void vp9_sad4x8x8 "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"
specialize vp9_sad4x8x8
2013-02-28 17:32:14 +01:00
prototype void vp9_sad4x4x8 "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"
2012-10-30 20:58:42 +01:00
specialize vp9_sad4x4x8 sse4
2012-10-22 05:47:57 +02:00
2013-03-01 21:43:41 +01:00
prototype void vp9_sad64x64x4d "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array"
2013-02-08 02:28:56 +01:00
specialize vp9_sad64x64x4d sse2
2013-01-06 03:20:25 +01:00
2013-04-15 19:00:34 +02:00
prototype void vp9_sad32x64x4d "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array"
2013-04-17 19:31:59 +02:00
specialize vp9_sad32x64x4d sse2
2013-04-15 19:00:34 +02:00
prototype void vp9_sad64x32x4d "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array"
2013-04-17 19:31:59 +02:00
specialize vp9_sad64x32x4d sse2
2013-04-15 19:00:34 +02:00
prototype void vp9_sad32x16x4d "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array"
2013-04-17 19:31:59 +02:00
specialize vp9_sad32x16x4d sse2
2013-04-15 19:00:34 +02:00
prototype void vp9_sad16x32x4d "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array"
2013-04-17 19:31:59 +02:00
specialize vp9_sad16x32x4d sse2
2013-03-01 21:43:41 +01:00
prototype void vp9_sad32x32x4d "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array"
2013-02-08 02:28:56 +01:00
specialize vp9_sad32x32x4d sse2
2012-10-22 05:47:57 +02:00
2013-03-01 21:43:41 +01:00
prototype void vp9_sad16x16x4d "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array"
2013-02-08 02:28:56 +01:00
specialize vp9_sad16x16x4d sse2
2012-10-22 05:47:57 +02:00
2013-03-01 21:43:41 +01:00
prototype void vp9_sad16x8x4d "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array"
2013-02-08 02:28:56 +01:00
specialize vp9_sad16x8x4d sse2
2012-10-22 05:47:57 +02:00
2013-03-01 21:43:41 +01:00
prototype void vp9_sad8x16x4d "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array"
2013-02-08 02:28:56 +01:00
specialize vp9_sad8x16x4d sse2
2012-10-22 05:47:57 +02:00
2013-03-01 21:43:41 +01:00
prototype void vp9_sad8x8x4d "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array"
2013-02-08 02:28:56 +01:00
specialize vp9_sad8x8x4d sse2
2012-10-22 05:47:57 +02:00
2013-05-15 21:19:59 +02:00
# TODO(jingning): need to convert these 4x8/8x4 functions into sse2 form
prototype void vp9_sad8x4x4d "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array"
2013-06-12 00:19:14 +02:00
specialize vp9_sad8x4x4d sse2
2013-05-15 21:19:59 +02:00
prototype void vp9_sad4x8x4d "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array"
2013-06-12 00:19:14 +02:00
specialize vp9_sad4x8x4d sse
2013-05-15 21:19:59 +02:00
2013-03-01 21:43:41 +01:00
prototype void vp9_sad4x4x4d "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array"
2013-02-08 02:28:56 +01:00
specialize vp9_sad4x4x4d sse
2013-06-12 00:19:14 +02:00
2013-06-20 18:34:25 +02:00
#prototype unsigned int vp9_sub_pixel_mse16x16 "const uint8_t *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, const uint8_t *dst_ptr, int dst_pixels_per_line, unsigned int *sse"
#specialize vp9_sub_pixel_mse16x16 sse2 mmx
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_mse16x16 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse"
2013-08-06 17:25:10 +02:00
specialize vp9_mse16x16 mmx $sse2_x86inc
2012-10-22 05:47:57 +02:00
2013-06-08 21:04:12 +02:00
prototype unsigned int vp9_mse8x16 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse"
specialize vp9_mse8x16
prototype unsigned int vp9_mse16x8 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse"
specialize vp9_mse16x8
prototype unsigned int vp9_mse8x8 "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse"
specialize vp9_mse8x8
2013-02-02 01:45:54 +01:00
prototype unsigned int vp9_sub_pixel_mse64x64 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2013-01-06 03:20:25 +01:00
specialize vp9_sub_pixel_mse64x64
2013-02-02 01:45:54 +01:00
prototype unsigned int vp9_sub_pixel_mse32x32 "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"
2012-10-30 20:58:42 +01:00
specialize vp9_sub_pixel_mse32x32
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype unsigned int vp9_get_mb_ss "const int16_t *"
2012-10-30 20:58:42 +01:00
specialize vp9_get_mb_ss mmx sse2
2012-10-28 18:38:23 +01:00
# ENCODEMB INVOKE
2013-06-28 02:41:54 +02:00
prototype int64_t vp9_block_error "int16_t *coeff, int16_t *dqcoeff, intptr_t block_size, int64_t *ssz"
2013-08-06 02:27:30 +02:00
specialize vp9_block_error $sse2_x86inc
2012-10-28 18:38:23 +01:00
2013-06-21 18:35:37 +02:00
prototype void vp9_subtract_block "int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride"
2013-08-05 23:48:20 +02:00
specialize vp9_subtract_block $sse2_x86inc
2013-06-21 18:35:37 +02:00
2013-07-01 20:36:07 +02:00
prototype void vp9_quantize_b "int16_t *coeff_ptr, intptr_t n_coeffs, int skip_block, int16_t *zbin_ptr, int16_t *round_ptr, int16_t *quant_ptr, int16_t *quant_shift_ptr, int16_t *qcoeff_ptr, int16_t *dqcoeff_ptr, int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"
specialize vp9_quantize_b $ssse3_x86_64
2013-07-01 20:36:33 +02:00
prototype void vp9_quantize_b_32x32 "int16_t *coeff_ptr, intptr_t n_coeffs, int skip_block, int16_t *zbin_ptr, int16_t *round_ptr, int16_t *quant_ptr, int16_t *quant_shift_ptr, int16_t *qcoeff_ptr, int16_t *dqcoeff_ptr, int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"
2013-09-04 21:03:28 +02:00
specialize vp9_quantize_b_32x32 $ssse3_x86_64
2013-07-01 20:36:33 +02:00
2012-10-22 05:47:57 +02:00
#
# Structured Similarity (SSIM)
#
if [ " $CONFIG_INTERNAL_STATS " = "yes" ] ; then
2012-12-19 00:31:19 +01:00
prototype void vp9_ssim_parms_8x8 "uint8_t *s, int sp, uint8_t *r, int rp, unsigned long *sum_s, unsigned long *sum_r, unsigned long *sum_sq_s, unsigned long *sum_sq_r, unsigned long *sum_sxr"
2013-08-05 21:07:30 +02:00
specialize vp9_ssim_parms_8x8 $sse2_x86_64
2012-10-22 05:47:57 +02:00
2012-12-19 00:31:19 +01:00
prototype void vp9_ssim_parms_16x16 "uint8_t *s, int sp, uint8_t *r, int rp, unsigned long *sum_s, unsigned long *sum_r, unsigned long *sum_sq_s, unsigned long *sum_sq_r, unsigned long *sum_sxr"
2013-08-05 21:07:30 +02:00
specialize vp9_ssim_parms_16x16 $sse2_x86_64
2012-10-22 05:47:57 +02:00
fi
2012-10-29 19:25:56 +01:00
# fdct functions
2013-02-13 18:03:21 +01:00
prototype void vp9_short_fht4x4 "int16_t *InputData, int16_t *OutputData, int pitch, int tx_type"
2013-06-28 22:37:19 +02:00
specialize vp9_short_fht4x4 sse2
2013-02-13 18:03:21 +01:00
prototype void vp9_short_fht8x8 "int16_t *InputData, int16_t *OutputData, int pitch, int tx_type"
2013-06-20 18:00:23 +02:00
specialize vp9_short_fht8x8 sse2
2013-02-13 18:03:21 +01:00
prototype void vp9_short_fht16x16 "int16_t *InputData, int16_t *OutputData, int pitch, int tx_type"
2013-07-03 18:05:01 +02:00
specialize vp9_short_fht16x16 sse2
2013-02-13 18:03:21 +01:00
2012-12-19 00:31:19 +01:00
prototype void vp9_short_fdct8x8 "int16_t *InputData, int16_t *OutputData, int pitch"
2013-02-27 21:29:06 +01:00
specialize vp9_short_fdct8x8 sse2
2012-10-29 19:25:56 +01:00
2012-12-19 00:31:19 +01:00
prototype void vp9_short_fdct4x4 "int16_t *InputData, int16_t *OutputData, int pitch"
2013-03-26 00:18:38 +01:00
specialize vp9_short_fdct4x4 sse2
2012-10-29 19:25:56 +01:00
2013-10-17 22:02:28 +02:00
prototype void vp9_short_fdct32x32 "int16_t *InputData, int16_t *OutputData, int stride"
2013-08-07 23:45:37 +02:00
specialize vp9_short_fdct32x32 sse2
32x32 transform for superblocks.
This adds Debargha's DCT/DWT hybrid and a regular 32x32 DCT, and adds
code all over the place to wrap that in the bitstream/encoder/decoder/RD.
Some implementation notes (these probably need careful review):
- token range is extended by 1 bit, since the value range out of this
transform is [-16384,16383].
- the coefficients coming out of the FDCT are manually scaled back by
1 bit, or else they won't fit in int16_t (they are 17 bits). Because
of this, the RD error scoring does not right-shift the MSE score by
two (unlike for 4x4/8x8/16x16).
- to compensate for this loss in precision, the quantizer is halved
also. This is currently a little hacky.
- FDCT and IDCT is double-only right now. Needs a fixed-point impl.
- There are no default probabilities for the 32x32 transform yet; I'm
simply using the 16x16 luma ones. A future commit will add newly
generated probabilities for all transforms.
- No ADST version. I don't think we'll add one for this level; if an
ADST is desired, transform-size selection can scale back to 16x16
or lower, and use an ADST at that level.
Additional notes specific to Debargha's DWT/DCT hybrid:
- coefficient scale is different for the top/left 16x16 (DCT-over-DWT)
block than for the rest (DWT pixel differences) of the block. Therefore,
RD error scoring isn't easily scalable between coefficient and pixel
domain. Thus, unfortunately, we need to compute the RD distortion in
the pixel domain until we figure out how to scale these appropriately.
Change-Id: I00386f20f35d7fabb19aba94c8162f8aee64ef2b
2012-12-07 23:45:05 +01:00
2013-10-17 22:02:28 +02:00
prototype void vp9_short_fdct32x32_rd "int16_t *InputData, int16_t *OutputData, int stride"
2013-06-19 00:23:25 +02:00
specialize vp9_short_fdct32x32_rd sse2
2013-06-14 20:28:56 +02:00
2013-10-18 20:49:33 +02:00
prototype void vp9_short_fdct16x16 "int16_t *InputData, int16_t *OutputData, int stride"
2013-03-15 23:50:55 +01:00
specialize vp9_short_fdct16x16 sse2
2012-10-29 19:25:56 +01:00
2013-03-12 19:24:04 +01:00
prototype void vp9_short_walsh4x4 "int16_t *InputData, int16_t *OutputData, int pitch"
specialize vp9_short_walsh4x4
2012-10-29 19:25:56 +01:00
2012-11-06 01:58:03 +01:00
#
# Motion search
#
2013-04-24 01:22:47 +02:00
prototype int vp9_full_search_sad "struct macroblock *x, union int_mv *ref_mv, int sad_per_bit, int distance, struct vp9_variance_vtable *fn_ptr, DEC_MVCOSTS, union int_mv *center_mv, int n"
2012-11-06 01:58:03 +01:00
specialize vp9_full_search_sad sse3 sse4_1
vp9_full_search_sad_sse3 = vp9_full_search_sadx3
vp9_full_search_sad_sse4_1 = vp9_full_search_sadx8
2013-04-24 01:22:47 +02:00
prototype int vp9_refining_search_sad "struct macroblock *x, union int_mv *ref_mv, int sad_per_bit, int distance, struct vp9_variance_vtable *fn_ptr, DEC_MVCOSTS, union int_mv *center_mv"
2012-11-06 01:58:03 +01:00
specialize vp9_refining_search_sad sse3
vp9_refining_search_sad_sse3 = vp9_refining_search_sadx4
2013-04-24 01:22:47 +02:00
prototype int vp9_diamond_search_sad "struct macroblock *x, union int_mv *ref_mv, union int_mv *best_mv, int search_param, int sad_per_bit, int *num00, struct vp9_variance_vtable *fn_ptr, DEC_MVCOSTS, union int_mv *center_mv"
2012-11-17 15:11:01 +01:00
specialize vp9_diamond_search_sad sse3
2012-11-06 01:58:03 +01:00
vp9_diamond_search_sad_sse3 = vp9_diamond_search_sadx4
2012-12-19 00:31:19 +01:00
prototype void vp9_temporal_filter_apply "uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count"
2012-11-17 15:11:01 +01:00
specialize vp9_temporal_filter_apply sse2
2012-11-18 21:33:18 +01:00
prototype void vp9_yv12_copy_partial_frame "struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int fraction"
2012-12-02 23:14:00 +01:00
specialize vp9_yv12_copy_partial_frame
2012-11-18 21:33:18 +01:00
2012-11-17 15:11:01 +01:00
2012-10-22 05:47:57 +02:00
fi
# end encoder functions