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