comparison h264.c @ 4271:8cb3d28d7e40 libavcodec

Export symbols of several H.264 intra prediction functions
author takis
date Wed, 06 Dec 2006 08:17:43 +0000
parents 758ba4a18478
children f82a57e78220
comparison
equal deleted inserted replaced
4270:758ba4a18478 4271:8cb3d28d7e40
2266 src[3+3*stride]=(l0 + 2*l1 + l2 + 2)>>2; 2266 src[3+3*stride]=(l0 + 2*l1 + l2 + 2)>>2;
2267 src[0+3*stride]=(l2 + l3 + 1)>>1; 2267 src[0+3*stride]=(l2 + l3 + 1)>>1;
2268 src[1+3*stride]=(l1 + 2*l2 + l3 + 2)>>2; 2268 src[1+3*stride]=(l1 + 2*l2 + l3 + 2)>>2;
2269 } 2269 }
2270 2270
2271 static void pred16x16_vertical_c(uint8_t *src, int stride){ 2271 void ff_pred16x16_vertical_c(uint8_t *src, int stride){
2272 int i; 2272 int i;
2273 const uint32_t a= ((uint32_t*)(src-stride))[0]; 2273 const uint32_t a= ((uint32_t*)(src-stride))[0];
2274 const uint32_t b= ((uint32_t*)(src-stride))[1]; 2274 const uint32_t b= ((uint32_t*)(src-stride))[1];
2275 const uint32_t c= ((uint32_t*)(src-stride))[2]; 2275 const uint32_t c= ((uint32_t*)(src-stride))[2];
2276 const uint32_t d= ((uint32_t*)(src-stride))[3]; 2276 const uint32_t d= ((uint32_t*)(src-stride))[3];
2281 ((uint32_t*)(src+i*stride))[2]= c; 2281 ((uint32_t*)(src+i*stride))[2]= c;
2282 ((uint32_t*)(src+i*stride))[3]= d; 2282 ((uint32_t*)(src+i*stride))[3]= d;
2283 } 2283 }
2284 } 2284 }
2285 2285
2286 static void pred16x16_horizontal_c(uint8_t *src, int stride){ 2286 void ff_pred16x16_horizontal_c(uint8_t *src, int stride){
2287 int i; 2287 int i;
2288 2288
2289 for(i=0; i<16; i++){ 2289 for(i=0; i<16; i++){
2290 ((uint32_t*)(src+i*stride))[0]= 2290 ((uint32_t*)(src+i*stride))[0]=
2291 ((uint32_t*)(src+i*stride))[1]= 2291 ((uint32_t*)(src+i*stride))[1]=
2292 ((uint32_t*)(src+i*stride))[2]= 2292 ((uint32_t*)(src+i*stride))[2]=
2293 ((uint32_t*)(src+i*stride))[3]= src[-1+i*stride]*0x01010101; 2293 ((uint32_t*)(src+i*stride))[3]= src[-1+i*stride]*0x01010101;
2294 } 2294 }
2295 } 2295 }
2296 2296
2297 static void pred16x16_dc_c(uint8_t *src, int stride){ 2297 void ff_pred16x16_dc_c(uint8_t *src, int stride){
2298 int i, dc=0; 2298 int i, dc=0;
2299 2299
2300 for(i=0;i<16; i++){ 2300 for(i=0;i<16; i++){
2301 dc+= src[-1+i*stride]; 2301 dc+= src[-1+i*stride];
2302 } 2302 }
2346 ((uint32_t*)(src+i*stride))[2]= 2346 ((uint32_t*)(src+i*stride))[2]=
2347 ((uint32_t*)(src+i*stride))[3]= dc; 2347 ((uint32_t*)(src+i*stride))[3]= dc;
2348 } 2348 }
2349 } 2349 }
2350 2350
2351 static void pred16x16_128_dc_c(uint8_t *src, int stride){ 2351 void ff_pred16x16_128_dc_c(uint8_t *src, int stride){
2352 int i; 2352 int i;
2353 2353
2354 for(i=0; i<16; i++){ 2354 for(i=0; i<16; i++){
2355 ((uint32_t*)(src+i*stride))[0]= 2355 ((uint32_t*)(src+i*stride))[0]=
2356 ((uint32_t*)(src+i*stride))[1]= 2356 ((uint32_t*)(src+i*stride))[1]=
2397 } 2397 }
2398 src += stride; 2398 src += stride;
2399 } 2399 }
2400 } 2400 }
2401 2401
2402 static void pred16x16_plane_c(uint8_t *src, int stride){ 2402 void ff_pred16x16_plane_c(uint8_t *src, int stride){
2403 pred16x16_plane_compat_c(src, stride, 0); 2403 pred16x16_plane_compat_c(src, stride, 0);
2404 } 2404 }
2405 2405
2406 static void pred8x8_vertical_c(uint8_t *src, int stride){ 2406 void ff_pred8x8_vertical_c(uint8_t *src, int stride){
2407 int i; 2407 int i;
2408 const uint32_t a= ((uint32_t*)(src-stride))[0]; 2408 const uint32_t a= ((uint32_t*)(src-stride))[0];
2409 const uint32_t b= ((uint32_t*)(src-stride))[1]; 2409 const uint32_t b= ((uint32_t*)(src-stride))[1];
2410 2410
2411 for(i=0; i<8; i++){ 2411 for(i=0; i<8; i++){
2412 ((uint32_t*)(src+i*stride))[0]= a; 2412 ((uint32_t*)(src+i*stride))[0]= a;
2413 ((uint32_t*)(src+i*stride))[1]= b; 2413 ((uint32_t*)(src+i*stride))[1]= b;
2414 } 2414 }
2415 } 2415 }
2416 2416
2417 static void pred8x8_horizontal_c(uint8_t *src, int stride){ 2417 void ff_pred8x8_horizontal_c(uint8_t *src, int stride){
2418 int i; 2418 int i;
2419 2419
2420 for(i=0; i<8; i++){ 2420 for(i=0; i<8; i++){
2421 ((uint32_t*)(src+i*stride))[0]= 2421 ((uint32_t*)(src+i*stride))[0]=
2422 ((uint32_t*)(src+i*stride))[1]= src[-1+i*stride]*0x01010101; 2422 ((uint32_t*)(src+i*stride))[1]= src[-1+i*stride]*0x01010101;
2423 } 2423 }
2424 } 2424 }
2425 2425
2426 static void pred8x8_128_dc_c(uint8_t *src, int stride){ 2426 void ff_pred8x8_128_dc_c(uint8_t *src, int stride){
2427 int i; 2427 int i;
2428 2428
2429 for(i=0; i<8; i++){ 2429 for(i=0; i<8; i++){
2430 ((uint32_t*)(src+i*stride))[0]= 2430 ((uint32_t*)(src+i*stride))[0]=
2431 ((uint32_t*)(src+i*stride))[1]= 0x01010101U*128U; 2431 ((uint32_t*)(src+i*stride))[1]= 0x01010101U*128U;
2475 ((uint32_t*)(src+i*stride))[1]= dc1; 2475 ((uint32_t*)(src+i*stride))[1]= dc1;
2476 } 2476 }
2477 } 2477 }
2478 2478
2479 2479
2480 static void pred8x8_dc_c(uint8_t *src, int stride){ 2480 void ff_pred8x8_dc_c(uint8_t *src, int stride){
2481 int i; 2481 int i;
2482 int dc0, dc1, dc2, dc3; 2482 int dc0, dc1, dc2, dc3;
2483 2483
2484 dc0=dc1=dc2=0; 2484 dc0=dc1=dc2=0;
2485 for(i=0;i<4; i++){ 2485 for(i=0;i<4; i++){
2500 ((uint32_t*)(src+i*stride))[0]= dc2; 2500 ((uint32_t*)(src+i*stride))[0]= dc2;
2501 ((uint32_t*)(src+i*stride))[1]= dc3; 2501 ((uint32_t*)(src+i*stride))[1]= dc3;
2502 } 2502 }
2503 } 2503 }
2504 2504
2505 static void pred8x8_plane_c(uint8_t *src, int stride){ 2505 void ff_pred8x8_plane_c(uint8_t *src, int stride){
2506 int j, k; 2506 int j, k;
2507 int a; 2507 int a;
2508 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; 2508 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;
2509 const uint8_t * const src0 = src+3-stride; 2509 const uint8_t * const src0 = src+3-stride;
2510 const uint8_t *src1 = src+4*stride-1; 2510 const uint8_t *src1 = src+4*stride-1;
3129 h->pred8x8l[HOR_UP_PRED ]= pred8x8l_horizontal_up_c; 3129 h->pred8x8l[HOR_UP_PRED ]= pred8x8l_horizontal_up_c;
3130 h->pred8x8l[LEFT_DC_PRED ]= pred8x8l_left_dc_c; 3130 h->pred8x8l[LEFT_DC_PRED ]= pred8x8l_left_dc_c;
3131 h->pred8x8l[TOP_DC_PRED ]= pred8x8l_top_dc_c; 3131 h->pred8x8l[TOP_DC_PRED ]= pred8x8l_top_dc_c;
3132 h->pred8x8l[DC_128_PRED ]= pred8x8l_128_dc_c; 3132 h->pred8x8l[DC_128_PRED ]= pred8x8l_128_dc_c;
3133 3133
3134 h->pred8x8[DC_PRED8x8 ]= pred8x8_dc_c; 3134 h->pred8x8[DC_PRED8x8 ]= ff_pred8x8_dc_c;
3135 h->pred8x8[VERT_PRED8x8 ]= pred8x8_vertical_c; 3135 h->pred8x8[VERT_PRED8x8 ]= ff_pred8x8_vertical_c;
3136 h->pred8x8[HOR_PRED8x8 ]= pred8x8_horizontal_c; 3136 h->pred8x8[HOR_PRED8x8 ]= ff_pred8x8_horizontal_c;
3137 h->pred8x8[PLANE_PRED8x8 ]= pred8x8_plane_c; 3137 h->pred8x8[PLANE_PRED8x8 ]= ff_pred8x8_plane_c;
3138 h->pred8x8[LEFT_DC_PRED8x8]= pred8x8_left_dc_c; 3138 h->pred8x8[LEFT_DC_PRED8x8]= pred8x8_left_dc_c;
3139 h->pred8x8[TOP_DC_PRED8x8 ]= pred8x8_top_dc_c; 3139 h->pred8x8[TOP_DC_PRED8x8 ]= pred8x8_top_dc_c;
3140 h->pred8x8[DC_128_PRED8x8 ]= pred8x8_128_dc_c; 3140 h->pred8x8[DC_128_PRED8x8 ]= ff_pred8x8_128_dc_c;
3141 3141
3142 h->pred16x16[DC_PRED8x8 ]= pred16x16_dc_c; 3142 h->pred16x16[DC_PRED8x8 ]= ff_pred16x16_dc_c;
3143 h->pred16x16[VERT_PRED8x8 ]= pred16x16_vertical_c; 3143 h->pred16x16[VERT_PRED8x8 ]= ff_pred16x16_vertical_c;
3144 h->pred16x16[HOR_PRED8x8 ]= pred16x16_horizontal_c; 3144 h->pred16x16[HOR_PRED8x8 ]= ff_pred16x16_horizontal_c;
3145 h->pred16x16[PLANE_PRED8x8 ]= pred16x16_plane_c; 3145 h->pred16x16[PLANE_PRED8x8 ]= ff_pred16x16_plane_c;
3146 h->pred16x16[LEFT_DC_PRED8x8]= pred16x16_left_dc_c; 3146 h->pred16x16[LEFT_DC_PRED8x8]= pred16x16_left_dc_c;
3147 h->pred16x16[TOP_DC_PRED8x8 ]= pred16x16_top_dc_c; 3147 h->pred16x16[TOP_DC_PRED8x8 ]= pred16x16_top_dc_c;
3148 h->pred16x16[DC_128_PRED8x8 ]= pred16x16_128_dc_c; 3148 h->pred16x16[DC_128_PRED8x8 ]= ff_pred16x16_128_dc_c;
3149 } 3149 }
3150 3150
3151 static void free_tables(H264Context *h){ 3151 static void free_tables(H264Context *h){
3152 av_freep(&h->intra4x4_pred_mode); 3152 av_freep(&h->intra4x4_pred_mode);
3153 av_freep(&h->chroma_pred_mode_table); 3153 av_freep(&h->chroma_pred_mode_table);