📄 dsputil.c
字号:
static void add_pixels_clamped_c(const DCTELEM *block, uint8_t * pixels,
int line_size)
{
int i;
uint8_t *cm = cropTbl + 384;
/* read the pixels */
for(i=0;i<8;i++) {
pixels[0] = cm[pixels[0] + block[0]];
pixels[1] = cm[pixels[1] + block[1]];
pixels[2] = cm[pixels[2] + block[2]];
pixels[3] = cm[pixels[3] + block[3]];
pixels[4] = cm[pixels[4] + block[4]];
pixels[5] = cm[pixels[5] + block[5]];
pixels[6] = cm[pixels[6] + block[6]];
pixels[7] = cm[pixels[7] + block[7]];
pixels += line_size;
block += 8;
}
}
static void avg_pixels4_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){
int i;
for(i=0; i<h; i++){
*((uint32_t*)(block )) = rnd_avg32(*((uint32_t*)(block )), ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ));
pixels+=line_size;
block +=line_size;
}
}
static void avg_pixels8_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){
int i;
for(i=0; i<h; i++){
*((uint32_t*)(block )) = rnd_avg32(*((uint32_t*)(block )), ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ));
*((uint32_t*)(block+4)) = rnd_avg32(*((uint32_t*)(block+4)), ( ((*(pixels+4))) | ((*(pixels+4+1))<< 8) | ((*(pixels+4+2))<< 16) | (*(pixels+4+3) <<24) ));
pixels+=line_size;
block +=line_size;
}
}
static __inline void avg_pixels8_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h){
int i;
for(i=0; i<h; i++){
uint32_t a,b;
a= ( ((*(&src1[i*src_stride1 ]))) | ((*(&src1[i*src_stride1 ]+1))<< 8) | ((*(&src1[i*src_stride1 ]+2))<< 16) | (*(&src1[i*src_stride1 ]+3) <<24) );
b= ( ((*(&src2[i*src_stride2 ]))) | ((*(&src2[i*src_stride2 ]+1))<< 8) | ((*(&src2[i*src_stride2 ]+2))<< 16) | (*(&src2[i*src_stride2 ]+3) <<24) );
*((uint32_t*)&dst[i*dst_stride ]) = rnd_avg32(*((uint32_t*)&dst[i*dst_stride ]), rnd_avg32(a, b));
a= ( ((*(&src1[i*src_stride1+4]))) | ((*(&src1[i*src_stride1+4]+1))<< 8) | ((*(&src1[i*src_stride1+4]+2))<< 16) | (*(&src1[i*src_stride1+4]+3) <<24) );
b= ( ((*(&src2[i*src_stride2+4]))) | ((*(&src2[i*src_stride2+4]+1))<< 8) | ((*(&src2[i*src_stride2+4]+2))<< 16) | (*(&src2[i*src_stride2+4]+3) <<24) );
*((uint32_t*)&dst[i*dst_stride+4]) = rnd_avg32(*((uint32_t*)&dst[i*dst_stride+4]), rnd_avg32(a, b));
}
}
static __inline void avg_pixels4_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h){
int i;
for(i=0; i<h; i++){
uint32_t a,b;
a= ( ((*(&src1[i*src_stride1 ]))) | ((*(&src1[i*src_stride1 ]+1))<< 8) | ((*(&src1[i*src_stride1 ]+2))<< 16) | (*(&src1[i*src_stride1 ]+3) <<24) );
b= ( ((*(&src2[i*src_stride2 ]))) | ((*(&src2[i*src_stride2 ]+1))<< 8) | ((*(&src2[i*src_stride2 ]+2))<< 16) | (*(&src2[i*src_stride2 ]+3) <<24) );
*((uint32_t*)&dst[i*dst_stride ]) = rnd_avg32(*((uint32_t*)&dst[i*dst_stride ]), rnd_avg32(a, b));
}
}
static void put_pixels4_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){
int i;
for(i=0; i<h; i++){
//op_put(*((uint32_t*)(block )), LD32(pixels ));
memcpy((block ), (pixels ),sizeof(pixels));
pixels+=line_size;
block +=line_size;
}
}
static void put_pixels8_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){
int i;
for(i=0; i<h; i++){
memcpy((block ), (pixels ),sizeof(pixels));
memcpy((block+4), (pixels+4),sizeof(pixels));
pixels+=line_size;
block +=line_size;
}
}
static __inline void put_pixels8_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h){
int i;
uint32_t a,b,c;
for(i=0; i<h; i++){
//a= LD32(&src1[i*src_stride1 ]);
//b= LD32(&src2[i*src_stride2 ]);
memcpy(&a,&src1[i*src_stride1 ],sizeof(a));
memcpy(&b,&src2[i*src_stride2 ],sizeof(b));
//RETAILMSG(1,(L"%x,%x\n",a,b));
c=rnd_avg32(a, b);
//op_put(*((uint32_t*)&dst[i*dst_stride ]), rnd_avg32(a, b));
memcpy(&dst[i*dst_stride ],&c,sizeof(c));
//a= LD32(&src1[i*src_stride1+4]);
//b= LD32(&src2[i*src_stride2+4]);
memcpy(&a,&src1[i*src_stride1+4],sizeof(a));
memcpy(&b,&src2[i*src_stride2+4],sizeof(b));
c=rnd_avg32(a, b);
//op_put(*((uint32_t*)&dst[i*dst_stride+4]), rnd_avg32(a, b));
memcpy(&dst[i*dst_stride+4],&c,sizeof(c));
}
}
static __inline void put_pixels4_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h){
int i;
uint32_t a,b,c;
for(i=0; i<h; i++){
//a= LD32(&src1[i*src_stride1 ]);
//b= LD32(&src2[i*src_stride2 ]);
memcpy(&a,&src1[i*src_stride1 ],sizeof(a));
memcpy(&b,&src2[i*src_stride2 ],sizeof(b));
c=rnd_avg32(a, b);
//OP(*((uint32_t*)&dst[i*dst_stride ]), rnd_avg32(a, b));
memcpy(&dst[i*dst_stride ],&c,sizeof(c));
}
}
static void avg_pixels2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ int i; for(i=0; i<h; i++){ *((uint16_t*)(block )) = rnd_avg32(*((uint16_t*)(block )), ( *(pixels) | ((uint16_t)*(pixels+1) << 8) )); pixels+=line_size; block +=line_size; }}static __inline void avg_no_rnd_pixels8_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_pixels8_c(block, pixels, line_size, h);}static __inline void avg_no_rnd_pixels8_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h){ int i; for(i=0; i<h; i++){ uint32_t a,b; a= ( ((*(&src1[i*src_stride1 ]))) | ((*(&src1[i*src_stride1 ]+1))<< 8) | ((*(&src1[i*src_stride1 ]+2))<< 16) | (*(&src1[i*src_stride1 ]+3) <<24) ); b= ( ((*(&src2[i*src_stride2 ]))) | ((*(&src2[i*src_stride2 ]+1))<< 8) | ((*(&src2[i*src_stride2 ]+2))<< 16) | (*(&src2[i*src_stride2 ]+3) <<24) ); *((uint32_t*)&dst[i*dst_stride ]) = rnd_avg32(*((uint32_t*)&dst[i*dst_stride ]), no_rnd_avg32(a, b)); a= ( ((*(&src1[i*src_stride1+4]))) | ((*(&src1[i*src_stride1+4]+1))<< 8) | ((*(&src1[i*src_stride1+4]+2))<< 16) | (*(&src1[i*src_stride1+4]+3) <<24) ); b= ( ((*(&src2[i*src_stride2+4]))) | ((*(&src2[i*src_stride2+4]+1))<< 8) | ((*(&src2[i*src_stride2+4]+2))<< 16) | (*(&src2[i*src_stride2+4]+3) <<24) ); *((uint32_t*)&dst[i*dst_stride+4]) = rnd_avg32(*((uint32_t*)&dst[i*dst_stride+4]), no_rnd_avg32(a, b)); }}static __inline void avg_pixels2_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h){ int i; for(i=0; i<h; i++){ uint32_t a,b; a= ( *(&src1[i*src_stride1 ]) | ((uint16_t)*(&src1[i*src_stride1 ]+1) << 8) ); b= ( *(&src2[i*src_stride2 ]) | ((uint16_t)*(&src2[i*src_stride2 ]+1) << 8) ); *((uint16_t*)&dst[i*dst_stride ]) = rnd_avg32(*((uint16_t*)&dst[i*dst_stride ]), rnd_avg32(a, b)); }}static __inline void avg_pixels16_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h){ avg_pixels8_l2(dst , src1 , src2 , dst_stride, src_stride1, src_stride2, h); avg_pixels8_l2(dst+8, src1+8, src2+8, dst_stride, src_stride1, src_stride2, h);}static __inline void avg_no_rnd_pixels16_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h){ avg_no_rnd_pixels8_l2(dst , src1 , src2 , dst_stride, src_stride1, src_stride2, h); avg_no_rnd_pixels8_l2(dst+8, src1+8, src2+8, dst_stride, src_stride1, src_stride2, h);}static __inline void avg_no_rnd_pixels8_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_no_rnd_pixels8_l2(block, pixels, pixels+1, line_size, line_size, line_size, h);}static __inline void avg_pixels8_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_pixels8_l2(block, pixels, pixels+1, line_size, line_size, line_size, h);}static __inline void avg_no_rnd_pixels8_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_no_rnd_pixels8_l2(block, pixels, pixels+line_size, line_size, line_size, line_size, h);}static __inline void avg_pixels8_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_pixels8_l2(block, pixels, pixels+line_size, line_size, line_size, line_size, h);}static __inline void avg_pixels8_l4(uint8_t *dst, const uint8_t *src1, uint8_t *src2, uint8_t *src3, uint8_t *src4, int dst_stride, int src_stride1, int src_stride2,int src_stride3,int src_stride4, int h){ int i; for(i=0; i<h; i++){ uint32_t a, b, c, d, l0, l1, h0, h1; a= ( ((*(&src1[i*src_stride1]))) | ((*(&src1[i*src_stride1]+1))<< 8) | ((*(&src1[i*src_stride1]+2))<< 16) | (*(&src1[i*src_stride1]+3) <<24) ); b= ( ((*(&src2[i*src_stride2]))) | ((*(&src2[i*src_stride2]+1))<< 8) | ((*(&src2[i*src_stride2]+2))<< 16) | (*(&src2[i*src_stride2]+3) <<24) ); c= ( ((*(&src3[i*src_stride3]))) | ((*(&src3[i*src_stride3]+1))<< 8) | ((*(&src3[i*src_stride3]+2))<< 16) | (*(&src3[i*src_stride3]+3) <<24) ); d= ( ((*(&src4[i*src_stride4]))) | ((*(&src4[i*src_stride4]+1))<< 8) | ((*(&src4[i*src_stride4]+2))<< 16) | (*(&src4[i*src_stride4]+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x02020202UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); l1= (c&0x03030303UL) + (d&0x03030303UL); h1= ((c&0xFCFCFCFCUL)>>2) + ((d&0xFCFCFCFCUL)>>2); *((uint32_t*)&dst[i*dst_stride]) = rnd_avg32(*((uint32_t*)&dst[i*dst_stride]), h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL)); a= ( ((*(&src1[i*src_stride1+4]))) | ((*(&src1[i*src_stride1+4]+1))<< 8) | ((*(&src1[i*src_stride1+4]+2))<< 16) | (*(&src1[i*src_stride1+4]+3) <<24) ); b= ( ((*(&src2[i*src_stride2+4]))) | ((*(&src2[i*src_stride2+4]+1))<< 8) | ((*(&src2[i*src_stride2+4]+2))<< 16) | (*(&src2[i*src_stride2+4]+3) <<24) ); c= ( ((*(&src3[i*src_stride3+4]))) | ((*(&src3[i*src_stride3+4]+1))<< 8) | ((*(&src3[i*src_stride3+4]+2))<< 16) | (*(&src3[i*src_stride3+4]+3) <<24) ); d= ( ((*(&src4[i*src_stride4+4]))) | ((*(&src4[i*src_stride4+4]+1))<< 8) | ((*(&src4[i*src_stride4+4]+2))<< 16) | (*(&src4[i*src_stride4+4]+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x02020202UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); l1= (c&0x03030303UL) + (d&0x03030303UL); h1= ((c&0xFCFCFCFCUL)>>2) + ((d&0xFCFCFCFCUL)>>2); *((uint32_t*)&dst[i*dst_stride+4]) = rnd_avg32(*((uint32_t*)&dst[i*dst_stride+4]), h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL)); }}static __inline void avg_pixels4_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_pixels4_l2(block, pixels, pixels+1, line_size, line_size, line_size, h);}static __inline void avg_pixels4_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_pixels4_l2(block, pixels, pixels+line_size, line_size, line_size, line_size, h);}static __inline void avg_pixels2_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_pixels2_l2(block, pixels, pixels+1, line_size, line_size, line_size, h);}static __inline void avg_pixels2_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_pixels2_l2(block, pixels, pixels+line_size, line_size, line_size, line_size, h);}static __inline void avg_no_rnd_pixels8_l4(uint8_t *dst, const uint8_t *src1, uint8_t *src2, uint8_t *src3, uint8_t *src4, int dst_stride, int src_stride1, int src_stride2,int src_stride3,int src_stride4, int h){ int i; for(i=0; i<h; i++){ uint32_t a, b, c, d, l0, l1, h0, h1; a= ( ((*(&src1[i*src_stride1]))) | ((*(&src1[i*src_stride1]+1))<< 8) | ((*(&src1[i*src_stride1]+2))<< 16) | (*(&src1[i*src_stride1]+3) <<24) ); b= ( ((*(&src2[i*src_stride2]))) | ((*(&src2[i*src_stride2]+1))<< 8) | ((*(&src2[i*src_stride2]+2))<< 16) | (*(&src2[i*src_stride2]+3) <<24) ); c= ( ((*(&src3[i*src_stride3]))) | ((*(&src3[i*src_stride3]+1))<< 8) | ((*(&src3[i*src_stride3]+2))<< 16) | (*(&src3[i*src_stride3]+3) <<24) ); d= ( ((*(&src4[i*src_stride4]))) | ((*(&src4[i*src_stride4]+1))<< 8) | ((*(&src4[i*src_stride4]+2))<< 16) | (*(&src4[i*src_stride4]+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x01010101UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); l1= (c&0x03030303UL) + (d&0x03030303UL); h1= ((c&0xFCFCFCFCUL)>>2) + ((d&0xFCFCFCFCUL)>>2); *((uint32_t*)&dst[i*dst_stride]) = rnd_avg32(*((uint32_t*)&dst[i*dst_stride]), h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL)); a= ( ((*(&src1[i*src_stride1+4]))) | ((*(&src1[i*src_stride1+4]+1))<< 8) | ((*(&src1[i*src_stride1+4]+2))<< 16) | (*(&src1[i*src_stride1+4]+3) <<24) ); b= ( ((*(&src2[i*src_stride2+4]))) | ((*(&src2[i*src_stride2+4]+1))<< 8) | ((*(&src2[i*src_stride2+4]+2))<< 16) | (*(&src2[i*src_stride2+4]+3) <<24) ); c= ( ((*(&src3[i*src_stride3+4]))) | ((*(&src3[i*src_stride3+4]+1))<< 8) | ((*(&src3[i*src_stride3+4]+2))<< 16) | (*(&src3[i*src_stride3+4]+3) <<24) ); d= ( ((*(&src4[i*src_stride4+4]))) | ((*(&src4[i*src_stride4+4]+1))<< 8) | ((*(&src4[i*src_stride4+4]+2))<< 16) | (*(&src4[i*src_stride4+4]+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x01010101UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); l1= (c&0x03030303UL) + (d&0x03030303UL); h1= ((c&0xFCFCFCFCUL)>>2) + ((d&0xFCFCFCFCUL)>>2); *((uint32_t*)&dst[i*dst_stride+4]) = rnd_avg32(*((uint32_t*)&dst[i*dst_stride+4]), h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL)); }}static __inline void avg_pixels16_l4(uint8_t *dst, const uint8_t *src1, uint8_t *src2, uint8_t *src3, uint8_t *src4, int dst_stride, int src_stride1, int src_stride2,int src_stride3,int src_stride4, int h){ avg_pixels8_l4(dst , src1 , src2 , src3 , src4 , dst_stride, src_stride1, src_stride2, src_stride3, src_stride4, h); avg_pixels8_l4(dst+8, src1+8, src2+8, src3+8, src4+8, dst_stride, src_stride1, src_stride2, src_stride3, src_stride4, h);}static __inline void avg_no_rnd_pixels16_l4(uint8_t *dst, const uint8_t *src1, uint8_t *src2, uint8_t *src3, uint8_t *src4, int dst_stride, int src_stride1, int src_stride2,int src_stride3,int src_stride4, int h){ avg_no_rnd_pixels8_l4(dst , src1 , src2 , src3 , src4 , dst_stride, src_stride1, src_stride2, src_stride3, src_stride4, h); avg_no_rnd_pixels8_l4(dst+8, src1+8, src2+8, src3+8, src4+8, dst_stride, src_stride1, src_stride2, src_stride3, src_stride4, h);}static __inline void avg_pixels2_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ int i, a0, b0, a1, b1; a0= pixels[0]; b0= pixels[1] + 2; a0 += b0; b0 += pixels[2]; pixels+=line_size; for(i=0; i<h; i+=2){ a1= pixels[0]; b1= pixels[1]; a1 += b1; b1 += pixels[2]; block[0]= (a1+a0)>>2; block[1]= (b1+b0)>>2; pixels+=line_size; block +=line_size; a0= pixels[0]; b0= pixels[1] + 2; a0 += b0; b0 += pixels[2]; block[0]= (a1+a0)>>2; block[1]= (b1+b0)>>2; pixels+=line_size; block +=line_size; }}static __inline void avg_pixels4_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ int i; const uint32_t a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); const uint32_t b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); uint32_t l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x02020202UL; uint32_t h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); uint32_t l1,h1; pixels+=line_size; for(i=0; i<h; i+=2){ uint32_t a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); uint32_t b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); l1= (a&0x03030303UL) + (b&0x03030303UL); h1= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); *((uint32_t*)block) = rnd_avg32(*((uint32_t*)block), h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL)); pixels+=line_size; block +=line_size; a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x02020202UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); *((uint32_t*)block) = rnd_avg32(*((uint32_t*)block), h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL)); pixels+=line_size; block +=line_size; }}static __inline void avg_pixels8_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ int j; for(j=0; j<2; j++){ int i; const uint32_t a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); const uint32_t b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); uint32_t l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x02020202UL; uint32_t h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); uint32_t l1,h1; pixels+=line_size; for(i=0; i<h; i+=2){ uint32_t a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); uint32_t b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); l1= (a&0x03030303UL) + (b&0x03030303UL); h1= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); *((uint32_t*)block) = rnd_avg32(*((uint32_t*)block), h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL)); pixels+=line_size; block +=line_size; a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x02020202UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); *((uint32_t*)block) = rnd_avg32(*((uint32_t*)block), h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL)); pixels+=line_size; block +=line_size; } pixels+=4-line_size*(h+1); block +=4-line_size*h; }}static __inline void avg_no_rnd_pixels8_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ int j; for(j=0; j<2; j++){ int i; const uint32_t a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); const uint32_t b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); uint32_t l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x01010101UL; uint32_t h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); uint32_t l1,h1; pixels+=line_size; for(i=0; i<h; i+=2){ uint32_t a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); uint32_t b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); l1= (a&0x03030303UL) + (b&0x03030303UL); h1= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); *((uint32_t*)block) = rnd_avg32(*((uint32_t*)block), h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL)); pixels+=line_size; block +=line_size; a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x01010101UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); *((uint32_t*)block) = rnd_avg32(*((uint32_t*)block), h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL)); pixels+=line_size; block +=line_size; } pixels+=4-line_size*(h+1); block +=4-line_size*h; }}static void avg_pixels16_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_pixels8_c(block , pixels , line_size, h); avg_pixels8_c(block+8, pixels+8, line_size, h);}static void avg_pixels16_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_pixels8_x2_c(block , pixels , line_size, h); avg_pixels8_x2_c(block+8, pixels+8, line_size, h);}static void avg_pixels16_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_pixels8_y2_c(block , pixels , line_size, h); avg_pixels8_y2_c(block+8, pixels+8, line_size, h);}static void avg_pixels16_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_pixels8_xy2_c(block , pixels , line_size, h); avg_pixels8_xy2_c(block+8, pixels+8, line_size, h);}static void avg_no_rnd_pixels16_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_pixels8_c(block , pixels , line_size, h); avg_pixels8_c(block+8, pixels+8, line_size, h);}static void avg_no_rnd_pixels16_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_no_rnd_pixels8_x2_c(block , pixels , line_size, h); avg_no_rnd_pixels8_x2_c(block+8, pixels+8, line_size, h);}static void avg_no_rnd_pixels16_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_no_rnd_pixels8_y2_c(block , pixels , line_size, h); avg_no_rnd_pixels8_y2_c(block+8, pixels+8, line_size, h);}static void avg_no_rnd_pixels16_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ avg_no_rnd_pixels8_xy2_c(block , pixels , line_size, h); avg_no_rnd_pixels8_xy2_c(block+8, pixels+8, line_size, h);}
static void put_pixels2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ int i; for(i=0; i<h; i++){ *((uint16_t*)(block )) = ( *(pixels) | ((uint16_t)*(pixels+1) << 8) ); pixels+=line_size; block +=line_size; }}static __inline void put_no_rnd_pixels8_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_pixels8_c(block, pixels, line_size, h);}static __inline void put_no_rnd_pixels8_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h){ int i; for(i=0; i<h; i++){ uint32_t a,b; a= ( ((*(&src1[i*src_stride1 ]))) | ((*(&src1[i*src_stride1 ]+1))<< 8) | ((*(&src1[i*src_stride1 ]+2))<< 16) | (*(&src1[i*src_stride1 ]+3) <<24) ); b= ( ((*(&src2[i*src_stride2 ]))) | ((*(&src2[i*src_stride2 ]+1))<< 8) | ((*(&src2[i*src_stride2 ]+2))<< 16) | (*(&src2[i*src_stride2 ]+3) <<24) ); *((uint32_t*)&dst[i*dst_stride ]) = no_rnd_avg32(a, b); a= ( ((*(&src1[i*src_stride1+4]))) | ((*(&src1[i*src_stride1+4]+1))<< 8) | ((*(&src1[i*src_stride1+4]+2))<< 16) | (*(&src1[i*src_stride1+4]+3) <<24) ); b= ( ((*(&src2[i*src_stride2+4]))) | ((*(&src2[i*src_stride2+4]+1))<< 8) | ((*(&src2[i*src_stride2+4]+2))<< 16) | (*(&src2[i*src_stride2+4]+3) <<24) ); *((uint32_t*)&dst[i*dst_stride+4]) = no_rnd_avg32(a, b); }}static __inline void put_pixels2_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h){ int i; for(i=0; i<h; i++){ uint32_t a,b; a= ( *(&src1[i*src_stride1 ]) | ((uint16_t)*(&src1[i*src_stride1 ]+1) << 8) ); b= ( *(&src2[i*src_stride2 ]) | ((uint16_t)*(&src2[i*src_stride2 ]+1) << 8) ); *((uint16_t*)&dst[i*dst_stride ]) = rnd_avg32(a, b); }}static __inline void put_pixels16_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h){ put_pixels8_l2(dst , src1 , src2 , dst_stride, src_stride1, src_stride2, h); put_pixels8_l2(dst+8, src1+8, src2+8, dst_stride, src_stride1, src_stride2, h);}static __inline void put_no_rnd_pixels16_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h){ put_no_rnd_pixels8_l2(dst , src1 , src2 , dst_stride, src_stride1, src_stride2, h); put_no_rnd_pixels8_l2(dst+8, src1+8, src2+8, dst_stride, src_stride1, src_stride2, h);}static __inline void put_no_rnd_pixels8_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_no_rnd_pixels8_l2(block, pixels, pixels+1, line_size, line_size, line_size, h);}static __inline void put_pixels8_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_pixels8_l2(block, pixels, pixels+1, line_size, line_size, line_size, h);}static __inline void put_no_rnd_pixels8_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_no_rnd_pixels8_l2(block, pixels, pixels+line_size, line_size, line_size, line_size, h);}static __inline void put_pixels8_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_pixels8_l2(block, pixels, pixels+line_size, line_size, line_size, line_size, h);}static __inline void put_pixels8_l4(uint8_t *dst, const uint8_t *src1, uint8_t *src2, uint8_t *src3, uint8_t *src4, int dst_stride, int src_stride1, int src_stride2,int src_stride3,int src_stride4, int h){ int i; for(i=0; i<h; i++){ uint32_t a, b, c, d, l0, l1, h0, h1; a= ( ((*(&src1[i*src_stride1]))) | ((*(&src1[i*src_stride1]+1))<< 8) | ((*(&src1[i*src_stride1]+2))<< 16) | (*(&src1[i*src_stride1]+3) <<24) ); b= ( ((*(&src2[i*src_stride2]))) | ((*(&src2[i*src_stride2]+1))<< 8) | ((*(&src2[i*src_stride2]+2))<< 16) | (*(&src2[i*src_stride2]+3) <<24) ); c= ( ((*(&src3[i*src_stride3]))) | ((*(&src3[i*src_stride3]+1))<< 8) | ((*(&src3[i*src_stride3]+2))<< 16) | (*(&src3[i*src_stride3]+3) <<24) ); d= ( ((*(&src4[i*src_stride4]))) | ((*(&src4[i*src_stride4]+1))<< 8) | ((*(&src4[i*src_stride4]+2))<< 16) | (*(&src4[i*src_stride4]+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x02020202UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); l1= (c&0x03030303UL) + (d&0x03030303UL); h1= ((c&0xFCFCFCFCUL)>>2) + ((d&0xFCFCFCFCUL)>>2); *((uint32_t*)&dst[i*dst_stride]) = h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL); a= ( ((*(&src1[i*src_stride1+4]))) | ((*(&src1[i*src_stride1+4]+1))<< 8) | ((*(&src1[i*src_stride1+4]+2))<< 16) | (*(&src1[i*src_stride1+4]+3) <<24) ); b= ( ((*(&src2[i*src_stride2+4]))) | ((*(&src2[i*src_stride2+4]+1))<< 8) | ((*(&src2[i*src_stride2+4]+2))<< 16) | (*(&src2[i*src_stride2+4]+3) <<24) ); c= ( ((*(&src3[i*src_stride3+4]))) | ((*(&src3[i*src_stride3+4]+1))<< 8) | ((*(&src3[i*src_stride3+4]+2))<< 16) | (*(&src3[i*src_stride3+4]+3) <<24) ); d= ( ((*(&src4[i*src_stride4+4]))) | ((*(&src4[i*src_stride4+4]+1))<< 8) | ((*(&src4[i*src_stride4+4]+2))<< 16) | (*(&src4[i*src_stride4+4]+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x02020202UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); l1= (c&0x03030303UL) + (d&0x03030303UL); h1= ((c&0xFCFCFCFCUL)>>2) + ((d&0xFCFCFCFCUL)>>2); *((uint32_t*)&dst[i*dst_stride+4]) = h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL); }}static __inline void put_pixels4_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_pixels4_l2(block, pixels, pixels+1, line_size, line_size, line_size, h);}static __inline void put_pixels4_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_pixels4_l2(block, pixels, pixels+line_size, line_size, line_size, line_size, h);}static __inline void put_pixels2_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_pixels2_l2(block, pixels, pixels+1, line_size, line_size, line_size, h);}static __inline void put_pixels2_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_pixels2_l2(block, pixels, pixels+line_size, line_size, line_size, line_size, h);}static __inline void put_no_rnd_pixels8_l4(uint8_t *dst, const uint8_t *src1, uint8_t *src2, uint8_t *src3, uint8_t *src4, int dst_stride, int src_stride1, int src_stride2,int src_stride3,int src_stride4, int h){ int i; for(i=0; i<h; i++){ uint32_t a, b, c, d, l0, l1, h0, h1; a= ( ((*(&src1[i*src_stride1]))) | ((*(&src1[i*src_stride1]+1))<< 8) | ((*(&src1[i*src_stride1]+2))<< 16) | (*(&src1[i*src_stride1]+3) <<24) ); b= ( ((*(&src2[i*src_stride2]))) | ((*(&src2[i*src_stride2]+1))<< 8) | ((*(&src2[i*src_stride2]+2))<< 16) | (*(&src2[i*src_stride2]+3) <<24) ); c= ( ((*(&src3[i*src_stride3]))) | ((*(&src3[i*src_stride3]+1))<< 8) | ((*(&src3[i*src_stride3]+2))<< 16) | (*(&src3[i*src_stride3]+3) <<24) ); d= ( ((*(&src4[i*src_stride4]))) | ((*(&src4[i*src_stride4]+1))<< 8) | ((*(&src4[i*src_stride4]+2))<< 16) | (*(&src4[i*src_stride4]+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x01010101UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); l1= (c&0x03030303UL) + (d&0x03030303UL); h1= ((c&0xFCFCFCFCUL)>>2) + ((d&0xFCFCFCFCUL)>>2); *((uint32_t*)&dst[i*dst_stride]) = h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL); a= ( ((*(&src1[i*src_stride1+4]))) | ((*(&src1[i*src_stride1+4]+1))<< 8) | ((*(&src1[i*src_stride1+4]+2))<< 16) | (*(&src1[i*src_stride1+4]+3) <<24) ); b= ( ((*(&src2[i*src_stride2+4]))) | ((*(&src2[i*src_stride2+4]+1))<< 8) | ((*(&src2[i*src_stride2+4]+2))<< 16) | (*(&src2[i*src_stride2+4]+3) <<24) ); c= ( ((*(&src3[i*src_stride3+4]))) | ((*(&src3[i*src_stride3+4]+1))<< 8) | ((*(&src3[i*src_stride3+4]+2))<< 16) | (*(&src3[i*src_stride3+4]+3) <<24) ); d= ( ((*(&src4[i*src_stride4+4]))) | ((*(&src4[i*src_stride4+4]+1))<< 8) | ((*(&src4[i*src_stride4+4]+2))<< 16) | (*(&src4[i*src_stride4+4]+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x01010101UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); l1= (c&0x03030303UL) + (d&0x03030303UL); h1= ((c&0xFCFCFCFCUL)>>2) + ((d&0xFCFCFCFCUL)>>2); *((uint32_t*)&dst[i*dst_stride+4]) = h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL); }}static __inline void put_pixels16_l4(uint8_t *dst, const uint8_t *src1, uint8_t *src2, uint8_t *src3, uint8_t *src4, int dst_stride, int src_stride1, int src_stride2,int src_stride3,int src_stride4, int h){ put_pixels8_l4(dst , src1 , src2 , src3 , src4 , dst_stride, src_stride1, src_stride2, src_stride3, src_stride4, h); put_pixels8_l4(dst+8, src1+8, src2+8, src3+8, src4+8, dst_stride, src_stride1, src_stride2, src_stride3, src_stride4, h);}static __inline void put_no_rnd_pixels16_l4(uint8_t *dst, const uint8_t *src1, uint8_t *src2, uint8_t *src3, uint8_t *src4, int dst_stride, int src_stride1, int src_stride2,int src_stride3,int src_stride4, int h){ put_no_rnd_pixels8_l4(dst , src1 , src2 , src3 , src4 , dst_stride, src_stride1, src_stride2, src_stride3, src_stride4, h); put_no_rnd_pixels8_l4(dst+8, src1+8, src2+8, src3+8, src4+8, dst_stride, src_stride1, src_stride2, src_stride3, src_stride4, h);}static __inline void put_pixels2_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ int i, a0, b0, a1, b1; a0= pixels[0]; b0= pixels[1] + 2; a0 += b0; b0 += pixels[2]; pixels+=line_size; for(i=0; i<h; i+=2){ a1= pixels[0]; b1= pixels[1]; a1 += b1; b1 += pixels[2]; block[0]= (a1+a0)>>2; block[1]= (b1+b0)>>2; pixels+=line_size; block +=line_size; a0= pixels[0]; b0= pixels[1] + 2; a0 += b0; b0 += pixels[2]; block[0]= (a1+a0)>>2; block[1]= (b1+b0)>>2; pixels+=line_size; block +=line_size; }}static __inline void put_pixels4_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ int i; const uint32_t a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); const uint32_t b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); uint32_t l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x02020202UL; uint32_t h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); uint32_t l1,h1; pixels+=line_size; for(i=0; i<h; i+=2){ uint32_t a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); uint32_t b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); l1= (a&0x03030303UL) + (b&0x03030303UL); h1= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); *((uint32_t*)block) = h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL); pixels+=line_size; block +=line_size; a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x02020202UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); *((uint32_t*)block) = h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL); pixels+=line_size; block +=line_size; }}static __inline void put_pixels8_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ int j; for(j=0; j<2; j++){ int i; const uint32_t a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); const uint32_t b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); uint32_t l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x02020202UL; uint32_t h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); uint32_t l1,h1; pixels+=line_size; for(i=0; i<h; i+=2){ uint32_t a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); uint32_t b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); l1= (a&0x03030303UL) + (b&0x03030303UL); h1= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); *((uint32_t*)block) = h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL); pixels+=line_size; block +=line_size; a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x02020202UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); *((uint32_t*)block) = h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL); pixels+=line_size; block +=line_size; } pixels+=4-line_size*(h+1); block +=4-line_size*h; }}static __inline void put_no_rnd_pixels8_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ int j; for(j=0; j<2; j++){ int i; const uint32_t a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); const uint32_t b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); uint32_t l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x01010101UL; uint32_t h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); uint32_t l1,h1; pixels+=line_size; for(i=0; i<h; i+=2){ uint32_t a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); uint32_t b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); l1= (a&0x03030303UL) + (b&0x03030303UL); h1= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); *((uint32_t*)block) = h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL); pixels+=line_size; block +=line_size; a= ( ((*(pixels))) | ((*(pixels+1))<< 8) | ((*(pixels+2))<< 16) | (*(pixels+3) <<24) ); b= ( ((*(pixels+1))) | ((*(pixels+1+1))<< 8) | ((*(pixels+1+2))<< 16) | (*(pixels+1+3) <<24) ); l0= (a&0x03030303UL) + (b&0x03030303UL) + 0x01010101UL; h0= ((a&0xFCFCFCFCUL)>>2) + ((b&0xFCFCFCFCUL)>>2); *((uint32_t*)block) = h0+h1+(((l0+l1)>>2)&0x0F0F0F0FUL); pixels+=line_size; block +=line_size; } pixels+=4-line_size*(h+1); block +=4-line_size*h; }}static void put_pixels16_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_pixels8_c(block , pixels , line_size, h); put_pixels8_c(block+8, pixels+8, line_size, h);}static void put_pixels16_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_pixels8_x2_c(block , pixels , line_size, h); put_pixels8_x2_c(block+8, pixels+8, line_size, h);}static void put_pixels16_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_pixels8_y2_c(block , pixels , line_size, h); put_pixels8_y2_c(block+8, pixels+8, line_size, h);}static void put_pixels16_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_pixels8_xy2_c(block , pixels , line_size, h); put_pixels8_xy2_c(block+8, pixels+8, line_size, h);}static void put_no_rnd_pixels16_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_pixels8_c(block , pixels , line_size, h); put_pixels8_c(block+8, pixels+8, line_size, h);}static void put_no_rnd_pixels16_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_no_rnd_pixels8_x2_c(block , pixels , line_size, h); put_no_rnd_pixels8_x2_c(block+8, pixels+8, line_size, h);}static void put_no_rnd_pixels16_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_no_rnd_pixels8_y2_c(block , pixels , line_size, h); put_no_rnd_pixels8_y2_c(block+8, pixels+8, line_size, h);}static void put_no_rnd_pixels16_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){ put_no_rnd_pixels8_xy2_c(block , pixels , line_size, h); put_no_rnd_pixels8_xy2_c(block+8, pixels+8, line_size, h);}
static void put_no_rnd_pixels16_l2_c(uint8_t *dst, const uint8_t *a, const uint8_t *b, int stride, int h){
put_no_rnd_pixels16_l2(dst, a, b, stride, stride, stride, h);
}
static void put_no_rnd_pixels8_l2_c(uint8_t *dst, const uint8_t *a, const uint8_t *b, int stride, int h){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -