comparison dsputil.h @ 2415:db2cf6005d19 libavcodec

H.264 weighted prediction. Bidirectional weighting has not been tested for bitwise accuracy, but looks correct.
author lorenm
date Fri, 07 Jan 2005 05:56:07 +0000
parents 55a72627a2c5
children 72e6ffa1f3a5
comparison
equal deleted inserted replaced
2414:18d77621fbc7 2415:db2cf6005d19
103 //h for op_pixels_func is limited to {width/2, width} but never larger than 16 and never smaller then 4 103 //h for op_pixels_func is limited to {width/2, width} but never larger than 16 and never smaller then 4
104 typedef void (*op_pixels_func)(uint8_t *block/*align width (8 or 16)*/, const uint8_t *pixels/*align 1*/, int line_size, int h); 104 typedef void (*op_pixels_func)(uint8_t *block/*align width (8 or 16)*/, const uint8_t *pixels/*align 1*/, int line_size, int h);
105 typedef void (*tpel_mc_func)(uint8_t *block/*align width (8 or 16)*/, const uint8_t *pixels/*align 1*/, int line_size, int w, int h); 105 typedef void (*tpel_mc_func)(uint8_t *block/*align width (8 or 16)*/, const uint8_t *pixels/*align 1*/, int line_size, int w, int h);
106 typedef void (*qpel_mc_func)(uint8_t *dst/*align width (8 or 16)*/, uint8_t *src/*align 1*/, int stride); 106 typedef void (*qpel_mc_func)(uint8_t *dst/*align width (8 or 16)*/, uint8_t *src/*align 1*/, int stride);
107 typedef void (*h264_chroma_mc_func)(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int srcStride, int h, int x, int y); 107 typedef void (*h264_chroma_mc_func)(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int srcStride, int h, int x, int y);
108 typedef void (*h264_weight_func)(uint8_t *block, int stride, int log2_denom, int weight, int offset);
109 typedef void (*h264_biweight_func)(uint8_t *dst, uint8_t *src, int stride, int log2_denom, int weightd, int weights, int offsetd, int offsets);
108 110
109 #define DEF_OLD_QPEL(name)\ 111 #define DEF_OLD_QPEL(name)\
110 void ff_put_ ## name (uint8_t *dst/*align width (8 or 16)*/, uint8_t *src/*align 1*/, int stride);\ 112 void ff_put_ ## name (uint8_t *dst/*align width (8 or 16)*/, uint8_t *src/*align 1*/, int stride);\
111 void ff_put_no_rnd_ ## name (uint8_t *dst/*align width (8 or 16)*/, uint8_t *src/*align 1*/, int stride);\ 113 void ff_put_no_rnd_ ## name (uint8_t *dst/*align width (8 or 16)*/, uint8_t *src/*align 1*/, int stride);\
112 void ff_avg_ ## name (uint8_t *dst/*align width (8 or 16)*/, uint8_t *src/*align 1*/, int stride); 114 void ff_avg_ ## name (uint8_t *dst/*align width (8 or 16)*/, uint8_t *src/*align 1*/, int stride);
255 h264_chroma_mc_func put_h264_chroma_pixels_tab[3]; 257 h264_chroma_mc_func put_h264_chroma_pixels_tab[3];
256 h264_chroma_mc_func avg_h264_chroma_pixels_tab[3]; 258 h264_chroma_mc_func avg_h264_chroma_pixels_tab[3];
257 259
258 qpel_mc_func put_h264_qpel_pixels_tab[3][16]; 260 qpel_mc_func put_h264_qpel_pixels_tab[3][16];
259 qpel_mc_func avg_h264_qpel_pixels_tab[3][16]; 261 qpel_mc_func avg_h264_qpel_pixels_tab[3][16];
262
263 h264_weight_func weight_h264_pixels_tab[10];
264 h264_biweight_func biweight_h264_pixels_tab[10];
260 265
261 me_cmp_func pix_abs[2][4]; 266 me_cmp_func pix_abs[2][4];
262 267
263 /* huffyuv specific */ 268 /* huffyuv specific */
264 void (*add_bytes)(uint8_t *dst/*align 16*/, uint8_t *src/*align 16*/, int w); 269 void (*add_bytes)(uint8_t *dst/*align 16*/, uint8_t *src/*align 16*/, int w);