47 #define area5 (8+8+1+8)
48 #define area6 (8+8+1+16)
66 int * range,
int * psum,
int edges){
76 memset(dst,0x80,16+1+16+8);
95 min_pix=
FFMIN(min_pix,c);
96 max_pix=
FFMAX(max_pix,c);
108 min_pix=
FFMIN(min_pix, c);
109 max_pix=
FFMAX(max_pix, c);
112 memset(dst+
area5,c,8);
113 memcpy(dst+
area4, ptr, 8);
115 memcpy(dst+
area4, ptr, 16);
117 memcpy(dst+
area6, ptr-linesize, 8);
123 memset(dst+
area1,avg,8+8+1);
125 memset(dst+
area3,avg, 1+16+8);
134 (*range) = max_pix - min_pix;
141 640, 640, 669, 480, 708, 354, 748, 257, 792, 198, 760, 143, 808, 101, 772, 72,
142 480, 669, 537, 537, 598, 416, 661, 316, 719, 250, 707, 185, 768, 134, 745, 97,
143 354, 708, 416, 598, 488, 488, 564, 388, 634, 317, 642, 241, 716, 179, 706, 132,
144 257, 748, 316, 661, 388, 564, 469, 469, 543, 395, 571, 311, 655, 238, 660, 180,
145 198, 792, 250, 719, 317, 634, 395, 543, 469, 469, 507, 380, 597, 299, 616, 231,
146 161, 855, 206, 788, 266, 710, 340, 623, 411, 548, 455, 455, 548, 366, 576, 288,
147 122, 972, 159, 914, 211, 842, 276, 758, 341, 682, 389, 584, 483, 483, 520, 390,
148 110, 1172, 144, 1107, 193, 1028, 254, 932, 317, 846, 366, 731, 458, 611, 499, 499
156 uint16_t left_sum[2][8] = { { 0 } };
157 uint16_t top_sum[2][8] = { { 0 } };
163 left_sum[p&1][j]+= a>>(p>>1);
171 top_sum[p&1][j]+= a>>(p>>1);
178 top_sum[p&1][j]+= a>>(p>>1);
185 top_sum[p&1][j]+= a>>(p>>1);
190 top_sum [0][i]+=(top_sum [1][i]*181 + 128 )>>8;
191 left_sum[0][i]+=(left_sum[1][i]*181 + 128 )>>8;
219 dst[x]=src[
area4 +1+y+x];
229 dst[x]=src[
area4 +((y+1)>>1)+x];
239 dst[x]=( src[
area4+x] + src[
area6+x] + 1 )>>1;
250 dst[x]=src[
area2+9+2*x-
y];
252 dst[x]=src[
area4 +x-((y+1)>>1)];
276 dst[x]=src[
area2+8-y +(x>>1)];
325 int p0,p1,p2,p3,p4,p5,p6,p7,p8,p9;
326 int ql=(quant+10)>>3;
328 for(i=0; i<8; i++,ptr+=b_stride){
341 (
FFABS(p1-p2) <= ql) +
342 (
FFABS(p2-p3) <= ql) +
343 (
FFABS(p3-p4) <= ql) +
344 (
FFABS(p4-p5) <= ql);
347 (
FFABS(p5-p6) <= ql) +
348 (
FFABS(p6-p7) <= ql) +
349 (
FFABS(p7-p8) <= ql) +
350 (
FFABS(p8-p9) <= ql) +
351 (
FFABS(p0-p1) <= ql);
365 ptr[-2*a_stride]=(4*p2 + 3*p3 + 1*p7 + 4)>>3;
366 ptr[-1*a_stride]=(3*p2 + 3*p4 + 2*p7 + 4)>>3;
367 ptr[ 0 ]=(2*p2 + 3*p5 + 3*p7 + 4)>>3;
368 ptr[ 1*a_stride]=(1*p2 + 3*p6 + 4*p7 + 4)>>3;
378 x0 = (2*p3 - 5*p4 + 5*p5 - 2*p6 + 4)>>3;
380 x1=(2*p1 - 5*p2 + 5*p3 - 2*p4 + 4)>>3;
381 x2=(2*p5 - 5*p6 + 5*p7 - 2*p8 + 4)>>3;
386 if( x > 0 && (m^x0) <0){
399 ptr[-1*a_stride] -= x;
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]
void(* spatial_compensation[12])(uint8_t *src, uint8_t *dst, int linesize)
static void spatial_compensation_9(uint8_t *src, uint8_t *dst, int linesize)
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)
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
static void spatial_compensation_7(uint8_t *src, uint8_t *dst, int linesize)
static void x8_loop_filter(uint8_t *ptr, const int a_stride, const int b_stride, int quant)
av_cold void ff_intrax8dsp_init(IntraX8DSPContext *dsp)
void(* setup_spatial_compensation)(uint8_t *src, uint8_t *dst, int linesize, int *range, int *sum, int edges)
GLint GLenum GLboolean GLsizei stride
common internal and external API header
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(* h_loop_filter)(uint8_t *src, int stride, int qscale)
void(* v_loop_filter)(uint8_t *src, int stride, int qscale)