46 #define area5 (8+8+1+8)
47 #define area6 (8+8+1+16)
65 int * range,
int * psum,
int edges){
75 memset(dst,0x80,16+1+16+8);
94 min_pix=
FFMIN(min_pix,c);
95 max_pix=
FFMAX(max_pix,c);
107 min_pix=
FFMIN(min_pix, c);
108 max_pix=
FFMAX(max_pix, c);
111 memset(dst+
area5,c,8);
112 memcpy(dst+
area4, ptr, 8);
114 memcpy(dst+
area4, ptr, 16);
116 memcpy(dst+
area6, ptr-linesize, 8);
122 memset(dst+
area1,avg,8+8+1);
124 memset(dst+
area3,avg, 1+16+8);
128 uint8_t c=*(src-1-linesize);
133 (*range) = max_pix - min_pix;
140 640, 640, 669, 480, 708, 354, 748, 257, 792, 198, 760, 143, 808, 101, 772, 72,
141 480, 669, 537, 537, 598, 416, 661, 316, 719, 250, 707, 185, 768, 134, 745, 97,
142 354, 708, 416, 598, 488, 488, 564, 388, 634, 317, 642, 241, 716, 179, 706, 132,
143 257, 748, 316, 661, 388, 564, 469, 469, 543, 395, 571, 311, 655, 238, 660, 180,
144 198, 792, 250, 719, 317, 634, 395, 543, 469, 469, 507, 380, 597, 299, 616, 231,
145 161, 855, 206, 788, 266, 710, 340, 623, 411, 548, 455, 455, 548, 366, 576, 288,
146 122, 972, 159, 914, 211, 842, 276, 758, 341, 682, 389, 584, 483, 483, 520, 390,
147 110, 1172, 144, 1107, 193, 1028, 254, 932, 317, 846, 366, 731, 458, 611, 499, 499
155 uint16_t left_sum[2][8];
156 uint16_t top_sum[2][8];
157 memset(left_sum,0,2*8*
sizeof(uint16_t));
158 memset( top_sum,0,2*8*
sizeof(uint16_t));
164 left_sum[p&1][j]+= a>>(p>>1);
172 top_sum[p&1][j]+= a>>(p>>1);
179 top_sum[p&1][j]+= a>>(p>>1);
186 top_sum[p&1][j]+= a>>(p>>1);
191 top_sum [0][i]+=(top_sum [1][i]*181 + 128 )>>8;
192 left_sum[0][i]+=(left_sum[1][i]*181 + 128 )>>8;
220 dst[x]=src[
area4 +1+y+x];
230 dst[x]=src[
area4 +((y+1)>>1)+x];
240 dst[x]=( src[
area4+x] + src[
area6+x] + 1 )>>1;
251 dst[x]=src[
area2+9+2*x-y];
253 dst[x]=src[
area4 +x-((y+1)>>1)];
264 dst[x]=src[
area3+x-y];
275 dst[x]=( src[
area3-1+x-2*y] + src[
area3+x-2*y] + 1)>>1;
277 dst[x]=src[
area2+8-y +(x>>1)];
288 dst[x]=( src[
area1+7-y] + src[
area2+7-y] + 1 )>>1;
308 dst[x]=(src[
area2+7-y]*(8-x)+src[
area4+x]*x+4)>>3;
318 dst[x]=(src[
area2+7-y]*y+src[
area4+x]*(8-y)+4)>>3;
326 int p0,p1,p2,p3,p4,p5,p6,p7,p8,p9;
327 int ql=(quant+10)>>3;
329 for(i=0; i<8; i++,ptr+=b_stride){
342 (
FFABS(p1-p2) <= ql) +
343 (
FFABS(p2-p3) <= ql) +
344 (
FFABS(p3-p4) <= ql) +
345 (
FFABS(p4-p5) <= ql);
348 (
FFABS(p5-p6) <= ql) +
349 (
FFABS(p6-p7) <= ql) +
350 (
FFABS(p7-p8) <= ql) +
351 (
FFABS(p8-p9) <= ql) +
352 (
FFABS(p0-p1) <= ql);
366 ptr[-2*a_stride]=(4*p2 + 3*p3 + 1*p7 + 4)>>3;
367 ptr[-1*a_stride]=(3*p2 + 3*p4 + 2*p7 + 4)>>3;
368 ptr[ 0 ]=(2*p2 + 3*p5 + 3*p7 + 4)>>3;
369 ptr[ 1*a_stride]=(1*p2 + 3*p6 + 4*p7 + 4)>>3;
379 x0 = (2*p3 - 5*p4 + 5*p5 - 2*p6 + 4)>>3;
381 x1=(2*p1 - 5*p2 + 5*p3 - 2*p4 + 4)>>3;
382 x2=(2*p5 - 5*p6 + 5*p7 - 2*p8 + 4)>>3;
387 if( x > 0 && (m^x0) <0){
400 ptr[-1*a_stride] -= x;
void(* x8_v_loop_filter)(uint8_t *src, int stride, int qscale)
static void spatial_compensation_2(uint8_t *src, uint8_t *dst, int linesize)
static void spatial_compensation_0(uint8_t *src, uint8_t *dst, int linesize)
static const uint16_t zero_prediction_weights[64 *2]
static void spatial_compensation_9(uint8_t *src, uint8_t *dst, int linesize)
void(* x8_setup_spatial_compensation)(uint8_t *src, uint8_t *dst, int linesize, int *range, int *sum, int edges)
static void spatial_compensation_1(uint8_t *src, uint8_t *dst, int linesize)
static void spatial_compensation_4(uint8_t *src, uint8_t *dst, int linesize)
static void spatial_compensation_8(uint8_t *src, uint8_t *dst, int linesize)
static void x8_h_loop_filter(uint8_t *src, int stride, int qscale)
static void spatial_compensation_10(uint8_t *src, uint8_t *dst, int linesize)
static void x8_setup_spatial_compensation(uint8_t *src, uint8_t *dst, int linesize, int *range, int *psum, int edges)
Collect statistics and prepare the edge pixels required by the other spatial compensation functions...
static void x8_v_loop_filter(uint8_t *src, int stride, int qscale)
static void spatial_compensation_6(uint8_t *src, uint8_t *dst, int linesize)
static void spatial_compensation_7(uint8_t *src, uint8_t *dst, int linesize)
main external API structure.
static void x8_loop_filter(uint8_t *ptr, const int a_stride, const int b_stride, int quant)
av_cold void ff_intrax8dsp_init(DSPContext *dsp, AVCodecContext *avctx)
static void spatial_compensation_3(uint8_t *src, uint8_t *dst, int linesize)
static void spatial_compensation_11(uint8_t *src, uint8_t *dst, int linesize)
static void spatial_compensation_5(uint8_t *src, uint8_t *dst, int linesize)
void(* x8_h_loop_filter)(uint8_t *src, int stride, int qscale)
void(* x8_spatial_compensation[12])(uint8_t *src, uint8_t *dst, int linesize)