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 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_mmx;
00192 } else if (codec_id == CODEC_ID_RV40) {
00193 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_rv40_mmx;
00194 } else {
00195 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_h264_mmx;
00196 }
00197 }
00198 }
00199
00200 if (mm_flags & AV_CPU_FLAG_MMX2) {
00201 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_mmxext;
00202 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_mmxext;
00203 if (chroma_format_idc == 1)
00204 h->pred8x8[HOR_PRED8x8 ] = ff_pred8x8_horizontal_mmxext;
00205 h->pred8x8l [TOP_DC_PRED ] = ff_pred8x8l_top_dc_mmxext;
00206 h->pred8x8l [DC_PRED ] = ff_pred8x8l_dc_mmxext;
00207 h->pred8x8l [HOR_PRED ] = ff_pred8x8l_horizontal_mmxext;
00208 h->pred8x8l [VERT_PRED ] = ff_pred8x8l_vertical_mmxext;
00209 h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_mmxext;
00210 h->pred8x8l [VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_mmxext;
00211 h->pred8x8l [HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_mmxext;
00212 h->pred8x8l [DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_mmxext;
00213 h->pred8x8l [HOR_DOWN_PRED ] = ff_pred8x8l_horizontal_down_mmxext;
00214 h->pred4x4 [DIAG_DOWN_RIGHT_PRED ] = ff_pred4x4_down_right_mmxext;
00215 h->pred4x4 [VERT_RIGHT_PRED ] = ff_pred4x4_vertical_right_mmxext;
00216 h->pred4x4 [HOR_DOWN_PRED ] = ff_pred4x4_horizontal_down_mmxext;
00217 h->pred4x4 [DC_PRED ] = ff_pred4x4_dc_mmxext;
00218 if (codec_id == CODEC_ID_VP8 || codec_id == CODEC_ID_H264) {
00219 h->pred4x4 [DIAG_DOWN_LEFT_PRED] = ff_pred4x4_down_left_mmxext;
00220 }
00221 if (codec_id == CODEC_ID_SVQ3 || codec_id == CODEC_ID_H264) {
00222 h->pred4x4 [VERT_LEFT_PRED ] = ff_pred4x4_vertical_left_mmxext;
00223 }
00224 if (codec_id != CODEC_ID_RV40) {
00225 h->pred4x4 [HOR_UP_PRED ] = ff_pred4x4_horizontal_up_mmxext;
00226 }
00227 if (codec_id == CODEC_ID_SVQ3 || codec_id == CODEC_ID_H264) {
00228 if (chroma_format_idc == 1) {
00229 h->pred8x8[TOP_DC_PRED8x8 ] = ff_pred8x8_top_dc_mmxext;
00230 h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_mmxext;
00231 }
00232 }
00233 if (codec_id == CODEC_ID_VP8) {
00234 h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_tm_vp8_mmxext;
00235 h->pred8x8 [DC_PRED8x8 ] = ff_pred8x8_dc_rv40_mmxext;
00236 h->pred8x8 [PLANE_PRED8x8 ] = ff_pred8x8_tm_vp8_mmxext;
00237 h->pred4x4 [TM_VP8_PRED ] = ff_pred4x4_tm_vp8_mmxext;
00238 h->pred4x4 [VERT_PRED ] = ff_pred4x4_vertical_vp8_mmxext;
00239 } else {
00240 if (chroma_format_idc == 1)
00241 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_plane_mmx2;
00242 if (codec_id == CODEC_ID_SVQ3) {
00243 h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_plane_svq3_mmx2;
00244 } else if (codec_id == CODEC_ID_RV40) {
00245 h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_plane_rv40_mmx2;
00246 } else {
00247 h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_plane_h264_mmx2;
00248 }
00249 }
00250 }
00251
00252 if (mm_flags & AV_CPU_FLAG_SSE) {
00253 h->pred16x16[VERT_PRED8x8] = ff_pred16x16_vertical_sse;
00254 }
00255
00256 if (mm_flags & AV_CPU_FLAG_SSE2) {
00257 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_sse2;
00258 h->pred8x8l [DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_sse2;
00259 h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_sse2;
00260 h->pred8x8l [VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_sse2;
00261 h->pred8x8l [VERT_LEFT_PRED ] = ff_pred8x8l_vertical_left_sse2;
00262 h->pred8x8l [HOR_DOWN_PRED ] = ff_pred8x8l_horizontal_down_sse2;
00263 if (codec_id == CODEC_ID_VP8) {
00264 h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_tm_vp8_sse2;
00265 h->pred8x8 [PLANE_PRED8x8 ] = ff_pred8x8_tm_vp8_sse2;
00266 } else {
00267 if (chroma_format_idc == 1)
00268 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_plane_sse2;
00269 if (codec_id == CODEC_ID_SVQ3) {
00270 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_sse2;
00271 } else if (codec_id == CODEC_ID_RV40) {
00272 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_rv40_sse2;
00273 } else {
00274 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_h264_sse2;
00275 }
00276 }
00277 }
00278
00279 if (mm_flags & AV_CPU_FLAG_SSSE3) {
00280 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_ssse3;
00281 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_ssse3;
00282 if (chroma_format_idc == 1)
00283 h->pred8x8 [HOR_PRED8x8 ] = ff_pred8x8_horizontal_ssse3;
00284 h->pred8x8l [TOP_DC_PRED ] = ff_pred8x8l_top_dc_ssse3;
00285 h->pred8x8l [DC_PRED ] = ff_pred8x8l_dc_ssse3;
00286 h->pred8x8l [HOR_PRED ] = ff_pred8x8l_horizontal_ssse3;
00287 h->pred8x8l [VERT_PRED ] = ff_pred8x8l_vertical_ssse3;
00288 h->pred8x8l [DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_ssse3;
00289 h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_ssse3;
00290 h->pred8x8l [VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_ssse3;
00291 h->pred8x8l [VERT_LEFT_PRED ] = ff_pred8x8l_vertical_left_ssse3;
00292 h->pred8x8l [HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_ssse3;
00293 h->pred8x8l [HOR_DOWN_PRED ] = ff_pred8x8l_horizontal_down_ssse3;
00294 if (codec_id == CODEC_ID_VP8) {
00295 h->pred8x8 [PLANE_PRED8x8 ] = ff_pred8x8_tm_vp8_ssse3;
00296 h->pred4x4 [TM_VP8_PRED ] = ff_pred4x4_tm_vp8_ssse3;
00297 } else {
00298 if (chroma_format_idc == 1)
00299 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_plane_ssse3;
00300 if (codec_id == CODEC_ID_SVQ3) {
00301 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_ssse3;
00302 } else if (codec_id == CODEC_ID_RV40) {
00303 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_rv40_ssse3;
00304 } else {
00305 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_h264_ssse3;
00306 }
00307 }
00308 }
00309 } else if (bit_depth == 10) {
00310 if (mm_flags & AV_CPU_FLAG_MMX2) {
00311 h->pred4x4[DC_PRED ] = ff_pred4x4_dc_10_mmxext;
00312 h->pred4x4[HOR_UP_PRED ] = ff_pred4x4_horizontal_up_10_mmxext;
00313
00314 if (chroma_format_idc == 1)
00315 h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_10_mmxext;
00316
00317 h->pred8x8l[DC_128_PRED ] = ff_pred8x8l_128_dc_10_mmxext;
00318
00319 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_10_mmxext;
00320 h->pred16x16[TOP_DC_PRED8x8 ] = ff_pred16x16_top_dc_10_mmxext;
00321 h->pred16x16[DC_128_PRED8x8 ] = ff_pred16x16_128_dc_10_mmxext;
00322 h->pred16x16[LEFT_DC_PRED8x8 ] = ff_pred16x16_left_dc_10_mmxext;
00323 h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vertical_10_mmxext;
00324 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_10_mmxext;
00325 }
00326 if (mm_flags & AV_CPU_FLAG_SSE2) {
00327 h->pred4x4[DIAG_DOWN_LEFT_PRED ] = ff_pred4x4_down_left_10_sse2;
00328 h->pred4x4[DIAG_DOWN_RIGHT_PRED] = ff_pred4x4_down_right_10_sse2;
00329 h->pred4x4[VERT_LEFT_PRED ] = ff_pred4x4_vertical_left_10_sse2;
00330 h->pred4x4[VERT_RIGHT_PRED ] = ff_pred4x4_vertical_right_10_sse2;
00331 h->pred4x4[HOR_DOWN_PRED ] = ff_pred4x4_horizontal_down_10_sse2;
00332
00333 if (chroma_format_idc == 1) {
00334 h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_10_sse2;
00335 h->pred8x8[TOP_DC_PRED8x8 ] = ff_pred8x8_top_dc_10_sse2;
00336 h->pred8x8[PLANE_PRED8x8 ] = ff_pred8x8_plane_10_sse2;
00337 h->pred8x8[VERT_PRED8x8 ] = ff_pred8x8_vertical_10_sse2;
00338 h->pred8x8[HOR_PRED8x8 ] = ff_pred8x8_horizontal_10_sse2;
00339 }
00340
00341 h->pred8x8l[VERT_PRED ] = ff_pred8x8l_vertical_10_sse2;
00342 h->pred8x8l[HOR_PRED ] = ff_pred8x8l_horizontal_10_sse2;
00343 h->pred8x8l[DC_PRED ] = ff_pred8x8l_dc_10_sse2;
00344 h->pred8x8l[DC_128_PRED ] = ff_pred8x8l_128_dc_10_sse2;
00345 h->pred8x8l[TOP_DC_PRED ] = ff_pred8x8l_top_dc_10_sse2;
00346 h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_sse2;
00347 h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_sse2;
00348 h->pred8x8l[VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_10_sse2;
00349 h->pred8x8l[HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_10_sse2;
00350
00351 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_10_sse2;
00352 h->pred16x16[TOP_DC_PRED8x8 ] = ff_pred16x16_top_dc_10_sse2;
00353 h->pred16x16[DC_128_PRED8x8 ] = ff_pred16x16_128_dc_10_sse2;
00354 h->pred16x16[LEFT_DC_PRED8x8 ] = ff_pred16x16_left_dc_10_sse2;
00355 h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vertical_10_sse2;
00356 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_10_sse2;
00357 }
00358 if (mm_flags & AV_CPU_FLAG_SSSE3) {
00359 h->pred4x4[DIAG_DOWN_RIGHT_PRED] = ff_pred4x4_down_right_10_ssse3;
00360 h->pred4x4[VERT_RIGHT_PRED ] = ff_pred4x4_vertical_right_10_ssse3;
00361 h->pred4x4[HOR_DOWN_PRED ] = ff_pred4x4_horizontal_down_10_ssse3;
00362
00363 h->pred8x8l[HOR_PRED ] = ff_pred8x8l_horizontal_10_ssse3;
00364 h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_ssse3;
00365 h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_ssse3;
00366 h->pred8x8l[VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_10_ssse3;
00367 h->pred8x8l[HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_10_ssse3;
00368 }
00369 #if HAVE_AVX
00370 if (mm_flags & AV_CPU_FLAG_AVX) {
00371 h->pred4x4[DIAG_DOWN_LEFT_PRED ] = ff_pred4x4_down_left_10_avx;
00372 h->pred4x4[DIAG_DOWN_RIGHT_PRED] = ff_pred4x4_down_right_10_avx;
00373 h->pred4x4[VERT_LEFT_PRED ] = ff_pred4x4_vertical_left_10_avx;
00374 h->pred4x4[VERT_RIGHT_PRED ] = ff_pred4x4_vertical_right_10_avx;
00375 h->pred4x4[HOR_DOWN_PRED ] = ff_pred4x4_horizontal_down_10_avx;
00376
00377 h->pred8x8l[VERT_PRED ] = ff_pred8x8l_vertical_10_avx;
00378 h->pred8x8l[HOR_PRED ] = ff_pred8x8l_horizontal_10_avx;
00379 h->pred8x8l[DC_PRED ] = ff_pred8x8l_dc_10_avx;
00380 h->pred8x8l[TOP_DC_PRED ] = ff_pred8x8l_top_dc_10_avx;
00381 h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_avx;
00382 h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_avx;
00383 h->pred8x8l[VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_10_avx;
00384 h->pred8x8l[HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_10_avx;
00385 }
00386 #endif
00387 }
00388 #endif
00389 }