Mercurial > libavcodec.hg
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); |