comparison x86/h264dsp_mmx.c @ 12438:33ecda76b2f2 libavcodec

Split intra prediction initialization (i.e. assigning of function pointers) into its own file, it doesn't belong in h264dsp_mmx.c (much less so in dsputil_mmx.c).
author rbultje
date Mon, 30 Aug 2010 16:34:13 +0000
parents b242eb86ea9a
children 3941687b4fa9
comparison
equal deleted inserted replaced
12437:b242eb86ea9a 12438:33ecda76b2f2
2215 int offset); 2215 int offset);
2216 2216
2217 void ff_h264_biweight_16x16_ssse3(uint8_t *dst, uint8_t *src, int stride, 2217 void ff_h264_biweight_16x16_ssse3(uint8_t *dst, uint8_t *src, int stride,
2218 int log2_denom, int weightd, int weights, 2218 int log2_denom, int weightd, int weights,
2219 int offset); 2219 int offset);
2220
2221 void ff_pred16x16_vertical_mmx (uint8_t *src, int stride);
2222 void ff_pred16x16_vertical_sse (uint8_t *src, int stride);
2223 void ff_pred16x16_horizontal_mmx (uint8_t *src, int stride);
2224 void ff_pred16x16_horizontal_mmxext(uint8_t *src, int stride);
2225 void ff_pred16x16_horizontal_ssse3 (uint8_t *src, int stride);
2226 void ff_pred16x16_dc_mmxext (uint8_t *src, int stride);
2227 void ff_pred16x16_dc_sse2 (uint8_t *src, int stride);
2228 void ff_pred16x16_dc_ssse3 (uint8_t *src, int stride);
2229 void ff_pred16x16_tm_vp8_mmx (uint8_t *src, int stride);
2230 void ff_pred16x16_tm_vp8_mmxext (uint8_t *src, int stride);
2231 void ff_pred16x16_tm_vp8_sse2 (uint8_t *src, int stride);
2232 void ff_pred8x8_dc_rv40_mmxext (uint8_t *src, int stride);
2233 void ff_pred8x8_vertical_mmx (uint8_t *src, int stride);
2234 void ff_pred8x8_horizontal_mmx (uint8_t *src, int stride);
2235 void ff_pred8x8_horizontal_mmxext (uint8_t *src, int stride);
2236 void ff_pred8x8_horizontal_ssse3 (uint8_t *src, int stride);
2237 void ff_pred8x8_tm_vp8_mmx (uint8_t *src, int stride);
2238 void ff_pred8x8_tm_vp8_mmxext (uint8_t *src, int stride);
2239 void ff_pred8x8_tm_vp8_sse2 (uint8_t *src, int stride);
2240 void ff_pred8x8_tm_vp8_ssse3 (uint8_t *src, int stride);
2241 void ff_pred4x4_dc_mmxext (uint8_t *src, const uint8_t *topright, int stride);
2242 void ff_pred4x4_tm_vp8_mmx (uint8_t *src, const uint8_t *topright, int stride);
2243 void ff_pred4x4_tm_vp8_mmxext (uint8_t *src, const uint8_t *topright, int stride);
2244 void ff_pred4x4_tm_vp8_ssse3 (uint8_t *src, const uint8_t *topright, int stride);
2245 void ff_pred4x4_vertical_vp8_mmxext(uint8_t *src, const uint8_t *topright, int stride);
2246
2247 #if CONFIG_H264PRED
2248 void ff_h264_pred_init_x86(H264PredContext *h, int codec_id)
2249 {
2250 int mm_flags = mm_support();
2251
2252 #if HAVE_YASM
2253 if (mm_flags & FF_MM_MMX) {
2254 h->pred16x16[VERT_PRED8x8] = ff_pred16x16_vertical_mmx;
2255 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_mmx;
2256 h->pred8x8 [VERT_PRED8x8] = ff_pred8x8_vertical_mmx;
2257 h->pred8x8 [HOR_PRED8x8 ] = ff_pred8x8_horizontal_mmx;
2258 if (codec_id == CODEC_ID_VP8) {
2259 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_tm_vp8_mmx;
2260 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_mmx;
2261 h->pred4x4 [TM_VP8_PRED ] = ff_pred4x4_tm_vp8_mmx;
2262 }
2263 }
2264
2265 if (mm_flags & FF_MM_MMX2) {
2266 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_mmxext;
2267 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_mmxext;
2268 h->pred8x8 [HOR_PRED8x8 ] = ff_pred8x8_horizontal_mmxext;
2269 h->pred4x4 [DC_PRED ] = ff_pred4x4_dc_mmxext;
2270 if (codec_id == CODEC_ID_VP8) {
2271 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_tm_vp8_mmxext;
2272 h->pred8x8 [DC_PRED8x8 ] = ff_pred8x8_dc_rv40_mmxext;
2273 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_mmxext;
2274 h->pred4x4 [TM_VP8_PRED ] = ff_pred4x4_tm_vp8_mmxext;
2275 h->pred4x4 [VERT_PRED ] = ff_pred4x4_vertical_vp8_mmxext;
2276 }
2277 }
2278
2279 if (mm_flags & FF_MM_SSE) {
2280 h->pred16x16[VERT_PRED8x8] = ff_pred16x16_vertical_sse;
2281 }
2282
2283 if (mm_flags & FF_MM_SSE2) {
2284 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_sse2;
2285 if (codec_id == CODEC_ID_VP8) {
2286 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_tm_vp8_sse2;
2287 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_sse2;
2288 }
2289 }
2290
2291 if (mm_flags & FF_MM_SSSE3) {
2292 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_ssse3;
2293 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_ssse3;
2294 h->pred8x8 [HOR_PRED8x8 ] = ff_pred8x8_horizontal_ssse3;
2295 if (codec_id == CODEC_ID_VP8) {
2296 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_ssse3;
2297 h->pred4x4 [TM_VP8_PRED ] = ff_pred4x4_tm_vp8_ssse3;
2298 }
2299 }
2300 #endif
2301 }
2302 #endif