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;
83 }
else if (strcmp(mode,
"RGB_FLOAT") == 0) {
85 }
else if (strcmp(mode,
"BGR_FLOAT") == 0) {
93 colorspace_to_string(colorspace_t colorspace)
96 case RGB:
return "RGB";
97 case YUV411_PACKED:
return "YUV411_PACKED";
98 case YUV411_PLANAR:
return "YUV411_PLANAR";
99 case YUV420_PLANAR:
return "YUV420_PLANAR";
100 case YUY2:
return "YUY2";
101 case YVY2:
return "YVY2";
102 case BGR:
return "BGR";
103 case YUV422_PACKED:
return "YUV422_PACKED";
104 case YUV444_PACKED:
return "YUV444_PACKED";
105 case YVU444_PACKED:
return "YVU444_PACKED";
106 case YUV422_PLANAR:
return "YUV422_PLANAR";
107 case YUV422_PLANAR_QUARTER:
return "YUV422_PLANAR_QUARTER";
108 case GRAY8:
return "GRAY8";
109 case MONO8:
return "MONO8";
110 case RGB_WITH_ALPHA:
return "RGB_WITH_ALPHA";
111 case BGR_WITH_ALPHA:
return "BGR_WITH_ALPHA";
112 case BAYER_MOSAIC_RGGB:
return "BAYER_MOSAIC_RGGB";
113 case BAYER_MOSAIC_GBRG:
return "BAYER_MOSAIC_GBRG";
114 case BAYER_MOSAIC_GRBG:
return "BAYER_MOSAIC_GRBG";
115 case BAYER_MOSAIC_BGGR:
return "BAYER_MOSAIC_BGGR";
116 case RAW16:
return "RAW16";
117 case CARTESIAN_3D_FLOAT:
return "CARTESIAN_3D_FLOAT";
118 case CARTESIAN_3D_DOUBLE:
return "CARTESIAN_3D_DOUBLE";
119 case CARTESIAN_3D_FLOAT_RGB:
return "CARTESIAN_3D_FLOAT_RGB";
120 case RGB_PLANAR:
return "RGB_PLANAR";
121 case RGB_FLOAT:
return "RGB_FLOAT";
122 case BGR_FLOAT:
return "BGR_FLOAT";
123 default:
return "CS_UNKNOWN";
128 malloc_buffer(colorspace_t colorspace,
unsigned int width,
unsigned int height)
130 return (
unsigned char *)malloc(colorspace_buffer_size(colorspace, width, height));
134 colorspace_buffer_size(colorspace_t cspace,
unsigned int width,
unsigned int height)
141 case YVU444_PACKED:
return (width * height * 3);
144 case BGR_WITH_ALPHA:
return (width * height * 4);
148 case YUV420_PLANAR:
return (width * height * 3 / 2);
153 case YUV422_PLANAR:
return (width * height * 2);
156 case RAW16:
return (width * height * 2);
161 case BAYER_MOSAIC_RGGB:
162 case BAYER_MOSAIC_GBRG:
163 case BAYER_MOSAIC_GRBG:
164 case BAYER_MOSAIC_BGGR:
return (width * height);
166 case YUV422_PLANAR_QUARTER:
return (width * height) / 2;
168 case CARTESIAN_3D_FLOAT:
return (3 * (
size_t)width * height *
sizeof(
float));
170 case CARTESIAN_3D_DOUBLE:
return (3 * (
size_t)width * height *
sizeof(
double));
172 case CARTESIAN_3D_FLOAT_RGB:
return (4 * (
size_t)width * height *
sizeof(
float));
175 case BGR_FLOAT:
return (3 * (
size_t)width * height *
sizeof(
float));
178 case COLORSPACE_N:
return 0;