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 + -
显示快捷键?