comparison x86/h264dsp_mmx.c @ 12003:3b761226ea35 libavcodec

Add mmx/mmxext/ssse3 4x4 TM intra pred functions for vp8
author darkshikari
date Mon, 28 Jun 2010 23:53:07 +0000
parents 953a0949c789
children 2002ea7c06f6
comparison
equal deleted inserted replaced
12002:9c8584f68754 12003:3b761226ea35
2343 void ff_pred8x8_tm_vp8_mmx (uint8_t *src, int stride); 2343 void ff_pred8x8_tm_vp8_mmx (uint8_t *src, int stride);
2344 void ff_pred8x8_tm_vp8_mmxext (uint8_t *src, int stride); 2344 void ff_pred8x8_tm_vp8_mmxext (uint8_t *src, int stride);
2345 void ff_pred8x8_tm_vp8_sse2 (uint8_t *src, int stride); 2345 void ff_pred8x8_tm_vp8_sse2 (uint8_t *src, int stride);
2346 void ff_pred8x8_tm_vp8_ssse3 (uint8_t *src, int stride); 2346 void ff_pred8x8_tm_vp8_ssse3 (uint8_t *src, int stride);
2347 void ff_pred4x4_dc_mmxext (uint8_t *src, const uint8_t *topright, int stride); 2347 void ff_pred4x4_dc_mmxext (uint8_t *src, const uint8_t *topright, int stride);
2348 void ff_pred4x4_tm_vp8_mmx (uint8_t *src, const uint8_t *topright, int stride);
2349 void ff_pred4x4_tm_vp8_mmxext (uint8_t *src, const uint8_t *topright, int stride);
2350 void ff_pred4x4_tm_vp8_ssse3 (uint8_t *src, const uint8_t *topright, int stride);
2348 2351
2349 #if CONFIG_H264DSP 2352 #if CONFIG_H264DSP
2350 void ff_h264_pred_init_x86(H264PredContext *h, int codec_id) 2353 void ff_h264_pred_init_x86(H264PredContext *h, int codec_id)
2351 { 2354 {
2352 #if HAVE_YASM 2355 #if HAVE_YASM
2356 h->pred8x8 [VERT_PRED8x8] = ff_pred8x8_vertical_mmx; 2359 h->pred8x8 [VERT_PRED8x8] = ff_pred8x8_vertical_mmx;
2357 h->pred8x8 [HOR_PRED8x8 ] = ff_pred8x8_horizontal_mmx; 2360 h->pred8x8 [HOR_PRED8x8 ] = ff_pred8x8_horizontal_mmx;
2358 if (codec_id == CODEC_ID_VP8) { 2361 if (codec_id == CODEC_ID_VP8) {
2359 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_tm_vp8_mmx; 2362 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_tm_vp8_mmx;
2360 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_mmx; 2363 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_mmx;
2364 h->pred4x4 [TM_VP8_PRED ] = ff_pred4x4_tm_vp8_mmx;
2361 } 2365 }
2362 } 2366 }
2363 2367
2364 if (mm_flags & FF_MM_MMX2) { 2368 if (mm_flags & FF_MM_MMX2) {
2365 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_mmxext; 2369 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_mmxext;
2368 h->pred4x4 [DC_PRED ] = ff_pred4x4_dc_mmxext; 2372 h->pred4x4 [DC_PRED ] = ff_pred4x4_dc_mmxext;
2369 if (codec_id == CODEC_ID_VP8) { 2373 if (codec_id == CODEC_ID_VP8) {
2370 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_tm_vp8_mmxext; 2374 h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_tm_vp8_mmxext;
2371 h->pred8x8 [DC_PRED8x8 ] = ff_pred8x8_dc_rv40_mmxext; 2375 h->pred8x8 [DC_PRED8x8 ] = ff_pred8x8_dc_rv40_mmxext;
2372 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_mmxext; 2376 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_mmxext;
2377 h->pred4x4 [TM_VP8_PRED ] = ff_pred4x4_tm_vp8_mmxext;
2373 } 2378 }
2374 } 2379 }
2375 2380
2376 if (mm_flags & FF_MM_SSE) { 2381 if (mm_flags & FF_MM_SSE) {
2377 h->pred16x16[VERT_PRED8x8] = ff_pred16x16_vertical_sse; 2382 h->pred16x16[VERT_PRED8x8] = ff_pred16x16_vertical_sse;
2390 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_ssse3; 2395 h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_ssse3;
2391 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_ssse3; 2396 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_ssse3;
2392 h->pred8x8 [HOR_PRED8x8 ] = ff_pred8x8_horizontal_ssse3; 2397 h->pred8x8 [HOR_PRED8x8 ] = ff_pred8x8_horizontal_ssse3;
2393 if (codec_id == CODEC_ID_VP8) { 2398 if (codec_id == CODEC_ID_VP8) {
2394 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_ssse3; 2399 h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_ssse3;
2400 h->pred4x4 [TM_VP8_PRED ] = ff_pred4x4_tm_vp8_ssse3;
2395 } 2401 }
2396 } 2402 }
2397 #endif 2403 #endif
2398 } 2404 }
2399 #endif 2405 #endif