annotate ffmpeg/libavcodec/x86/h264_intrapred_init.c @ 13:844d341cf643 tip

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