1sub vp9_common_forward_decls() { 2print <<EOF 3/* 4 * VP9 5 */ 6 7#include "vpx/vpx_integer.h" 8#include "vp9/common/vp9_common.h" 9#include "vp9/common/vp9_enums.h" 10 11struct macroblockd; 12 13/* Encoder forward decls */ 14struct macroblock; 15struct vp9_variance_vtable; 16struct search_site_config; 17struct mv; 18union int_mv; 19struct yv12_buffer_config; 20EOF 21} 22forward_decls qw/vp9_common_forward_decls/; 23 24# x86inc.asm had specific constraints. break it out so it's easy to disable. 25# zero all the variables to avoid tricky else conditions. 26$mmx_x86inc = $sse_x86inc = $sse2_x86inc = $ssse3_x86inc = $avx_x86inc = 27 $avx2_x86inc = ''; 28$mmx_x86_64_x86inc = $sse_x86_64_x86inc = $sse2_x86_64_x86inc = 29 $ssse3_x86_64_x86inc = $avx_x86_64_x86inc = $avx2_x86_64_x86inc = ''; 30if (vpx_config("CONFIG_USE_X86INC") eq "yes") { 31 $mmx_x86inc = 'mmx'; 32 $sse_x86inc = 'sse'; 33 $sse2_x86inc = 'sse2'; 34 $ssse3_x86inc = 'ssse3'; 35 $avx_x86inc = 'avx'; 36 $avx2_x86inc = 'avx2'; 37 if ($opts{arch} eq "x86_64") { 38 $mmx_x86_64_x86inc = 'mmx'; 39 $sse_x86_64_x86inc = 'sse'; 40 $sse2_x86_64_x86inc = 'sse2'; 41 $ssse3_x86_64_x86inc = 'ssse3'; 42 $avx_x86_64_x86inc = 'avx'; 43 $avx2_x86_64_x86inc = 'avx2'; 44 } 45} 46 47# functions that are 64 bit only. 48$mmx_x86_64 = $sse2_x86_64 = $ssse3_x86_64 = $avx_x86_64 = $avx2_x86_64 = ''; 49if ($opts{arch} eq "x86_64") { 50 $mmx_x86_64 = 'mmx'; 51 $sse2_x86_64 = 'sse2'; 52 $ssse3_x86_64 = 'ssse3'; 53 $avx_x86_64 = 'avx'; 54 $avx2_x86_64 = 'avx2'; 55} 56 57# 58# post proc 59# 60if (vpx_config("CONFIG_VP9_POSTPROC") eq "yes") { 61add_proto qw/void vp9_mbpost_proc_down/, "uint8_t *dst, int pitch, int rows, int cols, int flimit"; 62specialize qw/vp9_mbpost_proc_down sse2/; 63$vp9_mbpost_proc_down_sse2=vp9_mbpost_proc_down_xmm; 64 65add_proto qw/void vp9_mbpost_proc_across_ip/, "uint8_t *src, int pitch, int rows, int cols, int flimit"; 66specialize qw/vp9_mbpost_proc_across_ip sse2/; 67$vp9_mbpost_proc_across_ip_sse2=vp9_mbpost_proc_across_ip_xmm; 68 69add_proto qw/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"; 70specialize qw/vp9_post_proc_down_and_across sse2/; 71$vp9_post_proc_down_and_across_sse2=vp9_post_proc_down_and_across_xmm; 72 73add_proto qw/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"; 74specialize qw/vp9_plane_add_noise sse2/; 75$vp9_plane_add_noise_sse2=vp9_plane_add_noise_wmt; 76 77add_proto qw/void vp9_filter_by_weight16x16/, "const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int src_weight"; 78specialize qw/vp9_filter_by_weight16x16 sse2 msa/; 79 80add_proto qw/void vp9_filter_by_weight8x8/, "const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int src_weight"; 81specialize qw/vp9_filter_by_weight8x8 sse2 msa/; 82} 83 84# 85# dct 86# 87if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 88 # Force C versions if CONFIG_EMULATE_HARDWARE is 1 89 if (vpx_config("CONFIG_EMULATE_HARDWARE") eq "yes") { 90 add_proto qw/void vp9_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type"; 91 specialize qw/vp9_iht4x4_16_add/; 92 93 add_proto qw/void vp9_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type"; 94 specialize qw/vp9_iht8x8_64_add/; 95 96 add_proto qw/void vp9_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type"; 97 specialize qw/vp9_iht16x16_256_add/; 98 } else { 99 add_proto qw/void vp9_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type"; 100 specialize qw/vp9_iht4x4_16_add sse2/; 101 102 add_proto qw/void vp9_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type"; 103 specialize qw/vp9_iht8x8_64_add sse2/; 104 105 add_proto qw/void vp9_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type"; 106 specialize qw/vp9_iht16x16_256_add sse2/; 107 } 108} else { 109 # Force C versions if CONFIG_EMULATE_HARDWARE is 1 110 if (vpx_config("CONFIG_EMULATE_HARDWARE") eq "yes") { 111 add_proto qw/void vp9_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type"; 112 specialize qw/vp9_iht4x4_16_add/; 113 114 add_proto qw/void vp9_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type"; 115 specialize qw/vp9_iht8x8_64_add/; 116 117 add_proto qw/void vp9_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type"; 118 specialize qw/vp9_iht16x16_256_add/; 119 } else { 120 add_proto qw/void vp9_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type"; 121 specialize qw/vp9_iht4x4_16_add sse2 neon dspr2 msa/; 122 123 add_proto qw/void vp9_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type"; 124 specialize qw/vp9_iht8x8_64_add sse2 neon dspr2 msa/; 125 126 add_proto qw/void vp9_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type"; 127 specialize qw/vp9_iht16x16_256_add sse2 dspr2 msa/; 128 } 129} 130 131# High bitdepth functions 132if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 133 # 134 # Sub Pixel Filters 135 # 136 add_proto qw/void vp9_highbd_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, int bps"; 137 specialize qw/vp9_highbd_convolve_copy/; 138 139 add_proto qw/void vp9_highbd_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, int bps"; 140 specialize qw/vp9_highbd_convolve_avg/; 141 142 add_proto qw/void vp9_highbd_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, int bps"; 143 specialize qw/vp9_highbd_convolve8/, "$sse2_x86_64"; 144 145 add_proto qw/void vp9_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"; 146 specialize qw/vp9_highbd_convolve8_horiz/, "$sse2_x86_64"; 147 148 add_proto qw/void vp9_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"; 149 specialize qw/vp9_highbd_convolve8_vert/, "$sse2_x86_64"; 150 151 add_proto qw/void vp9_highbd_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, int bps"; 152 specialize qw/vp9_highbd_convolve8_avg/, "$sse2_x86_64"; 153 154 add_proto qw/void vp9_highbd_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, int bps"; 155 specialize qw/vp9_highbd_convolve8_avg_horiz/, "$sse2_x86_64"; 156 157 add_proto qw/void vp9_highbd_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, int bps"; 158 specialize qw/vp9_highbd_convolve8_avg_vert/, "$sse2_x86_64"; 159 160 # 161 # post proc 162 # 163 if (vpx_config("CONFIG_VP9_POSTPROC") eq "yes") { 164 add_proto qw/void vp9_highbd_mbpost_proc_down/, "uint16_t *dst, int pitch, int rows, int cols, int flimit"; 165 specialize qw/vp9_highbd_mbpost_proc_down/; 166 167 add_proto qw/void vp9_highbd_mbpost_proc_across_ip/, "uint16_t *src, int pitch, int rows, int cols, int flimit"; 168 specialize qw/vp9_highbd_mbpost_proc_across_ip/; 169 170 add_proto qw/void vp9_highbd_post_proc_down_and_across/, "const uint16_t *src_ptr, uint16_t *dst_ptr, int src_pixels_per_line, int dst_pixels_per_line, int rows, int cols, int flimit"; 171 specialize qw/vp9_highbd_post_proc_down_and_across/; 172 173 add_proto qw/void vp9_highbd_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"; 174 specialize qw/vp9_highbd_plane_add_noise/; 175 } 176 177 # 178 # dct 179 # 180 # Note as optimized versions of these functions are added we need to add a check to ensure 181 # that when CONFIG_EMULATE_HARDWARE is on, it defaults to the C versions only. 182 add_proto qw/void vp9_highbd_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd"; 183 specialize qw/vp9_highbd_iht4x4_16_add/; 184 185 add_proto qw/void vp9_highbd_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd"; 186 specialize qw/vp9_highbd_iht8x8_64_add/; 187 188 add_proto qw/void vp9_highbd_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type, int bd"; 189 specialize qw/vp9_highbd_iht16x16_256_add/; 190} 191 192# 193# Encoder functions below this point. 194# 195if (vpx_config("CONFIG_VP9_ENCODER") eq "yes") { 196 197add_proto qw/unsigned int vp9_avg_8x8/, "const uint8_t *, int p"; 198specialize qw/vp9_avg_8x8 sse2 neon msa/; 199 200add_proto qw/unsigned int vp9_avg_4x4/, "const uint8_t *, int p"; 201specialize qw/vp9_avg_4x4 sse2 msa/; 202 203add_proto qw/void vp9_minmax_8x8/, "const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max"; 204specialize qw/vp9_minmax_8x8 sse2/; 205 206add_proto qw/void vp9_hadamard_8x8/, "int16_t const *src_diff, int src_stride, int16_t *coeff"; 207specialize qw/vp9_hadamard_8x8 sse2/, "$ssse3_x86_64_x86inc"; 208 209add_proto qw/void vp9_hadamard_16x16/, "int16_t const *src_diff, int src_stride, int16_t *coeff"; 210specialize qw/vp9_hadamard_16x16 sse2/; 211 212add_proto qw/int16_t vp9_satd/, "const int16_t *coeff, int length"; 213specialize qw/vp9_satd sse2/; 214 215add_proto qw/void vp9_int_pro_row/, "int16_t *hbuf, uint8_t const *ref, const int ref_stride, const int height"; 216specialize qw/vp9_int_pro_row sse2 neon/; 217 218add_proto qw/int16_t vp9_int_pro_col/, "uint8_t const *ref, const int width"; 219specialize qw/vp9_int_pro_col sse2 neon/; 220 221add_proto qw/int vp9_vector_var/, "int16_t const *ref, int16_t const *src, const int bwl"; 222specialize qw/vp9_vector_var neon sse2/; 223 224if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 225 add_proto qw/unsigned int vp9_highbd_avg_8x8/, "const uint8_t *, int p"; 226 specialize qw/vp9_highbd_avg_8x8/; 227 add_proto qw/unsigned int vp9_highbd_avg_4x4/, "const uint8_t *, int p"; 228 specialize qw/vp9_highbd_avg_4x4/; 229 add_proto qw/void vp9_highbd_minmax_8x8/, "const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max"; 230 specialize qw/vp9_highbd_minmax_8x8/; 231} 232 233# ENCODEMB INVOKE 234 235# 236# Denoiser 237# 238if (vpx_config("CONFIG_VP9_TEMPORAL_DENOISING") eq "yes") { 239 add_proto qw/int vp9_denoiser_filter/, "const uint8_t *sig, int sig_stride, const uint8_t *mc_avg, int mc_avg_stride, uint8_t *avg, int avg_stride, int increase_denoising, BLOCK_SIZE bs, int motion_magnitude"; 240 specialize qw/vp9_denoiser_filter sse2/; 241} 242 243if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 244 add_proto qw/int64_t vp9_block_error/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz"; 245 specialize qw/vp9_block_error/; 246 247 add_proto qw/int64_t vp9_highbd_block_error/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz, int bd"; 248 specialize qw/vp9_highbd_block_error/, "$sse2_x86inc"; 249 250 add_proto qw/int64_t vp9_highbd_block_error_8bit/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz"; 251 specialize qw/vp9_highbd_block_error_8bit/, "$sse2_x86inc", "$avx_x86inc"; 252 253 add_proto qw/void vp9_quantize_fp/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"; 254 specialize qw/vp9_quantize_fp/; 255 256 add_proto qw/void vp9_quantize_fp_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"; 257 specialize qw/vp9_quantize_fp_32x32/; 258 259 add_proto qw/void vp9_fdct8x8_quant/, "const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"; 260 specialize qw/vp9_fdct8x8_quant/; 261} else { 262 add_proto qw/int64_t vp9_block_error/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz"; 263 specialize qw/vp9_block_error avx2 msa/, "$sse2_x86inc"; 264 265 add_proto qw/int64_t vp9_block_error_fp/, "const int16_t *coeff, const int16_t *dqcoeff, int block_size"; 266 specialize qw/vp9_block_error_fp neon/, "$sse2_x86inc"; 267 268 add_proto qw/void vp9_quantize_fp/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"; 269 specialize qw/vp9_quantize_fp neon sse2/, "$ssse3_x86_64_x86inc"; 270 271 add_proto qw/void vp9_quantize_fp_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"; 272 specialize qw/vp9_quantize_fp_32x32/, "$ssse3_x86_64_x86inc"; 273 274 add_proto qw/void vp9_fdct8x8_quant/, "const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"; 275 specialize qw/vp9_fdct8x8_quant sse2 ssse3 neon/; 276} 277 278# fdct functions 279 280if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 281 add_proto qw/void vp9_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 282 specialize qw/vp9_fht4x4 sse2/; 283 284 add_proto qw/void vp9_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 285 specialize qw/vp9_fht8x8 sse2/; 286 287 add_proto qw/void vp9_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 288 specialize qw/vp9_fht16x16 sse2/; 289 290 add_proto qw/void vp9_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride"; 291 specialize qw/vp9_fwht4x4/, "$mmx_x86inc"; 292} else { 293 add_proto qw/void vp9_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 294 specialize qw/vp9_fht4x4 sse2 msa/; 295 296 add_proto qw/void vp9_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 297 specialize qw/vp9_fht8x8 sse2 msa/; 298 299 add_proto qw/void vp9_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 300 specialize qw/vp9_fht16x16 sse2 msa/; 301 302 add_proto qw/void vp9_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride"; 303 specialize qw/vp9_fwht4x4 msa/, "$mmx_x86inc"; 304} 305 306# 307# Motion search 308# 309add_proto qw/int vp9_full_search_sad/, "const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv"; 310specialize qw/vp9_full_search_sad sse3 sse4_1/; 311$vp9_full_search_sad_sse3=vp9_full_search_sadx3; 312$vp9_full_search_sad_sse4_1=vp9_full_search_sadx8; 313 314add_proto qw/int vp9_diamond_search_sad/, "const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv"; 315specialize qw/vp9_diamond_search_sad/; 316 317add_proto qw/int vp9_full_range_search/, "const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv"; 318specialize qw/vp9_full_range_search/; 319 320add_proto qw/void vp9_temporal_filter_apply/, "uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count"; 321specialize qw/vp9_temporal_filter_apply sse2 msa/; 322 323if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 324 325 # ENCODEMB INVOKE 326 327 add_proto qw/void vp9_highbd_quantize_fp/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"; 328 specialize qw/vp9_highbd_quantize_fp/; 329 330 add_proto qw/void vp9_highbd_quantize_fp_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"; 331 specialize qw/vp9_highbd_quantize_fp_32x32/; 332 333 # fdct functions 334 add_proto qw/void vp9_highbd_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 335 specialize qw/vp9_highbd_fht4x4/; 336 337 add_proto qw/void vp9_highbd_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 338 specialize qw/vp9_highbd_fht8x8/; 339 340 add_proto qw/void vp9_highbd_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type"; 341 specialize qw/vp9_highbd_fht16x16/; 342 343 add_proto qw/void vp9_highbd_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride"; 344 specialize qw/vp9_highbd_fwht4x4/; 345 346 add_proto qw/void vp9_highbd_temporal_filter_apply/, "uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count"; 347 specialize qw/vp9_highbd_temporal_filter_apply/; 348 349} 350# End vp9_high encoder functions 351 352} 353# end encoder functions 3541; 355