25 #include <fvutils/color/colorspaces.h> 30 namespace firevision {
33 colorspace_by_name(
const char *mode)
35 if (strcmp(mode,
"RGB") == 0) {
37 }
else if (strcmp(mode,
"YUV411_PACKED") == 0) {
39 }
else if (strcmp(mode,
"YUV411_PLANAR") == 0) {
41 }
else if (strcmp(mode,
"YUV420_PLANAR") == 0) {
43 }
else if (strcmp(mode,
"YUY2") == 0) {
45 }
else if (strcmp(mode,
"YVY2") == 0) {
47 }
else if (strcmp(mode,
"RGB_PLANAR") == 0) {
49 }
else if (strcmp(mode,
"BGR") == 0) {
51 }
else if (strcmp(mode,
"YUV422_PACKED") == 0) {
53 }
else if (strcmp(mode,
"YUV444_PACKED") == 0) {
55 }
else if (strcmp(mode,
"YVU444_PACKED") == 0) {
57 }
else if (strcmp(mode,
"YUV422_PLANAR") == 0) {
59 }
else if (strcmp(mode,
"YUV422_PLANAR_QUARTER") == 0) {
60 return YUV422_PLANAR_QUARTER;
61 }
else if (strcmp(mode,
"GRAY8") == 0) {
63 }
else if (strcmp(mode,
"RGB_WITH_ALPHA") == 0) {
64 return RGB_WITH_ALPHA;
65 }
else if (strcmp(mode,
"BGR_WITH_ALPHA") == 0) {
66 return BGR_WITH_ALPHA;
67 }
else if (strcmp(mode,
"BAYER_MOSAIC_RGGB") == 0) {
68 return BAYER_MOSAIC_RGGB;
69 }
else if (strcmp(mode,
"BAYER_MOSAIC_GBRG") == 0) {
70 return BAYER_MOSAIC_GBRG;
71 }
else if (strcmp(mode,
"BAYER_MOSAIC_GRBG") == 0) {
72 return BAYER_MOSAIC_GRBG;
73 }
else if (strcmp(mode,
"BAYER_MOSAIC_BGGR") == 0) {
74 return BAYER_MOSAIC_BGGR;
75 }
else if (strcmp(mode,
"RAW16") == 0) {
77 }
else if (strcmp(mode,
"CARTESIAN_3D_FLOAT") == 0) {
78 return CARTESIAN_3D_FLOAT;
79 }
else if (strcmp(mode,
"CARTESIAN_3D_DOUBLE") == 0) {
80 return CARTESIAN_3D_DOUBLE;
81 }
else if (strcmp(mode,
"CARTESIAN_3D_FLOAT_RGB") == 0) {
82 return CARTESIAN_3D_FLOAT_RGB;
89 colorspace_to_string(colorspace_t colorspace)
92 case RGB:
return "RGB";
93 case YUV411_PACKED:
return "YUV411_PACKED";
94 case YUV411_PLANAR:
return "YUV411_PLANAR";
95 case YUV420_PLANAR:
return "YUV420_PLANAR";
96 case YUY2:
return "YUY2";
97 case YVY2:
return "YVY2";
98 case BGR:
return "BGR";
99 case YUV422_PACKED:
return "YUV422_PACKED";
100 case YUV444_PACKED:
return "YUV444_PACKED";
101 case YVU444_PACKED:
return "YVU444_PACKED";
102 case YUV422_PLANAR:
return "YUV422_PLANAR";
103 case YUV422_PLANAR_QUARTER:
return "YUV422_PLANAR_QUARTER";
104 case GRAY8:
return "GRAY8";
105 case MONO8:
return "MONO8";
106 case RGB_WITH_ALPHA:
return "RGB_WITH_ALPHA";
107 case BGR_WITH_ALPHA:
return "BGR_WITH_ALPHA";
108 case BAYER_MOSAIC_RGGB:
return "BAYER_MOSAIC_RGGB";
109 case BAYER_MOSAIC_GBRG:
return "BAYER_MOSAIC_GBRG";
110 case BAYER_MOSAIC_GRBG:
return "BAYER_MOSAIC_GRBG";
111 case BAYER_MOSAIC_BGGR:
return "BAYER_MOSAIC_BGGR";
112 case RAW16:
return "RAW16";
113 case CARTESIAN_3D_FLOAT:
return "CARTESIAN_3D_FLOAT";
114 case CARTESIAN_3D_DOUBLE:
return "CARTESIAN_3D_DOUBLE";
115 case CARTESIAN_3D_FLOAT_RGB:
return "CARTESIAN_3D_FLOAT_RGB";
116 case RGB_PLANAR:
return "RGB_PLANAR";
117 default:
return "CS_UNKNOWN";
122 malloc_buffer(colorspace_t colorspace,
unsigned int width,
unsigned int height)
124 return (
unsigned char *)malloc(colorspace_buffer_size(colorspace, width, height));
128 colorspace_buffer_size(colorspace_t cspace,
unsigned int width,
unsigned int height)
135 case YVU444_PACKED:
return (width * height * 3);
138 case BGR_WITH_ALPHA:
return (width * height * 4);
142 case YUV420_PLANAR:
return (width * height * 3 / 2);
147 case YUV422_PLANAR:
return (width * height * 2);
150 case RAW16:
return (width * height * 2);
155 case BAYER_MOSAIC_RGGB:
156 case BAYER_MOSAIC_GBRG:
157 case BAYER_MOSAIC_GRBG:
158 case BAYER_MOSAIC_BGGR:
return (width * height);
160 case YUV422_PLANAR_QUARTER:
return (width * height) / 2;
162 case CARTESIAN_3D_FLOAT:
return (3 * (
size_t)width * height *
sizeof(
float));
164 case CARTESIAN_3D_DOUBLE:
return (3 * (
size_t)width * height *
sizeof(
double));
166 case CARTESIAN_3D_FLOAT_RGB:
return (4 * (
size_t)width * height *
sizeof(
float));
169 case COLORSPACE_N:
return 0;