cmodel_permutation.h

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

H
1,907
字号
       output_v[j / 2] = UVJ_8_TO_UV_8(*input_v);}// ******************************** YUVJ420P -> ********************************static inline void transfer_YUVJ420P_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;}// ******************************** YUV422 -> *********************************static inline void transfer_YUV422_to_BGR565(uint16_t *(*output), 	unsigned char *input, 	int column){        int y, i_tmp;	int r, g, b;// Even pixel	if(!(column & 1))		y = input[0];	else// Odd pixel		y = input[2];	YUV_8_TO_RGB_24(y, input[1], input[3], r, g, b);        PACK_8_TO_BGR16(r, g, b, *(*output));        (*output)++;}static inline void transfer_YUV422_to_RGB565(uint16_t *(*output), 	unsigned char *input, 	int column){        int y, i_tmp;	int r, g, b;// Even pixel	if(!(column & 1))		y = input[0];	else// Odd pixel		y = input[2];	YUV_8_TO_RGB_24(y, input[1], input[3], r, g, b);        PACK_8_TO_RGB16(r, g, b, *(*output));        (*output)++;}static inline void transfer_YUV422_to_BGR888(unsigned char *(*output), 	unsigned char *input, 	int column){        int y, i_tmp;// Even pixel	if(!(column & 1))		y = input[0];	else// Odd pixel		y = input[2];	YUV_8_TO_RGB_24(y, input[1], input[3], (*output)[2], (*output)[1], (*output)[0]);        (*output) += 3;}static inline void transfer_YUV422_to_RGB888(unsigned char *(*output), 	unsigned char *input, 	int column){        int y, i_tmp;// Even pixel	if(!(column & 1))		y = input[0];	else// Odd pixel		y = input[2];	YUV_8_TO_RGB_24(y, input[1], input[3], (*output)[0], (*output)[1], (*output)[2]);        (*output) += 3;}static inline void transfer_YUV422_to_RGBA8888(unsigned char *(*output), 	unsigned char *input, 	int column){        int y, i_tmp;// Even pixel	if(!(column & 1))		y = input[0];	else// Odd pixel		y = input[2];	YUV_8_TO_RGB_24(y, input[1], input[3], (*output)[0], (*output)[1], (*output)[2]);	(*output)[3] = 0xff;	(*output) += 4;}static inline void transfer_YUV422_to_RGB161616(uint16_t *(*output), 	unsigned char *input, 	int column){        int y, i_tmp;// Even pixel	if(!(column & 1))		y = input[0];	else// Odd pixel		y = input[2];	YUV_8_TO_RGB_48(y, input[1], input[3], (*output)[0], (*output)[1], (*output)[2]);	(*output) += 3;}static inline void transfer_YUV422_to_RGBA16161616(uint16_t *(*output), 	unsigned char *input, 	int column){        int y, i_tmp;// Even pixel	if(!(column & 1))		y = input[0];	else// Odd pixel		y = input[2];	YUV_8_TO_RGB_24(y, input[1], input[3], (*output)[0], (*output)[1], (*output)[2]);	(*output)[3] = 0xffff;	(*output) += 4;}static inline void transfer_YUV422_to_YUVA8888(unsigned char *(*output), 	unsigned char *input, 	int column){// Even pixel	if(!(column & 1))		(*output)[0] = input[0];	else// Odd pixel		(*output)[0] = input[2];	(*output)[1] = input[1];	(*output)[2] = input[3];	(*output)[3] = 255;	(*output) += 4;}static inline void transfer_YUV422_to_BGR8888(unsigned char *(*output), 	unsigned char *input, 	int column){        int y, i_tmp;	// Even pixel	if(!(column & 1))		y = input[0];	else// Odd pixel		y = input[2];	YUV_8_TO_RGB_24(y, input[1], input[3], (*output)[2], (*output)[1], (*output)[0])	(*output) += 4;}static inline void transfer_YUV422_to_YUV422P(unsigned char *output_y, 	unsigned char *output_u, 	unsigned char *output_v, 	unsigned char *input,	int output_column){// Store U and V for even pixels only	if(!(output_column & 1))	{		output_y[output_column] = input[0];		output_u[output_column / 2] = input[1];		output_v[output_column / 2] = input[3];	}	else// Store Y and advance output for odd pixels only	{		output_y[output_column] = input[2];	}}static inline void transfer_YUV422_to_YUV420P(unsigned char *output_y, 	unsigned char *output_u, 	unsigned char *output_v, 	unsigned char *input,	int output_column,	int output_row){// Even column	if(!(output_column & 1))	{		output_y[output_column] = input[0];// Store U and V for even columns and even rows only		if(!(output_row & 1))		{			output_u[output_column / 2] = input[1];			output_v[output_column / 2] = input[3];		}	}	else// Odd column	{		output_y[output_column] = input[2];	}}static inline void transfer_YUV422_to_YUV422(unsigned char *(*output), 	unsigned char *input,	int j){// Store U and V for even pixels only	if(!(j & 1))	{		(*output)[0] = input[0];		(*output)[1] = input[1];		(*output)[3] = input[3];	}	else// Store Y and advance output for odd pixels only	{		(*output)[2] = input[2];		(*output) += 4;	}}static inline void transfer_YUV422_to_YUVJ422P(unsigned char *output_y, 	unsigned char *output_u, 	unsigned char *output_v, 	unsigned char *input,	int output_column){// Store U and V for even pixels only	if(!(output_column & 1))	{		output_y[output_column] = Y_8_TO_YJ_8(input[0]);		output_u[output_column / 2] = UV_8_TO_UVJ_8(input[1]);		output_v[output_column / 2] = UV_8_TO_UVJ_8(input[3]);	}	else// Store Y and advance output for odd pixels only	{		output_y[output_column] = Y_8_TO_YJ_8(input[2]);	}}// ******************************** Loops *************************************// #define TRANSFER_FRAME_HEAD \	for(i = 0; i < out_h; i++) \	{ \		unsigned char *output_row = output_rows[i]; \		unsigned char *input_row = input_rows[row_table[i]]; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_FRAME_HEAD_16 \	for(i = 0; i < out_h; i++) \	{ \                uint16_t *output_row = (uint16_t*)(output_rows[i]); \		unsigned char *input_row = input_rows[row_table[i]]; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_FRAME_TAIL \		} \	}#define TRANSFER_YUV420P_OUT_HEAD \	for(i = 0; i < out_h; i++) \	{ \		unsigned char *input_row = input_rows[row_table[i]]; \		unsigned char *output_y = output_rows[0] + i * out_rowspan; \		unsigned char *output_u = output_rows[1] + i / 2 * out_rowspan_uv; \		unsigned char *output_v = output_rows[2] + i / 2 * out_rowspan_uv; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV422P_OUT_HEAD \	for(i = 0; i < out_h; i++) \	{ \		unsigned char *input_row = input_rows[row_table[i]]; \		unsigned char *output_y = output_rows[0] + i * out_rowspan; \		unsigned char *output_u = output_rows[1] + i * out_rowspan_uv; \		unsigned char *output_v = output_rows[2] + i * out_rowspan_uv; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV422P16_OUT_HEAD  \	for(i = 0; i < out_h; i++) \	{ \		unsigned char *input_row = input_rows[row_table[i]]; \		unsigned char *output_y = output_rows[0] + i * out_rowspan; \		unsigned char *output_u = output_rows[1] + i * out_rowspan_uv; \		unsigned char *output_v = output_rows[2] + i * out_rowspan_uv; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV422P16_OUT_HEAD_16   \	for(i = 0; i < out_h; i++) \	{ \                unsigned char *input_row = input_rows[row_table[i]]; \		uint16_t *output_y = (uint16_t *)(output_rows[0] + i * out_rowspan); \		uint16_t *output_u = (uint16_t *)(output_rows[1] + i * out_rowspan_uv); \		uint16_t *output_v = (uint16_t *)(output_rows[2] + i * out_rowspan_uv); \                for(j = 0; j < out_w; j++)                        \		{#define TRANSFER_YUV411P_OUT_HEAD \	for(i = 0; i < out_h; i++) \	{ \		unsigned char *input_row = input_rows[row_table[i]]; \		unsigned char *output_y = output_rows[0] + i * out_rowspan; \		unsigned char *output_u = output_rows[1] + i * out_rowspan_uv; \		unsigned char *output_v = output_rows[2] + i * out_rowspan_uv; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV444P_OUT_HEAD \	for(i = 0; i < out_h; i++) \	{ \		unsigned char *input_row = input_rows[row_table[i]]; \		unsigned char *output_y = output_rows[0] + i * out_rowspan; \		unsigned char *output_u = output_rows[1] + i * out_rowspan_uv; \		unsigned char *output_v = output_rows[2] + i * out_rowspan_uv; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV444P16_OUT_HEAD_16   \	for(i = 0; i < out_h; i++) \	{ \                unsigned char *input_row = input_rows[row_table[i]]; \		uint16_t *output_y = (uint16_t *)(output_rows[0] + i * out_rowspan); \		uint16_t *output_u = (uint16_t *)(output_rows[1] + i * out_rowspan_uv); \		uint16_t *output_v = (uint16_t *)(output_rows[2] + i * out_rowspan_uv); \                for(j = 0; j < out_w; j++)                        \		{#define TRANSFER_YUV420P_IN_HEAD \	for(i = 0; i < out_h; i++) \	{ \		unsigned char *output_row = output_rows[i]; \		unsigned char *input_y = input_rows[0] + row_table[i] * in_rowspan; \		unsigned char *input_u = input_rows[1] + (row_table[i] / 2) * in_rowspan_uv; \		unsigned char *input_v = input_rows[2] + (row_table[i] / 2) * in_rowspan_uv; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV411P_IN_HEAD   \	for(i = 0; i < out_h; i++) \	{ \		unsigned char *output_row = output_rows[i]; \		unsigned char *input_y = input_rows[0] + row_table[i] * in_rowspan; \		unsigned char *input_u = input_rows[1] + row_table[i] * in_rowspan_uv; \		unsigned char *input_v = input_rows[2] + row_table[i] * in_rowspan_uv; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV420P_IN_HEAD_16 \	for(i = 0; i < out_h; i++) \	{ \                uint16_t *output_row = (uint16_t*)(output_rows[i]); \		unsigned char *input_y = input_rows[0] + row_table[i] * in_rowspan; \		unsigned char *input_u = input_rows[1] + (row_table[i] / 2) * in_rowspan_uv; \		unsigned char *input_v = input_rows[2] + (row_table[i] / 2) * in_rowspan_uv; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV422P_IN_HEAD \	for(i = 0; i < out_h; i++) \	{ \		unsigned char *output_row = output_rows[i]; \		unsigned char *input_y = input_rows[0] + row_table[i] * in_rowspan; \		unsigned char *input_u = input_rows[1] + row_table[i] * in_rowspan_uv; \		unsigned char *input_v = input_rows[2] + row_table[i] * in_rowspan_uv; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV422P16_IN_HEAD   \	for(i = 0; i < out_h; i++) \	{ \		uint8_t * output_row = output_rows[i]; \		uint16_t * input_y = (uint16_t *)(input_rows[0] + row_table[i] * in_rowspan); \		uint16_t * input_u = (uint16_t *)(input_rows[1] + row_table[i] * in_rowspan_uv); \		uint16_t * input_v = (uint16_t *)(input_rows[2] + row_table[i] * in_rowspan_uv); \                for(j = 0; j < out_w; j++)                        \		{#define TRANSFER_YUV422P_IN_HEAD_16   \	for(i = 0; i < out_h; i++) \	{ \                uint16_t *output_row = (uint16_t *)(output_rows[i]); \		unsigned char *input_y = input_rows[0] + row_table[i] * in_rowspan; \		unsigned char *input_u = input_rows[1] + row_table[i] * in_rowspan_uv; \		unsigned char *input_v = input_rows[2] + row_table[i] * in_rowspan_uv; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV422P16_IN_HEAD_16   \	for(i = 0; i < out_h; i++) \	{ \                uint16_t *output_row = (uint16_t *)(output_rows[i]); \		uint16_t * input_y = (uint16_t *)(input_rows[0] + row_table[i] * in_rowspan); \		uint16_t * input_u = (uint16_t *)(input_rows[1] + row_table[i] * in_rowspan_uv); \		uint16_t * input_v = (uint16_t *)(input_rows[2] + row_table[i] * in_rowspan_uv); \                for(j = 0; j < out_w; j++)                        \		{#define TRANSFER_YUV444P_IN_HEAD \	for(i = 0; i < out_h; i++) \	{ \		unsigned char *output_row = output_rows[i]; \		unsigned char *input_y = input_rows[0] + row_table[i] * in_rowspan; \		unsigned char *input_u = input_rows[1] + row_table[i] * in_rowspan_uv; \		unsigned char *input_v = input_rows[2] + row_table[i] * in_rowspan_uv; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV444P16_IN_HEAD \	for(i = 0; i < out_h; i++) \	{ \		unsigned char *output_row = output_rows[i]; \		uint16_t *input_y = (uint16_t *)(input_rows[0] + row_table[i] * in_rowspan); \		uint16_t *input_u = (uint16_t *)(input_rows[1] + row_table[i] * in_rowspan_uv); \		uint16_t *input_v = (uint16_t *)(input_rows[2] + row_table[i] * in_rowspan_uv); \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV444P_IN_HEAD_16   \	for(i = 0; i < out_h; i++) \	{ \                uint16_t *output_row = (uint16_t *)(output_rows[i]); \		unsigned char *input_y = input_rows[0] + row_table[i] * in_rowspan; \		unsigned char *input_u = input_rows[1] + row_table[i] * in_rowspan_uv; \		unsigned char *input_v = input_rows[2] + row_table[i] * in_rowspan_uv; \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV444P16_IN_HEAD_16 \	for(i = 0; i < out_h; i++) \	{ \                uint16_t *output_row = (uint16_t *)(output_rows[i]); \		uint16_t *input_y = (uint16_t *)(input_rows[0] + row_table[i] * in_rowspan); \		uint16_t *input_u = (uint16_t *)(input_rows[1] + row_table[i] * in_rowspan_uv); \		uint16_t *input_v = (uint16_t *)(input_rows[2] + row_table[i] * in_rowspan_uv); \		for(j = 0; j < out_w; j++) \		{#define TRANSFER_YUV422_IN_HEAD \	for(i = 0; i < out_h; i++) \	{ \		unsigned char *output_row = output_rows[i]; \		unsigned char *input_y = input_rows[0] + row_table[i] * in_rowspan; \		unsigned char *input_u = input_rows[1] + row_table[i] * in_rowspan_uv; \		unsigned char *input_v = input_rows[2] + row_table[i] * in_rowspan_uv; \		for(j = 0; j < out_w; j++) \		{

⌨️ 快捷键说明

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