1 // This file is generated. Do not edit.
2 #ifndef AV1_RTCD_H_
3 #define AV1_RTCD_H_
4 
5 #ifdef RTCD_C
6 #define RTCD_EXTERN
7 #else
8 #define RTCD_EXTERN extern
9 #endif
10 
11 /*
12  * AV1
13  */
14 
15 #include "aom/aom_integer.h"
16 #include "aom_dsp/txfm_common.h"
17 #include "av1/common/av1_txfm.h"
18 #include "av1/common/common.h"
19 #include "av1/common/convolve.h"
20 #include "av1/common/enums.h"
21 #include "av1/common/filter.h"
22 #include "av1/common/odintrin.h"
23 #include "av1/common/quant_common.h"
24 #include "av1/common/restoration.h"
25 
26 struct macroblockd;
27 
28 /* Encoder forward decls */
29 struct macroblock;
30 struct txfm_param;
31 struct aom_variance_vtable;
32 struct search_site_config;
33 struct yv12_buffer_config;
34 struct NN_CONFIG;
35 typedef struct NN_CONFIG NN_CONFIG;
36 
37 enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION);
38 #if CONFIG_NN_V2
39 enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS);
40 struct NN_CONFIG_V2;
41 typedef struct NN_CONFIG_V2 NN_CONFIG_V2;
42 struct FC_LAYER;
43 typedef struct FC_LAYER FC_LAYER;
44 #endif  // CONFIG_NN_V2
45 
46 struct CNN_CONFIG;
47 typedef struct CNN_CONFIG CNN_CONFIG;
48 struct CNN_LAYER_CONFIG;
49 typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG;
50 struct CNN_THREAD_DATA;
51 typedef struct CNN_THREAD_DATA CNN_THREAD_DATA;
52 struct CNN_BRANCH_CONFIG;
53 typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG;
54 struct CNN_MULTI_OUT;
55 typedef struct CNN_MULTI_OUT CNN_MULTI_OUT;
56 
57 /* Function pointers return by CfL functions */
58 typedef void (*cfl_subsample_lbd_fn)(const uint8_t* input,
59                                      int input_stride,
60                                      uint16_t* output_q3);
61 
62 #if CONFIG_AV1_HIGHBITDEPTH
63 typedef void (*cfl_subsample_hbd_fn)(const uint16_t* input,
64                                      int input_stride,
65                                      uint16_t* output_q3);
66 
67 typedef void (*cfl_predict_hbd_fn)(const int16_t* src,
68                                    uint16_t* dst,
69                                    int dst_stride,
70                                    int alpha_q3,
71                                    int bd);
72 #endif
73 
74 typedef void (*cfl_subtract_average_fn)(const uint16_t* src, int16_t* dst);
75 
76 typedef void (*cfl_predict_lbd_fn)(const int16_t* src,
77                                    uint8_t* dst,
78                                    int dst_stride,
79                                    int alpha_q3);
80 
81 #ifdef __cplusplus
82 extern "C" {
83 #endif
84 
85 void aom_quantize_b_helper_c(const tran_low_t* coeff_ptr,
86                              intptr_t n_coeffs,
87                              const int16_t* zbin_ptr,
88                              const int16_t* round_ptr,
89                              const int16_t* quant_ptr,
90                              const int16_t* quant_shift_ptr,
91                              tran_low_t* qcoeff_ptr,
92                              tran_low_t* dqcoeff_ptr,
93                              const int16_t* dequant_ptr,
94                              uint16_t* eob_ptr,
95                              const int16_t* scan,
96                              const int16_t* iscan,
97                              const qm_val_t* qm_ptr,
98                              const qm_val_t* iqm_ptr,
99                              const int log_scale);
100 void aom_quantize_b_helper_neon(const tran_low_t* coeff_ptr,
101                                 intptr_t n_coeffs,
102                                 const int16_t* zbin_ptr,
103                                 const int16_t* round_ptr,
104                                 const int16_t* quant_ptr,
105                                 const int16_t* quant_shift_ptr,
106                                 tran_low_t* qcoeff_ptr,
107                                 tran_low_t* dqcoeff_ptr,
108                                 const int16_t* dequant_ptr,
109                                 uint16_t* eob_ptr,
110                                 const int16_t* scan,
111                                 const int16_t* iscan,
112                                 const qm_val_t* qm_ptr,
113                                 const qm_val_t* iqm_ptr,
114                                 const int log_scale);
115 #define aom_quantize_b_helper aom_quantize_b_helper_neon
116 
117 void av1_apply_selfguided_restoration_c(const uint8_t* dat,
118                                         int width,
119                                         int height,
120                                         int stride,
121                                         int eps,
122                                         const int* xqd,
123                                         uint8_t* dst,
124                                         int dst_stride,
125                                         int32_t* tmpbuf,
126                                         int bit_depth,
127                                         int highbd);
128 void av1_apply_selfguided_restoration_neon(const uint8_t* dat,
129                                            int width,
130                                            int height,
131                                            int stride,
132                                            int eps,
133                                            const int* xqd,
134                                            uint8_t* dst,
135                                            int dst_stride,
136                                            int32_t* tmpbuf,
137                                            int bit_depth,
138                                            int highbd);
139 #define av1_apply_selfguided_restoration av1_apply_selfguided_restoration_neon
140 
141 void av1_apply_temporal_filter_c(const struct yv12_buffer_config* ref_frame,
142                                  const struct macroblockd* mbd,
143                                  const BLOCK_SIZE block_size,
144                                  const int mb_row,
145                                  const int mb_col,
146                                  const int num_planes,
147                                  const double* noise_levels,
148                                  const MV* subblock_mvs,
149                                  const int* subblock_mses,
150                                  const int q_factor,
151                                  const int filter_strength,
152                                  const uint8_t* pred,
153                                  uint32_t* accum,
154                                  uint16_t* count);
155 #define av1_apply_temporal_filter av1_apply_temporal_filter_c
156 
157 int64_t av1_block_error_c(const tran_low_t* coeff,
158                           const tran_low_t* dqcoeff,
159                           intptr_t block_size,
160                           int64_t* ssz);
161 int64_t av1_block_error_neon(const tran_low_t* coeff,
162                              const tran_low_t* dqcoeff,
163                              intptr_t block_size,
164                              int64_t* ssz);
165 #define av1_block_error av1_block_error_neon
166 
167 int64_t av1_block_error_lp_c(const int16_t* coeff,
168                              const int16_t* dqcoeff,
169                              intptr_t block_size);
170 int64_t av1_block_error_lp_neon(const int16_t* coeff,
171                                 const int16_t* dqcoeff,
172                                 intptr_t block_size);
173 #define av1_block_error_lp av1_block_error_lp_neon
174 
175 void av1_build_compound_diffwtd_mask_c(uint8_t* mask,
176                                        DIFFWTD_MASK_TYPE mask_type,
177                                        const uint8_t* src0,
178                                        int src0_stride,
179                                        const uint8_t* src1,
180                                        int src1_stride,
181                                        int h,
182                                        int w);
183 #define av1_build_compound_diffwtd_mask av1_build_compound_diffwtd_mask_c
184 
185 void av1_build_compound_diffwtd_mask_d16_c(uint8_t* mask,
186                                            DIFFWTD_MASK_TYPE mask_type,
187                                            const CONV_BUF_TYPE* src0,
188                                            int src0_stride,
189                                            const CONV_BUF_TYPE* src1,
190                                            int src1_stride,
191                                            int h,
192                                            int w,
193                                            ConvolveParams* conv_params,
194                                            int bd);
195 void av1_build_compound_diffwtd_mask_d16_neon(uint8_t* mask,
196                                               DIFFWTD_MASK_TYPE mask_type,
197                                               const CONV_BUF_TYPE* src0,
198                                               int src0_stride,
199                                               const CONV_BUF_TYPE* src1,
200                                               int src1_stride,
201                                               int h,
202                                               int w,
203                                               ConvolveParams* conv_params,
204                                               int bd);
205 #define av1_build_compound_diffwtd_mask_d16 \
206   av1_build_compound_diffwtd_mask_d16_neon
207 
208 void av1_build_compound_diffwtd_mask_highbd_c(uint8_t* mask,
209                                               DIFFWTD_MASK_TYPE mask_type,
210                                               const uint8_t* src0,
211                                               int src0_stride,
212                                               const uint8_t* src1,
213                                               int src1_stride,
214                                               int h,
215                                               int w,
216                                               int bd);
217 #define av1_build_compound_diffwtd_mask_highbd \
218   av1_build_compound_diffwtd_mask_highbd_c
219 
220 int64_t av1_calc_frame_error_c(const uint8_t* const ref,
221                                int stride,
222                                const uint8_t* const dst,
223                                int p_width,
224                                int p_height,
225                                int p_stride);
226 #define av1_calc_frame_error av1_calc_frame_error_c
227 
228 void av1_calc_proj_params_c(const uint8_t* src8,
229                             int width,
230                             int height,
231                             int src_stride,
232                             const uint8_t* dat8,
233                             int dat_stride,
234                             int32_t* flt0,
235                             int flt0_stride,
236                             int32_t* flt1,
237                             int flt1_stride,
238                             int64_t H[2][2],
239                             int64_t C[2],
240                             const sgr_params_type* params);
241 #define av1_calc_proj_params av1_calc_proj_params_c
242 
243 void av1_calc_proj_params_high_bd_c(const uint8_t* src8,
244                                     int width,
245                                     int height,
246                                     int src_stride,
247                                     const uint8_t* dat8,
248                                     int dat_stride,
249                                     int32_t* flt0,
250                                     int flt0_stride,
251                                     int32_t* flt1,
252                                     int flt1_stride,
253                                     int64_t H[2][2],
254                                     int64_t C[2],
255                                     const sgr_params_type* params);
256 #define av1_calc_proj_params_high_bd av1_calc_proj_params_high_bd_c
257 
258 void av1_cnn_activate_c(float** input,
259                         int channels,
260                         int width,
261                         int height,
262                         int stride,
263                         ACTIVATION layer_activation);
264 #define av1_cnn_activate av1_cnn_activate_c
265 
266 void av1_cnn_add_c(float** input,
267                    int channels,
268                    int width,
269                    int height,
270                    int stride,
271                    const float** add);
272 #define av1_cnn_add av1_cnn_add_c
273 
274 void av1_cnn_batchnorm_c(float** image,
275                          int channels,
276                          int width,
277                          int height,
278                          int stride,
279                          const float* gamma,
280                          const float* beta,
281                          const float* mean,
282                          const float* std);
283 #define av1_cnn_batchnorm av1_cnn_batchnorm_c
284 
285 void av1_cnn_convolve_c(const float** input,
286                         int in_width,
287                         int in_height,
288                         int in_stride,
289                         const CNN_LAYER_CONFIG* layer_config,
290                         float** output,
291                         int out_stride,
292                         int start_idx,
293                         int step);
294 #define av1_cnn_convolve av1_cnn_convolve_c
295 
296 void av1_cnn_deconvolve_c(const float** input,
297                           int in_width,
298                           int in_height,
299                           int in_stride,
300                           const CNN_LAYER_CONFIG* layer_config,
301                           float** output,
302                           int out_stride);
303 #define av1_cnn_deconvolve av1_cnn_deconvolve_c
304 
305 void av1_cnn_predict_c(const float** input,
306                        int in_width,
307                        int in_height,
308                        int in_stride,
309                        const CNN_CONFIG* cnn_config,
310                        const CNN_THREAD_DATA* thread_data,
311                        CNN_MULTI_OUT* output_struct);
312 #define av1_cnn_predict av1_cnn_predict_c
313 
314 double av1_compute_cross_correlation_c(unsigned char* im1,
315                                        int stride1,
316                                        int x1,
317                                        int y1,
318                                        unsigned char* im2,
319                                        int stride2,
320                                        int x2,
321                                        int y2);
322 #define av1_compute_cross_correlation av1_compute_cross_correlation_c
323 
324 void av1_compute_stats_c(int wiener_win,
325                          const uint8_t* dgd8,
326                          const uint8_t* src8,
327                          int h_start,
328                          int h_end,
329                          int v_start,
330                          int v_end,
331                          int dgd_stride,
332                          int src_stride,
333                          int64_t* M,
334                          int64_t* H);
335 #define av1_compute_stats av1_compute_stats_c
336 
337 void av1_compute_stats_highbd_c(int wiener_win,
338                                 const uint8_t* dgd8,
339                                 const uint8_t* src8,
340                                 int h_start,
341                                 int h_end,
342                                 int v_start,
343                                 int v_end,
344                                 int dgd_stride,
345                                 int src_stride,
346                                 int64_t* M,
347                                 int64_t* H,
348                                 aom_bit_depth_t bit_depth);
349 #define av1_compute_stats_highbd av1_compute_stats_highbd_c
350 
351 void av1_convolve_2d_scale_c(const uint8_t* src,
352                              int src_stride,
353                              uint8_t* dst,
354                              int dst_stride,
355                              int w,
356                              int h,
357                              const InterpFilterParams* filter_params_x,
358                              const InterpFilterParams* filter_params_y,
359                              const int subpel_x_qn,
360                              const int x_step_qn,
361                              const int subpel_y_qn,
362                              const int y_step_qn,
363                              ConvolveParams* conv_params);
364 #define av1_convolve_2d_scale av1_convolve_2d_scale_c
365 
366 void av1_convolve_2d_sr_c(const uint8_t* src,
367                           int src_stride,
368                           uint8_t* dst,
369                           int dst_stride,
370                           int w,
371                           int h,
372                           const InterpFilterParams* filter_params_x,
373                           const InterpFilterParams* filter_params_y,
374                           const int subpel_x_qn,
375                           const int subpel_y_qn,
376                           ConvolveParams* conv_params);
377 void av1_convolve_2d_sr_neon(const uint8_t* src,
378                              int src_stride,
379                              uint8_t* dst,
380                              int dst_stride,
381                              int w,
382                              int h,
383                              const InterpFilterParams* filter_params_x,
384                              const InterpFilterParams* filter_params_y,
385                              const int subpel_x_qn,
386                              const int subpel_y_qn,
387                              ConvolveParams* conv_params);
388 #define av1_convolve_2d_sr av1_convolve_2d_sr_neon
389 
390 void av1_convolve_horiz_rs_c(const uint8_t* src,
391                              int src_stride,
392                              uint8_t* dst,
393                              int dst_stride,
394                              int w,
395                              int h,
396                              const int16_t* x_filters,
397                              int x0_qn,
398                              int x_step_qn);
399 #define av1_convolve_horiz_rs av1_convolve_horiz_rs_c
400 
401 void av1_convolve_x_sr_c(const uint8_t* src,
402                          int src_stride,
403                          uint8_t* dst,
404                          int dst_stride,
405                          int w,
406                          int h,
407                          const InterpFilterParams* filter_params_x,
408                          const int subpel_x_qn,
409                          ConvolveParams* conv_params);
410 void av1_convolve_x_sr_neon(const uint8_t* src,
411                             int src_stride,
412                             uint8_t* dst,
413                             int dst_stride,
414                             int w,
415                             int h,
416                             const InterpFilterParams* filter_params_x,
417                             const int subpel_x_qn,
418                             ConvolveParams* conv_params);
419 #define av1_convolve_x_sr av1_convolve_x_sr_neon
420 
421 void av1_convolve_y_sr_c(const uint8_t* src,
422                          int src_stride,
423                          uint8_t* dst,
424                          int dst_stride,
425                          int w,
426                          int h,
427                          const InterpFilterParams* filter_params_y,
428                          const int subpel_y_qn);
429 void av1_convolve_y_sr_neon(const uint8_t* src,
430                             int src_stride,
431                             uint8_t* dst,
432                             int dst_stride,
433                             int w,
434                             int h,
435                             const InterpFilterParams* filter_params_y,
436                             const int subpel_y_qn);
437 #define av1_convolve_y_sr av1_convolve_y_sr_neon
438 
439 void av1_dist_wtd_convolve_2d_c(const uint8_t* src,
440                                 int src_stride,
441                                 uint8_t* dst,
442                                 int dst_stride,
443                                 int w,
444                                 int h,
445                                 const InterpFilterParams* filter_params_x,
446                                 const InterpFilterParams* filter_params_y,
447                                 const int subpel_x_qn,
448                                 const int subpel_y_qn,
449                                 ConvolveParams* conv_params);
450 void av1_dist_wtd_convolve_2d_neon(const uint8_t* src,
451                                    int src_stride,
452                                    uint8_t* dst,
453                                    int dst_stride,
454                                    int w,
455                                    int h,
456                                    const InterpFilterParams* filter_params_x,
457                                    const InterpFilterParams* filter_params_y,
458                                    const int subpel_x_qn,
459                                    const int subpel_y_qn,
460                                    ConvolveParams* conv_params);
461 #define av1_dist_wtd_convolve_2d av1_dist_wtd_convolve_2d_neon
462 
463 void av1_dist_wtd_convolve_2d_copy_c(const uint8_t* src,
464                                      int src_stride,
465                                      uint8_t* dst,
466                                      int dst_stride,
467                                      int w,
468                                      int h,
469                                      ConvolveParams* conv_params);
470 void av1_dist_wtd_convolve_2d_copy_neon(const uint8_t* src,
471                                         int src_stride,
472                                         uint8_t* dst,
473                                         int dst_stride,
474                                         int w,
475                                         int h,
476                                         ConvolveParams* conv_params);
477 #define av1_dist_wtd_convolve_2d_copy av1_dist_wtd_convolve_2d_copy_neon
478 
479 void av1_dist_wtd_convolve_x_c(const uint8_t* src,
480                                int src_stride,
481                                uint8_t* dst,
482                                int dst_stride,
483                                int w,
484                                int h,
485                                const InterpFilterParams* filter_params_x,
486                                const int subpel_x_qn,
487                                ConvolveParams* conv_params);
488 void av1_dist_wtd_convolve_x_neon(const uint8_t* src,
489                                   int src_stride,
490                                   uint8_t* dst,
491                                   int dst_stride,
492                                   int w,
493                                   int h,
494                                   const InterpFilterParams* filter_params_x,
495                                   const int subpel_x_qn,
496                                   ConvolveParams* conv_params);
497 #define av1_dist_wtd_convolve_x av1_dist_wtd_convolve_x_neon
498 
499 void av1_dist_wtd_convolve_y_c(const uint8_t* src,
500                                int src_stride,
501                                uint8_t* dst,
502                                int dst_stride,
503                                int w,
504                                int h,
505                                const InterpFilterParams* filter_params_y,
506                                const int subpel_y_qn,
507                                ConvolveParams* conv_params);
508 void av1_dist_wtd_convolve_y_neon(const uint8_t* src,
509                                   int src_stride,
510                                   uint8_t* dst,
511                                   int dst_stride,
512                                   int w,
513                                   int h,
514                                   const InterpFilterParams* filter_params_y,
515                                   const int subpel_y_qn,
516                                   ConvolveParams* conv_params);
517 #define av1_dist_wtd_convolve_y av1_dist_wtd_convolve_y_neon
518 
519 void av1_dr_prediction_z1_c(uint8_t* dst,
520                             ptrdiff_t stride,
521                             int bw,
522                             int bh,
523                             const uint8_t* above,
524                             const uint8_t* left,
525                             int upsample_above,
526                             int dx,
527                             int dy);
528 void av1_dr_prediction_z1_neon(uint8_t* dst,
529                                ptrdiff_t stride,
530                                int bw,
531                                int bh,
532                                const uint8_t* above,
533                                const uint8_t* left,
534                                int upsample_above,
535                                int dx,
536                                int dy);
537 #define av1_dr_prediction_z1 av1_dr_prediction_z1_neon
538 
539 void av1_dr_prediction_z2_c(uint8_t* dst,
540                             ptrdiff_t stride,
541                             int bw,
542                             int bh,
543                             const uint8_t* above,
544                             const uint8_t* left,
545                             int upsample_above,
546                             int upsample_left,
547                             int dx,
548                             int dy);
549 void av1_dr_prediction_z2_neon(uint8_t* dst,
550                                ptrdiff_t stride,
551                                int bw,
552                                int bh,
553                                const uint8_t* above,
554                                const uint8_t* left,
555                                int upsample_above,
556                                int upsample_left,
557                                int dx,
558                                int dy);
559 #define av1_dr_prediction_z2 av1_dr_prediction_z2_neon
560 
561 void av1_dr_prediction_z3_c(uint8_t* dst,
562                             ptrdiff_t stride,
563                             int bw,
564                             int bh,
565                             const uint8_t* above,
566                             const uint8_t* left,
567                             int upsample_left,
568                             int dx,
569                             int dy);
570 void av1_dr_prediction_z3_neon(uint8_t* dst,
571                                ptrdiff_t stride,
572                                int bw,
573                                int bh,
574                                const uint8_t* above,
575                                const uint8_t* left,
576                                int upsample_left,
577                                int dx,
578                                int dy);
579 #define av1_dr_prediction_z3 av1_dr_prediction_z3_neon
580 
581 void av1_filter_intra_edge_c(uint8_t* p, int sz, int strength);
582 #define av1_filter_intra_edge av1_filter_intra_edge_c
583 
584 void av1_filter_intra_edge_high_c(uint16_t* p, int sz, int strength);
585 #define av1_filter_intra_edge_high av1_filter_intra_edge_high_c
586 
587 void av1_filter_intra_predictor_c(uint8_t* dst,
588                                   ptrdiff_t stride,
589                                   TX_SIZE tx_size,
590                                   const uint8_t* above,
591                                   const uint8_t* left,
592                                   int mode);
593 void av1_filter_intra_predictor_neon(uint8_t* dst,
594                                      ptrdiff_t stride,
595                                      TX_SIZE tx_size,
596                                      const uint8_t* above,
597                                      const uint8_t* left,
598                                      int mode);
599 #define av1_filter_intra_predictor av1_filter_intra_predictor_neon
600 
601 void av1_fwd_txfm2d_16x16_c(const int16_t* input,
602                             int32_t* output,
603                             int stride,
604                             TX_TYPE tx_type,
605                             int bd);
606 void av1_fwd_txfm2d_16x16_neon(const int16_t* input,
607                                int32_t* output,
608                                int stride,
609                                TX_TYPE tx_type,
610                                int bd);
611 #define av1_fwd_txfm2d_16x16 av1_fwd_txfm2d_16x16_neon
612 
613 void av1_fwd_txfm2d_16x32_c(const int16_t* input,
614                             int32_t* output,
615                             int stride,
616                             TX_TYPE tx_type,
617                             int bd);
618 void av1_fwd_txfm2d_16x32_neon(const int16_t* input,
619                                int32_t* output,
620                                int stride,
621                                TX_TYPE tx_type,
622                                int bd);
623 #define av1_fwd_txfm2d_16x32 av1_fwd_txfm2d_16x32_neon
624 
625 void av1_fwd_txfm2d_16x4_c(const int16_t* input,
626                            int32_t* output,
627                            int stride,
628                            TX_TYPE tx_type,
629                            int bd);
630 void av1_fwd_txfm2d_16x4_neon(const int16_t* input,
631                               int32_t* output,
632                               int stride,
633                               TX_TYPE tx_type,
634                               int bd);
635 #define av1_fwd_txfm2d_16x4 av1_fwd_txfm2d_16x4_neon
636 
637 void av1_fwd_txfm2d_16x64_c(const int16_t* input,
638                             int32_t* output,
639                             int stride,
640                             TX_TYPE tx_type,
641                             int bd);
642 void av1_fwd_txfm2d_16x64_neon(const int16_t* input,
643                                int32_t* output,
644                                int stride,
645                                TX_TYPE tx_type,
646                                int bd);
647 #define av1_fwd_txfm2d_16x64 av1_fwd_txfm2d_16x64_neon
648 
649 void av1_fwd_txfm2d_16x8_c(const int16_t* input,
650                            int32_t* output,
651                            int stride,
652                            TX_TYPE tx_type,
653                            int bd);
654 void av1_fwd_txfm2d_16x8_neon(const int16_t* input,
655                               int32_t* output,
656                               int stride,
657                               TX_TYPE tx_type,
658                               int bd);
659 #define av1_fwd_txfm2d_16x8 av1_fwd_txfm2d_16x8_neon
660 
661 void av1_fwd_txfm2d_32x16_c(const int16_t* input,
662                             int32_t* output,
663                             int stride,
664                             TX_TYPE tx_type,
665                             int bd);
666 void av1_fwd_txfm2d_32x16_neon(const int16_t* input,
667                                int32_t* output,
668                                int stride,
669                                TX_TYPE tx_type,
670                                int bd);
671 #define av1_fwd_txfm2d_32x16 av1_fwd_txfm2d_32x16_neon
672 
673 void av1_fwd_txfm2d_32x32_c(const int16_t* input,
674                             int32_t* output,
675                             int stride,
676                             TX_TYPE tx_type,
677                             int bd);
678 void av1_fwd_txfm2d_32x32_neon(const int16_t* input,
679                                int32_t* output,
680                                int stride,
681                                TX_TYPE tx_type,
682                                int bd);
683 #define av1_fwd_txfm2d_32x32 av1_fwd_txfm2d_32x32_neon
684 
685 void av1_fwd_txfm2d_32x64_c(const int16_t* input,
686                             int32_t* output,
687                             int stride,
688                             TX_TYPE tx_type,
689                             int bd);
690 void av1_fwd_txfm2d_32x64_neon(const int16_t* input,
691                                int32_t* output,
692                                int stride,
693                                TX_TYPE tx_type,
694                                int bd);
695 #define av1_fwd_txfm2d_32x64 av1_fwd_txfm2d_32x64_neon
696 
697 void av1_fwd_txfm2d_32x8_c(const int16_t* input,
698                            int32_t* output,
699                            int stride,
700                            TX_TYPE tx_type,
701                            int bd);
702 void av1_fwd_txfm2d_32x8_neon(const int16_t* input,
703                               int32_t* output,
704                               int stride,
705                               TX_TYPE tx_type,
706                               int bd);
707 #define av1_fwd_txfm2d_32x8 av1_fwd_txfm2d_32x8_neon
708 
709 void av1_fwd_txfm2d_4x16_c(const int16_t* input,
710                            int32_t* output,
711                            int stride,
712                            TX_TYPE tx_type,
713                            int bd);
714 void av1_fwd_txfm2d_4x16_neon(const int16_t* input,
715                               int32_t* output,
716                               int stride,
717                               TX_TYPE tx_type,
718                               int bd);
719 #define av1_fwd_txfm2d_4x16 av1_fwd_txfm2d_4x16_neon
720 
721 void av1_fwd_txfm2d_4x4_c(const int16_t* input,
722                           int32_t* output,
723                           int stride,
724                           TX_TYPE tx_type,
725                           int bd);
726 void av1_fwd_txfm2d_4x4_neon(const int16_t* input,
727                              int32_t* output,
728                              int stride,
729                              TX_TYPE tx_type,
730                              int bd);
731 #define av1_fwd_txfm2d_4x4 av1_fwd_txfm2d_4x4_neon
732 
733 void av1_fwd_txfm2d_4x8_c(const int16_t* input,
734                           int32_t* output,
735                           int stride,
736                           TX_TYPE tx_type,
737                           int bd);
738 void av1_fwd_txfm2d_4x8_neon(const int16_t* input,
739                              int32_t* output,
740                              int stride,
741                              TX_TYPE tx_type,
742                              int bd);
743 #define av1_fwd_txfm2d_4x8 av1_fwd_txfm2d_4x8_neon
744 
745 void av1_fwd_txfm2d_64x16_c(const int16_t* input,
746                             int32_t* output,
747                             int stride,
748                             TX_TYPE tx_type,
749                             int bd);
750 void av1_fwd_txfm2d_64x16_neon(const int16_t* input,
751                                int32_t* output,
752                                int stride,
753                                TX_TYPE tx_type,
754                                int bd);
755 #define av1_fwd_txfm2d_64x16 av1_fwd_txfm2d_64x16_neon
756 
757 void av1_fwd_txfm2d_64x32_c(const int16_t* input,
758                             int32_t* output,
759                             int stride,
760                             TX_TYPE tx_type,
761                             int bd);
762 void av1_fwd_txfm2d_64x32_neon(const int16_t* input,
763                                int32_t* output,
764                                int stride,
765                                TX_TYPE tx_type,
766                                int bd);
767 #define av1_fwd_txfm2d_64x32 av1_fwd_txfm2d_64x32_neon
768 
769 void av1_fwd_txfm2d_64x64_c(const int16_t* input,
770                             int32_t* output,
771                             int stride,
772                             TX_TYPE tx_type,
773                             int bd);
774 void av1_fwd_txfm2d_64x64_neon(const int16_t* input,
775                                int32_t* output,
776                                int stride,
777                                TX_TYPE tx_type,
778                                int bd);
779 #define av1_fwd_txfm2d_64x64 av1_fwd_txfm2d_64x64_neon
780 
781 void av1_fwd_txfm2d_8x16_c(const int16_t* input,
782                            int32_t* output,
783                            int stride,
784                            TX_TYPE tx_type,
785                            int bd);
786 void av1_fwd_txfm2d_8x16_neon(const int16_t* input,
787                               int32_t* output,
788                               int stride,
789                               TX_TYPE tx_type,
790                               int bd);
791 #define av1_fwd_txfm2d_8x16 av1_fwd_txfm2d_8x16_neon
792 
793 void av1_fwd_txfm2d_8x32_c(const int16_t* input,
794                            int32_t* output,
795                            int stride,
796                            TX_TYPE tx_type,
797                            int bd);
798 void av1_fwd_txfm2d_8x32_neon(const int16_t* input,
799                               int32_t* output,
800                               int stride,
801                               TX_TYPE tx_type,
802                               int bd);
803 #define av1_fwd_txfm2d_8x32 av1_fwd_txfm2d_8x32_neon
804 
805 void av1_fwd_txfm2d_8x4_c(const int16_t* input,
806                           int32_t* output,
807                           int stride,
808                           TX_TYPE tx_type,
809                           int bd);
810 void av1_fwd_txfm2d_8x4_neon(const int16_t* input,
811                              int32_t* output,
812                              int stride,
813                              TX_TYPE tx_type,
814                              int bd);
815 #define av1_fwd_txfm2d_8x4 av1_fwd_txfm2d_8x4_neon
816 
817 void av1_fwd_txfm2d_8x8_c(const int16_t* input,
818                           int32_t* output,
819                           int stride,
820                           TX_TYPE tx_type,
821                           int bd);
822 void av1_fwd_txfm2d_8x8_neon(const int16_t* input,
823                              int32_t* output,
824                              int stride,
825                              TX_TYPE tx_type,
826                              int bd);
827 #define av1_fwd_txfm2d_8x8 av1_fwd_txfm2d_8x8_neon
828 
829 void av1_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
830 void av1_fwht4x4_neon(const int16_t* input, tran_low_t* output, int stride);
831 #define av1_fwht4x4 av1_fwht4x4_neon
832 
833 uint32_t av1_get_crc32c_value_c(void* crc_calculator,
834                                 uint8_t* p,
835                                 size_t length);
836 #define av1_get_crc32c_value av1_get_crc32c_value_c
837 
838 void av1_get_horver_correlation_full_c(const int16_t* diff,
839                                        int stride,
840                                        int w,
841                                        int h,
842                                        float* hcorr,
843                                        float* vcorr);
844 void av1_get_horver_correlation_full_neon(const int16_t* diff,
845                                           int stride,
846                                           int w,
847                                           int h,
848                                           float* hcorr,
849                                           float* vcorr);
850 #define av1_get_horver_correlation_full av1_get_horver_correlation_full_neon
851 
852 void av1_get_nz_map_contexts_c(const uint8_t* const levels,
853                                const int16_t* const scan,
854                                const uint16_t eob,
855                                const TX_SIZE tx_size,
856                                const TX_CLASS tx_class,
857                                int8_t* const coeff_contexts);
858 void av1_get_nz_map_contexts_neon(const uint8_t* const levels,
859                                   const int16_t* const scan,
860                                   const uint16_t eob,
861                                   const TX_SIZE tx_size,
862                                   const TX_CLASS tx_class,
863                                   int8_t* const coeff_contexts);
864 #define av1_get_nz_map_contexts av1_get_nz_map_contexts_neon
865 
866 void av1_highbd_apply_temporal_filter_c(
867     const struct yv12_buffer_config* ref_frame,
868     const struct macroblockd* mbd,
869     const BLOCK_SIZE block_size,
870     const int mb_row,
871     const int mb_col,
872     const int num_planes,
873     const double* noise_levels,
874     const MV* subblock_mvs,
875     const int* subblock_mses,
876     const int q_factor,
877     const int filter_strength,
878     const uint8_t* pred,
879     uint32_t* accum,
880     uint16_t* count);
881 #define av1_highbd_apply_temporal_filter av1_highbd_apply_temporal_filter_c
882 
883 int64_t av1_highbd_block_error_c(const tran_low_t* coeff,
884                                  const tran_low_t* dqcoeff,
885                                  intptr_t block_size,
886                                  int64_t* ssz,
887                                  int bd);
888 #define av1_highbd_block_error av1_highbd_block_error_c
889 
890 void av1_highbd_convolve8_c(const uint8_t* src,
891                             ptrdiff_t src_stride,
892                             uint8_t* dst,
893                             ptrdiff_t dst_stride,
894                             const int16_t* filter_x,
895                             int x_step_q4,
896                             const int16_t* filter_y,
897                             int y_step_q4,
898                             int w,
899                             int h,
900                             int bps);
901 #define av1_highbd_convolve8 av1_highbd_convolve8_c
902 
903 void av1_highbd_convolve8_horiz_c(const uint8_t* src,
904                                   ptrdiff_t src_stride,
905                                   uint8_t* dst,
906                                   ptrdiff_t dst_stride,
907                                   const int16_t* filter_x,
908                                   int x_step_q4,
909                                   const int16_t* filter_y,
910                                   int y_step_q4,
911                                   int w,
912                                   int h,
913                                   int bps);
914 #define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_c
915 
916 void av1_highbd_convolve8_vert_c(const uint8_t* src,
917                                  ptrdiff_t src_stride,
918                                  uint8_t* dst,
919                                  ptrdiff_t dst_stride,
920                                  const int16_t* filter_x,
921                                  int x_step_q4,
922                                  const int16_t* filter_y,
923                                  int y_step_q4,
924                                  int w,
925                                  int h,
926                                  int bps);
927 #define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_c
928 
929 void av1_highbd_convolve_2d_scale_c(const uint16_t* src,
930                                     int src_stride,
931                                     uint16_t* dst,
932                                     int dst_stride,
933                                     int w,
934                                     int h,
935                                     const InterpFilterParams* filter_params_x,
936                                     const InterpFilterParams* filter_params_y,
937                                     const int subpel_x_qn,
938                                     const int x_step_qn,
939                                     const int subpel_y_qn,
940                                     const int y_step_qn,
941                                     ConvolveParams* conv_params,
942                                     int bd);
943 #define av1_highbd_convolve_2d_scale av1_highbd_convolve_2d_scale_c
944 
945 void av1_highbd_convolve_2d_sr_c(const uint16_t* src,
946                                  int src_stride,
947                                  uint16_t* dst,
948                                  int dst_stride,
949                                  int w,
950                                  int h,
951                                  const InterpFilterParams* filter_params_x,
952                                  const InterpFilterParams* filter_params_y,
953                                  const int subpel_x_qn,
954                                  const int subpel_y_qn,
955                                  ConvolveParams* conv_params,
956                                  int bd);
957 #define av1_highbd_convolve_2d_sr av1_highbd_convolve_2d_sr_c
958 
959 void av1_highbd_convolve_avg_c(const uint8_t* src,
960                                ptrdiff_t src_stride,
961                                uint8_t* dst,
962                                ptrdiff_t dst_stride,
963                                const int16_t* filter_x,
964                                int x_step_q4,
965                                const int16_t* filter_y,
966                                int y_step_q4,
967                                int w,
968                                int h,
969                                int bps);
970 #define av1_highbd_convolve_avg av1_highbd_convolve_avg_c
971 
972 void av1_highbd_convolve_copy_c(const uint8_t* src,
973                                 ptrdiff_t src_stride,
974                                 uint8_t* dst,
975                                 ptrdiff_t dst_stride,
976                                 const int16_t* filter_x,
977                                 int x_step_q4,
978                                 const int16_t* filter_y,
979                                 int y_step_q4,
980                                 int w,
981                                 int h,
982                                 int bps);
983 #define av1_highbd_convolve_copy av1_highbd_convolve_copy_c
984 
985 void av1_highbd_convolve_horiz_rs_c(const uint16_t* src,
986                                     int src_stride,
987                                     uint16_t* dst,
988                                     int dst_stride,
989                                     int w,
990                                     int h,
991                                     const int16_t* x_filters,
992                                     int x0_qn,
993                                     int x_step_qn,
994                                     int bd);
995 #define av1_highbd_convolve_horiz_rs av1_highbd_convolve_horiz_rs_c
996 
997 void av1_highbd_convolve_x_sr_c(const uint16_t* src,
998                                 int src_stride,
999                                 uint16_t* dst,
1000                                 int dst_stride,
1001                                 int w,
1002                                 int h,
1003                                 const InterpFilterParams* filter_params_x,
1004                                 const int subpel_x_qn,
1005                                 ConvolveParams* conv_params,
1006                                 int bd);
1007 #define av1_highbd_convolve_x_sr av1_highbd_convolve_x_sr_c
1008 
1009 void av1_highbd_convolve_y_sr_c(const uint16_t* src,
1010                                 int src_stride,
1011                                 uint16_t* dst,
1012                                 int dst_stride,
1013                                 int w,
1014                                 int h,
1015                                 const InterpFilterParams* filter_params_y,
1016                                 const int subpel_y_qn,
1017                                 int bd);
1018 #define av1_highbd_convolve_y_sr av1_highbd_convolve_y_sr_c
1019 
1020 void av1_highbd_dist_wtd_convolve_2d_c(
1021     const uint16_t* src,
1022     int src_stride,
1023     uint16_t* dst,
1024     int dst_stride,
1025     int w,
1026     int h,
1027     const InterpFilterParams* filter_params_x,
1028     const InterpFilterParams* filter_params_y,
1029     const int subpel_x_qn,
1030     const int subpel_y_qn,
1031     ConvolveParams* conv_params,
1032     int bd);
1033 #define av1_highbd_dist_wtd_convolve_2d av1_highbd_dist_wtd_convolve_2d_c
1034 
1035 void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t* src,
1036                                             int src_stride,
1037                                             uint16_t* dst,
1038                                             int dst_stride,
1039                                             int w,
1040                                             int h,
1041                                             ConvolveParams* conv_params,
1042                                             int bd);
1043 #define av1_highbd_dist_wtd_convolve_2d_copy \
1044   av1_highbd_dist_wtd_convolve_2d_copy_c
1045 
1046 void av1_highbd_dist_wtd_convolve_x_c(const uint16_t* src,
1047                                       int src_stride,
1048                                       uint16_t* dst,
1049                                       int dst_stride,
1050                                       int w,
1051                                       int h,
1052                                       const InterpFilterParams* filter_params_x,
1053                                       const int subpel_x_qn,
1054                                       ConvolveParams* conv_params,
1055                                       int bd);
1056 #define av1_highbd_dist_wtd_convolve_x av1_highbd_dist_wtd_convolve_x_c
1057 
1058 void av1_highbd_dist_wtd_convolve_y_c(const uint16_t* src,
1059                                       int src_stride,
1060                                       uint16_t* dst,
1061                                       int dst_stride,
1062                                       int w,
1063                                       int h,
1064                                       const InterpFilterParams* filter_params_y,
1065                                       const int subpel_y_qn,
1066                                       ConvolveParams* conv_params,
1067                                       int bd);
1068 #define av1_highbd_dist_wtd_convolve_y av1_highbd_dist_wtd_convolve_y_c
1069 
1070 void av1_highbd_dr_prediction_z1_c(uint16_t* dst,
1071                                    ptrdiff_t stride,
1072                                    int bw,
1073                                    int bh,
1074                                    const uint16_t* above,
1075                                    const uint16_t* left,
1076                                    int upsample_above,
1077                                    int dx,
1078                                    int dy,
1079                                    int bd);
1080 #define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c
1081 
1082 void av1_highbd_dr_prediction_z2_c(uint16_t* dst,
1083                                    ptrdiff_t stride,
1084                                    int bw,
1085                                    int bh,
1086                                    const uint16_t* above,
1087                                    const uint16_t* left,
1088                                    int upsample_above,
1089                                    int upsample_left,
1090                                    int dx,
1091                                    int dy,
1092                                    int bd);
1093 #define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
1094 
1095 void av1_highbd_dr_prediction_z3_c(uint16_t* dst,
1096                                    ptrdiff_t stride,
1097                                    int bw,
1098                                    int bh,
1099                                    const uint16_t* above,
1100                                    const uint16_t* left,
1101                                    int upsample_left,
1102                                    int dx,
1103                                    int dy,
1104                                    int bd);
1105 #define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c
1106 
1107 void av1_highbd_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
1108 void av1_highbd_fwht4x4_neon(const int16_t* input,
1109                              tran_low_t* output,
1110                              int stride);
1111 #define av1_highbd_fwht4x4 av1_highbd_fwht4x4_neon
1112 
1113 void av1_highbd_inv_txfm_add_c(const tran_low_t* input,
1114                                uint8_t* dest,
1115                                int stride,
1116                                const TxfmParam* txfm_param);
1117 void av1_highbd_inv_txfm_add_neon(const tran_low_t* input,
1118                                   uint8_t* dest,
1119                                   int stride,
1120                                   const TxfmParam* txfm_param);
1121 #define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_neon
1122 
1123 void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t* input,
1124                                      uint8_t* dest,
1125                                      int stride,
1126                                      const TxfmParam* txfm_param);
1127 void av1_highbd_inv_txfm_add_16x32_neon(const tran_low_t* input,
1128                                         uint8_t* dest,
1129                                         int stride,
1130                                         const TxfmParam* txfm_param);
1131 #define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_neon
1132 
1133 void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* input,
1134                                     uint8_t* dest,
1135                                     int stride,
1136                                     const TxfmParam* txfm_param);
1137 void av1_highbd_inv_txfm_add_16x4_neon(const tran_low_t* input,
1138                                        uint8_t* dest,
1139                                        int stride,
1140                                        const TxfmParam* txfm_param);
1141 #define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_neon
1142 
1143 void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t* input,
1144                                      uint8_t* dest,
1145                                      int stride,
1146                                      const TxfmParam* txfm_param);
1147 #define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c
1148 
1149 void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t* input,
1150                                     uint8_t* dest,
1151                                     int stride,
1152                                     const TxfmParam* txfm_param);
1153 void av1_highbd_inv_txfm_add_16x8_neon(const tran_low_t* input,
1154                                        uint8_t* dest,
1155                                        int stride,
1156                                        const TxfmParam* txfm_param);
1157 #define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_neon
1158 
1159 void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t* input,
1160                                      uint8_t* dest,
1161                                      int stride,
1162                                      const TxfmParam* txfm_param);
1163 void av1_highbd_inv_txfm_add_32x16_neon(const tran_low_t* input,
1164                                         uint8_t* dest,
1165                                         int stride,
1166                                         const TxfmParam* txfm_param);
1167 #define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_neon
1168 
1169 void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t* input,
1170                                      uint8_t* dest,
1171                                      int stride,
1172                                      const TxfmParam* txfm_param);
1173 void av1_highbd_inv_txfm_add_32x32_neon(const tran_low_t* input,
1174                                         uint8_t* dest,
1175                                         int stride,
1176                                         const TxfmParam* txfm_param);
1177 #define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_neon
1178 
1179 void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t* input,
1180                                      uint8_t* dest,
1181                                      int stride,
1182                                      const TxfmParam* txfm_param);
1183 void av1_highbd_inv_txfm_add_32x64_neon(const tran_low_t* input,
1184                                         uint8_t* dest,
1185                                         int stride,
1186                                         const TxfmParam* txfm_param);
1187 #define av1_highbd_inv_txfm_add_32x64 av1_highbd_inv_txfm_add_32x64_neon
1188 
1189 void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t* input,
1190                                     uint8_t* dest,
1191                                     int stride,
1192                                     const TxfmParam* txfm_param);
1193 #define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
1194 
1195 void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* input,
1196                                     uint8_t* dest,
1197                                     int stride,
1198                                     const TxfmParam* txfm_param);
1199 void av1_highbd_inv_txfm_add_4x16_neon(const tran_low_t* input,
1200                                        uint8_t* dest,
1201                                        int stride,
1202                                        const TxfmParam* txfm_param);
1203 #define av1_highbd_inv_txfm_add_4x16 av1_highbd_inv_txfm_add_4x16_neon
1204 
1205 void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t* input,
1206                                    uint8_t* dest,
1207                                    int stride,
1208                                    const TxfmParam* txfm_param);
1209 void av1_highbd_inv_txfm_add_4x4_neon(const tran_low_t* input,
1210                                       uint8_t* dest,
1211                                       int stride,
1212                                       const TxfmParam* txfm_param);
1213 #define av1_highbd_inv_txfm_add_4x4 av1_highbd_inv_txfm_add_4x4_neon
1214 
1215 void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t* input,
1216                                    uint8_t* dest,
1217                                    int stride,
1218                                    const TxfmParam* txfm_param);
1219 void av1_highbd_inv_txfm_add_4x8_neon(const tran_low_t* input,
1220                                       uint8_t* dest,
1221                                       int stride,
1222                                       const TxfmParam* txfm_param);
1223 #define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_neon
1224 
1225 void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t* input,
1226                                      uint8_t* dest,
1227                                      int stride,
1228                                      const TxfmParam* txfm_param);
1229 #define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c
1230 
1231 void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t* input,
1232                                      uint8_t* dest,
1233                                      int stride,
1234                                      const TxfmParam* txfm_param);
1235 void av1_highbd_inv_txfm_add_64x32_neon(const tran_low_t* input,
1236                                         uint8_t* dest,
1237                                         int stride,
1238                                         const TxfmParam* txfm_param);
1239 #define av1_highbd_inv_txfm_add_64x32 av1_highbd_inv_txfm_add_64x32_neon
1240 
1241 void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t* input,
1242                                      uint8_t* dest,
1243                                      int stride,
1244                                      const TxfmParam* txfm_param);
1245 void av1_highbd_inv_txfm_add_64x64_neon(const tran_low_t* input,
1246                                         uint8_t* dest,
1247                                         int stride,
1248                                         const TxfmParam* txfm_param);
1249 #define av1_highbd_inv_txfm_add_64x64 av1_highbd_inv_txfm_add_64x64_neon
1250 
1251 void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t* input,
1252                                     uint8_t* dest,
1253                                     int stride,
1254                                     const TxfmParam* txfm_param);
1255 void av1_highbd_inv_txfm_add_8x16_neon(const tran_low_t* input,
1256                                        uint8_t* dest,
1257                                        int stride,
1258                                        const TxfmParam* txfm_param);
1259 #define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_neon
1260 
1261 void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t* input,
1262                                     uint8_t* dest,
1263                                     int stride,
1264                                     const TxfmParam* txfm_param);
1265 #define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
1266 
1267 void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* input,
1268                                    uint8_t* dest,
1269                                    int stride,
1270                                    const TxfmParam* txfm_param);
1271 void av1_highbd_inv_txfm_add_8x4_neon(const tran_low_t* input,
1272                                       uint8_t* dest,
1273                                       int stride,
1274                                       const TxfmParam* txfm_param);
1275 #define av1_highbd_inv_txfm_add_8x4 av1_highbd_inv_txfm_add_8x4_neon
1276 
1277 void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t* input,
1278                                    uint8_t* dest,
1279                                    int stride,
1280                                    const TxfmParam* txfm_param);
1281 void av1_highbd_inv_txfm_add_8x8_neon(const tran_low_t* input,
1282                                       uint8_t* dest,
1283                                       int stride,
1284                                       const TxfmParam* txfm_param);
1285 #define av1_highbd_inv_txfm_add_8x8 av1_highbd_inv_txfm_add_8x8_neon
1286 
1287 void av1_highbd_iwht4x4_16_add_c(const tran_low_t* input,
1288                                  uint8_t* dest,
1289                                  int dest_stride,
1290                                  int bd);
1291 #define av1_highbd_iwht4x4_16_add av1_highbd_iwht4x4_16_add_c
1292 
1293 void av1_highbd_iwht4x4_1_add_c(const tran_low_t* input,
1294                                 uint8_t* dest,
1295                                 int dest_stride,
1296                                 int bd);
1297 #define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
1298 
1299 int64_t av1_highbd_pixel_proj_error_c(const uint8_t* src8,
1300                                       int width,
1301                                       int height,
1302                                       int src_stride,
1303                                       const uint8_t* dat8,
1304                                       int dat_stride,
1305                                       int32_t* flt0,
1306                                       int flt0_stride,
1307                                       int32_t* flt1,
1308                                       int flt1_stride,
1309                                       int xq[2],
1310                                       const sgr_params_type* params);
1311 #define av1_highbd_pixel_proj_error av1_highbd_pixel_proj_error_c
1312 
1313 void av1_highbd_quantize_fp_c(const tran_low_t* coeff_ptr,
1314                               intptr_t n_coeffs,
1315                               const int16_t* zbin_ptr,
1316                               const int16_t* round_ptr,
1317                               const int16_t* quant_ptr,
1318                               const int16_t* quant_shift_ptr,
1319                               tran_low_t* qcoeff_ptr,
1320                               tran_low_t* dqcoeff_ptr,
1321                               const int16_t* dequant_ptr,
1322                               uint16_t* eob_ptr,
1323                               const int16_t* scan,
1324                               const int16_t* iscan,
1325                               int log_scale);
1326 #define av1_highbd_quantize_fp av1_highbd_quantize_fp_c
1327 
1328 void av1_highbd_warp_affine_c(const int32_t* mat,
1329                               const uint16_t* ref,
1330                               int width,
1331                               int height,
1332                               int stride,
1333                               uint16_t* pred,
1334                               int p_col,
1335                               int p_row,
1336                               int p_width,
1337                               int p_height,
1338                               int p_stride,
1339                               int subsampling_x,
1340                               int subsampling_y,
1341                               int bd,
1342                               ConvolveParams* conv_params,
1343                               int16_t alpha,
1344                               int16_t beta,
1345                               int16_t gamma,
1346                               int16_t delta);
1347 #define av1_highbd_warp_affine av1_highbd_warp_affine_c
1348 
1349 void av1_highbd_wiener_convolve_add_src_c(const uint8_t* src,
1350                                           ptrdiff_t src_stride,
1351                                           uint8_t* dst,
1352                                           ptrdiff_t dst_stride,
1353                                           const int16_t* filter_x,
1354                                           int x_step_q4,
1355                                           const int16_t* filter_y,
1356                                           int y_step_q4,
1357                                           int w,
1358                                           int h,
1359                                           const ConvolveParams* conv_params,
1360                                           int bd);
1361 #define av1_highbd_wiener_convolve_add_src av1_highbd_wiener_convolve_add_src_c
1362 
1363 void av1_inv_txfm2d_add_16x16_c(const int32_t* input,
1364                                 uint16_t* output,
1365                                 int stride,
1366                                 TX_TYPE tx_type,
1367                                 int bd);
1368 #define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c
1369 
1370 void av1_inv_txfm2d_add_16x32_c(const int32_t* input,
1371                                 uint16_t* output,
1372                                 int stride,
1373                                 TX_TYPE tx_type,
1374                                 int bd);
1375 void av1_inv_txfm2d_add_16x32_neon(const int32_t* input,
1376                                    uint16_t* output,
1377                                    int stride,
1378                                    TX_TYPE tx_type,
1379                                    int bd);
1380 #define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_neon
1381 
1382 void av1_inv_txfm2d_add_16x4_c(const int32_t* input,
1383                                uint16_t* output,
1384                                int stride,
1385                                TX_TYPE tx_type,
1386                                int bd);
1387 void av1_inv_txfm2d_add_16x4_neon(const int32_t* input,
1388                                   uint16_t* output,
1389                                   int stride,
1390                                   TX_TYPE tx_type,
1391                                   int bd);
1392 #define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_neon
1393 
1394 void av1_inv_txfm2d_add_16x64_c(const int32_t* input,
1395                                 uint16_t* output,
1396                                 int stride,
1397                                 TX_TYPE tx_type,
1398                                 int bd);
1399 void av1_inv_txfm2d_add_16x64_neon(const int32_t* input,
1400                                    uint16_t* output,
1401                                    int stride,
1402                                    TX_TYPE tx_type,
1403                                    int bd);
1404 #define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_neon
1405 
1406 void av1_inv_txfm2d_add_16x8_c(const int32_t* input,
1407                                uint16_t* output,
1408                                int stride,
1409                                TX_TYPE tx_type,
1410                                int bd);
1411 void av1_inv_txfm2d_add_16x8_neon(const int32_t* input,
1412                                   uint16_t* output,
1413                                   int stride,
1414                                   TX_TYPE tx_type,
1415                                   int bd);
1416 #define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_neon
1417 
1418 void av1_inv_txfm2d_add_32x16_c(const int32_t* input,
1419                                 uint16_t* output,
1420                                 int stride,
1421                                 TX_TYPE tx_type,
1422                                 int bd);
1423 void av1_inv_txfm2d_add_32x16_neon(const int32_t* input,
1424                                    uint16_t* output,
1425                                    int stride,
1426                                    TX_TYPE tx_type,
1427                                    int bd);
1428 #define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_neon
1429 
1430 void av1_inv_txfm2d_add_32x32_c(const int32_t* input,
1431                                 uint16_t* output,
1432                                 int stride,
1433                                 TX_TYPE tx_type,
1434                                 int bd);
1435 void av1_inv_txfm2d_add_32x32_neon(const int32_t* input,
1436                                    uint16_t* output,
1437                                    int stride,
1438                                    TX_TYPE tx_type,
1439                                    int bd);
1440 #define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_neon
1441 
1442 void av1_inv_txfm2d_add_32x64_c(const int32_t* input,
1443                                 uint16_t* output,
1444                                 int stride,
1445                                 TX_TYPE tx_type,
1446                                 int bd);
1447 void av1_inv_txfm2d_add_32x64_neon(const int32_t* input,
1448                                    uint16_t* output,
1449                                    int stride,
1450                                    TX_TYPE tx_type,
1451                                    int bd);
1452 #define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_neon
1453 
1454 void av1_inv_txfm2d_add_32x8_c(const int32_t* input,
1455                                uint16_t* output,
1456                                int stride,
1457                                TX_TYPE tx_type,
1458                                int bd);
1459 void av1_inv_txfm2d_add_32x8_neon(const int32_t* input,
1460                                   uint16_t* output,
1461                                   int stride,
1462                                   TX_TYPE tx_type,
1463                                   int bd);
1464 #define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_neon
1465 
1466 void av1_inv_txfm2d_add_4x16_c(const int32_t* input,
1467                                uint16_t* output,
1468                                int stride,
1469                                TX_TYPE tx_type,
1470                                int bd);
1471 void av1_inv_txfm2d_add_4x16_neon(const int32_t* input,
1472                                   uint16_t* output,
1473                                   int stride,
1474                                   TX_TYPE tx_type,
1475                                   int bd);
1476 #define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_neon
1477 
1478 void av1_inv_txfm2d_add_4x4_c(const int32_t* input,
1479                               uint16_t* output,
1480                               int stride,
1481                               TX_TYPE tx_type,
1482                               int bd);
1483 void av1_inv_txfm2d_add_4x4_neon(const int32_t* input,
1484                                  uint16_t* output,
1485                                  int stride,
1486                                  TX_TYPE tx_type,
1487                                  int bd);
1488 #define av1_inv_txfm2d_add_4x4 av1_inv_txfm2d_add_4x4_neon
1489 
1490 void av1_inv_txfm2d_add_4x8_c(const int32_t* input,
1491                               uint16_t* output,
1492                               int stride,
1493                               TX_TYPE tx_type,
1494                               int bd);
1495 void av1_inv_txfm2d_add_4x8_neon(const int32_t* input,
1496                                  uint16_t* output,
1497                                  int stride,
1498                                  TX_TYPE tx_type,
1499                                  int bd);
1500 #define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_neon
1501 
1502 void av1_inv_txfm2d_add_64x16_c(const int32_t* input,
1503                                 uint16_t* output,
1504                                 int stride,
1505                                 TX_TYPE tx_type,
1506                                 int bd);
1507 void av1_inv_txfm2d_add_64x16_neon(const int32_t* input,
1508                                    uint16_t* output,
1509                                    int stride,
1510                                    TX_TYPE tx_type,
1511                                    int bd);
1512 #define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_neon
1513 
1514 void av1_inv_txfm2d_add_64x32_c(const int32_t* input,
1515                                 uint16_t* output,
1516                                 int stride,
1517                                 TX_TYPE tx_type,
1518                                 int bd);
1519 void av1_inv_txfm2d_add_64x32_neon(const int32_t* input,
1520                                    uint16_t* output,
1521                                    int stride,
1522                                    TX_TYPE tx_type,
1523                                    int bd);
1524 #define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_neon
1525 
1526 void av1_inv_txfm2d_add_64x64_c(const int32_t* input,
1527                                 uint16_t* output,
1528                                 int stride,
1529                                 TX_TYPE tx_type,
1530                                 int bd);
1531 void av1_inv_txfm2d_add_64x64_neon(const int32_t* input,
1532                                    uint16_t* output,
1533                                    int stride,
1534                                    TX_TYPE tx_type,
1535                                    int bd);
1536 #define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_neon
1537 
1538 void av1_inv_txfm2d_add_8x16_c(const int32_t* input,
1539                                uint16_t* output,
1540                                int stride,
1541                                TX_TYPE tx_type,
1542                                int bd);
1543 void av1_inv_txfm2d_add_8x16_neon(const int32_t* input,
1544                                   uint16_t* output,
1545                                   int stride,
1546                                   TX_TYPE tx_type,
1547                                   int bd);
1548 #define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_neon
1549 
1550 void av1_inv_txfm2d_add_8x32_c(const int32_t* input,
1551                                uint16_t* output,
1552                                int stride,
1553                                TX_TYPE tx_type,
1554                                int bd);
1555 void av1_inv_txfm2d_add_8x32_neon(const int32_t* input,
1556                                   uint16_t* output,
1557                                   int stride,
1558                                   TX_TYPE tx_type,
1559                                   int bd);
1560 #define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_neon
1561 
1562 void av1_inv_txfm2d_add_8x4_c(const int32_t* input,
1563                               uint16_t* output,
1564                               int stride,
1565                               TX_TYPE tx_type,
1566                               int bd);
1567 void av1_inv_txfm2d_add_8x4_neon(const int32_t* input,
1568                                  uint16_t* output,
1569                                  int stride,
1570                                  TX_TYPE tx_type,
1571                                  int bd);
1572 #define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_neon
1573 
1574 void av1_inv_txfm2d_add_8x8_c(const int32_t* input,
1575                               uint16_t* output,
1576                               int stride,
1577                               TX_TYPE tx_type,
1578                               int bd);
1579 void av1_inv_txfm2d_add_8x8_neon(const int32_t* input,
1580                                  uint16_t* output,
1581                                  int stride,
1582                                  TX_TYPE tx_type,
1583                                  int bd);
1584 #define av1_inv_txfm2d_add_8x8 av1_inv_txfm2d_add_8x8_neon
1585 
1586 void av1_inv_txfm_add_c(const tran_low_t* dqcoeff,
1587                         uint8_t* dst,
1588                         int stride,
1589                         const TxfmParam* txfm_param);
1590 void av1_inv_txfm_add_neon(const tran_low_t* dqcoeff,
1591                            uint8_t* dst,
1592                            int stride,
1593                            const TxfmParam* txfm_param);
1594 #define av1_inv_txfm_add av1_inv_txfm_add_neon
1595 
1596 void av1_lowbd_fwd_txfm_c(const int16_t* src_diff,
1597                           tran_low_t* coeff,
1598                           int diff_stride,
1599                           TxfmParam* txfm_param);
1600 void av1_lowbd_fwd_txfm_neon(const int16_t* src_diff,
1601                              tran_low_t* coeff,
1602                              int diff_stride,
1603                              TxfmParam* txfm_param);
1604 #define av1_lowbd_fwd_txfm av1_lowbd_fwd_txfm_neon
1605 
1606 int64_t av1_lowbd_pixel_proj_error_c(const uint8_t* src8,
1607                                      int width,
1608                                      int height,
1609                                      int src_stride,
1610                                      const uint8_t* dat8,
1611                                      int dat_stride,
1612                                      int32_t* flt0,
1613                                      int flt0_stride,
1614                                      int32_t* flt1,
1615                                      int flt1_stride,
1616                                      int xq[2],
1617                                      const sgr_params_type* params);
1618 int64_t av1_lowbd_pixel_proj_error_neon(const uint8_t* src8,
1619                                         int width,
1620                                         int height,
1621                                         int src_stride,
1622                                         const uint8_t* dat8,
1623                                         int dat_stride,
1624                                         int32_t* flt0,
1625                                         int flt0_stride,
1626                                         int32_t* flt1,
1627                                         int flt1_stride,
1628                                         int xq[2],
1629                                         const sgr_params_type* params);
1630 #define av1_lowbd_pixel_proj_error av1_lowbd_pixel_proj_error_neon
1631 
1632 void av1_nn_predict_c(const float* input_nodes,
1633                       const NN_CONFIG* const nn_config,
1634                       int reduce_prec,
1635                       float* const output);
1636 void av1_nn_predict_neon(const float* input_nodes,
1637                          const NN_CONFIG* const nn_config,
1638                          int reduce_prec,
1639                          float* const output);
1640 #define av1_nn_predict av1_nn_predict_neon
1641 
1642 void av1_quantize_b_c(const tran_low_t* coeff_ptr,
1643                       intptr_t n_coeffs,
1644                       const int16_t* zbin_ptr,
1645                       const int16_t* round_ptr,
1646                       const int16_t* quant_ptr,
1647                       const int16_t* quant_shift_ptr,
1648                       tran_low_t* qcoeff_ptr,
1649                       tran_low_t* dqcoeff_ptr,
1650                       const int16_t* dequant_ptr,
1651                       uint16_t* eob_ptr,
1652                       const int16_t* scan,
1653                       const int16_t* iscan,
1654                       const qm_val_t* qm_ptr,
1655                       const qm_val_t* iqm_ptr,
1656                       int log_scale);
1657 #define av1_quantize_b av1_quantize_b_c
1658 
1659 void av1_quantize_fp_c(const tran_low_t* coeff_ptr,
1660                        intptr_t n_coeffs,
1661                        const int16_t* zbin_ptr,
1662                        const int16_t* round_ptr,
1663                        const int16_t* quant_ptr,
1664                        const int16_t* quant_shift_ptr,
1665                        tran_low_t* qcoeff_ptr,
1666                        tran_low_t* dqcoeff_ptr,
1667                        const int16_t* dequant_ptr,
1668                        uint16_t* eob_ptr,
1669                        const int16_t* scan,
1670                        const int16_t* iscan);
1671 void av1_quantize_fp_neon(const tran_low_t* coeff_ptr,
1672                           intptr_t n_coeffs,
1673                           const int16_t* zbin_ptr,
1674                           const int16_t* round_ptr,
1675                           const int16_t* quant_ptr,
1676                           const int16_t* quant_shift_ptr,
1677                           tran_low_t* qcoeff_ptr,
1678                           tran_low_t* dqcoeff_ptr,
1679                           const int16_t* dequant_ptr,
1680                           uint16_t* eob_ptr,
1681                           const int16_t* scan,
1682                           const int16_t* iscan);
1683 #define av1_quantize_fp av1_quantize_fp_neon
1684 
1685 void av1_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
1686                              intptr_t n_coeffs,
1687                              const int16_t* zbin_ptr,
1688                              const int16_t* round_ptr,
1689                              const int16_t* quant_ptr,
1690                              const int16_t* quant_shift_ptr,
1691                              tran_low_t* qcoeff_ptr,
1692                              tran_low_t* dqcoeff_ptr,
1693                              const int16_t* dequant_ptr,
1694                              uint16_t* eob_ptr,
1695                              const int16_t* scan,
1696                              const int16_t* iscan);
1697 void av1_quantize_fp_32x32_neon(const tran_low_t* coeff_ptr,
1698                                 intptr_t n_coeffs,
1699                                 const int16_t* zbin_ptr,
1700                                 const int16_t* round_ptr,
1701                                 const int16_t* quant_ptr,
1702                                 const int16_t* quant_shift_ptr,
1703                                 tran_low_t* qcoeff_ptr,
1704                                 tran_low_t* dqcoeff_ptr,
1705                                 const int16_t* dequant_ptr,
1706                                 uint16_t* eob_ptr,
1707                                 const int16_t* scan,
1708                                 const int16_t* iscan);
1709 #define av1_quantize_fp_32x32 av1_quantize_fp_32x32_neon
1710 
1711 void av1_quantize_fp_64x64_c(const tran_low_t* coeff_ptr,
1712                              intptr_t n_coeffs,
1713                              const int16_t* zbin_ptr,
1714                              const int16_t* round_ptr,
1715                              const int16_t* quant_ptr,
1716                              const int16_t* quant_shift_ptr,
1717                              tran_low_t* qcoeff_ptr,
1718                              tran_low_t* dqcoeff_ptr,
1719                              const int16_t* dequant_ptr,
1720                              uint16_t* eob_ptr,
1721                              const int16_t* scan,
1722                              const int16_t* iscan);
1723 void av1_quantize_fp_64x64_neon(const tran_low_t* coeff_ptr,
1724                                 intptr_t n_coeffs,
1725                                 const int16_t* zbin_ptr,
1726                                 const int16_t* round_ptr,
1727                                 const int16_t* quant_ptr,
1728                                 const int16_t* quant_shift_ptr,
1729                                 tran_low_t* qcoeff_ptr,
1730                                 tran_low_t* dqcoeff_ptr,
1731                                 const int16_t* dequant_ptr,
1732                                 uint16_t* eob_ptr,
1733                                 const int16_t* scan,
1734                                 const int16_t* iscan);
1735 #define av1_quantize_fp_64x64 av1_quantize_fp_64x64_neon
1736 
1737 void av1_quantize_lp_c(const int16_t* coeff_ptr,
1738                        intptr_t n_coeffs,
1739                        const int16_t* round_ptr,
1740                        const int16_t* quant_ptr,
1741                        int16_t* qcoeff_ptr,
1742                        int16_t* dqcoeff_ptr,
1743                        const int16_t* dequant_ptr,
1744                        uint16_t* eob_ptr,
1745                        const int16_t* scan);
1746 void av1_quantize_lp_neon(const int16_t* coeff_ptr,
1747                           intptr_t n_coeffs,
1748                           const int16_t* round_ptr,
1749                           const int16_t* quant_ptr,
1750                           int16_t* qcoeff_ptr,
1751                           int16_t* dqcoeff_ptr,
1752                           const int16_t* dequant_ptr,
1753                           uint16_t* eob_ptr,
1754                           const int16_t* scan);
1755 #define av1_quantize_lp av1_quantize_lp_neon
1756 
1757 void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG* src,
1758                                    YV12_BUFFER_CONFIG* dst,
1759                                    const InterpFilter filter,
1760                                    const int phase,
1761                                    const int num_planes);
1762 void av1_resize_and_extend_frame_neon(const YV12_BUFFER_CONFIG* src,
1763                                       YV12_BUFFER_CONFIG* dst,
1764                                       const InterpFilter filter,
1765                                       const int phase,
1766                                       const int num_planes);
1767 #define av1_resize_and_extend_frame av1_resize_and_extend_frame_neon
1768 
1769 void av1_round_shift_array_c(int32_t* arr, int size, int bit);
1770 void av1_round_shift_array_neon(int32_t* arr, int size, int bit);
1771 #define av1_round_shift_array av1_round_shift_array_neon
1772 
1773 int av1_selfguided_restoration_c(const uint8_t* dgd8,
1774                                  int width,
1775                                  int height,
1776                                  int dgd_stride,
1777                                  int32_t* flt0,
1778                                  int32_t* flt1,
1779                                  int flt_stride,
1780                                  int sgr_params_idx,
1781                                  int bit_depth,
1782                                  int highbd);
1783 int av1_selfguided_restoration_neon(const uint8_t* dgd8,
1784                                     int width,
1785                                     int height,
1786                                     int dgd_stride,
1787                                     int32_t* flt0,
1788                                     int32_t* flt1,
1789                                     int flt_stride,
1790                                     int sgr_params_idx,
1791                                     int bit_depth,
1792                                     int highbd);
1793 #define av1_selfguided_restoration av1_selfguided_restoration_neon
1794 
1795 void av1_txb_init_levels_c(const tran_low_t* const coeff,
1796                            const int width,
1797                            const int height,
1798                            uint8_t* const levels);
1799 void av1_txb_init_levels_neon(const tran_low_t* const coeff,
1800                               const int width,
1801                               const int height,
1802                               uint8_t* const levels);
1803 #define av1_txb_init_levels av1_txb_init_levels_neon
1804 
1805 void av1_upsample_intra_edge_c(uint8_t* p, int sz);
1806 #define av1_upsample_intra_edge av1_upsample_intra_edge_c
1807 
1808 void av1_upsample_intra_edge_high_c(uint16_t* p, int sz, int bd);
1809 #define av1_upsample_intra_edge_high av1_upsample_intra_edge_high_c
1810 
1811 void av1_warp_affine_c(const int32_t* mat,
1812                        const uint8_t* ref,
1813                        int width,
1814                        int height,
1815                        int stride,
1816                        uint8_t* pred,
1817                        int p_col,
1818                        int p_row,
1819                        int p_width,
1820                        int p_height,
1821                        int p_stride,
1822                        int subsampling_x,
1823                        int subsampling_y,
1824                        ConvolveParams* conv_params,
1825                        int16_t alpha,
1826                        int16_t beta,
1827                        int16_t gamma,
1828                        int16_t delta);
1829 void av1_warp_affine_neon(const int32_t* mat,
1830                           const uint8_t* ref,
1831                           int width,
1832                           int height,
1833                           int stride,
1834                           uint8_t* pred,
1835                           int p_col,
1836                           int p_row,
1837                           int p_width,
1838                           int p_height,
1839                           int p_stride,
1840                           int subsampling_x,
1841                           int subsampling_y,
1842                           ConvolveParams* conv_params,
1843                           int16_t alpha,
1844                           int16_t beta,
1845                           int16_t gamma,
1846                           int16_t delta);
1847 #define av1_warp_affine av1_warp_affine_neon
1848 
1849 void av1_wedge_compute_delta_squares_c(int16_t* d,
1850                                        const int16_t* a,
1851                                        const int16_t* b,
1852                                        int N);
1853 #define av1_wedge_compute_delta_squares av1_wedge_compute_delta_squares_c
1854 
1855 int8_t av1_wedge_sign_from_residuals_c(const int16_t* ds,
1856                                        const uint8_t* m,
1857                                        int N,
1858                                        int64_t limit);
1859 #define av1_wedge_sign_from_residuals av1_wedge_sign_from_residuals_c
1860 
1861 uint64_t av1_wedge_sse_from_residuals_c(const int16_t* r1,
1862                                         const int16_t* d,
1863                                         const uint8_t* m,
1864                                         int N);
1865 #define av1_wedge_sse_from_residuals av1_wedge_sse_from_residuals_c
1866 
1867 void av1_wiener_convolve_add_src_c(const uint8_t* src,
1868                                    ptrdiff_t src_stride,
1869                                    uint8_t* dst,
1870                                    ptrdiff_t dst_stride,
1871                                    const int16_t* filter_x,
1872                                    int x_step_q4,
1873                                    const int16_t* filter_y,
1874                                    int y_step_q4,
1875                                    int w,
1876                                    int h,
1877                                    const ConvolveParams* conv_params);
1878 void av1_wiener_convolve_add_src_neon(const uint8_t* src,
1879                                       ptrdiff_t src_stride,
1880                                       uint8_t* dst,
1881                                       ptrdiff_t dst_stride,
1882                                       const int16_t* filter_x,
1883                                       int x_step_q4,
1884                                       const int16_t* filter_y,
1885                                       int y_step_q4,
1886                                       int w,
1887                                       int h,
1888                                       const ConvolveParams* conv_params);
1889 #define av1_wiener_convolve_add_src av1_wiener_convolve_add_src_neon
1890 
1891 void cdef_copy_rect8_16bit_to_16bit_c(uint16_t* dst,
1892                                       int dstride,
1893                                       const uint16_t* src,
1894                                       int sstride,
1895                                       int v,
1896                                       int h);
1897 void cdef_copy_rect8_16bit_to_16bit_neon(uint16_t* dst,
1898                                          int dstride,
1899                                          const uint16_t* src,
1900                                          int sstride,
1901                                          int v,
1902                                          int h);
1903 #define cdef_copy_rect8_16bit_to_16bit cdef_copy_rect8_16bit_to_16bit_neon
1904 
1905 void cdef_copy_rect8_8bit_to_16bit_c(uint16_t* dst,
1906                                      int dstride,
1907                                      const uint8_t* src,
1908                                      int sstride,
1909                                      int v,
1910                                      int h);
1911 void cdef_copy_rect8_8bit_to_16bit_neon(uint16_t* dst,
1912                                         int dstride,
1913                                         const uint8_t* src,
1914                                         int sstride,
1915                                         int v,
1916                                         int h);
1917 #define cdef_copy_rect8_8bit_to_16bit cdef_copy_rect8_8bit_to_16bit_neon
1918 
1919 void cdef_filter_block_c(uint8_t* dst8,
1920                          uint16_t* dst16,
1921                          int dstride,
1922                          const uint16_t* in,
1923                          int pri_strength,
1924                          int sec_strength,
1925                          int dir,
1926                          int pri_damping,
1927                          int sec_damping,
1928                          int bsize,
1929                          int coeff_shift);
1930 void cdef_filter_block_neon(uint8_t* dst8,
1931                             uint16_t* dst16,
1932                             int dstride,
1933                             const uint16_t* in,
1934                             int pri_strength,
1935                             int sec_strength,
1936                             int dir,
1937                             int pri_damping,
1938                             int sec_damping,
1939                             int bsize,
1940                             int coeff_shift);
1941 #define cdef_filter_block cdef_filter_block_neon
1942 
1943 int cdef_find_dir_c(const uint16_t* img,
1944                     int stride,
1945                     int32_t* var,
1946                     int coeff_shift);
1947 int cdef_find_dir_neon(const uint16_t* img,
1948                        int stride,
1949                        int32_t* var,
1950                        int coeff_shift);
1951 #define cdef_find_dir cdef_find_dir_neon
1952 
1953 cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size);
1954 cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_neon(TX_SIZE tx_size);
1955 #define cfl_get_luma_subsampling_420_hbd cfl_get_luma_subsampling_420_hbd_neon
1956 
1957 cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size);
1958 cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_neon(TX_SIZE tx_size);
1959 #define cfl_get_luma_subsampling_420_lbd cfl_get_luma_subsampling_420_lbd_neon
1960 
1961 cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size);
1962 cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_neon(TX_SIZE tx_size);
1963 #define cfl_get_luma_subsampling_422_hbd cfl_get_luma_subsampling_422_hbd_neon
1964 
1965 cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size);
1966 cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_neon(TX_SIZE tx_size);
1967 #define cfl_get_luma_subsampling_422_lbd cfl_get_luma_subsampling_422_lbd_neon
1968 
1969 cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size);
1970 cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_neon(TX_SIZE tx_size);
1971 #define cfl_get_luma_subsampling_444_hbd cfl_get_luma_subsampling_444_hbd_neon
1972 
1973 cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size);
1974 cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_neon(TX_SIZE tx_size);
1975 #define cfl_get_luma_subsampling_444_lbd cfl_get_luma_subsampling_444_lbd_neon
1976 
1977 cfl_predict_hbd_fn cfl_get_predict_hbd_fn_c(TX_SIZE tx_size);
1978 cfl_predict_hbd_fn cfl_get_predict_hbd_fn_neon(TX_SIZE tx_size);
1979 #define cfl_get_predict_hbd_fn cfl_get_predict_hbd_fn_neon
1980 
1981 cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size);
1982 cfl_predict_lbd_fn cfl_get_predict_lbd_fn_neon(TX_SIZE tx_size);
1983 #define cfl_get_predict_lbd_fn cfl_get_predict_lbd_fn_neon
1984 
1985 cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size);
1986 cfl_subtract_average_fn cfl_get_subtract_average_fn_neon(TX_SIZE tx_size);
1987 #define cfl_get_subtract_average_fn cfl_get_subtract_average_fn_neon
1988 
1989 void av1_rtcd(void);
1990 
1991 #include "config/aom_config.h"
1992 
1993 #ifdef RTCD_C
1994 #include "aom_ports/arm.h"
setup_rtcd_internal(void)1995 static void setup_rtcd_internal(void) {
1996   int flags = aom_arm_cpu_caps();
1997 
1998   (void)flags;
1999 }
2000 #endif
2001 
2002 #ifdef __cplusplus
2003 }  // extern "C"
2004 #endif
2005 
2006 #endif
2007