1 // This file is generated. Do not edit.
2 #ifndef VP8_RTCD_H_
3 #define VP8_RTCD_H_
4 
5 #ifdef RTCD_C
6 #define RTCD_EXTERN
7 #else
8 #define RTCD_EXTERN extern
9 #endif
10 
11 /*
12  * VP8
13  */
14 
15 struct blockd;
16 struct macroblockd;
17 struct loop_filter_info;
18 
19 /* Encoder forward decls */
20 struct block;
21 struct macroblock;
22 struct variance_vtable;
23 union int_mv;
24 struct yv12_buffer_config;
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 void vp8_bilinear_predict16x16_c(unsigned char* src_ptr,
31                                  int src_pixels_per_line,
32                                  int xoffset,
33                                  int yoffset,
34                                  unsigned char* dst_ptr,
35                                  int dst_pitch);
36 void vp8_bilinear_predict16x16_sse2(unsigned char* src_ptr,
37                                     int src_pixels_per_line,
38                                     int xoffset,
39                                     int yoffset,
40                                     unsigned char* dst_ptr,
41                                     int dst_pitch);
42 void vp8_bilinear_predict16x16_ssse3(unsigned char* src_ptr,
43                                      int src_pixels_per_line,
44                                      int xoffset,
45                                      int yoffset,
46                                      unsigned char* dst_ptr,
47                                      int dst_pitch);
48 RTCD_EXTERN void (*vp8_bilinear_predict16x16)(unsigned char* src_ptr,
49                                               int src_pixels_per_line,
50                                               int xoffset,
51                                               int yoffset,
52                                               unsigned char* dst_ptr,
53                                               int dst_pitch);
54 
55 void vp8_bilinear_predict4x4_c(unsigned char* src_ptr,
56                                int src_pixels_per_line,
57                                int xoffset,
58                                int yoffset,
59                                unsigned char* dst_ptr,
60                                int dst_pitch);
61 void vp8_bilinear_predict4x4_sse2(unsigned char* src_ptr,
62                                   int src_pixels_per_line,
63                                   int xoffset,
64                                   int yoffset,
65                                   unsigned char* dst_ptr,
66                                   int dst_pitch);
67 #define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_sse2
68 
69 void vp8_bilinear_predict8x4_c(unsigned char* src_ptr,
70                                int src_pixels_per_line,
71                                int xoffset,
72                                int yoffset,
73                                unsigned char* dst_ptr,
74                                int dst_pitch);
75 void vp8_bilinear_predict8x4_sse2(unsigned char* src_ptr,
76                                   int src_pixels_per_line,
77                                   int xoffset,
78                                   int yoffset,
79                                   unsigned char* dst_ptr,
80                                   int dst_pitch);
81 #define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_sse2
82 
83 void vp8_bilinear_predict8x8_c(unsigned char* src_ptr,
84                                int src_pixels_per_line,
85                                int xoffset,
86                                int yoffset,
87                                unsigned char* dst_ptr,
88                                int dst_pitch);
89 void vp8_bilinear_predict8x8_sse2(unsigned char* src_ptr,
90                                   int src_pixels_per_line,
91                                   int xoffset,
92                                   int yoffset,
93                                   unsigned char* dst_ptr,
94                                   int dst_pitch);
95 void vp8_bilinear_predict8x8_ssse3(unsigned char* src_ptr,
96                                    int src_pixels_per_line,
97                                    int xoffset,
98                                    int yoffset,
99                                    unsigned char* dst_ptr,
100                                    int dst_pitch);
101 RTCD_EXTERN void (*vp8_bilinear_predict8x8)(unsigned char* src_ptr,
102                                             int src_pixels_per_line,
103                                             int xoffset,
104                                             int yoffset,
105                                             unsigned char* dst_ptr,
106                                             int dst_pitch);
107 
108 void vp8_blend_b_c(unsigned char* y,
109                    unsigned char* u,
110                    unsigned char* v,
111                    int y_1,
112                    int u_1,
113                    int v_1,
114                    int alpha,
115                    int stride);
116 #define vp8_blend_b vp8_blend_b_c
117 
118 void vp8_blend_mb_inner_c(unsigned char* y,
119                           unsigned char* u,
120                           unsigned char* v,
121                           int y_1,
122                           int u_1,
123                           int v_1,
124                           int alpha,
125                           int stride);
126 #define vp8_blend_mb_inner vp8_blend_mb_inner_c
127 
128 void vp8_blend_mb_outer_c(unsigned char* y,
129                           unsigned char* u,
130                           unsigned char* v,
131                           int y_1,
132                           int u_1,
133                           int v_1,
134                           int alpha,
135                           int stride);
136 #define vp8_blend_mb_outer vp8_blend_mb_outer_c
137 
138 int vp8_block_error_c(short* coeff, short* dqcoeff);
139 int vp8_block_error_sse2(short* coeff, short* dqcoeff);
140 #define vp8_block_error vp8_block_error_sse2
141 
142 void vp8_copy32xn_c(const unsigned char* src_ptr,
143                     int src_stride,
144                     unsigned char* dst_ptr,
145                     int dst_stride,
146                     int height);
147 void vp8_copy32xn_sse2(const unsigned char* src_ptr,
148                        int src_stride,
149                        unsigned char* dst_ptr,
150                        int dst_stride,
151                        int height);
152 void vp8_copy32xn_sse3(const unsigned char* src_ptr,
153                        int src_stride,
154                        unsigned char* dst_ptr,
155                        int dst_stride,
156                        int height);
157 RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char* src_ptr,
158                                  int src_stride,
159                                  unsigned char* dst_ptr,
160                                  int dst_stride,
161                                  int height);
162 
163 void vp8_copy_mem16x16_c(unsigned char* src,
164                          int src_stride,
165                          unsigned char* dst,
166                          int dst_stride);
167 void vp8_copy_mem16x16_sse2(unsigned char* src,
168                             int src_stride,
169                             unsigned char* dst,
170                             int dst_stride);
171 #define vp8_copy_mem16x16 vp8_copy_mem16x16_sse2
172 
173 void vp8_copy_mem8x4_c(unsigned char* src,
174                        int src_stride,
175                        unsigned char* dst,
176                        int dst_stride);
177 void vp8_copy_mem8x4_mmx(unsigned char* src,
178                          int src_stride,
179                          unsigned char* dst,
180                          int dst_stride);
181 #define vp8_copy_mem8x4 vp8_copy_mem8x4_mmx
182 
183 void vp8_copy_mem8x8_c(unsigned char* src,
184                        int src_stride,
185                        unsigned char* dst,
186                        int dst_stride);
187 void vp8_copy_mem8x8_mmx(unsigned char* src,
188                          int src_stride,
189                          unsigned char* dst,
190                          int dst_stride);
191 #define vp8_copy_mem8x8 vp8_copy_mem8x8_mmx
192 
193 void vp8_dc_only_idct_add_c(short input_dc,
194                             unsigned char* pred_ptr,
195                             int pred_stride,
196                             unsigned char* dst_ptr,
197                             int dst_stride);
198 void vp8_dc_only_idct_add_mmx(short input_dc,
199                               unsigned char* pred_ptr,
200                               int pred_stride,
201                               unsigned char* dst_ptr,
202                               int dst_stride);
203 #define vp8_dc_only_idct_add vp8_dc_only_idct_add_mmx
204 
205 int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y,
206                           int mc_avg_y_stride,
207                           unsigned char* running_avg_y,
208                           int avg_y_stride,
209                           unsigned char* sig,
210                           int sig_stride,
211                           unsigned int motion_magnitude,
212                           int increase_denoising);
213 int vp8_denoiser_filter_sse2(unsigned char* mc_running_avg_y,
214                              int mc_avg_y_stride,
215                              unsigned char* running_avg_y,
216                              int avg_y_stride,
217                              unsigned char* sig,
218                              int sig_stride,
219                              unsigned int motion_magnitude,
220                              int increase_denoising);
221 #define vp8_denoiser_filter vp8_denoiser_filter_sse2
222 
223 int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg,
224                              int mc_avg_stride,
225                              unsigned char* running_avg,
226                              int avg_stride,
227                              unsigned char* sig,
228                              int sig_stride,
229                              unsigned int motion_magnitude,
230                              int increase_denoising);
231 int vp8_denoiser_filter_uv_sse2(unsigned char* mc_running_avg,
232                                 int mc_avg_stride,
233                                 unsigned char* running_avg,
234                                 int avg_stride,
235                                 unsigned char* sig,
236                                 int sig_stride,
237                                 unsigned int motion_magnitude,
238                                 int increase_denoising);
239 #define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_sse2
240 
241 void vp8_dequant_idct_add_c(short* input,
242                             short* dq,
243                             unsigned char* dest,
244                             int stride);
245 void vp8_dequant_idct_add_mmx(short* input,
246                               short* dq,
247                               unsigned char* dest,
248                               int stride);
249 #define vp8_dequant_idct_add vp8_dequant_idct_add_mmx
250 
251 void vp8_dequant_idct_add_uv_block_c(short* q,
252                                      short* dq,
253                                      unsigned char* dst_u,
254                                      unsigned char* dst_v,
255                                      int stride,
256                                      char* eobs);
257 void vp8_dequant_idct_add_uv_block_sse2(short* q,
258                                         short* dq,
259                                         unsigned char* dst_u,
260                                         unsigned char* dst_v,
261                                         int stride,
262                                         char* eobs);
263 #define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_sse2
264 
265 void vp8_dequant_idct_add_y_block_c(short* q,
266                                     short* dq,
267                                     unsigned char* dst,
268                                     int stride,
269                                     char* eobs);
270 void vp8_dequant_idct_add_y_block_sse2(short* q,
271                                        short* dq,
272                                        unsigned char* dst,
273                                        int stride,
274                                        char* eobs);
275 #define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_sse2
276 
277 void vp8_dequantize_b_c(struct blockd*, short* DQC);
278 void vp8_dequantize_b_mmx(struct blockd*, short* DQC);
279 #define vp8_dequantize_b vp8_dequantize_b_mmx
280 
281 int vp8_diamond_search_sad_c(struct macroblock* x,
282                              struct block* b,
283                              struct blockd* d,
284                              union int_mv* ref_mv,
285                              union int_mv* best_mv,
286                              int search_param,
287                              int sad_per_bit,
288                              int* num00,
289                              struct variance_vtable* fn_ptr,
290                              int* mvcost[2],
291                              union int_mv* center_mv);
292 int vp8_diamond_search_sadx4(struct macroblock* x,
293                              struct block* b,
294                              struct blockd* d,
295                              union int_mv* ref_mv,
296                              union int_mv* best_mv,
297                              int search_param,
298                              int sad_per_bit,
299                              int* num00,
300                              struct variance_vtable* fn_ptr,
301                              int* mvcost[2],
302                              union int_mv* center_mv);
303 #define vp8_diamond_search_sad vp8_diamond_search_sadx4
304 
305 void vp8_fast_quantize_b_c(struct block*, struct blockd*);
306 void vp8_fast_quantize_b_sse2(struct block*, struct blockd*);
307 void vp8_fast_quantize_b_ssse3(struct block*, struct blockd*);
308 RTCD_EXTERN void (*vp8_fast_quantize_b)(struct block*, struct blockd*);
309 
310 void vp8_filter_by_weight16x16_c(unsigned char* src,
311                                  int src_stride,
312                                  unsigned char* dst,
313                                  int dst_stride,
314                                  int src_weight);
315 void vp8_filter_by_weight16x16_sse2(unsigned char* src,
316                                     int src_stride,
317                                     unsigned char* dst,
318                                     int dst_stride,
319                                     int src_weight);
320 #define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_sse2
321 
322 void vp8_filter_by_weight4x4_c(unsigned char* src,
323                                int src_stride,
324                                unsigned char* dst,
325                                int dst_stride,
326                                int src_weight);
327 #define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c
328 
329 void vp8_filter_by_weight8x8_c(unsigned char* src,
330                                int src_stride,
331                                unsigned char* dst,
332                                int dst_stride,
333                                int src_weight);
334 void vp8_filter_by_weight8x8_sse2(unsigned char* src,
335                                   int src_stride,
336                                   unsigned char* dst,
337                                   int dst_stride,
338                                   int src_weight);
339 #define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_sse2
340 
341 int vp8_full_search_sad_c(struct macroblock* x,
342                           struct block* b,
343                           struct blockd* d,
344                           union int_mv* ref_mv,
345                           int sad_per_bit,
346                           int distance,
347                           struct variance_vtable* fn_ptr,
348                           int* mvcost[2],
349                           union int_mv* center_mv);
350 int vp8_full_search_sadx3(struct macroblock* x,
351                           struct block* b,
352                           struct blockd* d,
353                           union int_mv* ref_mv,
354                           int sad_per_bit,
355                           int distance,
356                           struct variance_vtable* fn_ptr,
357                           int* mvcost[2],
358                           union int_mv* center_mv);
359 int vp8_full_search_sadx8(struct macroblock* x,
360                           struct block* b,
361                           struct blockd* d,
362                           union int_mv* ref_mv,
363                           int sad_per_bit,
364                           int distance,
365                           struct variance_vtable* fn_ptr,
366                           int* mvcost[2],
367                           union int_mv* center_mv);
368 RTCD_EXTERN int (*vp8_full_search_sad)(struct macroblock* x,
369                                        struct block* b,
370                                        struct blockd* d,
371                                        union int_mv* ref_mv,
372                                        int sad_per_bit,
373                                        int distance,
374                                        struct variance_vtable* fn_ptr,
375                                        int* mvcost[2],
376                                        union int_mv* center_mv);
377 
378 void vp8_loop_filter_bh_c(unsigned char* y_ptr,
379                           unsigned char* u_ptr,
380                           unsigned char* v_ptr,
381                           int y_stride,
382                           int uv_stride,
383                           struct loop_filter_info* lfi);
384 void vp8_loop_filter_bh_sse2(unsigned char* y_ptr,
385                              unsigned char* u_ptr,
386                              unsigned char* v_ptr,
387                              int y_stride,
388                              int uv_stride,
389                              struct loop_filter_info* lfi);
390 #define vp8_loop_filter_bh vp8_loop_filter_bh_sse2
391 
392 void vp8_loop_filter_bv_c(unsigned char* y_ptr,
393                           unsigned char* u_ptr,
394                           unsigned char* v_ptr,
395                           int y_stride,
396                           int uv_stride,
397                           struct loop_filter_info* lfi);
398 void vp8_loop_filter_bv_sse2(unsigned char* y_ptr,
399                              unsigned char* u_ptr,
400                              unsigned char* v_ptr,
401                              int y_stride,
402                              int uv_stride,
403                              struct loop_filter_info* lfi);
404 #define vp8_loop_filter_bv vp8_loop_filter_bv_sse2
405 
406 void vp8_loop_filter_mbh_c(unsigned char* y_ptr,
407                            unsigned char* u_ptr,
408                            unsigned char* v_ptr,
409                            int y_stride,
410                            int uv_stride,
411                            struct loop_filter_info* lfi);
412 void vp8_loop_filter_mbh_sse2(unsigned char* y_ptr,
413                               unsigned char* u_ptr,
414                               unsigned char* v_ptr,
415                               int y_stride,
416                               int uv_stride,
417                               struct loop_filter_info* lfi);
418 #define vp8_loop_filter_mbh vp8_loop_filter_mbh_sse2
419 
420 void vp8_loop_filter_mbv_c(unsigned char* y_ptr,
421                            unsigned char* u_ptr,
422                            unsigned char* v_ptr,
423                            int y_stride,
424                            int uv_stride,
425                            struct loop_filter_info* lfi);
426 void vp8_loop_filter_mbv_sse2(unsigned char* y_ptr,
427                               unsigned char* u_ptr,
428                               unsigned char* v_ptr,
429                               int y_stride,
430                               int uv_stride,
431                               struct loop_filter_info* lfi);
432 #define vp8_loop_filter_mbv vp8_loop_filter_mbv_sse2
433 
434 void vp8_loop_filter_bhs_c(unsigned char* y_ptr,
435                            int y_stride,
436                            const unsigned char* blimit);
437 void vp8_loop_filter_bhs_sse2(unsigned char* y_ptr,
438                               int y_stride,
439                               const unsigned char* blimit);
440 #define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_sse2
441 
442 void vp8_loop_filter_bvs_c(unsigned char* y_ptr,
443                            int y_stride,
444                            const unsigned char* blimit);
445 void vp8_loop_filter_bvs_sse2(unsigned char* y_ptr,
446                               int y_stride,
447                               const unsigned char* blimit);
448 #define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_sse2
449 
450 void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr,
451                                               int y_stride,
452                                               const unsigned char* blimit);
453 void vp8_loop_filter_simple_horizontal_edge_sse2(unsigned char* y_ptr,
454                                                  int y_stride,
455                                                  const unsigned char* blimit);
456 #define vp8_loop_filter_simple_mbh vp8_loop_filter_simple_horizontal_edge_sse2
457 
458 void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr,
459                                             int y_stride,
460                                             const unsigned char* blimit);
461 void vp8_loop_filter_simple_vertical_edge_sse2(unsigned char* y_ptr,
462                                                int y_stride,
463                                                const unsigned char* blimit);
464 #define vp8_loop_filter_simple_mbv vp8_loop_filter_simple_vertical_edge_sse2
465 
466 int vp8_mbblock_error_c(struct macroblock* mb, int dc);
467 int vp8_mbblock_error_sse2(struct macroblock* mb, int dc);
468 #define vp8_mbblock_error vp8_mbblock_error_sse2
469 
470 int vp8_mbuverror_c(struct macroblock* mb);
471 int vp8_mbuverror_sse2(struct macroblock* mb);
472 #define vp8_mbuverror vp8_mbuverror_sse2
473 
474 int vp8_refining_search_sad_c(struct macroblock* x,
475                               struct block* b,
476                               struct blockd* d,
477                               union int_mv* ref_mv,
478                               int error_per_bit,
479                               int search_range,
480                               struct variance_vtable* fn_ptr,
481                               int* mvcost[2],
482                               union int_mv* center_mv);
483 int vp8_refining_search_sadx4(struct macroblock* x,
484                               struct block* b,
485                               struct blockd* d,
486                               union int_mv* ref_mv,
487                               int error_per_bit,
488                               int search_range,
489                               struct variance_vtable* fn_ptr,
490                               int* mvcost[2],
491                               union int_mv* center_mv);
492 #define vp8_refining_search_sad vp8_refining_search_sadx4
493 
494 void vp8_regular_quantize_b_c(struct block*, struct blockd*);
495 void vp8_regular_quantize_b_sse2(struct block*, struct blockd*);
496 void vp8_regular_quantize_b_sse4_1(struct block*, struct blockd*);
497 RTCD_EXTERN void (*vp8_regular_quantize_b)(struct block*, struct blockd*);
498 
499 void vp8_short_fdct4x4_c(short* input, short* output, int pitch);
500 void vp8_short_fdct4x4_sse2(short* input, short* output, int pitch);
501 #define vp8_short_fdct4x4 vp8_short_fdct4x4_sse2
502 
503 void vp8_short_fdct8x4_c(short* input, short* output, int pitch);
504 void vp8_short_fdct8x4_sse2(short* input, short* output, int pitch);
505 #define vp8_short_fdct8x4 vp8_short_fdct8x4_sse2
506 
507 void vp8_short_idct4x4llm_c(short* input,
508                             unsigned char* pred_ptr,
509                             int pred_stride,
510                             unsigned char* dst_ptr,
511                             int dst_stride);
512 void vp8_short_idct4x4llm_mmx(short* input,
513                               unsigned char* pred_ptr,
514                               int pred_stride,
515                               unsigned char* dst_ptr,
516                               int dst_stride);
517 #define vp8_short_idct4x4llm vp8_short_idct4x4llm_mmx
518 
519 void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff);
520 void vp8_short_inv_walsh4x4_sse2(short* input, short* mb_dqcoeff);
521 #define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_sse2
522 
523 void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff);
524 #define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
525 
526 void vp8_short_walsh4x4_c(short* input, short* output, int pitch);
527 void vp8_short_walsh4x4_sse2(short* input, short* output, int pitch);
528 #define vp8_short_walsh4x4 vp8_short_walsh4x4_sse2
529 
530 void vp8_sixtap_predict16x16_c(unsigned char* src_ptr,
531                                int src_pixels_per_line,
532                                int xoffset,
533                                int yoffset,
534                                unsigned char* dst_ptr,
535                                int dst_pitch);
536 void vp8_sixtap_predict16x16_sse2(unsigned char* src_ptr,
537                                   int src_pixels_per_line,
538                                   int xoffset,
539                                   int yoffset,
540                                   unsigned char* dst_ptr,
541                                   int dst_pitch);
542 void vp8_sixtap_predict16x16_ssse3(unsigned char* src_ptr,
543                                    int src_pixels_per_line,
544                                    int xoffset,
545                                    int yoffset,
546                                    unsigned char* dst_ptr,
547                                    int dst_pitch);
548 RTCD_EXTERN void (*vp8_sixtap_predict16x16)(unsigned char* src_ptr,
549                                             int src_pixels_per_line,
550                                             int xoffset,
551                                             int yoffset,
552                                             unsigned char* dst_ptr,
553                                             int dst_pitch);
554 
555 void vp8_sixtap_predict4x4_c(unsigned char* src_ptr,
556                              int src_pixels_per_line,
557                              int xoffset,
558                              int yoffset,
559                              unsigned char* dst_ptr,
560                              int dst_pitch);
561 void vp8_sixtap_predict4x4_mmx(unsigned char* src_ptr,
562                                int src_pixels_per_line,
563                                int xoffset,
564                                int yoffset,
565                                unsigned char* dst_ptr,
566                                int dst_pitch);
567 void vp8_sixtap_predict4x4_ssse3(unsigned char* src_ptr,
568                                  int src_pixels_per_line,
569                                  int xoffset,
570                                  int yoffset,
571                                  unsigned char* dst_ptr,
572                                  int dst_pitch);
573 RTCD_EXTERN void (*vp8_sixtap_predict4x4)(unsigned char* src_ptr,
574                                           int src_pixels_per_line,
575                                           int xoffset,
576                                           int yoffset,
577                                           unsigned char* dst_ptr,
578                                           int dst_pitch);
579 
580 void vp8_sixtap_predict8x4_c(unsigned char* src_ptr,
581                              int src_pixels_per_line,
582                              int xoffset,
583                              int yoffset,
584                              unsigned char* dst_ptr,
585                              int dst_pitch);
586 void vp8_sixtap_predict8x4_sse2(unsigned char* src_ptr,
587                                 int src_pixels_per_line,
588                                 int xoffset,
589                                 int yoffset,
590                                 unsigned char* dst_ptr,
591                                 int dst_pitch);
592 void vp8_sixtap_predict8x4_ssse3(unsigned char* src_ptr,
593                                  int src_pixels_per_line,
594                                  int xoffset,
595                                  int yoffset,
596                                  unsigned char* dst_ptr,
597                                  int dst_pitch);
598 RTCD_EXTERN void (*vp8_sixtap_predict8x4)(unsigned char* src_ptr,
599                                           int src_pixels_per_line,
600                                           int xoffset,
601                                           int yoffset,
602                                           unsigned char* dst_ptr,
603                                           int dst_pitch);
604 
605 void vp8_sixtap_predict8x8_c(unsigned char* src_ptr,
606                              int src_pixels_per_line,
607                              int xoffset,
608                              int yoffset,
609                              unsigned char* dst_ptr,
610                              int dst_pitch);
611 void vp8_sixtap_predict8x8_sse2(unsigned char* src_ptr,
612                                 int src_pixels_per_line,
613                                 int xoffset,
614                                 int yoffset,
615                                 unsigned char* dst_ptr,
616                                 int dst_pitch);
617 void vp8_sixtap_predict8x8_ssse3(unsigned char* src_ptr,
618                                  int src_pixels_per_line,
619                                  int xoffset,
620                                  int yoffset,
621                                  unsigned char* dst_ptr,
622                                  int dst_pitch);
623 RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char* src_ptr,
624                                           int src_pixels_per_line,
625                                           int xoffset,
626                                           int yoffset,
627                                           unsigned char* dst_ptr,
628                                           int dst_pitch);
629 
630 void vp8_rtcd(void);
631 
632 #ifdef RTCD_C
633 #include "vpx_ports/x86.h"
setup_rtcd_internal(void)634 static void setup_rtcd_internal(void) {
635   int flags = x86_simd_caps();
636 
637   (void)flags;
638 
639   vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_sse2;
640   if (flags & HAS_SSSE3)
641     vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_ssse3;
642   vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_sse2;
643   if (flags & HAS_SSSE3)
644     vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_ssse3;
645   vp8_copy32xn = vp8_copy32xn_sse2;
646   if (flags & HAS_SSE3)
647     vp8_copy32xn = vp8_copy32xn_sse3;
648   vp8_fast_quantize_b = vp8_fast_quantize_b_sse2;
649   if (flags & HAS_SSSE3)
650     vp8_fast_quantize_b = vp8_fast_quantize_b_ssse3;
651   vp8_full_search_sad = vp8_full_search_sad_c;
652   if (flags & HAS_SSE3)
653     vp8_full_search_sad = vp8_full_search_sadx3;
654   if (flags & HAS_SSE4_1)
655     vp8_full_search_sad = vp8_full_search_sadx8;
656   vp8_regular_quantize_b = vp8_regular_quantize_b_sse2;
657   if (flags & HAS_SSE4_1)
658     vp8_regular_quantize_b = vp8_regular_quantize_b_sse4_1;
659   vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_sse2;
660   if (flags & HAS_SSSE3)
661     vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_ssse3;
662   vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_mmx;
663   if (flags & HAS_SSSE3)
664     vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_ssse3;
665   vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_sse2;
666   if (flags & HAS_SSSE3)
667     vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_ssse3;
668   vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_sse2;
669   if (flags & HAS_SSSE3)
670     vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_ssse3;
671 }
672 #endif
673 
674 #ifdef __cplusplus
675 }  // extern "C"
676 #endif
677 
678 #endif
679