cmodel_permutation.h

来自「这个库实现了录象功能」· C头文件 代码 · 共 1,907 行 · 第 1/4 页

H
1,907
字号
		a = input[3];	YUV_8_TO_RGB_24(input[0], input[1], input[2], r, g, b);        	r *= a;	g *= a;	b *= a;	(*output)[0] = RGB_16_TO_8(b);	(*output)[1] = RGB_16_TO_8(g);	(*output)[2] = RGB_16_TO_8(r);	(*output) += 3;}static inline void transfer_YUVA8888_to_RGB888(unsigned char *(*output), unsigned char *input){	int a, i_tmp;	int r, g, b;		a = input[3];	YUV_8_TO_RGB_24(input[0], input[1], input[2], r, g, b);        	r *= a;	g *= a;	b *= a;	(*output)[2] = RGB_16_TO_8(b);	(*output)[1] = RGB_16_TO_8(g);	(*output)[0] = RGB_16_TO_8(r);	(*output) += 3;}static inline void transfer_YUVA8888_to_RGBA8888(unsigned char *(*output), unsigned char *input){        int i_tmp;	YUV_8_TO_RGB_24(input[0], input[1], input[2], (*output)[0], (*output)[1], (*output)[2]);	(*output)[3] = input[3];	(*output) += 4;}static inline void transfer_YUVA8888_to_BGR8888(unsigned char *(*output), unsigned char *input){	int a, i_tmp;	int r, g, b;		a = input[3];	YUV_8_TO_RGB_24(input[0], input[1], input[2], r, g, b);        	r *= a;	g *= a;	b *= a;	(*output)[0] = RGB_16_TO_8(b);	(*output)[1] = RGB_16_TO_8(g);	(*output)[2] = RGB_16_TO_8(r);	(*output) += 4;}static inline void transfer_YUVA8888_to_YUVA8888(unsigned char *(*output), unsigned char *input){	(*output)[0] = input[0];	(*output)[1] = input[1];	(*output)[2] = input[2];	(*output)[3] = input[3];	(*output) += 4;}static inline void transfer_YUVA8888_to_YUV420P_YUV422P(unsigned char *output_y,          unsigned char *output_u,        unsigned char *output_v,        unsigned char *input,        int output_column){        int opacity = input[3];        int transparency = 0xff - opacity;         output_y[output_column] =     ((input[0] * opacity) >> 8) + 1;        output_u[output_column / 2] = ((input[1] * opacity + 0x80 * transparency) >> 8) + 1;        output_v[output_column / 2] = ((input[2] * opacity + 0x80 * transparency) >> 8) + 1;}static inline void transfer_YUVA8888_to_YUV444P(unsigned char *output_y,        unsigned char *output_u,        unsigned char *output_v,        unsigned char *input,        int output_column){        int opacity = input[3];        int transparency = 0xff - opacity;                                                                                        output_y[output_column] =     ((input[0] * opacity) >> 8) + 1;        output_u[output_column] = ((input[1] * opacity + 0x80 * transparency) >> 8) + 1;        output_v[output_column] = ((input[2] * opacity + 0x80 * transparency) >> 8) + 1;}static inline void transfer_YUVA8888_to_YUV422(unsigned char *(*output),        unsigned char *input,        int j){        int opacity = input[3];        int transparency = 0xff - opacity;// Store U and V for even pixels only        if(!(j & 1))        {                (*output)[0] = ((input[0] * opacity) >> 8) + 1;                (*output)[1] = ((input[1] * opacity + 0x80 * transparency) >> 8) + 1;                (*output)[3] = ((input[2] * opacity + 0x80 * transparency) >> 8) + 1;        }        else// Store Y and advance output for odd pixels only        {                (*output)[2] = ((input[0] * opacity) >> 8) + 1;                (*output) += 4;        }}// ******************************** YUV422P -> ********************************static inline void transfer_YUV422P_to_BGR565(uint16_t *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v){int r, g, b, i_tmp;	YUV_8_TO_RGB_24(*input_y, *input_u, *input_v, r, g, b);        PACK_8_TO_BGR16(r, g, b, *(*output))                 	(*output) ++;}static inline void transfer_YUV422P_to_RGB565(uint16_t *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v){	int r, g, b, i_tmp;	YUV_8_TO_RGB_24(*input_y, *input_u, *input_v, r, g, b);        PACK_8_TO_RGB16(r, g, b, *(*output))                 	(*output) ++;}static inline void transfer_YUV422P_to_BGR888(unsigned char *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v){        int i_tmp;	YUV_8_TO_RGB_24(*input_y, *input_u, *input_v, (*output)[2], (*output)[1], (*output)[0])	(*output) += 3;}static inline void transfer_YUV422P_to_BGR8888(unsigned char *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v){        int i_tmp;	YUV_8_TO_RGB_24(*input_y, *input_u, *input_v, (*output)[2], (*output)[1], (*output)[0])	(*output) += 4;}static inline void transfer_YUV422P_to_RGB888(unsigned char *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v){        int i_tmp;	YUV_8_TO_RGB_24(*input_y, *input_u, *input_v, (*output)[0], (*output)[1], (*output)[2])	(*output) += 3;}static inline void transfer_YUV422P_to_RGBA8888(unsigned char *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v){        int i_tmp;	YUV_8_TO_RGB_24(*input_y, *input_u, *input_v, (*output)[0], (*output)[1], (*output)[2])	(*output)[3] = 0xff;	(*output) += 4;}static inline void transfer_YUV422P_to_RGB161616(uint16_t *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v){        int i_tmp;	YUV_8_TO_RGB_48(*input_y, *input_u, *input_v, (*output)[0], (*output)[1], (*output)[2])	(*output) += 3;}static inline void transfer_YUV422P_to_RGBA16161616(uint16_t *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v){        int i_tmp;	YUV_8_TO_RGB_48(*input_y, *input_u, *input_v, (*output)[0], (*output)[1], (*output)[2])	(*output)[3] = 0xffff;	(*output) += 4;}static inline void transfer_YUV422P_to_YUVA8888(unsigned char *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v){	(*output)[0] = *input_y;	(*output)[1] = *input_u;	(*output)[2] = *input_v;	(*output)[3] = 0xff;	(*output) += 4;}static inline void transfer_YUV422P_to_YUV420P(unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v,	unsigned char *output_y,	unsigned char *output_u,	unsigned char *output_v,	int j){	output_y[j] = *input_y;	output_u[j / 2] = *input_u;	output_v[j / 2] = *input_v;}static inline void transfer_YUV422P_to_YUV444P(unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v,	unsigned char *output_y,	unsigned char *output_u,	unsigned char *output_v,	int j){	output_y[j] = *input_y;	output_u[j] = *input_u;	output_v[j] = *input_v;}static inline void transfer_YUV422P_to_YUVJ420P(unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v,	unsigned char *output_y,	unsigned char *output_u,	unsigned char *output_v,	int j){	output_y[j] = Y_8_TO_YJ_8(*input_y);	output_u[j / 2] = UV_8_TO_UVJ_8(*input_u);	output_v[j / 2] = UV_8_TO_UVJ_8(*input_v);}static inline void transfer_YUV422P_to_YUVJ422P(unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v,	unsigned char *output_y,	unsigned char *output_u,	unsigned char *output_v,	int j){	output_y[j] = Y_8_TO_YJ_8(*input_y);	output_u[j] = UV_8_TO_UVJ_8(*input_u);	output_v[j] = UV_8_TO_UVJ_8(*input_v);}static inline void transfer_YUV422P_to_YUV422(unsigned char *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v,	int j){// Store U and V for even pixels only	if(!(j & 1))	{		(*output)[1] = *input_u;		(*output)[3] = *input_v;		(*output)[0] = *input_y;	}	else// Store Y and advance output for odd pixels only	{		(*output)[2] = *input_y;		(*output) += 4;	}}// ******************************** YUV422P16 -> ********************************static inline void transfer_YUV422P16_to_RGB888(unsigned char *(*output), 	uint16_t *input_y,	uint16_t *input_u,	uint16_t *input_v){        int i_tmp;	YUV_16_TO_RGB_24(*input_y, *input_u, *input_v, (*output)[0], (*output)[1], (*output)[2])	(*output) += 3;}static inline void transfer_YUV422P16_to_RGB161616(uint16_t *(*output), 	uint16_t *input_y,	uint16_t *input_u,	uint16_t *input_v){        int i_tmp;	YUV_16_TO_RGB_48(*input_y, *input_u, *input_v, (*output)[0], (*output)[1], (*output)[2])	(*output) += 3;}static inline void transfer_YUV422P16_to_YUV420P16(uint16_t *input_y,                                                   uint16_t *input_u,                                                   uint16_t *input_v,                                                   uint16_t *output_y,                                                   uint16_t *output_u,                                                   uint16_t *output_v,                                                   int j){	output_y[j] = *input_y;	output_u[j / 2] = *input_u;	output_v[j / 2] = *input_v;}static inline void transfer_YUV422P16_to_YUV420P(uint16_t *input_y,                                                   uint16_t *input_u,                                                   uint16_t *input_v,                                                   uint8_t *output_y,                                                   uint8_t *output_u,                                                   uint8_t *output_v,                                                   int j){	output_y[j] = Y_16_TO_Y_8(*input_y);	output_u[j / 2] = UV_16_TO_UV_8(*input_u);	output_v[j / 2] = UV_16_TO_UV_8(*input_v);}// ******************************** YUV444P16 -> ********************************static inline void transfer_YUV444P16_to_RGB888(unsigned char *(*output), 	uint16_t *input_y,	uint16_t *input_u,	uint16_t *input_v){        int i_tmp;	YUV_16_TO_RGB_24(*input_y, *input_u, *input_v, (*output)[0], (*output)[1], (*output)[2])	(*output) += 3;}static inline void transfer_YUV444P16_to_RGB161616(uint16_t *(*output), 	uint16_t *input_y,	uint16_t *input_u,	uint16_t *input_v){        int i_tmp;	YUV_16_TO_RGB_48(*input_y, *input_u, *input_v, (*output)[0], (*output)[1], (*output)[2])	(*output) += 3;}static inline void transfer_YUV444P16_to_YUV444P16(uint16_t *input_y,	uint16_t *input_u,	uint16_t *input_v,	uint16_t *output_y,	uint16_t *output_u,	uint16_t *output_v,	int j){	output_y[j] = *input_y;	output_u[j] = *input_u;	output_v[j] = *input_v;}static inline void transfer_YUV444P16_to_YUV444P(uint16_t *input_y,	uint16_t *input_u,	uint16_t *input_v,	uint8_t *output_y,	uint8_t *output_u,	uint8_t *output_v,	int j){	output_y[j] = Y_16_TO_Y_8(*input_y);	output_u[j] = UV_16_TO_UV_8(*input_u);	output_v[j] = UV_16_TO_UV_8(*input_v);}// ******************************** YUV411P -> ********************************static inline void transfer_YUV411P_to_RGB888(unsigned char *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v){        int i_tmp;	YUV_8_TO_RGB_24(*input_y, *input_u, *input_v, (*output)[0], (*output)[1], (*output)[2])	(*output) += 3;}// ******************************** YUV444P -> ********************************static inline void transfer_YUV444P_to_YUV444P(unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v,	unsigned char *output_y,	unsigned char *output_u,	unsigned char *output_v,	int j){	output_y[j] = *input_y;	output_u[j] = *input_u;	output_v[j] = *input_v;}// ******************************** YUVJ444P -> ********************************static inline void transfer_YUVJ444P_to_RGB888(unsigned char *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v){        int i_tmp;	YUVJ_8_TO_RGB_24(*input_y, *input_u, *input_v, (*output)[0], (*output)[1], (*output)[2])	(*output) += 3;}// ******************************** YUVJ422P -> ********************************static inline void transfer_YUVJ422P_to_RGB888(unsigned char *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v){        int i_tmp;	YUVJ_8_TO_RGB_24(*input_y, *input_u, *input_v, (*output)[0], (*output)[1], (*output)[2])	(*output) += 3;}static inline void transfer_YUVJ422P_to_YUV422(unsigned char *(*output), 	unsigned char *input_y,	unsigned char *input_u,	unsigned char *input_v,	int j){// Store U and V for even pixels only	if(!(j & 1))	{		(*output)[1] = UVJ_8_TO_UV_8(*input_u);		(*output)[3] = UVJ_8_TO_UV_8(*input_v);		(*output)[0] = YJ_8_TO_Y_8(*input_y);	}	else// Store Y and advance output for odd pixels only	{		(*output)[2] = YJ_8_TO_Y_8(*input_y);		(*output) += 4;	}}static inline void transfer_YUVJ422P_to_YUV420P(unsigned char *input_y,       unsigned char *input_u,       unsigned char *input_v,       unsigned char *output_y,       unsigned char *output_u,       unsigned char *output_v,       int j){       output_y[j] = YJ_8_TO_Y_8(*input_y);       output_u[j / 2] = UVJ_8_TO_UV_8(*input_u);

⌨️ 快捷键说明

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