comparison h264.c @ 5066:27afc3835257 libavcodec

Export the four remaining H.264 decoder intra prediction functions for reuse in the H.264 encoder. These functions are: pred8x8_left_dc_c, pred8x8_top_dc_c, pred16x16_left_dc_c and pred16x16_top_dc_c.
author takis
date Wed, 23 May 2007 13:46:11 +0000
parents ed6b3efebf1e
children 4ff805f87391
comparison
equal deleted inserted replaced
5065:d0f834073f6b 5066:27afc3835257
1930 ((uint32_t*)(src+i*stride))[2]= 1930 ((uint32_t*)(src+i*stride))[2]=
1931 ((uint32_t*)(src+i*stride))[3]= dc; 1931 ((uint32_t*)(src+i*stride))[3]= dc;
1932 } 1932 }
1933 } 1933 }
1934 1934
1935 static void pred16x16_left_dc_c(uint8_t *src, int stride){ 1935 void ff_pred16x16_left_dc_c(uint8_t *src, int stride){
1936 int i, dc=0; 1936 int i, dc=0;
1937 1937
1938 for(i=0;i<16; i++){ 1938 for(i=0;i<16; i++){
1939 dc+= src[-1+i*stride]; 1939 dc+= src[-1+i*stride];
1940 } 1940 }
1947 ((uint32_t*)(src+i*stride))[2]= 1947 ((uint32_t*)(src+i*stride))[2]=
1948 ((uint32_t*)(src+i*stride))[3]= dc; 1948 ((uint32_t*)(src+i*stride))[3]= dc;
1949 } 1949 }
1950 } 1950 }
1951 1951
1952 static void pred16x16_top_dc_c(uint8_t *src, int stride){ 1952 void ff_pred16x16_top_dc_c(uint8_t *src, int stride){
1953 int i, dc=0; 1953 int i, dc=0;
1954 1954
1955 for(i=0;i<16; i++){ 1955 for(i=0;i<16; i++){
1956 dc+= src[i-stride]; 1956 dc+= src[i-stride];
1957 } 1957 }
2047 ((uint32_t*)(src+i*stride))[0]= 2047 ((uint32_t*)(src+i*stride))[0]=
2048 ((uint32_t*)(src+i*stride))[1]= 0x01010101U*128U; 2048 ((uint32_t*)(src+i*stride))[1]= 0x01010101U*128U;
2049 } 2049 }
2050 } 2050 }
2051 2051
2052 static void pred8x8_left_dc_c(uint8_t *src, int stride){ 2052 void ff_pred8x8_left_dc_c(uint8_t *src, int stride){
2053 int i; 2053 int i;
2054 int dc0, dc2; 2054 int dc0, dc2;
2055 2055
2056 dc0=dc2=0; 2056 dc0=dc2=0;
2057 for(i=0;i<4; i++){ 2057 for(i=0;i<4; i++){
2069 ((uint32_t*)(src+i*stride))[0]= 2069 ((uint32_t*)(src+i*stride))[0]=
2070 ((uint32_t*)(src+i*stride))[1]= dc2; 2070 ((uint32_t*)(src+i*stride))[1]= dc2;
2071 } 2071 }
2072 } 2072 }
2073 2073
2074 static void pred8x8_top_dc_c(uint8_t *src, int stride){ 2074 void ff_pred8x8_top_dc_c(uint8_t *src, int stride){
2075 int i; 2075 int i;
2076 int dc0, dc1; 2076 int dc0, dc1;
2077 2077
2078 dc0=dc1=0; 2078 dc0=dc1=0;
2079 for(i=0;i<4; i++){ 2079 for(i=0;i<4; i++){
2750 2750
2751 h->pred8x8[DC_PRED8x8 ]= ff_pred8x8_dc_c; 2751 h->pred8x8[DC_PRED8x8 ]= ff_pred8x8_dc_c;
2752 h->pred8x8[VERT_PRED8x8 ]= ff_pred8x8_vertical_c; 2752 h->pred8x8[VERT_PRED8x8 ]= ff_pred8x8_vertical_c;
2753 h->pred8x8[HOR_PRED8x8 ]= ff_pred8x8_horizontal_c; 2753 h->pred8x8[HOR_PRED8x8 ]= ff_pred8x8_horizontal_c;
2754 h->pred8x8[PLANE_PRED8x8 ]= ff_pred8x8_plane_c; 2754 h->pred8x8[PLANE_PRED8x8 ]= ff_pred8x8_plane_c;
2755 h->pred8x8[LEFT_DC_PRED8x8]= pred8x8_left_dc_c; 2755 h->pred8x8[LEFT_DC_PRED8x8]= ff_pred8x8_left_dc_c;
2756 h->pred8x8[TOP_DC_PRED8x8 ]= pred8x8_top_dc_c; 2756 h->pred8x8[TOP_DC_PRED8x8 ]= ff_pred8x8_top_dc_c;
2757 h->pred8x8[DC_128_PRED8x8 ]= ff_pred8x8_128_dc_c; 2757 h->pred8x8[DC_128_PRED8x8 ]= ff_pred8x8_128_dc_c;
2758 2758
2759 h->pred16x16[DC_PRED8x8 ]= ff_pred16x16_dc_c; 2759 h->pred16x16[DC_PRED8x8 ]= ff_pred16x16_dc_c;
2760 h->pred16x16[VERT_PRED8x8 ]= ff_pred16x16_vertical_c; 2760 h->pred16x16[VERT_PRED8x8 ]= ff_pred16x16_vertical_c;
2761 h->pred16x16[HOR_PRED8x8 ]= ff_pred16x16_horizontal_c; 2761 h->pred16x16[HOR_PRED8x8 ]= ff_pred16x16_horizontal_c;
2762 h->pred16x16[PLANE_PRED8x8 ]= ff_pred16x16_plane_c; 2762 h->pred16x16[PLANE_PRED8x8 ]= ff_pred16x16_plane_c;
2763 h->pred16x16[LEFT_DC_PRED8x8]= pred16x16_left_dc_c; 2763 h->pred16x16[LEFT_DC_PRED8x8]= ff_pred16x16_left_dc_c;
2764 h->pred16x16[TOP_DC_PRED8x8 ]= pred16x16_top_dc_c; 2764 h->pred16x16[TOP_DC_PRED8x8 ]= ff_pred16x16_top_dc_c;
2765 h->pred16x16[DC_128_PRED8x8 ]= ff_pred16x16_128_dc_c; 2765 h->pred16x16[DC_128_PRED8x8 ]= ff_pred16x16_128_dc_c;
2766 } 2766 }
2767 2767
2768 static void free_tables(H264Context *h){ 2768 static void free_tables(H264Context *h){
2769 av_freep(&h->intra4x4_pred_mode); 2769 av_freep(&h->intra4x4_pred_mode);