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

📄 rgb2rgb.c

📁 video linux conference
💻 C
📖 第 1 页 / 共 2 页
字号:
		rgb32tobgr32= rgb32tobgr32_C;		rgb32tobgr16= rgb32tobgr16_C;		rgb32tobgr15= rgb32tobgr15_C;		yv12toyuy2= yv12toyuy2_C;		yv12touyvy= yv12touyvy_C;		yuv422ptoyuy2= yuv422ptoyuy2_C;		yuy2toyv12= yuy2toyv12_C;//		uyvytoyv12= uyvytoyv12_C;//		yvu9toyv12= yvu9toyv12_C;		planar2x= planar2x_C;		rgb24toyv12= rgb24toyv12_C;		interleaveBytes= interleaveBytes_C;		vu9_to_vu12= vu9_to_vu12_C;		yvu9_to_yuy2= yvu9_to_yuy2_C;	}}/** * Pallete is assumed to contain bgr32 */void palette8torgb32(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette){	unsigned i;/*	for(i=0; i<num_pixels; i++)		((unsigned *)dst)[i] = ((unsigned *)palette)[ src[i] ];*/	for(i=0; i<num_pixels; i++)	{		//FIXME slow?		dst[0]= palette[ src[i]*4+2 ];		dst[1]= palette[ src[i]*4+1 ];		dst[2]= palette[ src[i]*4+0 ];//		dst[3]= 0; /* do we need this cleansing? */		dst+= 4;	}}void palette8tobgr32(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette){	unsigned i;	for(i=0; i<num_pixels; i++)	{		//FIXME slow?		dst[0]= palette[ src[i]*4+0 ];		dst[1]= palette[ src[i]*4+1 ];		dst[2]= palette[ src[i]*4+2 ];//		dst[3]= 0; /* do we need this cleansing? */		dst+= 4;	}}/** * Pallete is assumed to contain bgr32 */void palette8torgb24(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette){	unsigned i;/*	writes 1 byte o much and might cause alignment issues on some architectures?	for(i=0; i<num_pixels; i++)		((unsigned *)(&dst[i*3])) = ((unsigned *)palette)[ src[i] ];*/	for(i=0; i<num_pixels; i++)	{		//FIXME slow?		dst[0]= palette[ src[i]*4+2 ];		dst[1]= palette[ src[i]*4+1 ];		dst[2]= palette[ src[i]*4+0 ];		dst+= 3;	}}void palette8tobgr24(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette){	unsigned i;/*	writes 1 byte o much and might cause alignment issues on some architectures?	for(i=0; i<num_pixels; i++)		((unsigned *)(&dst[i*3])) = ((unsigned *)palette)[ src[i] ];*/	for(i=0; i<num_pixels; i++)	{		//FIXME slow?		dst[0]= palette[ src[i]*4+0 ];		dst[1]= palette[ src[i]*4+1 ];		dst[2]= palette[ src[i]*4+2 ];		dst+= 3;	}}/** * Palette is assumed to contain bgr16, see rgb32to16 to convert the palette */void palette8torgb16(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette){	unsigned i;	for(i=0; i<num_pixels; i++)		((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];}void palette8tobgr16(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette){	unsigned i;	for(i=0; i<num_pixels; i++)		((uint16_t *)dst)[i] = bswap_16(((uint16_t *)palette)[ src[i] ]);}/** * Pallete is assumed to contain bgr15, see rgb32to15 to convert the palette */void palette8torgb15(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette){	unsigned i;	for(i=0; i<num_pixels; i++)		((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];}void palette8tobgr15(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette){	unsigned i;	for(i=0; i<num_pixels; i++)		((uint16_t *)dst)[i] = bswap_16(((uint16_t *)palette)[ src[i] ]);}void rgb32tobgr24(const uint8_t *src, uint8_t *dst, unsigned int src_size){	unsigned i;	unsigned num_pixels = src_size >> 2;	for(i=0; i<num_pixels; i++)	{		dst[3*i + 0] = src[4*i + 2];		dst[3*i + 1] = src[4*i + 1];		dst[3*i + 2] = src[4*i + 0];	}}void rgb24tobgr32(const uint8_t *src, uint8_t *dst, unsigned int src_size){	unsigned i;	for(i=0; 3*i<src_size; i++)	{		dst[4*i + 0] = src[3*i + 2];		dst[4*i + 1] = src[3*i + 1];		dst[4*i + 2] = src[3*i + 0];		dst[4*i + 3] = 0;	}}void rgb16tobgr32(const uint8_t *src, uint8_t *dst, unsigned int src_size){	const uint16_t *end;	uint8_t *d = (uint8_t *)dst;	const uint16_t *s = (uint16_t *)src;	end = s + src_size/2;	while(s < end)	{		register uint16_t bgr;		bgr = *s++;		*d++ = (bgr&0xF800)>>8;		*d++ = (bgr&0x7E0)>>3;		*d++ = (bgr&0x1F)<<3;		*d++ = 0;	}}void rgb16tobgr24(const uint8_t *src, uint8_t *dst, unsigned int src_size){	const uint16_t *end;	uint8_t *d = (uint8_t *)dst;	const uint16_t *s = (const uint16_t *)src;	end = s + src_size/2;	while(s < end)	{		register uint16_t bgr;		bgr = *s++;		*d++ = (bgr&0xF800)>>8;		*d++ = (bgr&0x7E0)>>3;		*d++ = (bgr&0x1F)<<3;	}}void rgb16tobgr16(const uint8_t *src, uint8_t *dst, unsigned int src_size){	unsigned i;	unsigned num_pixels = src_size >> 1;		for(i=0; i<num_pixels; i++)	{	    unsigned b,g,r;	    register uint16_t rgb;	    rgb = src[2*i];	    r = rgb&0x1F;	    g = (rgb&0x7E0)>>5;	    b = (rgb&0xF800)>>11;	    dst[2*i] = (b&0x1F) | ((g&0x3F)<<5) | ((r&0x1F)<<11);	}}void rgb16tobgr15(const uint8_t *src, uint8_t *dst, unsigned int src_size){	unsigned i;	unsigned num_pixels = src_size >> 1;		for(i=0; i<num_pixels; i++)	{	    unsigned b,g,r;	    register uint16_t rgb;	    rgb = src[2*i];	    r = rgb&0x1F;	    g = (rgb&0x7E0)>>5;	    b = (rgb&0xF800)>>11;	    dst[2*i] = (b&0x1F) | ((g&0x1F)<<5) | ((r&0x1F)<<10);	}}void rgb15tobgr32(const uint8_t *src, uint8_t *dst, unsigned int src_size){	const uint16_t *end;	uint8_t *d = (uint8_t *)dst;	const uint16_t *s = (const uint16_t *)src;	end = s + src_size/2;	while(s < end)	{		register uint16_t bgr;		bgr = *s++;		*d++ = (bgr&0x7C00)>>7;		*d++ = (bgr&0x3E0)>>2;		*d++ = (bgr&0x1F)<<3;		*d++ = 0;	}}void rgb15tobgr24(const uint8_t *src, uint8_t *dst, unsigned int src_size){	const uint16_t *end;	uint8_t *d = (uint8_t *)dst;	const uint16_t *s = (uint16_t *)src;	end = s + src_size/2;	while(s < end)	{		register uint16_t bgr;		bgr = *s++;		*d++ = (bgr&0x7C00)>>7;		*d++ = (bgr&0x3E0)>>2;		*d++ = (bgr&0x1F)<<3;	}}void rgb15tobgr16(const uint8_t *src, uint8_t *dst, unsigned int src_size){	unsigned i;	unsigned num_pixels = src_size >> 1;		for(i=0; i<num_pixels; i++)	{	    unsigned b,g,r;	    register uint16_t rgb;	    rgb = src[2*i];	    r = rgb&0x1F;	    g = (rgb&0x3E0)>>5;	    b = (rgb&0x7C00)>>10;	    dst[2*i] = (b&0x1F) | ((g&0x3F)<<5) | ((r&0x1F)<<11);	}}void rgb15tobgr15(const uint8_t *src, uint8_t *dst, unsigned int src_size){	unsigned i;	unsigned num_pixels = src_size >> 1;		for(i=0; i<num_pixels; i++)	{	    unsigned b,g,r;	    register uint16_t rgb;	    rgb = src[2*i];	    r = rgb&0x1F;	    g = (rgb&0x3E0)>>5;	    b = (rgb&0x7C00)>>10;	    dst[2*i] = (b&0x1F) | ((g&0x1F)<<5) | ((r&0x1F)<<10);	}}void rgb8tobgr8(const uint8_t *src, uint8_t *dst, unsigned int src_size){	unsigned i;	unsigned num_pixels = src_size;	for(i=0; i<num_pixels; i++)	{	    unsigned b,g,r;	    register uint8_t rgb;	    rgb = src[i];	    r = (rgb&0x07);	    g = (rgb&0x38)>>3;	    b = (rgb&0xC0)>>6;	    dst[i] = ((b<<1)&0x07) | ((g&0x07)<<3) | ((r&0x03)<<6);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -