The open imaging DSP library
Loading...
Searching...
No Matches
formats.h
1
7#ifndef MPIX_FORMAT_H
8#define MPIX_FORMAT_H
9
10#include <stdlib.h>
11#include <stdint.h>
12
19#define MPIX_FOURCC_TO_STR(fourcc) \
20 ((char[5]){ \
21 (char)(((fourcc) >> 0) & 0xFF), \
22 (char)(((fourcc) >> 8) & 0xFF), \
23 (char)(((fourcc) >> 16) & 0xFF), \
24 (char)(((fourcc) >> 24) & 0xFF), \
25 '\0', \
26 })
27
36#define MPIX_FOURCC(a, b, c, d) \
37 ((uint32_t)(a) | ((uint32_t)(b) << 8) | ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24))
38
49uint8_t mpix_bits_per_pixel_cb(uint32_t fourcc);
50
64#define MPIX_FMT_RGB332 MPIX_FOURCC('R', 'G', 'B', '1')
65
75#define MPIX_FMT_RGB565 MPIX_FOURCC('R', 'G', 'B', 'P')
76
86#define MPIX_FMT_RGB565X MPIX_FOURCC('R', 'G', 'B', 'R')
87
95#define MPIX_FMT_RGB24 MPIX_FOURCC('R', 'G', 'B', '3')
96
114#define MPIX_FMT_YUV12 MPIX_FOURCC('Y', 'U', 'V', 'C')
115
121#define MPIX_FMT_YUV24 MPIX_FOURCC('Y', 'U', 'V', '3')
122
131#define MPIX_FMT_YUYV MPIX_FOURCC('Y', 'U', 'Y', 'V')
132
150#define MPIX_FMT_GREY MPIX_FOURCC('G', 'R', 'E', 'Y')
151
167#define MPIX_FMT_SBGGR8 MPIX_FOURCC('B', 'A', '8', '1')
168
176#define MPIX_FMT_SGBRG8 MPIX_FOURCC('G', 'B', 'R', 'G')
177
185#define MPIX_FMT_SGRBG8 MPIX_FOURCC('G', 'R', 'B', 'G')
186
194#define MPIX_FMT_SRGGB8 MPIX_FOURCC('R', 'G', 'G', 'B')
195
213#define MPIX_FMT_PALETTE1 MPIX_FOURCC('P', 'L', 'T', '1')
214
224#define MPIX_FMT_PALETTE2 MPIX_FOURCC('P', 'L', 'T', '2')
225
236#define MPIX_FMT_PALETTE3 MPIX_FOURCC('P', 'L', 'T', '3')
237
247#define MPIX_FMT_PALETTE4 MPIX_FOURCC('P', 'L', 'T', '4')
248
259#define MPIX_FMT_PALETTE5 MPIX_FOURCC('P', 'L', 'T', '5')
260
271#define MPIX_FMT_PALETTE6 MPIX_FOURCC('P', 'L', 'T', '6')
272
283#define MPIX_FMT_PALETTE7 MPIX_FOURCC('P', 'L', 'T', '7')
284
294#define MPIX_FMT_PALETTE8 MPIX_FOURCC('P', 'L', 'T', '8')
295
309#define MPIX_FMT_JPEG MPIX_FOURCC('J', 'P', 'E', 'G')
310
315#define MPIX_FMT_QOI MPIX_FOURCC('Q', 'O', 'I', 'F')
316
319static inline uint8_t mpix_bits_per_pixel(uint32_t fourcc)
320{
321 switch (fourcc) {
322
323 /* RGB formats */
324 case MPIX_FMT_RGB332:
325 return 8;
326 case MPIX_FMT_RGB565:
327 case MPIX_FMT_RGB565X:
328 return 16;
329 case MPIX_FMT_RGB24:
330 return 24;
331
332 /* YUV formats */
333 case MPIX_FMT_YUV12:
334 return 12;
335 case MPIX_FMT_YUV24:
336 return 24;
337 case MPIX_FMT_YUYV:
338 return 16;
339 case MPIX_FMT_GREY:
340 return 8;
341
342 /* Bayer formats */
343 case MPIX_FMT_SRGGB8:
344 case MPIX_FMT_SBGGR8:
345 case MPIX_FMT_SGBRG8:
346 case MPIX_FMT_SGRBG8:
347 return 8;
348
349 /* Indexed formats */
351 return 1;
353 return 2;
356 return 4;
361 return 8;
362
363 /* Compressed formats */
364 case MPIX_FMT_JPEG:
365 case MPIX_FMT_QOI:
366 return 0;
367 default:
368 return mpix_bits_per_pixel_cb(fourcc);
369 }
370}
371
372#endif
#define MPIX_FMT_PALETTE1
Definition formats.h:213
#define MPIX_FMT_RGB565
Definition formats.h:75
#define MPIX_FMT_RGB24
Definition formats.h:95
#define MPIX_FMT_PALETTE8
Definition formats.h:294
#define MPIX_FMT_PALETTE4
Definition formats.h:247
#define MPIX_FMT_SRGGB8
Definition formats.h:194
#define MPIX_FMT_YUV24
Definition formats.h:121
#define MPIX_FMT_GREY
Definition formats.h:150
uint8_t mpix_bits_per_pixel_cb(uint32_t fourcc)
Callback for the application to add custom pixel formats.
#define MPIX_FMT_PALETTE2
Definition formats.h:224
#define MPIX_FMT_PALETTE7
Definition formats.h:283
#define MPIX_FMT_PALETTE3
Definition formats.h:236
#define MPIX_FMT_JPEG
Definition formats.h:309
#define MPIX_FMT_YUV12
12-bit per pixel, 2 pixels every 3 bytes, 4-bit per component.
Definition formats.h:114
#define MPIX_FMT_RGB565X
Definition formats.h:86
#define MPIX_FMT_SGRBG8
Definition formats.h:185
#define MPIX_FMT_RGB332
Definition formats.h:64
#define MPIX_FMT_PALETTE6
Definition formats.h:271
#define MPIX_FMT_YUYV
Definition formats.h:131
#define MPIX_FMT_SGBRG8
Definition formats.h:176
#define MPIX_FMT_SBGGR8
Definition formats.h:167
#define MPIX_FMT_QOI
Definition formats.h:315
#define MPIX_FMT_PALETTE5
Definition formats.h:259