27 #define PRED4x4(TYPE, DEPTH, OPT) \ 28 void ff_pred4x4_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, \ 29 const uint8_t *topright, \ 38 PRED4x4(vertical_left, 10, sse2)
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, \ 59 #define PRED8x8L(TYPE, DEPTH, OPT)\ 60 void ff_pred8x8l_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, \ 89 #define PRED16x16(TYPE, DEPTH, OPT)\ 90 void ff_pred16x16_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, \ 168 PRED8x8L(horizontal_down, 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)
182 PRED4x4(vertical_vp8, 8, mmxext)
190 if (bit_depth == 8) {
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) {
196 h->pred8x8 [
HOR_PRED8x8 ] = ff_pred8x8_horizontal_8_mmx;
201 h->pred4x4 [
TM_VP8_PRED ] = ff_pred4x4_tm_vp8_8_mmx;
203 if (chroma_format_idc == 1)
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;
227 h->pred8x8l [
HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_8_mmxext;
229 h->pred8x8l [
HOR_DOWN_PRED ] = ff_pred8x8l_horizontal_down_8_mmxext;
232 h->pred4x4 [
HOR_DOWN_PRED ] = ff_pred4x4_horizontal_down_8_mmxext;
233 h->pred4x4 [
DC_PRED ] = ff_pred4x4_dc_8_mmxext;
241 h->pred4x4 [
HOR_UP_PRED ] = ff_pred4x4_horizontal_up_8_mmxext;
244 if (chroma_format_idc == 1) {
246 h->pred8x8[
DC_PRED8x8 ] = ff_pred8x8_dc_8_mmxext;
251 h->pred8x8 [
DC_PRED8x8 ] = ff_pred8x8_dc_rv40_8_mmxext;
253 h->pred4x4 [
TM_VP8_PRED ] = ff_pred4x4_tm_vp8_8_mmxext;
254 h->pred4x4 [
VERT_PRED ] = ff_pred4x4_vertical_vp8_8_mmxext;
256 if (chroma_format_idc == 1)
259 h->pred16x16[
PLANE_PRED8x8 ] = ff_pred16x16_plane_svq3_8_mmxext;
261 h->pred16x16[
PLANE_PRED8x8 ] = ff_pred16x16_plane_rv40_8_mmxext;
263 h->pred16x16[
PLANE_PRED8x8 ] = ff_pred16x16_plane_h264_8_mmxext;
269 h->pred16x16[
VERT_PRED8x8] = ff_pred16x16_vertical_8_sse;
273 h->pred16x16[
DC_PRED8x8 ] = ff_pred16x16_dc_8_sse2;
278 h->pred8x8l [
HOR_DOWN_PRED ] = ff_pred8x8l_horizontal_down_8_sse2;
283 if (chroma_format_idc == 1)
286 h->pred16x16[
PLANE_PRED8x8] = ff_pred16x16_plane_svq3_8_sse2;
288 h->pred16x16[
PLANE_PRED8x8] = ff_pred16x16_plane_rv40_8_sse2;
290 h->pred16x16[
PLANE_PRED8x8] = ff_pred16x16_plane_h264_8_sse2;
296 h->pred16x16[
HOR_PRED8x8 ] = ff_pred16x16_horizontal_8_ssse3;
297 h->pred16x16[
DC_PRED8x8 ] = ff_pred16x16_dc_8_ssse3;
298 if (chroma_format_idc == 1)
299 h->pred8x8 [
HOR_PRED8x8 ] = ff_pred8x8_horizontal_8_ssse3;
300 h->pred8x8l [
TOP_DC_PRED ] = ff_pred8x8l_top_dc_8_ssse3;
301 h->pred8x8l [
DC_PRED ] = ff_pred8x8l_dc_8_ssse3;
302 h->pred8x8l [
HOR_PRED ] = ff_pred8x8l_horizontal_8_ssse3;
303 h->pred8x8l [
VERT_PRED ] = ff_pred8x8l_vertical_8_ssse3;
307 h->pred8x8l [
VERT_LEFT_PRED ] = ff_pred8x8l_vertical_left_8_ssse3;
308 h->pred8x8l [
HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_8_ssse3;
309 h->pred8x8l [
HOR_DOWN_PRED ] = ff_pred8x8l_horizontal_down_8_ssse3;
312 h->pred4x4 [
TM_VP8_PRED ] = ff_pred4x4_tm_vp8_8_ssse3;
314 if (chroma_format_idc == 1)
317 h->pred16x16[
PLANE_PRED8x8] = ff_pred16x16_plane_svq3_8_ssse3;
319 h->pred16x16[
PLANE_PRED8x8] = ff_pred16x16_plane_rv40_8_ssse3;
321 h->pred16x16[
PLANE_PRED8x8] = ff_pred16x16_plane_h264_8_ssse3;
325 }
else if (bit_depth == 10) {
327 h->pred4x4[
DC_PRED ] = ff_pred4x4_dc_10_mmxext;
328 h->pred4x4[
HOR_UP_PRED ] = ff_pred4x4_horizontal_up_10_mmxext;
330 if (chroma_format_idc == 1)
331 h->pred8x8[
DC_PRED8x8 ] = ff_pred8x8_dc_10_mmxext;
333 h->pred8x8l[
DC_128_PRED ] = ff_pred8x8l_128_dc_10_mmxext;
335 h->pred16x16[
DC_PRED8x8 ] = ff_pred16x16_dc_10_mmxext;
339 h->pred16x16[
VERT_PRED8x8 ] = ff_pred16x16_vertical_10_mmxext;
340 h->pred16x16[
HOR_PRED8x8 ] = ff_pred16x16_horizontal_10_mmxext;
347 h->pred4x4[
HOR_DOWN_PRED ] = ff_pred4x4_horizontal_down_10_sse2;
349 if (chroma_format_idc == 1) {
350 h->pred8x8[
DC_PRED8x8 ] = ff_pred8x8_dc_10_sse2;
353 h->pred8x8[
VERT_PRED8x8 ] = ff_pred8x8_vertical_10_sse2;
354 h->pred8x8[
HOR_PRED8x8 ] = ff_pred8x8_horizontal_10_sse2;
357 h->pred8x8l[
VERT_PRED ] = ff_pred8x8l_vertical_10_sse2;
358 h->pred8x8l[
HOR_PRED ] = ff_pred8x8l_horizontal_10_sse2;
359 h->pred8x8l[
DC_PRED ] = ff_pred8x8l_dc_10_sse2;
360 h->pred8x8l[
DC_128_PRED ] = ff_pred8x8l_128_dc_10_sse2;
361 h->pred8x8l[
TOP_DC_PRED ] = ff_pred8x8l_top_dc_10_sse2;
365 h->pred8x8l[
HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_10_sse2;
367 h->pred16x16[
DC_PRED8x8 ] = ff_pred16x16_dc_10_sse2;
371 h->pred16x16[
VERT_PRED8x8 ] = ff_pred16x16_vertical_10_sse2;
372 h->pred16x16[
HOR_PRED8x8 ] = ff_pred16x16_horizontal_10_sse2;
377 h->pred4x4[
HOR_DOWN_PRED ] = ff_pred4x4_horizontal_down_10_ssse3;
379 h->pred8x8l[
HOR_PRED ] = ff_pred8x8l_horizontal_10_ssse3;
383 h->pred8x8l[
HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_10_ssse3;
390 h->pred4x4[
HOR_DOWN_PRED ] = ff_pred4x4_horizontal_down_10_avx;
392 h->pred8x8l[
VERT_PRED ] = ff_pred8x8l_vertical_10_avx;
393 h->pred8x8l[
HOR_PRED ] = ff_pred8x8l_horizontal_10_avx;
394 h->pred8x8l[
DC_PRED ] = ff_pred8x8l_dc_10_avx;
395 h->pred8x8l[
TOP_DC_PRED ] = ff_pred8x8l_top_dc_10_avx;
399 h->pred8x8l[
HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_10_avx;
#define EXTERNAL_MMX(flags)
void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, const int bit_depth, const int chroma_format_idc)
#define PRED8x8(TYPE, DEPTH, OPT)
#define AV_CPU_FLAG_CMOV
supports cmov instruction
static int sse(MpegEncContext *s, uint8_t *src1, uint8_t *src2, int w, int h, int stride)
#define EXTERNAL_SSE(flags)
Macro definitions for various function/variable attributes.
#define PRED16x16(TYPE, DEPTH, OPT)
#define TM_VP8_PRED
"True Motion", used instead of plane
#define DIAG_DOWN_LEFT_PRED
Context for storing H.264 prediction functions.
#define PRED8x8L(TYPE, DEPTH, OPT)
#define EXTERNAL_SSE2(flags)
#define PRED4x4(TYPE, DEPTH, OPT)
#define VERT_PRED
Prediction types.
#define DIAG_DOWN_RIGHT_PRED
int chroma_format_idc
chroma format from sps to detect changes
FIXME Range Coding of cr are mx and my are Motion Vector top and top right vectors is used as motion vector prediction the used motion vector is the sum of the predictor and(mvx_diff, mvy_diff)*mv_scale Intra DC Predicton block[y][x] dc[1]
#define EXTERNAL_SSSE3(flags)
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
H.264 / AVC / MPEG4 prediction functions.
#define EXTERNAL_MMXEXT(flags)
#define EXTERNAL_AVX(flags)