00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00026 #include "libavutil/common.h"
00027 #include "vp56dsp.h"
00028
00029
00030 void ff_vp6_filter_diag4_c(uint8_t *dst, uint8_t *src, int stride,
00031 const int16_t *h_weights, const int16_t *v_weights)
00032 {
00033 int x, y;
00034 int tmp[8*11];
00035 int *t = tmp;
00036
00037 src -= stride;
00038
00039 for (y=0; y<11; y++) {
00040 for (x=0; x<8; x++) {
00041 t[x] = av_clip_uint8(( src[x-1] * h_weights[0]
00042 + src[x ] * h_weights[1]
00043 + src[x+1] * h_weights[2]
00044 + src[x+2] * h_weights[3] + 64) >> 7);
00045 }
00046 src += stride;
00047 t += 8;
00048 }
00049
00050 t = tmp + 8;
00051 for (y=0; y<8; y++) {
00052 for (x=0; x<8; x++) {
00053 dst[x] = av_clip_uint8(( t[x-8 ] * v_weights[0]
00054 + t[x ] * v_weights[1]
00055 + t[x+8 ] * v_weights[2]
00056 + t[x+16] * v_weights[3] + 64) >> 7);
00057 }
00058 dst += stride;
00059 t += 8;
00060 }
00061 }