00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "libavutil/cpu.h"
00022 #include "libavcodec/h264pred.h"
00023
00024 #define PRED4x4(TYPE, DEPTH, OPT) \
00025 void ff_pred4x4_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, const uint8_t *topright, int stride);
00026
00027 PRED4x4(dc, 10, mmxext)
00028 PRED4x4(down_left, 10, sse2)
00029 PRED4x4(down_left, 10, avx)
00030 PRED4x4(down_right, 10, sse2)
00031 PRED4x4(down_right, 10, ssse3)
00032 PRED4x4(down_right, 10, avx)
00033 PRED4x4(vertical_left, 10, sse2)
00034 PRED4x4(vertical_left, 10, avx)
00035 PRED4x4(vertical_right, 10, sse2)
00036 PRED4x4(vertical_right, 10, ssse3)
00037 PRED4x4(vertical_right, 10, avx)
00038 PRED4x4(horizontal_up, 10, mmxext)
00039 PRED4x4(horizontal_down, 10, sse2)
00040 PRED4x4(horizontal_down, 10, ssse3)
00041 PRED4x4(horizontal_down, 10, avx)
00042
00043 #define PRED8x8(TYPE, DEPTH, OPT) \
00044 void ff_pred8x8_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, int stride);
00045
00046 PRED8x8(dc, 10, mmxext)
00047 PRED8x8(dc, 10, sse2)
00048 PRED8x8(top_dc, 10, sse2)
00049 PRED8x8(plane, 10, sse2)
00050 PRED8x8(vertical, 10, sse2)
00051 PRED8x8(horizontal, 10, sse2)
00052
00053 #define PRED8x8L(TYPE, DEPTH, OPT)\
00054 void ff_pred8x8l_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, int has_topleft, int has_topright, int stride);
00055
00056 PRED8x8L(dc, 10, sse2)
00057 PRED8x8L(dc, 10, avx)
00058 PRED8x8L(128_dc, 10, mmxext)
00059 PRED8x8L(128_dc, 10, sse2)
00060 PRED8x8L(top_dc, 10, sse2)
00061 PRED8x8L(top_dc, 10, avx)
00062 PRED8x8L(vertical, 10, sse2)
00063 PRED8x8L(vertical, 10, avx)
00064 PRED8x8L(horizontal, 10, sse2)
00065 PRED8x8L(horizontal, 10, ssse3)
00066 PRED8x8L(horizontal, 10, avx)
00067 PRED8x8L(down_left, 10, sse2)
00068 PRED8x8L(down_left, 10, ssse3)
00069 PRED8x8L(down_left, 10, avx)
00070 PRED8x8L(down_right, 10, sse2)
00071 PRED8x8L(down_right, 10, ssse3)
00072 PRED8x8L(down_right, 10, avx)
00073 PRED8x8L(vertical_right, 10, sse2)
00074 PRED8x8L(vertical_right, 10, ssse3)
00075 PRED8x8L(vertical_right, 10, avx)
00076 PRED8x8L(horizontal_up, 10, sse2)
00077 PRED8x8L(horizontal_up, 10, ssse3)
00078 PRED8x8L(horizontal_up, 10, avx)
00079
00080 #define PRED16x16(TYPE, DEPTH, OPT)\
00081 void ff_pred16x16_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, int stride);
00082
00083 PRED16x16(dc, 10, mmxext)
00084 PRED16x16(dc, 10, sse2)
00085 PRED16x16(top_dc, 10, mmxext)
00086 PRED16x16(top_dc, 10, sse2)
00087 PRED16x16(128_dc, 10, mmxext)
00088 PRED16x16(128_dc, 10, sse2)
00089 PRED16x16(left_dc, 10, mmxext)
00090 PRED16x16(left_dc, 10, sse2)
00091 PRED16x16(vertical, 10, mmxext)
00092 PRED16x16(vertical, 10, sse2)
00093 PRED16x16(horizontal, 10, mmxext)
00094 PRED16x16(horizontal, 10, sse2)
00095
00096 void ff_pred16x16_vertical_mmx (uint8_t *src, int stride);
00097 void ff_pred16x16_vertical_sse (uint8_t *src, int stride);
00098 void ff_pred16x16_horizontal_mmx (uint8_t *src, int stride);
00099 void ff_pred16x16_horizontal_mmxext(uint8_t *src, int stride);
00100 void ff_pred16x16_horizontal_ssse3 (uint8_t *src, int stride);
00101 void ff_pred16x16_dc_mmxext (uint8_t *src, int stride);
00102 void ff_pred16x16_dc_sse2 (uint8_t *src, int stride);
00103 void ff_pred16x16_dc_ssse3 (uint8_t *src, int stride);
00104 void ff_pred16x16_plane_h264_mmx (uint8_t *src, int stride);
00105 void ff_pred16x16_plane_h264_mmx2 (uint8_t *src, int stride);
00106 void ff_pred16x16_plane_h264_sse2 (uint8_t *src, int stride);
00107 void ff_pred16x16_plane_h264_ssse3 (uint8_t *src, int stride);
00108 void ff_pred16x16_plane_rv40_mmx (uint8_t *src, int stride);
00109 void ff_pred16x16_plane_rv40_mmx2 (uint8_t *src, int stride);
00110 void ff_pred16x16_plane_rv40_sse2 (uint8_t *src, int stride);
00111 void ff_pred16x16_plane_rv40_ssse3 (uint8_t *src, int stride);
00112 void ff_pred16x16_plane_svq3_mmx (uint8_t *src, int stride);
00113 void ff_pred16x16_plane_svq3_mmx2 (uint8_t *src, int stride);
00114 void ff_pred16x16_plane_svq3_sse2 (uint8_t *src, int stride);
00115 void ff_pred16x16_plane_svq3_ssse3 (uint8_t *src, int stride);
00116 void ff_pred16x16_tm_vp8_mmx (uint8_t *src, int stride);
00117 void ff_pred16x16_tm_vp8_mmxext (uint8_t *src, int stride);
00118 void ff_pred16x16_tm_vp8_sse2 (uint8_t *src, int stride);
00119 void ff_pred8x8_top_dc_mmxext (uint8_t *src, int stride);
00120 void ff_pred8x8_dc_rv40_mmxext (uint8_t *src, int stride);
00121 void ff_pred8x8_dc_mmxext (uint8_t *src, int stride);
00122 void ff_pred8x8_vertical_mmx (uint8_t *src, int stride);
00123 void ff_pred8x8_horizontal_mmx (uint8_t *src, int stride);
00124 void ff_pred8x8_horizontal_mmxext (uint8_t *src, int stride);
00125 void ff_pred8x8_horizontal_ssse3 (uint8_t *src, int stride);
00126 void ff_pred8x8_plane_mmx (uint8_t *src, int stride);
00127 void ff_pred8x8_plane_mmx2 (uint8_t *src, int stride);
00128 void ff_pred8x8_plane_sse2 (uint8_t *src, int stride);
00129 void ff_pred8x8_plane_ssse3 (uint8_t *src, int stride);
00130 void ff_pred8x8_tm_vp8_mmx (uint8_t *src, int stride);
00131 void ff_pred8x8_tm_vp8_mmxext (uint8_t *src, int stride);
00132 void ff_pred8x8_tm_vp8_sse2 (uint8_t *src, int stride);
00133 void ff_pred8x8_tm_vp8_ssse3 (uint8_t *src, int stride);
00134 void ff_pred8x8l_top_dc_mmxext (uint8_t *src, int has_topleft, int has_topright, int stride);
00135 void ff_pred8x8l_top_dc_ssse3 (uint8_t *src, int has_topleft, int has_topright, int stride);
00136 void ff_pred8x8l_dc_mmxext (uint8_t *src, int has_topleft, int has_topright, int stride);
00137 void ff_pred8x8l_dc_ssse3 (uint8_t *src, int has_topleft, int has_topright, int stride);
00138 void ff_pred8x8l_horizontal_mmxext (uint8_t *src, int has_topleft, int has_topright, int stride);
00139 void ff_pred8x8l_horizontal_ssse3 (uint8_t *src, int has_topleft, int has_topright, int stride);
00140 void ff_pred8x8l_vertical_mmxext (uint8_t *src, int has_topleft, int has_topright, int stride);
00141 void ff_pred8x8l_vertical_ssse3 (uint8_t *src, int has_topleft, int has_topright, int stride);
00142 void ff_pred8x8l_down_left_mmxext (uint8_t *src, int has_topleft, int has_topright, int stride);
00143 void ff_pred8x8l_down_left_sse2 (uint8_t *src, int has_topleft, int has_topright, int stride);
00144 void ff_pred8x8l_down_left_ssse3 (uint8_t *src, int has_topleft, int has_topright, int stride);
00145 void ff_pred8x8l_down_right_mmxext (uint8_t *src, int has_topleft, int has_topright, int stride);
00146 void ff_pred8x8l_down_right_sse2 (uint8_t *src, int has_topleft, int has_topright, int stride);
00147 void ff_pred8x8l_down_right_ssse3 (uint8_t *src, int has_topleft, int has_topright, int stride);
00148 void ff_pred8x8l_vertical_right_mmxext(uint8_t *src, int has_topleft, int has_topright, int stride);
00149 void ff_pred8x8l_vertical_right_sse2(uint8_t *src, int has_topleft, int has_topright, int stride);
00150 void ff_pred8x8l_vertical_right_ssse3(uint8_t *src, int has_topleft, int has_topright, int stride);
00151 void ff_pred8x8l_vertical_left_sse2(uint8_t *src, int has_topleft, int has_topright, int stride);
00152 void ff_pred8x8l_vertical_left_ssse3(uint8_t *src, int has_topleft, int has_topright, int stride);
00153 void ff_pred8x8l_horizontal_up_mmxext(uint8_t *src, int has_topleft, int has_topright, int stride);
00154 void ff_pred8x8l_horizontal_up_ssse3(uint8_t *src, int has_topleft, int has_topright, int stride);
00155 void ff_pred8x8l_horizontal_down_mmxext(uint8_t *src, int has_topleft, int has_topright, int stride);
00156 void ff_pred8x8l_horizontal_down_sse2(uint8_t *src, int has_topleft, int has_topright, int stride);
00157 void ff_pred8x8l_horizontal_down_ssse3(uint8_t *src, int has_topleft, int has_topright, int stride);
00158 void ff_pred4x4_dc_mmxext (uint8_t *src, const uint8_t *topright, int stride);
00159 void ff_pred4x4_down_left_mmxext (uint8_t *src, const uint8_t *topright, int stride);
00160 void ff_pred4x4_down_right_mmxext (uint8_t *src, const uint8_t *topright, int stride);
00161 void ff_pred4x4_vertical_left_mmxext(uint8_t *src, const uint8_t *topright, int stride);
00162 void ff_pred4x4_vertical_right_mmxext(uint8_t *src, const uint8_t *topright, int stride);
00163 void ff_pred4x4_horizontal_up_mmxext(uint8_t *src, const uint8_t *topright, int stride);
00164 void ff_pred4x4_horizontal_down_mmxext(uint8_t *src, const uint8_t *topright, int stride);
00165 void ff_pred4x4_tm_vp8_mmx (uint8_t *src, const uint8_t *topright, int stride);
00166 void ff_pred4x4_tm_vp8_mmxext (uint8_t *src, const uint8_t *topright, int stride);
00167 void ff_pred4x4_tm_vp8_ssse3 (uint8_t *src, const uint8_t *topright, int stride);
00168 void ff_pred4x4_vertical_vp8_mmxext(uint8_t *src, const uint8_t *topright, int stride);
00169
00170 void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, const int bit_depth, const int chroma_format_idc)
00171 {
00172 #if HAVE_YASM
00173 int mm_flags = av_get_cpu_flags();
00174
00175 if (bit_depth == 8) {
00176 if (mm_flags & AV_CPU_FLAG_MMX) {
00177 h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vertical_mmx;
00178 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_mmx;
00179 if (chroma_format_idc == 1) {
00180 h->pred8x8 [VERT_PRED8x8 ] = ff_pred8x8_vertical_mmx;
00181 h->pred8x8 [HOR_PRED8x8 ] = ff_pred8x8_horizontal_mmx;
00182 }
00183 if (codec_id == CODEC_ID_VP8) {
00184 h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_tm_vp8_mmx;
00185 h->pred8x8 [PLANE_PRED8x8 ] = ff_pred8x8_tm_vp8_mmx;
00186 h->pred4x4 [TM_VP8_PRED ] = ff_pred4x4_tm_vp8_mmx;
00187 } else {
00188 if (chroma_format_idc == 1)
00189 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_plane_mmx;
00190 if (codec_id == CODEC_ID_SVQ3) {
00191 if (mm_flags & AV_CPU_FLAG_CMOV)
00192 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_mmx;
00193 } else if (codec_id == CODEC_ID_RV40) {
00194 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_rv40_mmx;
00195 } else {
00196 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_h264_mmx;
00197 }
00198 }
00199 }
00200
00201 if (mm_flags & AV_CPU_FLAG_MMX2) {
00202 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_mmxext;
00203 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_mmxext;
00204 if (chroma_format_idc == 1)
00205 h->pred8x8[HOR_PRED8x8 ] = ff_pred8x8_horizontal_mmxext;
00206 h->pred8x8l [TOP_DC_PRED ] = ff_pred8x8l_top_dc_mmxext;
00207 h->pred8x8l [DC_PRED ] = ff_pred8x8l_dc_mmxext;
00208 h->pred8x8l [HOR_PRED ] = ff_pred8x8l_horizontal_mmxext;
00209 h->pred8x8l [VERT_PRED ] = ff_pred8x8l_vertical_mmxext;
00210 h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_mmxext;
00211 h->pred8x8l [VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_mmxext;
00212 h->pred8x8l [HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_mmxext;
00213 h->pred8x8l [DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_mmxext;
00214 h->pred8x8l [HOR_DOWN_PRED ] = ff_pred8x8l_horizontal_down_mmxext;
00215 h->pred4x4 [DIAG_DOWN_RIGHT_PRED ] = ff_pred4x4_down_right_mmxext;
00216 h->pred4x4 [VERT_RIGHT_PRED ] = ff_pred4x4_vertical_right_mmxext;
00217 h->pred4x4 [HOR_DOWN_PRED ] = ff_pred4x4_horizontal_down_mmxext;
00218 h->pred4x4 [DC_PRED ] = ff_pred4x4_dc_mmxext;
00219 if (codec_id == CODEC_ID_VP8 || codec_id == CODEC_ID_H264) {
00220 h->pred4x4 [DIAG_DOWN_LEFT_PRED] = ff_pred4x4_down_left_mmxext;
00221 }
00222 if (codec_id == CODEC_ID_SVQ3 || codec_id == CODEC_ID_H264) {
00223 h->pred4x4 [VERT_LEFT_PRED ] = ff_pred4x4_vertical_left_mmxext;
00224 }
00225 if (codec_id != CODEC_ID_RV40) {
00226 h->pred4x4 [HOR_UP_PRED ] = ff_pred4x4_horizontal_up_mmxext;
00227 }
00228 if (codec_id == CODEC_ID_SVQ3 || codec_id == CODEC_ID_H264) {
00229 if (chroma_format_idc == 1) {
00230 h->pred8x8[TOP_DC_PRED8x8 ] = ff_pred8x8_top_dc_mmxext;
00231 h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_mmxext;
00232 }
00233 }
00234 if (codec_id == CODEC_ID_VP8) {
00235 h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_tm_vp8_mmxext;
00236 h->pred8x8 [DC_PRED8x8 ] = ff_pred8x8_dc_rv40_mmxext;
00237 h->pred8x8 [PLANE_PRED8x8 ] = ff_pred8x8_tm_vp8_mmxext;
00238 h->pred4x4 [TM_VP8_PRED ] = ff_pred4x4_tm_vp8_mmxext;
00239 h->pred4x4 [VERT_PRED ] = ff_pred4x4_vertical_vp8_mmxext;
00240 } else {
00241 if (chroma_format_idc == 1)
00242 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_plane_mmx2;
00243 if (codec_id == CODEC_ID_SVQ3) {
00244 h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_plane_svq3_mmx2;
00245 } else if (codec_id == CODEC_ID_RV40) {
00246 h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_plane_rv40_mmx2;
00247 } else {
00248 h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_plane_h264_mmx2;
00249 }
00250 }
00251 }
00252
00253 if (mm_flags & AV_CPU_FLAG_SSE) {
00254 h->pred16x16[VERT_PRED8x8] = ff_pred16x16_vertical_sse;
00255 }
00256
00257 if (mm_flags & AV_CPU_FLAG_SSE2) {
00258 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_sse2;
00259 h->pred8x8l [DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_sse2;
00260 h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_sse2;
00261 h->pred8x8l [VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_sse2;
00262 h->pred8x8l [VERT_LEFT_PRED ] = ff_pred8x8l_vertical_left_sse2;
00263 h->pred8x8l [HOR_DOWN_PRED ] = ff_pred8x8l_horizontal_down_sse2;
00264 if (codec_id == CODEC_ID_VP8) {
00265 h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_tm_vp8_sse2;
00266 h->pred8x8 [PLANE_PRED8x8 ] = ff_pred8x8_tm_vp8_sse2;
00267 } else {
00268 if (chroma_format_idc == 1)
00269 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_plane_sse2;
00270 if (codec_id == CODEC_ID_SVQ3) {
00271 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_sse2;
00272 } else if (codec_id == CODEC_ID_RV40) {
00273 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_rv40_sse2;
00274 } else {
00275 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_h264_sse2;
00276 }
00277 }
00278 }
00279
00280 if (mm_flags & AV_CPU_FLAG_SSSE3) {
00281 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_ssse3;
00282 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_ssse3;
00283 if (chroma_format_idc == 1)
00284 h->pred8x8 [HOR_PRED8x8 ] = ff_pred8x8_horizontal_ssse3;
00285 h->pred8x8l [TOP_DC_PRED ] = ff_pred8x8l_top_dc_ssse3;
00286 h->pred8x8l [DC_PRED ] = ff_pred8x8l_dc_ssse3;
00287 h->pred8x8l [HOR_PRED ] = ff_pred8x8l_horizontal_ssse3;
00288 h->pred8x8l [VERT_PRED ] = ff_pred8x8l_vertical_ssse3;
00289 h->pred8x8l [DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_ssse3;
00290 h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_ssse3;
00291 h->pred8x8l [VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_ssse3;
00292 h->pred8x8l [VERT_LEFT_PRED ] = ff_pred8x8l_vertical_left_ssse3;
00293 h->pred8x8l [HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_ssse3;
00294 h->pred8x8l [HOR_DOWN_PRED ] = ff_pred8x8l_horizontal_down_ssse3;
00295 if (codec_id == CODEC_ID_VP8) {
00296 h->pred8x8 [PLANE_PRED8x8 ] = ff_pred8x8_tm_vp8_ssse3;
00297 h->pred4x4 [TM_VP8_PRED ] = ff_pred4x4_tm_vp8_ssse3;
00298 } else {
00299 if (chroma_format_idc == 1)
00300 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_plane_ssse3;
00301 if (codec_id == CODEC_ID_SVQ3) {
00302 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_ssse3;
00303 } else if (codec_id == CODEC_ID_RV40) {
00304 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_rv40_ssse3;
00305 } else {
00306 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_h264_ssse3;
00307 }
00308 }
00309 }
00310 } else if (bit_depth == 10) {
00311 if (mm_flags & AV_CPU_FLAG_MMX2) {
00312 h->pred4x4[DC_PRED ] = ff_pred4x4_dc_10_mmxext;
00313 h->pred4x4[HOR_UP_PRED ] = ff_pred4x4_horizontal_up_10_mmxext;
00314
00315 if (chroma_format_idc == 1)
00316 h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_10_mmxext;
00317
00318 h->pred8x8l[DC_128_PRED ] = ff_pred8x8l_128_dc_10_mmxext;
00319
00320 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_10_mmxext;
00321 h->pred16x16[TOP_DC_PRED8x8 ] = ff_pred16x16_top_dc_10_mmxext;
00322 h->pred16x16[DC_128_PRED8x8 ] = ff_pred16x16_128_dc_10_mmxext;
00323 h->pred16x16[LEFT_DC_PRED8x8 ] = ff_pred16x16_left_dc_10_mmxext;
00324 h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vertical_10_mmxext;
00325 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_10_mmxext;
00326 }
00327 if (mm_flags & AV_CPU_FLAG_SSE2) {
00328 h->pred4x4[DIAG_DOWN_LEFT_PRED ] = ff_pred4x4_down_left_10_sse2;
00329 h->pred4x4[DIAG_DOWN_RIGHT_PRED] = ff_pred4x4_down_right_10_sse2;
00330 h->pred4x4[VERT_LEFT_PRED ] = ff_pred4x4_vertical_left_10_sse2;
00331 h->pred4x4[VERT_RIGHT_PRED ] = ff_pred4x4_vertical_right_10_sse2;
00332 h->pred4x4[HOR_DOWN_PRED ] = ff_pred4x4_horizontal_down_10_sse2;
00333
00334 if (chroma_format_idc == 1) {
00335 h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_10_sse2;
00336 h->pred8x8[TOP_DC_PRED8x8 ] = ff_pred8x8_top_dc_10_sse2;
00337 h->pred8x8[PLANE_PRED8x8 ] = ff_pred8x8_plane_10_sse2;
00338 h->pred8x8[VERT_PRED8x8 ] = ff_pred8x8_vertical_10_sse2;
00339 h->pred8x8[HOR_PRED8x8 ] = ff_pred8x8_horizontal_10_sse2;
00340 }
00341
00342 h->pred8x8l[VERT_PRED ] = ff_pred8x8l_vertical_10_sse2;
00343 h->pred8x8l[HOR_PRED ] = ff_pred8x8l_horizontal_10_sse2;
00344 h->pred8x8l[DC_PRED ] = ff_pred8x8l_dc_10_sse2;
00345 h->pred8x8l[DC_128_PRED ] = ff_pred8x8l_128_dc_10_sse2;
00346 h->pred8x8l[TOP_DC_PRED ] = ff_pred8x8l_top_dc_10_sse2;
00347 h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_sse2;
00348 h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_sse2;
00349 h->pred8x8l[VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_10_sse2;
00350 h->pred8x8l[HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_10_sse2;
00351
00352 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_10_sse2;
00353 h->pred16x16[TOP_DC_PRED8x8 ] = ff_pred16x16_top_dc_10_sse2;
00354 h->pred16x16[DC_128_PRED8x8 ] = ff_pred16x16_128_dc_10_sse2;
00355 h->pred16x16[LEFT_DC_PRED8x8 ] = ff_pred16x16_left_dc_10_sse2;
00356 h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vertical_10_sse2;
00357 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_10_sse2;
00358 }
00359 if (mm_flags & AV_CPU_FLAG_SSSE3) {
00360 h->pred4x4[DIAG_DOWN_RIGHT_PRED] = ff_pred4x4_down_right_10_ssse3;
00361 h->pred4x4[VERT_RIGHT_PRED ] = ff_pred4x4_vertical_right_10_ssse3;
00362 h->pred4x4[HOR_DOWN_PRED ] = ff_pred4x4_horizontal_down_10_ssse3;
00363
00364 h->pred8x8l[HOR_PRED ] = ff_pred8x8l_horizontal_10_ssse3;
00365 h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_ssse3;
00366 h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_ssse3;
00367 h->pred8x8l[VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_10_ssse3;
00368 h->pred8x8l[HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_10_ssse3;
00369 }
00370 #if HAVE_AVX
00371 if (mm_flags & AV_CPU_FLAG_AVX) {
00372 h->pred4x4[DIAG_DOWN_LEFT_PRED ] = ff_pred4x4_down_left_10_avx;
00373 h->pred4x4[DIAG_DOWN_RIGHT_PRED] = ff_pred4x4_down_right_10_avx;
00374 h->pred4x4[VERT_LEFT_PRED ] = ff_pred4x4_vertical_left_10_avx;
00375 h->pred4x4[VERT_RIGHT_PRED ] = ff_pred4x4_vertical_right_10_avx;
00376 h->pred4x4[HOR_DOWN_PRED ] = ff_pred4x4_horizontal_down_10_avx;
00377
00378 h->pred8x8l[VERT_PRED ] = ff_pred8x8l_vertical_10_avx;
00379 h->pred8x8l[HOR_PRED ] = ff_pred8x8l_horizontal_10_avx;
00380 h->pred8x8l[DC_PRED ] = ff_pred8x8l_dc_10_avx;
00381 h->pred8x8l[TOP_DC_PRED ] = ff_pred8x8l_top_dc_10_avx;
00382 h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_avx;
00383 h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_avx;
00384 h->pred8x8l[VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_10_avx;
00385 h->pred8x8l[HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_10_avx;
00386 }
00387 #endif
00388 }
00389 #endif
00390 }