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 #define aom_quantize_b_helper aom_quantize_b_helper_c
101 
102 void av1_apply_selfguided_restoration_c(const uint8_t* dat,
103                                         int width,
104                                         int height,
105                                         int stride,
106                                         int eps,
107                                         const int* xqd,
108                                         uint8_t* dst,
109                                         int dst_stride,
110                                         int32_t* tmpbuf,
111                                         int bit_depth,
112                                         int highbd);
113 #define av1_apply_selfguided_restoration av1_apply_selfguided_restoration_c
114 
115 void av1_apply_temporal_filter_c(const struct yv12_buffer_config* ref_frame,
116                                  const struct macroblockd* mbd,
117                                  const BLOCK_SIZE block_size,
118                                  const int mb_row,
119                                  const int mb_col,
120                                  const int num_planes,
121                                  const double* noise_levels,
122                                  const MV* subblock_mvs,
123                                  const int* subblock_mses,
124                                  const int q_factor,
125                                  const int filter_strength,
126                                  const uint8_t* pred,
127                                  uint32_t* accum,
128                                  uint16_t* count);
129 #define av1_apply_temporal_filter av1_apply_temporal_filter_c
130 
131 int64_t av1_block_error_c(const tran_low_t* coeff,
132                           const tran_low_t* dqcoeff,
133                           intptr_t block_size,
134                           int64_t* ssz);
135 #define av1_block_error av1_block_error_c
136 
137 int64_t av1_block_error_lp_c(const int16_t* coeff,
138                              const int16_t* dqcoeff,
139                              intptr_t block_size);
140 #define av1_block_error_lp av1_block_error_lp_c
141 
142 void av1_build_compound_diffwtd_mask_c(uint8_t* mask,
143                                        DIFFWTD_MASK_TYPE mask_type,
144                                        const uint8_t* src0,
145                                        int src0_stride,
146                                        const uint8_t* src1,
147                                        int src1_stride,
148                                        int h,
149                                        int w);
150 #define av1_build_compound_diffwtd_mask av1_build_compound_diffwtd_mask_c
151 
152 void av1_build_compound_diffwtd_mask_d16_c(uint8_t* mask,
153                                            DIFFWTD_MASK_TYPE mask_type,
154                                            const CONV_BUF_TYPE* src0,
155                                            int src0_stride,
156                                            const CONV_BUF_TYPE* src1,
157                                            int src1_stride,
158                                            int h,
159                                            int w,
160                                            ConvolveParams* conv_params,
161                                            int bd);
162 #define av1_build_compound_diffwtd_mask_d16 \
163   av1_build_compound_diffwtd_mask_d16_c
164 
165 void av1_build_compound_diffwtd_mask_highbd_c(uint8_t* mask,
166                                               DIFFWTD_MASK_TYPE mask_type,
167                                               const uint8_t* src0,
168                                               int src0_stride,
169                                               const uint8_t* src1,
170                                               int src1_stride,
171                                               int h,
172                                               int w,
173                                               int bd);
174 #define av1_build_compound_diffwtd_mask_highbd \
175   av1_build_compound_diffwtd_mask_highbd_c
176 
177 int64_t av1_calc_frame_error_c(const uint8_t* const ref,
178                                int stride,
179                                const uint8_t* const dst,
180                                int p_width,
181                                int p_height,
182                                int p_stride);
183 #define av1_calc_frame_error av1_calc_frame_error_c
184 
185 void av1_calc_proj_params_c(const uint8_t* src8,
186                             int width,
187                             int height,
188                             int src_stride,
189                             const uint8_t* dat8,
190                             int dat_stride,
191                             int32_t* flt0,
192                             int flt0_stride,
193                             int32_t* flt1,
194                             int flt1_stride,
195                             int64_t H[2][2],
196                             int64_t C[2],
197                             const sgr_params_type* params);
198 #define av1_calc_proj_params av1_calc_proj_params_c
199 
200 void av1_calc_proj_params_high_bd_c(const uint8_t* src8,
201                                     int width,
202                                     int height,
203                                     int src_stride,
204                                     const uint8_t* dat8,
205                                     int dat_stride,
206                                     int32_t* flt0,
207                                     int flt0_stride,
208                                     int32_t* flt1,
209                                     int flt1_stride,
210                                     int64_t H[2][2],
211                                     int64_t C[2],
212                                     const sgr_params_type* params);
213 #define av1_calc_proj_params_high_bd av1_calc_proj_params_high_bd_c
214 
215 void av1_cnn_activate_c(float** input,
216                         int channels,
217                         int width,
218                         int height,
219                         int stride,
220                         ACTIVATION layer_activation);
221 #define av1_cnn_activate av1_cnn_activate_c
222 
223 void av1_cnn_add_c(float** input,
224                    int channels,
225                    int width,
226                    int height,
227                    int stride,
228                    const float** add);
229 #define av1_cnn_add av1_cnn_add_c
230 
231 void av1_cnn_batchnorm_c(float** image,
232                          int channels,
233                          int width,
234                          int height,
235                          int stride,
236                          const float* gamma,
237                          const float* beta,
238                          const float* mean,
239                          const float* std);
240 #define av1_cnn_batchnorm av1_cnn_batchnorm_c
241 
242 void av1_cnn_convolve_c(const float** input,
243                         int in_width,
244                         int in_height,
245                         int in_stride,
246                         const CNN_LAYER_CONFIG* layer_config,
247                         float** output,
248                         int out_stride,
249                         int start_idx,
250                         int step);
251 #define av1_cnn_convolve av1_cnn_convolve_c
252 
253 void av1_cnn_deconvolve_c(const float** input,
254                           int in_width,
255                           int in_height,
256                           int in_stride,
257                           const CNN_LAYER_CONFIG* layer_config,
258                           float** output,
259                           int out_stride);
260 #define av1_cnn_deconvolve av1_cnn_deconvolve_c
261 
262 void av1_cnn_predict_c(const float** input,
263                        int in_width,
264                        int in_height,
265                        int in_stride,
266                        const CNN_CONFIG* cnn_config,
267                        const CNN_THREAD_DATA* thread_data,
268                        CNN_MULTI_OUT* output_struct);
269 #define av1_cnn_predict av1_cnn_predict_c
270 
271 double av1_compute_cross_correlation_c(unsigned char* im1,
272                                        int stride1,
273                                        int x1,
274                                        int y1,
275                                        unsigned char* im2,
276                                        int stride2,
277                                        int x2,
278                                        int y2);
279 #define av1_compute_cross_correlation av1_compute_cross_correlation_c
280 
281 void av1_compute_stats_c(int wiener_win,
282                          const uint8_t* dgd8,
283                          const uint8_t* src8,
284                          int h_start,
285                          int h_end,
286                          int v_start,
287                          int v_end,
288                          int dgd_stride,
289                          int src_stride,
290                          int64_t* M,
291                          int64_t* H);
292 #define av1_compute_stats av1_compute_stats_c
293 
294 void av1_compute_stats_highbd_c(int wiener_win,
295                                 const uint8_t* dgd8,
296                                 const uint8_t* src8,
297                                 int h_start,
298                                 int h_end,
299                                 int v_start,
300                                 int v_end,
301                                 int dgd_stride,
302                                 int src_stride,
303                                 int64_t* M,
304                                 int64_t* H,
305                                 aom_bit_depth_t bit_depth);
306 #define av1_compute_stats_highbd av1_compute_stats_highbd_c
307 
308 void av1_convolve_2d_scale_c(const uint8_t* src,
309                              int src_stride,
310                              uint8_t* dst,
311                              int dst_stride,
312                              int w,
313                              int h,
314                              const InterpFilterParams* filter_params_x,
315                              const InterpFilterParams* filter_params_y,
316                              const int subpel_x_qn,
317                              const int x_step_qn,
318                              const int subpel_y_qn,
319                              const int y_step_qn,
320                              ConvolveParams* conv_params);
321 #define av1_convolve_2d_scale av1_convolve_2d_scale_c
322 
323 void av1_convolve_2d_sr_c(const uint8_t* src,
324                           int src_stride,
325                           uint8_t* dst,
326                           int dst_stride,
327                           int w,
328                           int h,
329                           const InterpFilterParams* filter_params_x,
330                           const InterpFilterParams* filter_params_y,
331                           const int subpel_x_qn,
332                           const int subpel_y_qn,
333                           ConvolveParams* conv_params);
334 #define av1_convolve_2d_sr av1_convolve_2d_sr_c
335 
336 void av1_convolve_horiz_rs_c(const uint8_t* src,
337                              int src_stride,
338                              uint8_t* dst,
339                              int dst_stride,
340                              int w,
341                              int h,
342                              const int16_t* x_filters,
343                              int x0_qn,
344                              int x_step_qn);
345 #define av1_convolve_horiz_rs av1_convolve_horiz_rs_c
346 
347 void av1_convolve_x_sr_c(const uint8_t* src,
348                          int src_stride,
349                          uint8_t* dst,
350                          int dst_stride,
351                          int w,
352                          int h,
353                          const InterpFilterParams* filter_params_x,
354                          const int subpel_x_qn,
355                          ConvolveParams* conv_params);
356 #define av1_convolve_x_sr av1_convolve_x_sr_c
357 
358 void av1_convolve_y_sr_c(const uint8_t* src,
359                          int src_stride,
360                          uint8_t* dst,
361                          int dst_stride,
362                          int w,
363                          int h,
364                          const InterpFilterParams* filter_params_y,
365                          const int subpel_y_qn);
366 #define av1_convolve_y_sr av1_convolve_y_sr_c
367 
368 void av1_dist_wtd_convolve_2d_c(const uint8_t* src,
369                                 int src_stride,
370                                 uint8_t* dst,
371                                 int dst_stride,
372                                 int w,
373                                 int h,
374                                 const InterpFilterParams* filter_params_x,
375                                 const InterpFilterParams* filter_params_y,
376                                 const int subpel_x_qn,
377                                 const int subpel_y_qn,
378                                 ConvolveParams* conv_params);
379 #define av1_dist_wtd_convolve_2d av1_dist_wtd_convolve_2d_c
380 
381 void av1_dist_wtd_convolve_2d_copy_c(const uint8_t* src,
382                                      int src_stride,
383                                      uint8_t* dst,
384                                      int dst_stride,
385                                      int w,
386                                      int h,
387                                      ConvolveParams* conv_params);
388 #define av1_dist_wtd_convolve_2d_copy av1_dist_wtd_convolve_2d_copy_c
389 
390 void av1_dist_wtd_convolve_x_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 InterpFilterParams* filter_params_x,
397                                const int subpel_x_qn,
398                                ConvolveParams* conv_params);
399 #define av1_dist_wtd_convolve_x av1_dist_wtd_convolve_x_c
400 
401 void av1_dist_wtd_convolve_y_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_y,
408                                const int subpel_y_qn,
409                                ConvolveParams* conv_params);
410 #define av1_dist_wtd_convolve_y av1_dist_wtd_convolve_y_c
411 
412 void av1_dr_prediction_z1_c(uint8_t* dst,
413                             ptrdiff_t stride,
414                             int bw,
415                             int bh,
416                             const uint8_t* above,
417                             const uint8_t* left,
418                             int upsample_above,
419                             int dx,
420                             int dy);
421 #define av1_dr_prediction_z1 av1_dr_prediction_z1_c
422 
423 void av1_dr_prediction_z2_c(uint8_t* dst,
424                             ptrdiff_t stride,
425                             int bw,
426                             int bh,
427                             const uint8_t* above,
428                             const uint8_t* left,
429                             int upsample_above,
430                             int upsample_left,
431                             int dx,
432                             int dy);
433 #define av1_dr_prediction_z2 av1_dr_prediction_z2_c
434 
435 void av1_dr_prediction_z3_c(uint8_t* dst,
436                             ptrdiff_t stride,
437                             int bw,
438                             int bh,
439                             const uint8_t* above,
440                             const uint8_t* left,
441                             int upsample_left,
442                             int dx,
443                             int dy);
444 #define av1_dr_prediction_z3 av1_dr_prediction_z3_c
445 
446 void av1_filter_intra_edge_c(uint8_t* p, int sz, int strength);
447 #define av1_filter_intra_edge av1_filter_intra_edge_c
448 
449 void av1_filter_intra_edge_high_c(uint16_t* p, int sz, int strength);
450 #define av1_filter_intra_edge_high av1_filter_intra_edge_high_c
451 
452 void av1_filter_intra_predictor_c(uint8_t* dst,
453                                   ptrdiff_t stride,
454                                   TX_SIZE tx_size,
455                                   const uint8_t* above,
456                                   const uint8_t* left,
457                                   int mode);
458 #define av1_filter_intra_predictor av1_filter_intra_predictor_c
459 
460 void av1_fwd_txfm2d_16x16_c(const int16_t* input,
461                             int32_t* output,
462                             int stride,
463                             TX_TYPE tx_type,
464                             int bd);
465 #define av1_fwd_txfm2d_16x16 av1_fwd_txfm2d_16x16_c
466 
467 void av1_fwd_txfm2d_16x32_c(const int16_t* input,
468                             int32_t* output,
469                             int stride,
470                             TX_TYPE tx_type,
471                             int bd);
472 #define av1_fwd_txfm2d_16x32 av1_fwd_txfm2d_16x32_c
473 
474 void av1_fwd_txfm2d_16x4_c(const int16_t* input,
475                            int32_t* output,
476                            int stride,
477                            TX_TYPE tx_type,
478                            int bd);
479 #define av1_fwd_txfm2d_16x4 av1_fwd_txfm2d_16x4_c
480 
481 void av1_fwd_txfm2d_16x64_c(const int16_t* input,
482                             int32_t* output,
483                             int stride,
484                             TX_TYPE tx_type,
485                             int bd);
486 #define av1_fwd_txfm2d_16x64 av1_fwd_txfm2d_16x64_c
487 
488 void av1_fwd_txfm2d_16x8_c(const int16_t* input,
489                            int32_t* output,
490                            int stride,
491                            TX_TYPE tx_type,
492                            int bd);
493 #define av1_fwd_txfm2d_16x8 av1_fwd_txfm2d_16x8_c
494 
495 void av1_fwd_txfm2d_32x16_c(const int16_t* input,
496                             int32_t* output,
497                             int stride,
498                             TX_TYPE tx_type,
499                             int bd);
500 #define av1_fwd_txfm2d_32x16 av1_fwd_txfm2d_32x16_c
501 
502 void av1_fwd_txfm2d_32x32_c(const int16_t* input,
503                             int32_t* output,
504                             int stride,
505                             TX_TYPE tx_type,
506                             int bd);
507 #define av1_fwd_txfm2d_32x32 av1_fwd_txfm2d_32x32_c
508 
509 void av1_fwd_txfm2d_32x64_c(const int16_t* input,
510                             int32_t* output,
511                             int stride,
512                             TX_TYPE tx_type,
513                             int bd);
514 #define av1_fwd_txfm2d_32x64 av1_fwd_txfm2d_32x64_c
515 
516 void av1_fwd_txfm2d_32x8_c(const int16_t* input,
517                            int32_t* output,
518                            int stride,
519                            TX_TYPE tx_type,
520                            int bd);
521 #define av1_fwd_txfm2d_32x8 av1_fwd_txfm2d_32x8_c
522 
523 void av1_fwd_txfm2d_4x16_c(const int16_t* input,
524                            int32_t* output,
525                            int stride,
526                            TX_TYPE tx_type,
527                            int bd);
528 #define av1_fwd_txfm2d_4x16 av1_fwd_txfm2d_4x16_c
529 
530 void av1_fwd_txfm2d_4x4_c(const int16_t* input,
531                           int32_t* output,
532                           int stride,
533                           TX_TYPE tx_type,
534                           int bd);
535 #define av1_fwd_txfm2d_4x4 av1_fwd_txfm2d_4x4_c
536 
537 void av1_fwd_txfm2d_4x8_c(const int16_t* input,
538                           int32_t* output,
539                           int stride,
540                           TX_TYPE tx_type,
541                           int bd);
542 #define av1_fwd_txfm2d_4x8 av1_fwd_txfm2d_4x8_c
543 
544 void av1_fwd_txfm2d_64x16_c(const int16_t* input,
545                             int32_t* output,
546                             int stride,
547                             TX_TYPE tx_type,
548                             int bd);
549 #define av1_fwd_txfm2d_64x16 av1_fwd_txfm2d_64x16_c
550 
551 void av1_fwd_txfm2d_64x32_c(const int16_t* input,
552                             int32_t* output,
553                             int stride,
554                             TX_TYPE tx_type,
555                             int bd);
556 #define av1_fwd_txfm2d_64x32 av1_fwd_txfm2d_64x32_c
557 
558 void av1_fwd_txfm2d_64x64_c(const int16_t* input,
559                             int32_t* output,
560                             int stride,
561                             TX_TYPE tx_type,
562                             int bd);
563 #define av1_fwd_txfm2d_64x64 av1_fwd_txfm2d_64x64_c
564 
565 void av1_fwd_txfm2d_8x16_c(const int16_t* input,
566                            int32_t* output,
567                            int stride,
568                            TX_TYPE tx_type,
569                            int bd);
570 #define av1_fwd_txfm2d_8x16 av1_fwd_txfm2d_8x16_c
571 
572 void av1_fwd_txfm2d_8x32_c(const int16_t* input,
573                            int32_t* output,
574                            int stride,
575                            TX_TYPE tx_type,
576                            int bd);
577 #define av1_fwd_txfm2d_8x32 av1_fwd_txfm2d_8x32_c
578 
579 void av1_fwd_txfm2d_8x4_c(const int16_t* input,
580                           int32_t* output,
581                           int stride,
582                           TX_TYPE tx_type,
583                           int bd);
584 #define av1_fwd_txfm2d_8x4 av1_fwd_txfm2d_8x4_c
585 
586 void av1_fwd_txfm2d_8x8_c(const int16_t* input,
587                           int32_t* output,
588                           int stride,
589                           TX_TYPE tx_type,
590                           int bd);
591 #define av1_fwd_txfm2d_8x8 av1_fwd_txfm2d_8x8_c
592 
593 void av1_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
594 #define av1_fwht4x4 av1_fwht4x4_c
595 
596 uint32_t av1_get_crc32c_value_c(void* crc_calculator,
597                                 uint8_t* p,
598                                 size_t length);
599 #define av1_get_crc32c_value av1_get_crc32c_value_c
600 
601 void av1_get_horver_correlation_full_c(const int16_t* diff,
602                                        int stride,
603                                        int w,
604                                        int h,
605                                        float* hcorr,
606                                        float* vcorr);
607 #define av1_get_horver_correlation_full av1_get_horver_correlation_full_c
608 
609 void av1_get_nz_map_contexts_c(const uint8_t* const levels,
610                                const int16_t* const scan,
611                                const uint16_t eob,
612                                const TX_SIZE tx_size,
613                                const TX_CLASS tx_class,
614                                int8_t* const coeff_contexts);
615 #define av1_get_nz_map_contexts av1_get_nz_map_contexts_c
616 
617 void av1_highbd_apply_temporal_filter_c(
618     const struct yv12_buffer_config* ref_frame,
619     const struct macroblockd* mbd,
620     const BLOCK_SIZE block_size,
621     const int mb_row,
622     const int mb_col,
623     const int num_planes,
624     const double* noise_levels,
625     const MV* subblock_mvs,
626     const int* subblock_mses,
627     const int q_factor,
628     const int filter_strength,
629     const uint8_t* pred,
630     uint32_t* accum,
631     uint16_t* count);
632 #define av1_highbd_apply_temporal_filter av1_highbd_apply_temporal_filter_c
633 
634 int64_t av1_highbd_block_error_c(const tran_low_t* coeff,
635                                  const tran_low_t* dqcoeff,
636                                  intptr_t block_size,
637                                  int64_t* ssz,
638                                  int bd);
639 #define av1_highbd_block_error av1_highbd_block_error_c
640 
641 void av1_highbd_convolve8_c(const uint8_t* src,
642                             ptrdiff_t src_stride,
643                             uint8_t* dst,
644                             ptrdiff_t dst_stride,
645                             const int16_t* filter_x,
646                             int x_step_q4,
647                             const int16_t* filter_y,
648                             int y_step_q4,
649                             int w,
650                             int h,
651                             int bps);
652 #define av1_highbd_convolve8 av1_highbd_convolve8_c
653 
654 void av1_highbd_convolve8_horiz_c(const uint8_t* src,
655                                   ptrdiff_t src_stride,
656                                   uint8_t* dst,
657                                   ptrdiff_t dst_stride,
658                                   const int16_t* filter_x,
659                                   int x_step_q4,
660                                   const int16_t* filter_y,
661                                   int y_step_q4,
662                                   int w,
663                                   int h,
664                                   int bps);
665 #define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_c
666 
667 void av1_highbd_convolve8_vert_c(const uint8_t* src,
668                                  ptrdiff_t src_stride,
669                                  uint8_t* dst,
670                                  ptrdiff_t dst_stride,
671                                  const int16_t* filter_x,
672                                  int x_step_q4,
673                                  const int16_t* filter_y,
674                                  int y_step_q4,
675                                  int w,
676                                  int h,
677                                  int bps);
678 #define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_c
679 
680 void av1_highbd_convolve_2d_scale_c(const uint16_t* src,
681                                     int src_stride,
682                                     uint16_t* dst,
683                                     int dst_stride,
684                                     int w,
685                                     int h,
686                                     const InterpFilterParams* filter_params_x,
687                                     const InterpFilterParams* filter_params_y,
688                                     const int subpel_x_qn,
689                                     const int x_step_qn,
690                                     const int subpel_y_qn,
691                                     const int y_step_qn,
692                                     ConvolveParams* conv_params,
693                                     int bd);
694 #define av1_highbd_convolve_2d_scale av1_highbd_convolve_2d_scale_c
695 
696 void av1_highbd_convolve_2d_sr_c(const uint16_t* src,
697                                  int src_stride,
698                                  uint16_t* dst,
699                                  int dst_stride,
700                                  int w,
701                                  int h,
702                                  const InterpFilterParams* filter_params_x,
703                                  const InterpFilterParams* filter_params_y,
704                                  const int subpel_x_qn,
705                                  const int subpel_y_qn,
706                                  ConvolveParams* conv_params,
707                                  int bd);
708 #define av1_highbd_convolve_2d_sr av1_highbd_convolve_2d_sr_c
709 
710 void av1_highbd_convolve_avg_c(const uint8_t* src,
711                                ptrdiff_t src_stride,
712                                uint8_t* dst,
713                                ptrdiff_t dst_stride,
714                                const int16_t* filter_x,
715                                int x_step_q4,
716                                const int16_t* filter_y,
717                                int y_step_q4,
718                                int w,
719                                int h,
720                                int bps);
721 #define av1_highbd_convolve_avg av1_highbd_convolve_avg_c
722 
723 void av1_highbd_convolve_copy_c(const uint8_t* src,
724                                 ptrdiff_t src_stride,
725                                 uint8_t* dst,
726                                 ptrdiff_t dst_stride,
727                                 const int16_t* filter_x,
728                                 int x_step_q4,
729                                 const int16_t* filter_y,
730                                 int y_step_q4,
731                                 int w,
732                                 int h,
733                                 int bps);
734 #define av1_highbd_convolve_copy av1_highbd_convolve_copy_c
735 
736 void av1_highbd_convolve_horiz_rs_c(const uint16_t* src,
737                                     int src_stride,
738                                     uint16_t* dst,
739                                     int dst_stride,
740                                     int w,
741                                     int h,
742                                     const int16_t* x_filters,
743                                     int x0_qn,
744                                     int x_step_qn,
745                                     int bd);
746 #define av1_highbd_convolve_horiz_rs av1_highbd_convolve_horiz_rs_c
747 
748 void av1_highbd_convolve_x_sr_c(const uint16_t* src,
749                                 int src_stride,
750                                 uint16_t* dst,
751                                 int dst_stride,
752                                 int w,
753                                 int h,
754                                 const InterpFilterParams* filter_params_x,
755                                 const int subpel_x_qn,
756                                 ConvolveParams* conv_params,
757                                 int bd);
758 #define av1_highbd_convolve_x_sr av1_highbd_convolve_x_sr_c
759 
760 void av1_highbd_convolve_y_sr_c(const uint16_t* src,
761                                 int src_stride,
762                                 uint16_t* dst,
763                                 int dst_stride,
764                                 int w,
765                                 int h,
766                                 const InterpFilterParams* filter_params_y,
767                                 const int subpel_y_qn,
768                                 int bd);
769 #define av1_highbd_convolve_y_sr av1_highbd_convolve_y_sr_c
770 
771 void av1_highbd_dist_wtd_convolve_2d_c(
772     const uint16_t* src,
773     int src_stride,
774     uint16_t* dst,
775     int dst_stride,
776     int w,
777     int h,
778     const InterpFilterParams* filter_params_x,
779     const InterpFilterParams* filter_params_y,
780     const int subpel_x_qn,
781     const int subpel_y_qn,
782     ConvolveParams* conv_params,
783     int bd);
784 #define av1_highbd_dist_wtd_convolve_2d av1_highbd_dist_wtd_convolve_2d_c
785 
786 void av1_highbd_dist_wtd_convolve_2d_copy_c(const uint16_t* src,
787                                             int src_stride,
788                                             uint16_t* dst,
789                                             int dst_stride,
790                                             int w,
791                                             int h,
792                                             ConvolveParams* conv_params,
793                                             int bd);
794 #define av1_highbd_dist_wtd_convolve_2d_copy \
795   av1_highbd_dist_wtd_convolve_2d_copy_c
796 
797 void av1_highbd_dist_wtd_convolve_x_c(const uint16_t* src,
798                                       int src_stride,
799                                       uint16_t* dst,
800                                       int dst_stride,
801                                       int w,
802                                       int h,
803                                       const InterpFilterParams* filter_params_x,
804                                       const int subpel_x_qn,
805                                       ConvolveParams* conv_params,
806                                       int bd);
807 #define av1_highbd_dist_wtd_convolve_x av1_highbd_dist_wtd_convolve_x_c
808 
809 void av1_highbd_dist_wtd_convolve_y_c(const uint16_t* src,
810                                       int src_stride,
811                                       uint16_t* dst,
812                                       int dst_stride,
813                                       int w,
814                                       int h,
815                                       const InterpFilterParams* filter_params_y,
816                                       const int subpel_y_qn,
817                                       ConvolveParams* conv_params,
818                                       int bd);
819 #define av1_highbd_dist_wtd_convolve_y av1_highbd_dist_wtd_convolve_y_c
820 
821 void av1_highbd_dr_prediction_z1_c(uint16_t* dst,
822                                    ptrdiff_t stride,
823                                    int bw,
824                                    int bh,
825                                    const uint16_t* above,
826                                    const uint16_t* left,
827                                    int upsample_above,
828                                    int dx,
829                                    int dy,
830                                    int bd);
831 #define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c
832 
833 void av1_highbd_dr_prediction_z2_c(uint16_t* dst,
834                                    ptrdiff_t stride,
835                                    int bw,
836                                    int bh,
837                                    const uint16_t* above,
838                                    const uint16_t* left,
839                                    int upsample_above,
840                                    int upsample_left,
841                                    int dx,
842                                    int dy,
843                                    int bd);
844 #define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c
845 
846 void av1_highbd_dr_prediction_z3_c(uint16_t* dst,
847                                    ptrdiff_t stride,
848                                    int bw,
849                                    int bh,
850                                    const uint16_t* above,
851                                    const uint16_t* left,
852                                    int upsample_left,
853                                    int dx,
854                                    int dy,
855                                    int bd);
856 #define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c
857 
858 void av1_highbd_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride);
859 #define av1_highbd_fwht4x4 av1_highbd_fwht4x4_c
860 
861 void av1_highbd_inv_txfm_add_c(const tran_low_t* input,
862                                uint8_t* dest,
863                                int stride,
864                                const TxfmParam* txfm_param);
865 #define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c
866 
867 void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t* input,
868                                      uint8_t* dest,
869                                      int stride,
870                                      const TxfmParam* txfm_param);
871 #define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c
872 
873 void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* input,
874                                     uint8_t* dest,
875                                     int stride,
876                                     const TxfmParam* txfm_param);
877 #define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c
878 
879 void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t* input,
880                                      uint8_t* dest,
881                                      int stride,
882                                      const TxfmParam* txfm_param);
883 #define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c
884 
885 void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t* input,
886                                     uint8_t* dest,
887                                     int stride,
888                                     const TxfmParam* txfm_param);
889 #define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c
890 
891 void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t* input,
892                                      uint8_t* dest,
893                                      int stride,
894                                      const TxfmParam* txfm_param);
895 #define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c
896 
897 void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t* input,
898                                      uint8_t* dest,
899                                      int stride,
900                                      const TxfmParam* txfm_param);
901 #define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c
902 
903 void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t* input,
904                                      uint8_t* dest,
905                                      int stride,
906                                      const TxfmParam* txfm_param);
907 #define av1_highbd_inv_txfm_add_32x64 av1_highbd_inv_txfm_add_32x64_c
908 
909 void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t* input,
910                                     uint8_t* dest,
911                                     int stride,
912                                     const TxfmParam* txfm_param);
913 #define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c
914 
915 void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* input,
916                                     uint8_t* dest,
917                                     int stride,
918                                     const TxfmParam* txfm_param);
919 #define av1_highbd_inv_txfm_add_4x16 av1_highbd_inv_txfm_add_4x16_c
920 
921 void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t* input,
922                                    uint8_t* dest,
923                                    int stride,
924                                    const TxfmParam* txfm_param);
925 #define av1_highbd_inv_txfm_add_4x4 av1_highbd_inv_txfm_add_4x4_c
926 
927 void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t* input,
928                                    uint8_t* dest,
929                                    int stride,
930                                    const TxfmParam* txfm_param);
931 #define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c
932 
933 void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t* input,
934                                      uint8_t* dest,
935                                      int stride,
936                                      const TxfmParam* txfm_param);
937 #define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c
938 
939 void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t* input,
940                                      uint8_t* dest,
941                                      int stride,
942                                      const TxfmParam* txfm_param);
943 #define av1_highbd_inv_txfm_add_64x32 av1_highbd_inv_txfm_add_64x32_c
944 
945 void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t* input,
946                                      uint8_t* dest,
947                                      int stride,
948                                      const TxfmParam* txfm_param);
949 #define av1_highbd_inv_txfm_add_64x64 av1_highbd_inv_txfm_add_64x64_c
950 
951 void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t* input,
952                                     uint8_t* dest,
953                                     int stride,
954                                     const TxfmParam* txfm_param);
955 #define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c
956 
957 void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t* input,
958                                     uint8_t* dest,
959                                     int stride,
960                                     const TxfmParam* txfm_param);
961 #define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c
962 
963 void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* input,
964                                    uint8_t* dest,
965                                    int stride,
966                                    const TxfmParam* txfm_param);
967 #define av1_highbd_inv_txfm_add_8x4 av1_highbd_inv_txfm_add_8x4_c
968 
969 void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t* input,
970                                    uint8_t* dest,
971                                    int stride,
972                                    const TxfmParam* txfm_param);
973 #define av1_highbd_inv_txfm_add_8x8 av1_highbd_inv_txfm_add_8x8_c
974 
975 void av1_highbd_iwht4x4_16_add_c(const tran_low_t* input,
976                                  uint8_t* dest,
977                                  int dest_stride,
978                                  int bd);
979 #define av1_highbd_iwht4x4_16_add av1_highbd_iwht4x4_16_add_c
980 
981 void av1_highbd_iwht4x4_1_add_c(const tran_low_t* input,
982                                 uint8_t* dest,
983                                 int dest_stride,
984                                 int bd);
985 #define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c
986 
987 int64_t av1_highbd_pixel_proj_error_c(const uint8_t* src8,
988                                       int width,
989                                       int height,
990                                       int src_stride,
991                                       const uint8_t* dat8,
992                                       int dat_stride,
993                                       int32_t* flt0,
994                                       int flt0_stride,
995                                       int32_t* flt1,
996                                       int flt1_stride,
997                                       int xq[2],
998                                       const sgr_params_type* params);
999 #define av1_highbd_pixel_proj_error av1_highbd_pixel_proj_error_c
1000 
1001 void av1_highbd_quantize_fp_c(const tran_low_t* coeff_ptr,
1002                               intptr_t n_coeffs,
1003                               const int16_t* zbin_ptr,
1004                               const int16_t* round_ptr,
1005                               const int16_t* quant_ptr,
1006                               const int16_t* quant_shift_ptr,
1007                               tran_low_t* qcoeff_ptr,
1008                               tran_low_t* dqcoeff_ptr,
1009                               const int16_t* dequant_ptr,
1010                               uint16_t* eob_ptr,
1011                               const int16_t* scan,
1012                               const int16_t* iscan,
1013                               int log_scale);
1014 #define av1_highbd_quantize_fp av1_highbd_quantize_fp_c
1015 
1016 void av1_highbd_warp_affine_c(const int32_t* mat,
1017                               const uint16_t* ref,
1018                               int width,
1019                               int height,
1020                               int stride,
1021                               uint16_t* pred,
1022                               int p_col,
1023                               int p_row,
1024                               int p_width,
1025                               int p_height,
1026                               int p_stride,
1027                               int subsampling_x,
1028                               int subsampling_y,
1029                               int bd,
1030                               ConvolveParams* conv_params,
1031                               int16_t alpha,
1032                               int16_t beta,
1033                               int16_t gamma,
1034                               int16_t delta);
1035 #define av1_highbd_warp_affine av1_highbd_warp_affine_c
1036 
1037 void av1_highbd_wiener_convolve_add_src_c(const uint8_t* src,
1038                                           ptrdiff_t src_stride,
1039                                           uint8_t* dst,
1040                                           ptrdiff_t dst_stride,
1041                                           const int16_t* filter_x,
1042                                           int x_step_q4,
1043                                           const int16_t* filter_y,
1044                                           int y_step_q4,
1045                                           int w,
1046                                           int h,
1047                                           const ConvolveParams* conv_params,
1048                                           int bd);
1049 #define av1_highbd_wiener_convolve_add_src av1_highbd_wiener_convolve_add_src_c
1050 
1051 void av1_inv_txfm2d_add_16x16_c(const int32_t* input,
1052                                 uint16_t* output,
1053                                 int stride,
1054                                 TX_TYPE tx_type,
1055                                 int bd);
1056 #define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c
1057 
1058 void av1_inv_txfm2d_add_16x32_c(const int32_t* input,
1059                                 uint16_t* output,
1060                                 int stride,
1061                                 TX_TYPE tx_type,
1062                                 int bd);
1063 #define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
1064 
1065 void av1_inv_txfm2d_add_16x4_c(const int32_t* input,
1066                                uint16_t* output,
1067                                int stride,
1068                                TX_TYPE tx_type,
1069                                int bd);
1070 #define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c
1071 
1072 void av1_inv_txfm2d_add_16x64_c(const int32_t* input,
1073                                 uint16_t* output,
1074                                 int stride,
1075                                 TX_TYPE tx_type,
1076                                 int bd);
1077 #define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c
1078 
1079 void av1_inv_txfm2d_add_16x8_c(const int32_t* input,
1080                                uint16_t* output,
1081                                int stride,
1082                                TX_TYPE tx_type,
1083                                int bd);
1084 #define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
1085 
1086 void av1_inv_txfm2d_add_32x16_c(const int32_t* input,
1087                                 uint16_t* output,
1088                                 int stride,
1089                                 TX_TYPE tx_type,
1090                                 int bd);
1091 #define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
1092 
1093 void av1_inv_txfm2d_add_32x32_c(const int32_t* input,
1094                                 uint16_t* output,
1095                                 int stride,
1096                                 TX_TYPE tx_type,
1097                                 int bd);
1098 #define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c
1099 
1100 void av1_inv_txfm2d_add_32x64_c(const int32_t* input,
1101                                 uint16_t* output,
1102                                 int stride,
1103                                 TX_TYPE tx_type,
1104                                 int bd);
1105 #define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c
1106 
1107 void av1_inv_txfm2d_add_32x8_c(const int32_t* input,
1108                                uint16_t* output,
1109                                int stride,
1110                                TX_TYPE tx_type,
1111                                int bd);
1112 #define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c
1113 
1114 void av1_inv_txfm2d_add_4x16_c(const int32_t* input,
1115                                uint16_t* output,
1116                                int stride,
1117                                TX_TYPE tx_type,
1118                                int bd);
1119 #define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c
1120 
1121 void av1_inv_txfm2d_add_4x4_c(const int32_t* input,
1122                               uint16_t* output,
1123                               int stride,
1124                               TX_TYPE tx_type,
1125                               int bd);
1126 #define av1_inv_txfm2d_add_4x4 av1_inv_txfm2d_add_4x4_c
1127 
1128 void av1_inv_txfm2d_add_4x8_c(const int32_t* input,
1129                               uint16_t* output,
1130                               int stride,
1131                               TX_TYPE tx_type,
1132                               int bd);
1133 #define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
1134 
1135 void av1_inv_txfm2d_add_64x16_c(const int32_t* input,
1136                                 uint16_t* output,
1137                                 int stride,
1138                                 TX_TYPE tx_type,
1139                                 int bd);
1140 #define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c
1141 
1142 void av1_inv_txfm2d_add_64x32_c(const int32_t* input,
1143                                 uint16_t* output,
1144                                 int stride,
1145                                 TX_TYPE tx_type,
1146                                 int bd);
1147 #define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c
1148 
1149 void av1_inv_txfm2d_add_64x64_c(const int32_t* input,
1150                                 uint16_t* output,
1151                                 int stride,
1152                                 TX_TYPE tx_type,
1153                                 int bd);
1154 #define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c
1155 
1156 void av1_inv_txfm2d_add_8x16_c(const int32_t* input,
1157                                uint16_t* output,
1158                                int stride,
1159                                TX_TYPE tx_type,
1160                                int bd);
1161 #define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
1162 
1163 void av1_inv_txfm2d_add_8x32_c(const int32_t* input,
1164                                uint16_t* output,
1165                                int stride,
1166                                TX_TYPE tx_type,
1167                                int bd);
1168 #define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c
1169 
1170 void av1_inv_txfm2d_add_8x4_c(const int32_t* input,
1171                               uint16_t* output,
1172                               int stride,
1173                               TX_TYPE tx_type,
1174                               int bd);
1175 #define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
1176 
1177 void av1_inv_txfm2d_add_8x8_c(const int32_t* input,
1178                               uint16_t* output,
1179                               int stride,
1180                               TX_TYPE tx_type,
1181                               int bd);
1182 #define av1_inv_txfm2d_add_8x8 av1_inv_txfm2d_add_8x8_c
1183 
1184 void av1_inv_txfm_add_c(const tran_low_t* dqcoeff,
1185                         uint8_t* dst,
1186                         int stride,
1187                         const TxfmParam* txfm_param);
1188 #define av1_inv_txfm_add av1_inv_txfm_add_c
1189 
1190 void av1_lowbd_fwd_txfm_c(const int16_t* src_diff,
1191                           tran_low_t* coeff,
1192                           int diff_stride,
1193                           TxfmParam* txfm_param);
1194 #define av1_lowbd_fwd_txfm av1_lowbd_fwd_txfm_c
1195 
1196 int64_t av1_lowbd_pixel_proj_error_c(const uint8_t* src8,
1197                                      int width,
1198                                      int height,
1199                                      int src_stride,
1200                                      const uint8_t* dat8,
1201                                      int dat_stride,
1202                                      int32_t* flt0,
1203                                      int flt0_stride,
1204                                      int32_t* flt1,
1205                                      int flt1_stride,
1206                                      int xq[2],
1207                                      const sgr_params_type* params);
1208 #define av1_lowbd_pixel_proj_error av1_lowbd_pixel_proj_error_c
1209 
1210 void av1_nn_predict_c(const float* input_nodes,
1211                       const NN_CONFIG* const nn_config,
1212                       int reduce_prec,
1213                       float* const output);
1214 #define av1_nn_predict av1_nn_predict_c
1215 
1216 void av1_quantize_b_c(const tran_low_t* coeff_ptr,
1217                       intptr_t n_coeffs,
1218                       const int16_t* zbin_ptr,
1219                       const int16_t* round_ptr,
1220                       const int16_t* quant_ptr,
1221                       const int16_t* quant_shift_ptr,
1222                       tran_low_t* qcoeff_ptr,
1223                       tran_low_t* dqcoeff_ptr,
1224                       const int16_t* dequant_ptr,
1225                       uint16_t* eob_ptr,
1226                       const int16_t* scan,
1227                       const int16_t* iscan,
1228                       const qm_val_t* qm_ptr,
1229                       const qm_val_t* iqm_ptr,
1230                       int log_scale);
1231 #define av1_quantize_b av1_quantize_b_c
1232 
1233 void av1_quantize_fp_c(const tran_low_t* coeff_ptr,
1234                        intptr_t n_coeffs,
1235                        const int16_t* zbin_ptr,
1236                        const int16_t* round_ptr,
1237                        const int16_t* quant_ptr,
1238                        const int16_t* quant_shift_ptr,
1239                        tran_low_t* qcoeff_ptr,
1240                        tran_low_t* dqcoeff_ptr,
1241                        const int16_t* dequant_ptr,
1242                        uint16_t* eob_ptr,
1243                        const int16_t* scan,
1244                        const int16_t* iscan);
1245 #define av1_quantize_fp av1_quantize_fp_c
1246 
1247 void av1_quantize_fp_32x32_c(const tran_low_t* coeff_ptr,
1248                              intptr_t n_coeffs,
1249                              const int16_t* zbin_ptr,
1250                              const int16_t* round_ptr,
1251                              const int16_t* quant_ptr,
1252                              const int16_t* quant_shift_ptr,
1253                              tran_low_t* qcoeff_ptr,
1254                              tran_low_t* dqcoeff_ptr,
1255                              const int16_t* dequant_ptr,
1256                              uint16_t* eob_ptr,
1257                              const int16_t* scan,
1258                              const int16_t* iscan);
1259 #define av1_quantize_fp_32x32 av1_quantize_fp_32x32_c
1260 
1261 void av1_quantize_fp_64x64_c(const tran_low_t* coeff_ptr,
1262                              intptr_t n_coeffs,
1263                              const int16_t* zbin_ptr,
1264                              const int16_t* round_ptr,
1265                              const int16_t* quant_ptr,
1266                              const int16_t* quant_shift_ptr,
1267                              tran_low_t* qcoeff_ptr,
1268                              tran_low_t* dqcoeff_ptr,
1269                              const int16_t* dequant_ptr,
1270                              uint16_t* eob_ptr,
1271                              const int16_t* scan,
1272                              const int16_t* iscan);
1273 #define av1_quantize_fp_64x64 av1_quantize_fp_64x64_c
1274 
1275 void av1_quantize_lp_c(const int16_t* coeff_ptr,
1276                        intptr_t n_coeffs,
1277                        const int16_t* round_ptr,
1278                        const int16_t* quant_ptr,
1279                        int16_t* qcoeff_ptr,
1280                        int16_t* dqcoeff_ptr,
1281                        const int16_t* dequant_ptr,
1282                        uint16_t* eob_ptr,
1283                        const int16_t* scan);
1284 #define av1_quantize_lp av1_quantize_lp_c
1285 
1286 void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG* src,
1287                                    YV12_BUFFER_CONFIG* dst,
1288                                    const InterpFilter filter,
1289                                    const int phase,
1290                                    const int num_planes);
1291 #define av1_resize_and_extend_frame av1_resize_and_extend_frame_c
1292 
1293 void av1_round_shift_array_c(int32_t* arr, int size, int bit);
1294 #define av1_round_shift_array av1_round_shift_array_c
1295 
1296 int av1_selfguided_restoration_c(const uint8_t* dgd8,
1297                                  int width,
1298                                  int height,
1299                                  int dgd_stride,
1300                                  int32_t* flt0,
1301                                  int32_t* flt1,
1302                                  int flt_stride,
1303                                  int sgr_params_idx,
1304                                  int bit_depth,
1305                                  int highbd);
1306 #define av1_selfguided_restoration av1_selfguided_restoration_c
1307 
1308 void av1_txb_init_levels_c(const tran_low_t* const coeff,
1309                            const int width,
1310                            const int height,
1311                            uint8_t* const levels);
1312 #define av1_txb_init_levels av1_txb_init_levels_c
1313 
1314 void av1_upsample_intra_edge_c(uint8_t* p, int sz);
1315 #define av1_upsample_intra_edge av1_upsample_intra_edge_c
1316 
1317 void av1_upsample_intra_edge_high_c(uint16_t* p, int sz, int bd);
1318 #define av1_upsample_intra_edge_high av1_upsample_intra_edge_high_c
1319 
1320 void av1_warp_affine_c(const int32_t* mat,
1321                        const uint8_t* ref,
1322                        int width,
1323                        int height,
1324                        int stride,
1325                        uint8_t* pred,
1326                        int p_col,
1327                        int p_row,
1328                        int p_width,
1329                        int p_height,
1330                        int p_stride,
1331                        int subsampling_x,
1332                        int subsampling_y,
1333                        ConvolveParams* conv_params,
1334                        int16_t alpha,
1335                        int16_t beta,
1336                        int16_t gamma,
1337                        int16_t delta);
1338 #define av1_warp_affine av1_warp_affine_c
1339 
1340 void av1_wedge_compute_delta_squares_c(int16_t* d,
1341                                        const int16_t* a,
1342                                        const int16_t* b,
1343                                        int N);
1344 #define av1_wedge_compute_delta_squares av1_wedge_compute_delta_squares_c
1345 
1346 int8_t av1_wedge_sign_from_residuals_c(const int16_t* ds,
1347                                        const uint8_t* m,
1348                                        int N,
1349                                        int64_t limit);
1350 #define av1_wedge_sign_from_residuals av1_wedge_sign_from_residuals_c
1351 
1352 uint64_t av1_wedge_sse_from_residuals_c(const int16_t* r1,
1353                                         const int16_t* d,
1354                                         const uint8_t* m,
1355                                         int N);
1356 #define av1_wedge_sse_from_residuals av1_wedge_sse_from_residuals_c
1357 
1358 void av1_wiener_convolve_add_src_c(const uint8_t* src,
1359                                    ptrdiff_t src_stride,
1360                                    uint8_t* dst,
1361                                    ptrdiff_t dst_stride,
1362                                    const int16_t* filter_x,
1363                                    int x_step_q4,
1364                                    const int16_t* filter_y,
1365                                    int y_step_q4,
1366                                    int w,
1367                                    int h,
1368                                    const ConvolveParams* conv_params);
1369 #define av1_wiener_convolve_add_src av1_wiener_convolve_add_src_c
1370 
1371 void cdef_copy_rect8_16bit_to_16bit_c(uint16_t* dst,
1372                                       int dstride,
1373                                       const uint16_t* src,
1374                                       int sstride,
1375                                       int v,
1376                                       int h);
1377 #define cdef_copy_rect8_16bit_to_16bit cdef_copy_rect8_16bit_to_16bit_c
1378 
1379 void cdef_copy_rect8_8bit_to_16bit_c(uint16_t* dst,
1380                                      int dstride,
1381                                      const uint8_t* src,
1382                                      int sstride,
1383                                      int v,
1384                                      int h);
1385 #define cdef_copy_rect8_8bit_to_16bit cdef_copy_rect8_8bit_to_16bit_c
1386 
1387 void cdef_filter_block_c(uint8_t* dst8,
1388                          uint16_t* dst16,
1389                          int dstride,
1390                          const uint16_t* in,
1391                          int pri_strength,
1392                          int sec_strength,
1393                          int dir,
1394                          int pri_damping,
1395                          int sec_damping,
1396                          int bsize,
1397                          int coeff_shift);
1398 #define cdef_filter_block cdef_filter_block_c
1399 
1400 int cdef_find_dir_c(const uint16_t* img,
1401                     int stride,
1402                     int32_t* var,
1403                     int coeff_shift);
1404 #define cdef_find_dir cdef_find_dir_c
1405 
1406 cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size);
1407 #define cfl_get_luma_subsampling_420_hbd cfl_get_luma_subsampling_420_hbd_c
1408 
1409 cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size);
1410 #define cfl_get_luma_subsampling_420_lbd cfl_get_luma_subsampling_420_lbd_c
1411 
1412 cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size);
1413 #define cfl_get_luma_subsampling_422_hbd cfl_get_luma_subsampling_422_hbd_c
1414 
1415 cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size);
1416 #define cfl_get_luma_subsampling_422_lbd cfl_get_luma_subsampling_422_lbd_c
1417 
1418 cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size);
1419 #define cfl_get_luma_subsampling_444_hbd cfl_get_luma_subsampling_444_hbd_c
1420 
1421 cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size);
1422 #define cfl_get_luma_subsampling_444_lbd cfl_get_luma_subsampling_444_lbd_c
1423 
1424 cfl_predict_hbd_fn cfl_get_predict_hbd_fn_c(TX_SIZE tx_size);
1425 #define cfl_get_predict_hbd_fn cfl_get_predict_hbd_fn_c
1426 
1427 cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size);
1428 #define cfl_get_predict_lbd_fn cfl_get_predict_lbd_fn_c
1429 
1430 cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size);
1431 #define cfl_get_subtract_average_fn cfl_get_subtract_average_fn_c
1432 
1433 void av1_rtcd(void);
1434 
1435 #include "config/aom_config.h"
1436 
1437 #ifdef RTCD_C
setup_rtcd_internal(void)1438 static void setup_rtcd_internal(void) {}
1439 #endif
1440 
1441 #ifdef __cplusplus
1442 }  // extern "C"
1443 #endif
1444 
1445 #endif
1446