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