⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsputil.c

📁 手机端的H264源码
💻 C
📖 第 1 页 / 共 5 页
字号:

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 + -