2 * Copyright (c) 2010 Fiona Glaser <fiona@x264.com>
4 * This file is part of Libav.
6 * Libav is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * Libav is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with Libav; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 #include "libavutil/attributes.h"
22 #include "libavutil/cpu.h"
23 #include "libavutil/x86/cpu.h"
24 #include "libavcodec/avcodec.h"
25 #include "libavcodec/h264pred.h"
27 #define PRED4x4(TYPE, DEPTH, OPT) \
28 void ff_pred4x4_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, \
29 const uint8_t *topright, \
32 PRED4x4(dc
, 10, mmxext
)
33 PRED4x4(down_left
, 10, sse2
)
34 PRED4x4(down_left
, 10, avx
)
35 PRED4x4(down_right
, 10, sse2
)
36 PRED4x4(down_right
, 10, ssse3
)
37 PRED4x4(down_right
, 10, avx
)
38 PRED4x4(vertical_left
, 10, sse2
)
39 PRED4x4(vertical_left
, 10, avx
)
40 PRED4x4(vertical_right
, 10, sse2
)
41 PRED4x4(vertical_right
, 10, ssse3
)
42 PRED4x4(vertical_right
, 10, avx
)
43 PRED4x4(horizontal_up
, 10, mmxext
)
44 PRED4x4(horizontal_down
, 10, sse2
)
45 PRED4x4(horizontal_down
, 10, ssse3
)
46 PRED4x4(horizontal_down
, 10, avx
)
48 #define PRED8x8(TYPE, DEPTH, OPT) \
49 void ff_pred8x8_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, \
52 PRED8x8(dc
, 10, mmxext
)
54 PRED8x8(top_dc
, 10, sse2
)
55 PRED8x8(plane
, 10, sse2
)
56 PRED8x8(vertical
, 10, sse2
)
57 PRED8x8(horizontal
, 10, sse2
)
59 #define PRED8x8L(TYPE, DEPTH, OPT)\
60 void ff_pred8x8l_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, \
65 PRED8x8L(dc
, 10, sse2
)
67 PRED8x8L(128_dc
, 10, mmxext
)
68 PRED8x8L(128_dc
, 10, sse2
)
69 PRED8x8L(top_dc
, 10, sse2
)
70 PRED8x8L(top_dc
, 10, avx
)
71 PRED8x8L(vertical
, 10, sse2
)
72 PRED8x8L(vertical
, 10, avx
)
73 PRED8x8L(horizontal
, 10, sse2
)
74 PRED8x8L(horizontal
, 10, ssse3
)
75 PRED8x8L(horizontal
, 10, avx
)
76 PRED8x8L(down_left
, 10, sse2
)
77 PRED8x8L(down_left
, 10, ssse3
)
78 PRED8x8L(down_left
, 10, avx
)
79 PRED8x8L(down_right
, 10, sse2
)
80 PRED8x8L(down_right
, 10, ssse3
)
81 PRED8x8L(down_right
, 10, avx
)
82 PRED8x8L(vertical_right
, 10, sse2
)
83 PRED8x8L(vertical_right
, 10, ssse3
)
84 PRED8x8L(vertical_right
, 10, avx
)
85 PRED8x8L(horizontal_up
, 10, sse2
)
86 PRED8x8L(horizontal_up
, 10, ssse3
)
87 PRED8x8L(horizontal_up
, 10, avx
)
89 #define PRED16x16(TYPE, DEPTH, OPT)\
90 void ff_pred16x16_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, \
93 PRED16x16(dc
, 10, mmxext
)
94 PRED16x16(dc
, 10, sse2
)
95 PRED16x16(top_dc
, 10, mmxext
)
96 PRED16x16(top_dc
, 10, sse2
)
97 PRED16x16(128_dc
, 10, mmxext
)
98 PRED16x16(128_dc
, 10, sse2
)
99 PRED16x16(left_dc
, 10, mmxext
)
100 PRED16x16(left_dc
, 10, sse2
)
101 PRED16x16(vertical
, 10, mmxext
)
102 PRED16x16(vertical
, 10, sse2
)
103 PRED16x16(horizontal
, 10, mmxext
)
104 PRED16x16(horizontal
, 10, sse2
)
107 PRED16x16(vertical
, 8, mmx
)
108 PRED16x16(vertical
, 8, sse
)
109 PRED16x16(horizontal
, 8, mmx
)
110 PRED16x16(horizontal
, 8, mmxext
)
111 PRED16x16(horizontal
, 8, ssse3
)
112 PRED16x16(dc
, 8, mmxext
)
113 PRED16x16(dc
, 8, sse2
)
114 PRED16x16(dc
, 8, ssse3
)
115 PRED16x16(plane_h264
, 8, mmx
)
116 PRED16x16(plane_h264
, 8, mmxext
)
117 PRED16x16(plane_h264
, 8, sse2
)
118 PRED16x16(plane_h264
, 8, ssse3
)
119 PRED16x16(plane_rv40
, 8, mmx
)
120 PRED16x16(plane_rv40
, 8, mmxext
)
121 PRED16x16(plane_rv40
, 8, sse2
)
122 PRED16x16(plane_rv40
, 8, ssse3
)
123 PRED16x16(plane_svq3
, 8, mmx
)
124 PRED16x16(plane_svq3
, 8, mmxext
)
125 PRED16x16(plane_svq3
, 8, sse2
)
126 PRED16x16(plane_svq3
, 8, ssse3
)
127 PRED16x16(tm_vp8
, 8, mmx
)
128 PRED16x16(tm_vp8
, 8, mmxext
)
129 PRED16x16(tm_vp8
, 8, sse2
)
131 PRED8x8(top_dc
, 8, mmxext
)
132 PRED8x8(dc_rv40
, 8, mmxext
)
133 PRED8x8(dc
, 8, mmxext
)
134 PRED8x8(vertical
, 8, mmx
)
135 PRED8x8(horizontal
, 8, mmx
)
136 PRED8x8(horizontal
, 8, mmxext
)
137 PRED8x8(horizontal
, 8, ssse3
)
138 PRED8x8(plane
, 8, mmx
)
139 PRED8x8(plane
, 8, mmxext
)
140 PRED8x8(plane
, 8, sse2
)
141 PRED8x8(plane
, 8, ssse3
)
142 PRED8x8(tm_vp8
, 8, mmx
)
143 PRED8x8(tm_vp8
, 8, mmxext
)
144 PRED8x8(tm_vp8
, 8, sse2
)
145 PRED8x8(tm_vp8
, 8, ssse3
)
147 PRED8x8L(top_dc
, 8, mmxext
)
148 PRED8x8L(top_dc
, 8, ssse3
)
149 PRED8x8L(dc
, 8, mmxext
)
150 PRED8x8L(dc
, 8, ssse3
)
151 PRED8x8L(horizontal
, 8, mmxext
)
152 PRED8x8L(horizontal
, 8, ssse3
)
153 PRED8x8L(vertical
, 8, mmxext
)
154 PRED8x8L(vertical
, 8, ssse3
)
155 PRED8x8L(down_left
, 8, mmxext
)
156 PRED8x8L(down_left
, 8, sse2
)
157 PRED8x8L(down_left
, 8, ssse3
)
158 PRED8x8L(down_right
, 8, mmxext
)
159 PRED8x8L(down_right
, 8, sse2
)
160 PRED8x8L(down_right
, 8, ssse3
)
161 PRED8x8L(vertical_right
, 8, mmxext
)
162 PRED8x8L(vertical_right
, 8, sse2
)
163 PRED8x8L(vertical_right
, 8, ssse3
)
164 PRED8x8L(vertical_left
, 8, sse2
)
165 PRED8x8L(vertical_left
, 8, ssse3
)
166 PRED8x8L(horizontal_up
, 8, mmxext
)
167 PRED8x8L(horizontal_up
, 8, ssse3
)
168 PRED8x8L(horizontal_down
, 8, mmxext
)
169 PRED8x8L(horizontal_down
, 8, sse2
)
170 PRED8x8L(horizontal_down
, 8, ssse3
)
172 PRED4x4(dc
, 8, mmxext
)
173 PRED4x4(down_left
, 8, mmxext
)
174 PRED4x4(down_right
, 8, mmxext
)
175 PRED4x4(vertical_left
, 8, mmxext
)
176 PRED4x4(vertical_right
, 8, mmxext
)
177 PRED4x4(horizontal_up
, 8, mmxext
)
178 PRED4x4(horizontal_down
, 8, mmxext
)
179 PRED4x4(tm_vp8
, 8, mmx
)
180 PRED4x4(tm_vp8
, 8, mmxext
)
181 PRED4x4(tm_vp8
, 8, ssse3
)
182 PRED4x4(vertical_vp8
, 8, mmxext
)
184 av_cold
void ff_h264_pred_init_x86(H264PredContext
*h
, int codec_id
,
186 const int chroma_format_idc
)
188 int cpu_flags
= av_get_cpu_flags();
190 if (bit_depth
== 8) {
191 if (EXTERNAL_MMX(cpu_flags
)) {
192 h
->pred16x16
[VERT_PRED8x8
] = ff_pred16x16_vertical_8_mmx
;
193 h
->pred16x16
[HOR_PRED8x8
] = ff_pred16x16_horizontal_8_mmx
;
194 if (chroma_format_idc
<= 1) {
195 h
->pred8x8
[VERT_PRED8x8
] = ff_pred8x8_vertical_8_mmx
;
196 h
->pred8x8
[HOR_PRED8x8
] = ff_pred8x8_horizontal_8_mmx
;
198 if (codec_id
== AV_CODEC_ID_VP7
|| codec_id
== AV_CODEC_ID_VP8
) {
199 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_tm_vp8_8_mmx
;
200 h
->pred8x8
[PLANE_PRED8x8
] = ff_pred8x8_tm_vp8_8_mmx
;
201 h
->pred4x4
[TM_VP8_PRED
] = ff_pred4x4_tm_vp8_8_mmx
;
203 if (chroma_format_idc
<= 1)
204 h
->pred8x8
[PLANE_PRED8x8
] = ff_pred8x8_plane_8_mmx
;
205 if (codec_id
== AV_CODEC_ID_SVQ3
) {
206 if (cpu_flags
& AV_CPU_FLAG_CMOV
)
207 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_plane_svq3_8_mmx
;
208 } else if (codec_id
== AV_CODEC_ID_RV40
) {
209 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_plane_rv40_8_mmx
;
211 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_plane_h264_8_mmx
;
216 if (EXTERNAL_MMXEXT(cpu_flags
)) {
217 h
->pred16x16
[HOR_PRED8x8
] = ff_pred16x16_horizontal_8_mmxext
;
218 h
->pred16x16
[DC_PRED8x8
] = ff_pred16x16_dc_8_mmxext
;
219 if (chroma_format_idc
<= 1)
220 h
->pred8x8
[HOR_PRED8x8
] = ff_pred8x8_horizontal_8_mmxext
;
221 h
->pred8x8l
[TOP_DC_PRED
] = ff_pred8x8l_top_dc_8_mmxext
;
222 h
->pred8x8l
[DC_PRED
] = ff_pred8x8l_dc_8_mmxext
;
223 h
->pred8x8l
[HOR_PRED
] = ff_pred8x8l_horizontal_8_mmxext
;
224 h
->pred8x8l
[VERT_PRED
] = ff_pred8x8l_vertical_8_mmxext
;
225 h
->pred8x8l
[DIAG_DOWN_RIGHT_PRED
] = ff_pred8x8l_down_right_8_mmxext
;
226 h
->pred8x8l
[VERT_RIGHT_PRED
] = ff_pred8x8l_vertical_right_8_mmxext
;
227 h
->pred8x8l
[HOR_UP_PRED
] = ff_pred8x8l_horizontal_up_8_mmxext
;
228 h
->pred8x8l
[DIAG_DOWN_LEFT_PRED
] = ff_pred8x8l_down_left_8_mmxext
;
229 h
->pred8x8l
[HOR_DOWN_PRED
] = ff_pred8x8l_horizontal_down_8_mmxext
;
230 h
->pred4x4
[DIAG_DOWN_RIGHT_PRED
] = ff_pred4x4_down_right_8_mmxext
;
231 h
->pred4x4
[VERT_RIGHT_PRED
] = ff_pred4x4_vertical_right_8_mmxext
;
232 h
->pred4x4
[HOR_DOWN_PRED
] = ff_pred4x4_horizontal_down_8_mmxext
;
233 h
->pred4x4
[DC_PRED
] = ff_pred4x4_dc_8_mmxext
;
234 if (codec_id
== AV_CODEC_ID_VP7
|| codec_id
== AV_CODEC_ID_VP8
||
235 codec_id
== AV_CODEC_ID_H264
) {
236 h
->pred4x4
[DIAG_DOWN_LEFT_PRED
] = ff_pred4x4_down_left_8_mmxext
;
238 if (codec_id
== AV_CODEC_ID_SVQ3
|| codec_id
== AV_CODEC_ID_H264
) {
239 h
->pred4x4
[VERT_LEFT_PRED
] = ff_pred4x4_vertical_left_8_mmxext
;
241 if (codec_id
!= AV_CODEC_ID_RV40
) {
242 h
->pred4x4
[HOR_UP_PRED
] = ff_pred4x4_horizontal_up_8_mmxext
;
244 if (codec_id
== AV_CODEC_ID_SVQ3
|| codec_id
== AV_CODEC_ID_H264
) {
245 if (chroma_format_idc
<= 1) {
246 h
->pred8x8
[TOP_DC_PRED8x8
] = ff_pred8x8_top_dc_8_mmxext
;
247 h
->pred8x8
[DC_PRED8x8
] = ff_pred8x8_dc_8_mmxext
;
250 if (codec_id
== AV_CODEC_ID_VP7
|| codec_id
== AV_CODEC_ID_VP8
) {
251 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_tm_vp8_8_mmxext
;
252 h
->pred8x8
[DC_PRED8x8
] = ff_pred8x8_dc_rv40_8_mmxext
;
253 h
->pred8x8
[PLANE_PRED8x8
] = ff_pred8x8_tm_vp8_8_mmxext
;
254 h
->pred4x4
[TM_VP8_PRED
] = ff_pred4x4_tm_vp8_8_mmxext
;
255 h
->pred4x4
[VERT_PRED
] = ff_pred4x4_vertical_vp8_8_mmxext
;
257 if (chroma_format_idc
<= 1)
258 h
->pred8x8
[PLANE_PRED8x8
] = ff_pred8x8_plane_8_mmxext
;
259 if (codec_id
== AV_CODEC_ID_SVQ3
) {
260 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_plane_svq3_8_mmxext
;
261 } else if (codec_id
== AV_CODEC_ID_RV40
) {
262 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_plane_rv40_8_mmxext
;
264 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_plane_h264_8_mmxext
;
269 if (EXTERNAL_SSE(cpu_flags
)) {
270 h
->pred16x16
[VERT_PRED8x8
] = ff_pred16x16_vertical_8_sse
;
273 if (EXTERNAL_SSE2(cpu_flags
)) {
274 h
->pred16x16
[DC_PRED8x8
] = ff_pred16x16_dc_8_sse2
;
275 h
->pred8x8l
[DIAG_DOWN_LEFT_PRED
] = ff_pred8x8l_down_left_8_sse2
;
276 h
->pred8x8l
[DIAG_DOWN_RIGHT_PRED
] = ff_pred8x8l_down_right_8_sse2
;
277 h
->pred8x8l
[VERT_RIGHT_PRED
] = ff_pred8x8l_vertical_right_8_sse2
;
278 h
->pred8x8l
[VERT_LEFT_PRED
] = ff_pred8x8l_vertical_left_8_sse2
;
279 h
->pred8x8l
[HOR_DOWN_PRED
] = ff_pred8x8l_horizontal_down_8_sse2
;
280 if (codec_id
== AV_CODEC_ID_VP7
|| codec_id
== AV_CODEC_ID_VP8
) {
281 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_tm_vp8_8_sse2
;
282 h
->pred8x8
[PLANE_PRED8x8
] = ff_pred8x8_tm_vp8_8_sse2
;
284 if (chroma_format_idc
<= 1)
285 h
->pred8x8
[PLANE_PRED8x8
] = ff_pred8x8_plane_8_sse2
;
286 if (codec_id
== AV_CODEC_ID_SVQ3
) {
287 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_plane_svq3_8_sse2
;
288 } else if (codec_id
== AV_CODEC_ID_RV40
) {
289 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_plane_rv40_8_sse2
;
291 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_plane_h264_8_sse2
;
296 if (EXTERNAL_SSSE3(cpu_flags
)) {
297 h
->pred16x16
[HOR_PRED8x8
] = ff_pred16x16_horizontal_8_ssse3
;
298 h
->pred16x16
[DC_PRED8x8
] = ff_pred16x16_dc_8_ssse3
;
299 if (chroma_format_idc
<= 1)
300 h
->pred8x8
[HOR_PRED8x8
] = ff_pred8x8_horizontal_8_ssse3
;
301 h
->pred8x8l
[TOP_DC_PRED
] = ff_pred8x8l_top_dc_8_ssse3
;
302 h
->pred8x8l
[DC_PRED
] = ff_pred8x8l_dc_8_ssse3
;
303 h
->pred8x8l
[HOR_PRED
] = ff_pred8x8l_horizontal_8_ssse3
;
304 h
->pred8x8l
[VERT_PRED
] = ff_pred8x8l_vertical_8_ssse3
;
305 h
->pred8x8l
[DIAG_DOWN_LEFT_PRED
] = ff_pred8x8l_down_left_8_ssse3
;
306 h
->pred8x8l
[DIAG_DOWN_RIGHT_PRED
] = ff_pred8x8l_down_right_8_ssse3
;
307 h
->pred8x8l
[VERT_RIGHT_PRED
] = ff_pred8x8l_vertical_right_8_ssse3
;
308 h
->pred8x8l
[VERT_LEFT_PRED
] = ff_pred8x8l_vertical_left_8_ssse3
;
309 h
->pred8x8l
[HOR_UP_PRED
] = ff_pred8x8l_horizontal_up_8_ssse3
;
310 h
->pred8x8l
[HOR_DOWN_PRED
] = ff_pred8x8l_horizontal_down_8_ssse3
;
311 if (codec_id
== AV_CODEC_ID_VP7
|| codec_id
== AV_CODEC_ID_VP8
) {
312 h
->pred8x8
[PLANE_PRED8x8
] = ff_pred8x8_tm_vp8_8_ssse3
;
313 h
->pred4x4
[TM_VP8_PRED
] = ff_pred4x4_tm_vp8_8_ssse3
;
315 if (chroma_format_idc
<= 1)
316 h
->pred8x8
[PLANE_PRED8x8
] = ff_pred8x8_plane_8_ssse3
;
317 if (codec_id
== AV_CODEC_ID_SVQ3
) {
318 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_plane_svq3_8_ssse3
;
319 } else if (codec_id
== AV_CODEC_ID_RV40
) {
320 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_plane_rv40_8_ssse3
;
322 h
->pred16x16
[PLANE_PRED8x8
] = ff_pred16x16_plane_h264_8_ssse3
;
326 } else if (bit_depth
== 10) {
327 if (EXTERNAL_MMXEXT(cpu_flags
)) {
328 h
->pred4x4
[DC_PRED
] = ff_pred4x4_dc_10_mmxext
;
329 h
->pred4x4
[HOR_UP_PRED
] = ff_pred4x4_horizontal_up_10_mmxext
;
331 if (chroma_format_idc
<= 1)
332 h
->pred8x8
[DC_PRED8x8
] = ff_pred8x8_dc_10_mmxext
;
334 h
->pred8x8l
[DC_128_PRED
] = ff_pred8x8l_128_dc_10_mmxext
;
336 h
->pred16x16
[DC_PRED8x8
] = ff_pred16x16_dc_10_mmxext
;
337 h
->pred16x16
[TOP_DC_PRED8x8
] = ff_pred16x16_top_dc_10_mmxext
;
338 h
->pred16x16
[DC_128_PRED8x8
] = ff_pred16x16_128_dc_10_mmxext
;
339 h
->pred16x16
[LEFT_DC_PRED8x8
] = ff_pred16x16_left_dc_10_mmxext
;
340 h
->pred16x16
[VERT_PRED8x8
] = ff_pred16x16_vertical_10_mmxext
;
341 h
->pred16x16
[HOR_PRED8x8
] = ff_pred16x16_horizontal_10_mmxext
;
343 if (EXTERNAL_SSE2(cpu_flags
)) {
344 h
->pred4x4
[DIAG_DOWN_LEFT_PRED
] = ff_pred4x4_down_left_10_sse2
;
345 h
->pred4x4
[DIAG_DOWN_RIGHT_PRED
] = ff_pred4x4_down_right_10_sse2
;
346 h
->pred4x4
[VERT_LEFT_PRED
] = ff_pred4x4_vertical_left_10_sse2
;
347 h
->pred4x4
[VERT_RIGHT_PRED
] = ff_pred4x4_vertical_right_10_sse2
;
348 h
->pred4x4
[HOR_DOWN_PRED
] = ff_pred4x4_horizontal_down_10_sse2
;
350 if (chroma_format_idc
<= 1) {
351 h
->pred8x8
[DC_PRED8x8
] = ff_pred8x8_dc_10_sse2
;
352 h
->pred8x8
[TOP_DC_PRED8x8
] = ff_pred8x8_top_dc_10_sse2
;
353 h
->pred8x8
[PLANE_PRED8x8
] = ff_pred8x8_plane_10_sse2
;
354 h
->pred8x8
[VERT_PRED8x8
] = ff_pred8x8_vertical_10_sse2
;
355 h
->pred8x8
[HOR_PRED8x8
] = ff_pred8x8_horizontal_10_sse2
;
358 h
->pred8x8l
[VERT_PRED
] = ff_pred8x8l_vertical_10_sse2
;
359 h
->pred8x8l
[HOR_PRED
] = ff_pred8x8l_horizontal_10_sse2
;
360 h
->pred8x8l
[DC_PRED
] = ff_pred8x8l_dc_10_sse2
;
361 h
->pred8x8l
[DC_128_PRED
] = ff_pred8x8l_128_dc_10_sse2
;
362 h
->pred8x8l
[TOP_DC_PRED
] = ff_pred8x8l_top_dc_10_sse2
;
363 h
->pred8x8l
[DIAG_DOWN_LEFT_PRED
] = ff_pred8x8l_down_left_10_sse2
;
364 h
->pred8x8l
[DIAG_DOWN_RIGHT_PRED
] = ff_pred8x8l_down_right_10_sse2
;
365 h
->pred8x8l
[VERT_RIGHT_PRED
] = ff_pred8x8l_vertical_right_10_sse2
;
366 h
->pred8x8l
[HOR_UP_PRED
] = ff_pred8x8l_horizontal_up_10_sse2
;
368 h
->pred16x16
[DC_PRED8x8
] = ff_pred16x16_dc_10_sse2
;
369 h
->pred16x16
[TOP_DC_PRED8x8
] = ff_pred16x16_top_dc_10_sse2
;
370 h
->pred16x16
[DC_128_PRED8x8
] = ff_pred16x16_128_dc_10_sse2
;
371 h
->pred16x16
[LEFT_DC_PRED8x8
] = ff_pred16x16_left_dc_10_sse2
;
372 h
->pred16x16
[VERT_PRED8x8
] = ff_pred16x16_vertical_10_sse2
;
373 h
->pred16x16
[HOR_PRED8x8
] = ff_pred16x16_horizontal_10_sse2
;
375 if (EXTERNAL_SSSE3(cpu_flags
)) {
376 h
->pred4x4
[DIAG_DOWN_RIGHT_PRED
] = ff_pred4x4_down_right_10_ssse3
;
377 h
->pred4x4
[VERT_RIGHT_PRED
] = ff_pred4x4_vertical_right_10_ssse3
;
378 h
->pred4x4
[HOR_DOWN_PRED
] = ff_pred4x4_horizontal_down_10_ssse3
;
380 h
->pred8x8l
[HOR_PRED
] = ff_pred8x8l_horizontal_10_ssse3
;
381 h
->pred8x8l
[DIAG_DOWN_LEFT_PRED
] = ff_pred8x8l_down_left_10_ssse3
;
382 h
->pred8x8l
[DIAG_DOWN_RIGHT_PRED
] = ff_pred8x8l_down_right_10_ssse3
;
383 h
->pred8x8l
[VERT_RIGHT_PRED
] = ff_pred8x8l_vertical_right_10_ssse3
;
384 h
->pred8x8l
[HOR_UP_PRED
] = ff_pred8x8l_horizontal_up_10_ssse3
;
386 if (EXTERNAL_AVX(cpu_flags
)) {
387 h
->pred4x4
[DIAG_DOWN_LEFT_PRED
] = ff_pred4x4_down_left_10_avx
;
388 h
->pred4x4
[DIAG_DOWN_RIGHT_PRED
] = ff_pred4x4_down_right_10_avx
;
389 h
->pred4x4
[VERT_LEFT_PRED
] = ff_pred4x4_vertical_left_10_avx
;
390 h
->pred4x4
[VERT_RIGHT_PRED
] = ff_pred4x4_vertical_right_10_avx
;
391 h
->pred4x4
[HOR_DOWN_PRED
] = ff_pred4x4_horizontal_down_10_avx
;
393 h
->pred8x8l
[VERT_PRED
] = ff_pred8x8l_vertical_10_avx
;
394 h
->pred8x8l
[HOR_PRED
] = ff_pred8x8l_horizontal_10_avx
;
395 h
->pred8x8l
[DC_PRED
] = ff_pred8x8l_dc_10_avx
;
396 h
->pred8x8l
[TOP_DC_PRED
] = ff_pred8x8l_top_dc_10_avx
;
397 h
->pred8x8l
[DIAG_DOWN_RIGHT_PRED
] = ff_pred8x8l_down_right_10_avx
;
398 h
->pred8x8l
[DIAG_DOWN_LEFT_PRED
] = ff_pred8x8l_down_left_10_avx
;
399 h
->pred8x8l
[VERT_RIGHT_PRED
] = ff_pred8x8l_vertical_right_10_avx
;
400 h
->pred8x8l
[HOR_UP_PRED
] = ff_pred8x8l_horizontal_up_10_avx
;