1233d2500723e5594f3e7c70896ffeeef32b9c950ywan#ifndef VP9_RTCD_H_
2233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define VP9_RTCD_H_
3233d2500723e5594f3e7c70896ffeeef32b9c950ywan
4233d2500723e5594f3e7c70896ffeeef32b9c950ywan#ifdef RTCD_C
5233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define RTCD_EXTERN
6233d2500723e5594f3e7c70896ffeeef32b9c950ywan#else
7233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define RTCD_EXTERN extern
8233d2500723e5594f3e7c70896ffeeef32b9c950ywan#endif
9233d2500723e5594f3e7c70896ffeeef32b9c950ywan
10233d2500723e5594f3e7c70896ffeeef32b9c950ywan/*
11233d2500723e5594f3e7c70896ffeeef32b9c950ywan * VP9
12233d2500723e5594f3e7c70896ffeeef32b9c950ywan */
13233d2500723e5594f3e7c70896ffeeef32b9c950ywan
14233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "vpx/vpx_integer.h"
15233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "vp9/common/vp9_enums.h"
16233d2500723e5594f3e7c70896ffeeef32b9c950ywan
17233d2500723e5594f3e7c70896ffeeef32b9c950ywanstruct macroblockd;
18233d2500723e5594f3e7c70896ffeeef32b9c950ywan
19233d2500723e5594f3e7c70896ffeeef32b9c950ywan/* Encoder forward decls */
20233d2500723e5594f3e7c70896ffeeef32b9c950ywanstruct macroblock;
21233d2500723e5594f3e7c70896ffeeef32b9c950ywanstruct vp9_variance_vtable;
22233d2500723e5594f3e7c70896ffeeef32b9c950ywan
23233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define DEC_MVCOSTS int *mvjcost, int *mvcost[2]
24233d2500723e5594f3e7c70896ffeeef32b9c950ywanunion int_mv;
25233d2500723e5594f3e7c70896ffeeef32b9c950ywanstruct yv12_buffer_config;
26233d2500723e5594f3e7c70896ffeeef32b9c950ywan
27233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d207_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
28233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d207_predictor_4x4 vp9_d207_predictor_4x4_c
29233d2500723e5594f3e7c70896ffeeef32b9c950ywan
30233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d45_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
31233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d45_predictor_4x4 vp9_d45_predictor_4x4_c
32233d2500723e5594f3e7c70896ffeeef32b9c950ywan
33233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d63_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
34233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d63_predictor_4x4 vp9_d63_predictor_4x4_c
35233d2500723e5594f3e7c70896ffeeef32b9c950ywan
36233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
37233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_h_predictor_4x4 vp9_h_predictor_4x4_c
38233d2500723e5594f3e7c70896ffeeef32b9c950ywan
39233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d117_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
40233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d117_predictor_4x4 vp9_d117_predictor_4x4_c
41233d2500723e5594f3e7c70896ffeeef32b9c950ywan
42233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d135_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
43233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d135_predictor_4x4 vp9_d135_predictor_4x4_c
44233d2500723e5594f3e7c70896ffeeef32b9c950ywan
45233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d153_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
46233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d153_predictor_4x4 vp9_d153_predictor_4x4_c
47233d2500723e5594f3e7c70896ffeeef32b9c950ywan
48233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
49233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_v_predictor_4x4 vp9_v_predictor_4x4_c
50233d2500723e5594f3e7c70896ffeeef32b9c950ywan
51233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_tm_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
52233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_tm_predictor_4x4 vp9_tm_predictor_4x4_c
53233d2500723e5594f3e7c70896ffeeef32b9c950ywan
54233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
55233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_predictor_4x4 vp9_dc_predictor_4x4_c
56233d2500723e5594f3e7c70896ffeeef32b9c950ywan
57233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_top_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
58233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_top_predictor_4x4 vp9_dc_top_predictor_4x4_c
59233d2500723e5594f3e7c70896ffeeef32b9c950ywan
60233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_left_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
61233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_left_predictor_4x4 vp9_dc_left_predictor_4x4_c
62233d2500723e5594f3e7c70896ffeeef32b9c950ywan
63233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_128_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
64233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_128_predictor_4x4 vp9_dc_128_predictor_4x4_c
65233d2500723e5594f3e7c70896ffeeef32b9c950ywan
66233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d207_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
67233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d207_predictor_8x8 vp9_d207_predictor_8x8_c
68233d2500723e5594f3e7c70896ffeeef32b9c950ywan
69233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d45_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
70233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d45_predictor_8x8 vp9_d45_predictor_8x8_c
71233d2500723e5594f3e7c70896ffeeef32b9c950ywan
72233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d63_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
73233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d63_predictor_8x8 vp9_d63_predictor_8x8_c
74233d2500723e5594f3e7c70896ffeeef32b9c950ywan
75233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
76233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_h_predictor_8x8 vp9_h_predictor_8x8_c
77233d2500723e5594f3e7c70896ffeeef32b9c950ywan
78233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d117_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
79233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d117_predictor_8x8 vp9_d117_predictor_8x8_c
80233d2500723e5594f3e7c70896ffeeef32b9c950ywan
81233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d135_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
82233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d135_predictor_8x8 vp9_d135_predictor_8x8_c
83233d2500723e5594f3e7c70896ffeeef32b9c950ywan
84233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d153_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
85233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d153_predictor_8x8 vp9_d153_predictor_8x8_c
86233d2500723e5594f3e7c70896ffeeef32b9c950ywan
87233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
88233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_v_predictor_8x8 vp9_v_predictor_8x8_c
89233d2500723e5594f3e7c70896ffeeef32b9c950ywan
90233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_tm_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
91233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_tm_predictor_8x8 vp9_tm_predictor_8x8_c
92233d2500723e5594f3e7c70896ffeeef32b9c950ywan
93233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
94233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_predictor_8x8 vp9_dc_predictor_8x8_c
95233d2500723e5594f3e7c70896ffeeef32b9c950ywan
96233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_top_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
97233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_top_predictor_8x8 vp9_dc_top_predictor_8x8_c
98233d2500723e5594f3e7c70896ffeeef32b9c950ywan
99233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_left_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
100233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_left_predictor_8x8 vp9_dc_left_predictor_8x8_c
101233d2500723e5594f3e7c70896ffeeef32b9c950ywan
102233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_128_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
103233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_128_predictor_8x8 vp9_dc_128_predictor_8x8_c
104233d2500723e5594f3e7c70896ffeeef32b9c950ywan
105233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d207_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
106233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d207_predictor_16x16 vp9_d207_predictor_16x16_c
107233d2500723e5594f3e7c70896ffeeef32b9c950ywan
108233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d45_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
109233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d45_predictor_16x16 vp9_d45_predictor_16x16_c
110233d2500723e5594f3e7c70896ffeeef32b9c950ywan
111233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d63_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
112233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d63_predictor_16x16 vp9_d63_predictor_16x16_c
113233d2500723e5594f3e7c70896ffeeef32b9c950ywan
114233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
115233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_h_predictor_16x16 vp9_h_predictor_16x16_c
116233d2500723e5594f3e7c70896ffeeef32b9c950ywan
117233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d117_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
118233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d117_predictor_16x16 vp9_d117_predictor_16x16_c
119233d2500723e5594f3e7c70896ffeeef32b9c950ywan
120233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d135_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
121233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d135_predictor_16x16 vp9_d135_predictor_16x16_c
122233d2500723e5594f3e7c70896ffeeef32b9c950ywan
123233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d153_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
124233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d153_predictor_16x16 vp9_d153_predictor_16x16_c
125233d2500723e5594f3e7c70896ffeeef32b9c950ywan
126233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
127233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_v_predictor_16x16 vp9_v_predictor_16x16_c
128233d2500723e5594f3e7c70896ffeeef32b9c950ywan
129233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_tm_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
130233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_tm_predictor_16x16 vp9_tm_predictor_16x16_c
131233d2500723e5594f3e7c70896ffeeef32b9c950ywan
132233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
133233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_predictor_16x16 vp9_dc_predictor_16x16_c
134233d2500723e5594f3e7c70896ffeeef32b9c950ywan
135233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_top_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
136233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_top_predictor_16x16 vp9_dc_top_predictor_16x16_c
137233d2500723e5594f3e7c70896ffeeef32b9c950ywan
138233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_left_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
139233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_left_predictor_16x16 vp9_dc_left_predictor_16x16_c
140233d2500723e5594f3e7c70896ffeeef32b9c950ywan
141233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_128_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
142233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_128_predictor_16x16 vp9_dc_128_predictor_16x16_c
143233d2500723e5594f3e7c70896ffeeef32b9c950ywan
144233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d207_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
145233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d207_predictor_32x32 vp9_d207_predictor_32x32_c
146233d2500723e5594f3e7c70896ffeeef32b9c950ywan
147233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d45_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
148233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d45_predictor_32x32 vp9_d45_predictor_32x32_c
149233d2500723e5594f3e7c70896ffeeef32b9c950ywan
150233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d63_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
151233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d63_predictor_32x32 vp9_d63_predictor_32x32_c
152233d2500723e5594f3e7c70896ffeeef32b9c950ywan
153233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
154233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_h_predictor_32x32 vp9_h_predictor_32x32_c
155233d2500723e5594f3e7c70896ffeeef32b9c950ywan
156233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d117_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
157233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d117_predictor_32x32 vp9_d117_predictor_32x32_c
158233d2500723e5594f3e7c70896ffeeef32b9c950ywan
159233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d135_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
160233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d135_predictor_32x32 vp9_d135_predictor_32x32_c
161233d2500723e5594f3e7c70896ffeeef32b9c950ywan
162233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d153_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
163233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d153_predictor_32x32 vp9_d153_predictor_32x32_c
164233d2500723e5594f3e7c70896ffeeef32b9c950ywan
165233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
166233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_v_predictor_32x32 vp9_v_predictor_32x32_c
167233d2500723e5594f3e7c70896ffeeef32b9c950ywan
168233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_tm_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
169233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_tm_predictor_32x32 vp9_tm_predictor_32x32_c
170233d2500723e5594f3e7c70896ffeeef32b9c950ywan
171233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
172233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_predictor_32x32 vp9_dc_predictor_32x32_c
173233d2500723e5594f3e7c70896ffeeef32b9c950ywan
174233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_top_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
175233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_top_predictor_32x32 vp9_dc_top_predictor_32x32_c
176233d2500723e5594f3e7c70896ffeeef32b9c950ywan
177233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_left_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
178233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_left_predictor_32x32 vp9_dc_left_predictor_32x32_c
179233d2500723e5594f3e7c70896ffeeef32b9c950ywan
180233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_128_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
181233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_128_predictor_32x32 vp9_dc_128_predictor_32x32_c
182233d2500723e5594f3e7c70896ffeeef32b9c950ywan
183233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_mb_lpf_vertical_edge_w_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
184233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_mb_lpf_vertical_edge_w vp9_mb_lpf_vertical_edge_w_c
185233d2500723e5594f3e7c70896ffeeef32b9c950ywan
186233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_mbloop_filter_vertical_edge_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
187233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_mbloop_filter_vertical_edge vp9_mbloop_filter_vertical_edge_c
188233d2500723e5594f3e7c70896ffeeef32b9c950ywan
189233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_loop_filter_vertical_edge_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
190233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_loop_filter_vertical_edge vp9_loop_filter_vertical_edge_c
191233d2500723e5594f3e7c70896ffeeef32b9c950ywan
192233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_mb_lpf_horizontal_edge_w_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
193233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_mb_lpf_horizontal_edge_w vp9_mb_lpf_horizontal_edge_w_c
194233d2500723e5594f3e7c70896ffeeef32b9c950ywan
195233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_mbloop_filter_horizontal_edge_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
196233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_mbloop_filter_horizontal_edge vp9_mbloop_filter_horizontal_edge_c
197233d2500723e5594f3e7c70896ffeeef32b9c950ywan
198233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_loop_filter_horizontal_edge_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
199233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_loop_filter_horizontal_edge vp9_loop_filter_horizontal_edge_c
200233d2500723e5594f3e7c70896ffeeef32b9c950ywan
201233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_blend_mb_inner_c(uint8_t *y, uint8_t *u, uint8_t *v, int y1, int u1, int v1, int alpha, int stride);
202233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_blend_mb_inner vp9_blend_mb_inner_c
203233d2500723e5594f3e7c70896ffeeef32b9c950ywan
204233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_blend_mb_outer_c(uint8_t *y, uint8_t *u, uint8_t *v, int y1, int u1, int v1, int alpha, int stride);
205233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_blend_mb_outer vp9_blend_mb_outer_c
206233d2500723e5594f3e7c70896ffeeef32b9c950ywan
207233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_blend_b_c(uint8_t *y, uint8_t *u, uint8_t *v, int y1, int u1, int v1, int alpha, int stride);
208233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_blend_b vp9_blend_b_c
209233d2500723e5594f3e7c70896ffeeef32b9c950ywan
210233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
211233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_convolve_copy vp9_convolve_copy_c
212233d2500723e5594f3e7c70896ffeeef32b9c950ywan
213233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
214233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_convolve_avg vp9_convolve_avg_c
215233d2500723e5594f3e7c70896ffeeef32b9c950ywan
216233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
217233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_convolve8 vp9_convolve8_c
218233d2500723e5594f3e7c70896ffeeef32b9c950ywan
219233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
220233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_convolve8_horiz vp9_convolve8_horiz_c
221233d2500723e5594f3e7c70896ffeeef32b9c950ywan
222233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
223233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_convolve8_vert vp9_convolve8_vert_c
224233d2500723e5594f3e7c70896ffeeef32b9c950ywan
225233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
226233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_convolve8_avg vp9_convolve8_avg_c
227233d2500723e5594f3e7c70896ffeeef32b9c950ywan
228233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
229233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_convolve8_avg_horiz vp9_convolve8_avg_horiz_c
230233d2500723e5594f3e7c70896ffeeef32b9c950ywan
231233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
232233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_convolve8_avg_vert vp9_convolve8_avg_vert_c
233233d2500723e5594f3e7c70896ffeeef32b9c950ywan
234233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct4x4_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
235233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_idct4x4_1_add vp9_idct4x4_1_add_c
236233d2500723e5594f3e7c70896ffeeef32b9c950ywan
237233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct4x4_16_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
238233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_idct4x4_16_add vp9_idct4x4_16_add_c
239233d2500723e5594f3e7c70896ffeeef32b9c950ywan
240233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct8x8_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
241233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_idct8x8_1_add vp9_idct8x8_1_add_c
242233d2500723e5594f3e7c70896ffeeef32b9c950ywan
243233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct8x8_64_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
244233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_idct8x8_64_add vp9_idct8x8_64_add_c
245233d2500723e5594f3e7c70896ffeeef32b9c950ywan
246233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct8x8_10_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
247233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_idct8x8_10_add vp9_idct8x8_10_add_c
248233d2500723e5594f3e7c70896ffeeef32b9c950ywan
249233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct16x16_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
250233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_idct16x16_1_add vp9_idct16x16_1_add_c
251233d2500723e5594f3e7c70896ffeeef32b9c950ywan
252233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct16x16_256_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
253233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_idct16x16_256_add vp9_idct16x16_256_add_c
254233d2500723e5594f3e7c70896ffeeef32b9c950ywan
255233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct16x16_10_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
256233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_idct16x16_10_add vp9_idct16x16_10_add_c
257233d2500723e5594f3e7c70896ffeeef32b9c950ywan
258233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct32x32_1024_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
259233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_idct32x32_1024_add vp9_idct32x32_1024_add_c
260233d2500723e5594f3e7c70896ffeeef32b9c950ywan
261233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct32x32_34_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
262233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_idct32x32_34_add vp9_idct32x32_34_add_c
263233d2500723e5594f3e7c70896ffeeef32b9c950ywan
264233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct32x32_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
265233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_idct32x32_1_add vp9_idct32x32_1_add_c
266233d2500723e5594f3e7c70896ffeeef32b9c950ywan
267233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_iht4x4_16_add_c(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
268233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_iht4x4_16_add vp9_iht4x4_16_add_c
269233d2500723e5594f3e7c70896ffeeef32b9c950ywan
270233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_iht8x8_64_add_c(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
271233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_iht8x8_64_add vp9_iht8x8_64_add_c
272233d2500723e5594f3e7c70896ffeeef32b9c950ywan
273233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_iht16x16_256_add_c(const int16_t *input, uint8_t *output, int pitch, int tx_type);
274233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_iht16x16_256_add vp9_iht16x16_256_add_c
275233d2500723e5594f3e7c70896ffeeef32b9c950ywan
276233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_iwht4x4_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
277233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_iwht4x4_1_add vp9_iwht4x4_1_add_c
278233d2500723e5594f3e7c70896ffeeef32b9c950ywan
279233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_iwht4x4_16_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
280233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_iwht4x4_16_add vp9_iwht4x4_16_add_c
281233d2500723e5594f3e7c70896ffeeef32b9c950ywan
282233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_rtcd(void);
283233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "vpx_config.h"
284233d2500723e5594f3e7c70896ffeeef32b9c950ywan
285233d2500723e5594f3e7c70896ffeeef32b9c950ywan#ifdef RTCD_C
286233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "vpx_ports/arm.h"
287233d2500723e5594f3e7c70896ffeeef32b9c950ywanstatic void setup_rtcd_internal(void)
288233d2500723e5594f3e7c70896ffeeef32b9c950ywan{
289233d2500723e5594f3e7c70896ffeeef32b9c950ywan    int flags = arm_cpu_caps();
290233d2500723e5594f3e7c70896ffeeef32b9c950ywan
291233d2500723e5594f3e7c70896ffeeef32b9c950ywan    (void)flags;
292233d2500723e5594f3e7c70896ffeeef32b9c950ywan
293233d2500723e5594f3e7c70896ffeeef32b9c950ywan
294233d2500723e5594f3e7c70896ffeeef32b9c950ywan}
295233d2500723e5594f3e7c70896ffeeef32b9c950ywan#endif
296233d2500723e5594f3e7c70896ffeeef32b9c950ywan#endif
297