• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • Examples
  • File List
  • Globals

libavcodec/x86/h264_intrapred_init.c

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2010 Jason Garrett-Glaser
00003  *
00004  * This file is part of Libav.
00005  *
00006  * Libav is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU Lesser General Public
00008  * License as published by the Free Software Foundation; either
00009  * version 2.1 of the License, or (at your option) any later version.
00010  *
00011  * Libav is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  * Lesser General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU Lesser General Public
00017  * License along with Libav; if not, write to the Free Software
00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
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 /* HAVE_AVX */
00387     }
00388 #endif /* HAVE_YASM */
00389 }
Generated on Thu Jan 24 2013 17:08:54 for Libav by doxygen 1.7.1