1#![allow(clippy::upper_case_acronyms)]
6
7use std::convert::TryFrom;
8
9#[allow(clippy::enum_glob_use)]
10use PixelFormat::*;
11
12#[allow(non_camel_case_types)]
13#[derive(Debug, Clone, Copy, PartialEq, Eq)]
14pub enum PixelFormat {
15 Mono8,
17
18 Mono8s,
20
21 Mono10,
23
24 Mono10Packed,
26
27 Mono12,
29
30 Mono12Packed,
32
33 Mono16,
35
36 BayerGR8,
38
39 BayerRG8,
41
42 BayerGB8,
44
45 BayerBG8,
47
48 BayerGR10,
50
51 BayerRG10,
53
54 BayerGB10,
56
57 BayerBG10,
59
60 BayerGR12,
62
63 BayerRG12,
65
66 BayerGB12,
68
69 BayerBG12,
71
72 RGB8,
74
75 BGR8,
77
78 RGBa8,
80
81 BGRa8,
83
84 RGB10,
86
87 BGR10,
89
90 RGB12,
92
93 BGR12,
95
96 YUV8_UYV,
98
99 RGB8_Planar,
101
102 RGB10_Planar,
104
105 RGB12_Planar,
107
108 RGB16_Planar,
110
111 Mono14,
113
114 BayerGR10Packed,
116
117 BayerRG10Packed,
119
120 BayerGB10Packed,
122
123 BayerBG10Packed,
125
126 BayerGR12Packed,
128
129 BayerRG12Packed,
131
132 BayerGB12Packed,
134
135 BayerBG12Packed,
137
138 BayerGR16,
140
141 BayerRG16,
143
144 BayerGB16,
146
147 BayerBG16,
149
150 YUV422_8,
152
153 RGB16,
155
156 RGB12V1Packed,
158
159 RGB565p,
161
162 BGR565p,
164
165 Mono1p,
167
168 Mono2p,
170
171 Mono4p,
173
174 YCbCr8_CbYCr,
176
177 YCbCr422_8,
179
180 YCbCr411_8_CbYYCrYY,
182
183 YCbCr601_8_CbYCr,
185
186 YCbCr601_422_8,
188
189 YCbCr601_411_8_CbYYCrYY,
191
192 YCbCr709_8_CbYCr,
194
195 YCbCr709_422_8,
197
198 YCbCr709_411_8_CbYYCrYY,
200
201 YCbCr422_8_CbYCrY,
203
204 YCbCr601_422_8_CbYCrY,
206
207 YCbCr709_422_8_CbYCrY,
209
210 Mono10p,
212
213 Mono12p,
215
216 BGR10p,
218
219 BGR12p,
221
222 BGR14,
224
225 BGR16,
227
228 BGRa10,
230
231 BGRa10p,
233
234 BGRa12,
236
237 BGRa12p,
239
240 BGRa14,
242
243 BGRa16,
245
246 BayerBG10p,
248
249 BayerBG12p,
251
252 BayerGB10p,
254
255 BayerGB12p,
257
258 BayerGR10p,
260
261 BayerGR12p,
263
264 BayerRG10p,
266
267 BayerRG12p,
269
270 YCbCr411_8,
272
273 YCbCr8,
275
276 RGB10p,
278
279 RGB12p,
281
282 RGB14,
284
285 RGBa10,
287
288 RGBa10p,
290
291 RGBa12,
293
294 RGBa12p,
296
297 RGBa14,
299
300 RGBa16,
302
303 YCbCr422_10,
305
306 YCbCr422_12,
308
309 SCF1WBWG8,
311
312 SCF1WBWG10,
314
315 SCF1WBWG10p,
317
318 SCF1WBWG12,
320
321 SCF1WBWG12p,
323
324 SCF1WBWG14,
326
327 SCF1WBWG16,
329
330 SCF1WGWB8,
332
333 SCF1WGWB10,
335
336 SCF1WGWB10p,
338
339 SCF1WGWB12,
341
342 SCF1WGWB12p,
344
345 SCF1WGWB14,
347
348 SCF1WGWB16,
350
351 SCF1WGWR8,
353
354 SCF1WGWR10,
356
357 SCF1WGWR10p,
359
360 SCF1WGWR12,
362
363 SCF1WGWR12p,
365
366 SCF1WGWR14,
368
369 SCF1WGWR16,
371
372 SCF1WRWG8,
374
375 SCF1WRWG10,
377
378 SCF1WRWG10p,
380
381 SCF1WRWG12,
383
384 SCF1WRWG12p,
386
387 SCF1WRWG14,
389
390 SCF1WRWG16,
392
393 YCbCr10_CbYCr,
395
396 YCbCr10p_CbYCr,
398
399 YCbCr12_CbYCr,
401
402 YCbCr12p_CbYCr,
404
405 YCbCr422_10p,
407
408 YCbCr422_12p,
410
411 YCbCr601_10_CbYCr,
413
414 YCbCr601_10p_CbYCr,
416
417 YCbCr601_12_CbYCr,
419
420 YCbCr601_12p_CbYCr,
422
423 YCbCr601_422_10,
425
426 YCbCr601_422_10p,
428
429 YCbCr601_422_12,
431
432 YCbCr601_422_12p,
434
435 YCbCr709_10_CbYCr,
437
438 YCbCr709_10p_CbYCr,
440
441 YCbCr709_12_CbYCr,
443
444 YCbCr709_12p_CbYCr,
446
447 YCbCr709_422_10,
449
450 YCbCr709_422_10p,
452
453 YCbCr709_422_12,
455
456 YCbCr709_422_12p,
458
459 YCbCr422_10_CbYCrY,
461
462 YCbCr422_10p_CbYCrY,
464
465 YCbCr422_12_CbYCrY,
467
468 YCbCr422_12p_CbYCrY,
470
471 YCbCr601_422_10_CbYCrY,
473
474 YCbCr601_422_10p_CbYCrY,
476
477 YCbCr601_422_12_CbYCrY,
479
480 YCbCr601_422_12p_CbYCrY,
482
483 YCbCr709_422_10_CbYCrY,
485
486 YCbCr709_422_10p_CbYCrY,
488
489 YCbCr709_422_12_CbYCrY,
491
492 YCbCr709_422_12p_CbYCrY,
494
495 BiColorRGBG8,
497
498 BiColorBGRG8,
500
501 BiColorRGBG10,
503
504 BiColorRGBG10p,
506
507 BiColorBGRG10,
509
510 BiColorBGRG10p,
512
513 BiColorRGBG12,
515
516 BiColorRGBG12p,
518
519 BiColorBGRG12,
521
522 BiColorBGRG12p,
524
525 Coord3D_A8,
527
528 Coord3D_B8,
530
531 Coord3D_C8,
533
534 Coord3D_ABC8,
536
537 Coord3D_ABC8_Planar,
539
540 Coord3D_AC8,
542
543 Coord3D_AC8_Planar,
545
546 Coord3D_A16,
548
549 Coord3D_B16,
551
552 Coord3D_C16,
554
555 Coord3D_ABC16,
557
558 Coord3D_ABC16_Planar,
560
561 Coord3D_AC16,
563
564 Coord3D_AC16_Planar,
566
567 Coord3D_A32f,
569
570 Coord3D_B32f,
572
573 Coord3D_C32f,
575
576 Coord3D_ABC32f,
578
579 Coord3D_ABC32f_Planar,
581
582 Coord3D_AC32f,
584
585 Coord3D_AC32f_Planar,
587
588 Confidence1,
590
591 Confidence1p,
593
594 Confidence8,
596
597 Confidence16,
599
600 Confidence32f,
602
603 R8,
605
606 R10,
608
609 R12,
611
612 R16,
614
615 G8,
617
618 G10,
620
621 G12,
623
624 G16,
626
627 B8,
629
630 B10,
632
633 B12,
635
636 B16,
638
639 Coord3D_A10p,
641
642 Coord3D_B10p,
644
645 Coord3D_C10p,
647
648 Coord3D_A12p,
650
651 Coord3D_B12p,
653
654 Coord3D_C12p,
656
657 Coord3D_ABC10p,
659
660 Coord3D_ABC10p_Planar,
662
663 Coord3D_ABC12p,
665
666 Coord3D_ABC12p_Planar,
668
669 Coord3D_AC10p,
671
672 Coord3D_AC10p_Planar,
674
675 Coord3D_AC12p,
677
678 Coord3D_AC12p_Planar,
680
681 YCbCr2020_8_CbYCr,
683
684 YCbCr2020_10_CbYCr,
686
687 YCbCr2020_10p_CbYCr,
689
690 YCbCr2020_12_CbYCr,
692
693 YCbCr2020_12p_CbYCr,
695
696 YCbCr2020_411_8_CbYYCrYY,
698
699 YCbCr2020_422_8,
701
702 YCbCr2020_422_8_CbYCrY,
704
705 YCbCr2020_422_10,
707
708 YCbCr2020_422_10_CbYCrY,
710
711 YCbCr2020_422_10p,
713
714 YCbCr2020_422_10p_CbYCrY,
716
717 YCbCr2020_422_12,
719
720 YCbCr2020_422_12_CbYCrY,
722
723 YCbCr2020_422_12p,
725
726 YCbCr2020_422_12p_CbYCrY,
728
729 Mono14p,
731
732 BayerGR14p,
734
735 BayerRG14p,
737
738 BayerGB14p,
740
741 BayerBG14p,
743
744 BayerGR14,
746
747 BayerRG14,
749
750 BayerGB14,
752
753 BayerBG14,
755
756 BayerGR4p,
758
759 BayerRG4p,
761
762 BayerGB4p,
764
765 BayerBG4p,
767
768 Mono32,
770
771 YCbCr420_8_YY_CbCr_Semiplanar,
773
774 YCbCr422_8_YY_CbCr_Semiplanar,
776
777 YCbCr420_8_YY_CrCb_Semiplanar,
779
780 YCbCr422_8_YY_CrCb_Semiplanar,
782
783 Data8,
785
786 Data8s,
788
789 Data16,
791
792 Data16s,
794
795 Data32,
797
798 Data32s,
800
801 Data32f,
803
804 Data64,
806
807 Data64s,
809
810 Data64f,
812
813 BayerRG10g40IDS,
817
818 BayerRG12g24IDS,
822
823 BayerGB10g40IDS,
827
828 BayerGB12g24IDS,
832
833 BayerGR10g40IDS,
837
838 BayerGR12g24IDS,
842
843 BayerBG10g40IDS,
847
848 BayerBG12g24IDS,
852
853 Mono10g40IDS,
857
858 Mono12g24IDS,
862}
863
864impl TryFrom<u32> for PixelFormat {
865 type Error = String;
866
867 #[allow(clippy::too_many_lines)]
868 fn try_from(value: u32) -> Result<Self, Self::Error> {
869 match value {
870 0x0108_0001 => Ok(Mono8),
871 0x0108_0002 => Ok(Mono8s),
872 0x0110_0003 => Ok(Mono10),
873 0x010C_0004 => Ok(Mono10Packed),
874 0x0110_0005 => Ok(Mono12),
875 0x010C_0006 => Ok(Mono12Packed),
876 0x0110_0007 => Ok(Mono16),
877 0x0108_0008 => Ok(BayerGR8),
878 0x0108_0009 => Ok(BayerRG8),
879 0x0108_000A => Ok(BayerGB8),
880 0x0108_000B => Ok(BayerBG8),
881 0x0110_000C => Ok(BayerGR10),
882 0x0110_000D => Ok(BayerRG10),
883 0x0110_000E => Ok(BayerGB10),
884 0x0110_000F => Ok(BayerBG10),
885 0x0110_0010 => Ok(BayerGR12),
886 0x0110_0011 => Ok(BayerRG12),
887 0x0110_0012 => Ok(BayerGB12),
888 0x0110_0013 => Ok(BayerBG12),
889 0x0218_0014 => Ok(RGB8),
890 0x0218_0015 => Ok(BGR8),
891 0x0220_0016 => Ok(RGBa8),
892 0x0220_0017 => Ok(BGRa8),
893 0x0230_0018 => Ok(RGB10),
894 0x0230_0019 => Ok(BGR10),
895 0x0230_001A => Ok(RGB12),
896 0x0230_001B => Ok(BGR12),
897 0x0218_0020 => Ok(YUV8_UYV),
898 0x0218_0021 => Ok(RGB8_Planar),
899 0x0230_0022 => Ok(RGB10_Planar),
900 0x0230_0023 => Ok(RGB12_Planar),
901 0x0230_0024 => Ok(RGB16_Planar),
902 0x0110_0025 => Ok(Mono14),
903 0x010C_0026 => Ok(BayerGR10Packed),
904 0x010C_0027 => Ok(BayerRG10Packed),
905 0x010C_0028 => Ok(BayerGB10Packed),
906 0x010C_0029 => Ok(BayerBG10Packed),
907 0x010C_002A => Ok(BayerGR12Packed),
908 0x010C_002B => Ok(BayerRG12Packed),
909 0x010C_002C => Ok(BayerGB12Packed),
910 0x010C_002D => Ok(BayerBG12Packed),
911 0x0110_002E => Ok(BayerGR16),
912 0x0110_002F => Ok(BayerRG16),
913 0x0110_0030 => Ok(BayerGB16),
914 0x0110_0031 => Ok(BayerBG16),
915 0x0210_0032 => Ok(YUV422_8),
916 0x0230_0033 => Ok(RGB16),
917 0x0224_0034 => Ok(RGB12V1Packed),
918 0x0210_0035 => Ok(RGB565p),
919 0x0210_0036 => Ok(BGR565p),
920 0x0101_0037 => Ok(Mono1p),
921 0x0102_0038 => Ok(Mono2p),
922 0x0104_0039 => Ok(Mono4p),
923 0x0218_003A => Ok(YCbCr8_CbYCr),
924 0x0210_003B => Ok(YCbCr422_8),
925 0x020C_003C => Ok(YCbCr411_8_CbYYCrYY),
926 0x0218_003D => Ok(YCbCr601_8_CbYCr),
927 0x0210_003E => Ok(YCbCr601_422_8),
928 0x020C_003F => Ok(YCbCr601_411_8_CbYYCrYY),
929 0x0218_0040 => Ok(YCbCr709_8_CbYCr),
930 0x0210_0041 => Ok(YCbCr709_422_8),
931 0x020C_0042 => Ok(YCbCr709_411_8_CbYYCrYY),
932 0x0210_0043 => Ok(YCbCr422_8_CbYCrY),
933 0x0210_0044 => Ok(YCbCr601_422_8_CbYCrY),
934 0x0210_0045 => Ok(YCbCr709_422_8_CbYCrY),
935 0x010A_0046 => Ok(Mono10p),
936 0x010C_0047 => Ok(Mono12p),
937 0x021E_0048 => Ok(BGR10p),
938 0x0224_0049 => Ok(BGR12p),
939 0x0230_004A => Ok(BGR14),
940 0x0230_004B => Ok(BGR16),
941 0x0240_004C => Ok(BGRa10),
942 0x0228_004D => Ok(BGRa10p),
943 0x0240_004E => Ok(BGRa12),
944 0x0230_004F => Ok(BGRa12p),
945 0x0240_0050 => Ok(BGRa14),
946 0x0240_0051 => Ok(BGRa16),
947 0x010A_0052 => Ok(BayerBG10p),
948 0x010C_0053 => Ok(BayerBG12p),
949 0x010A_0054 => Ok(BayerGB10p),
950 0x010C_0055 => Ok(BayerGB12p),
951 0x010A_0056 => Ok(BayerGR10p),
952 0x010C_0057 => Ok(BayerGR12p),
953 0x010A_0058 => Ok(BayerRG10p),
954 0x010C_0059 => Ok(BayerRG12p),
955 0x020C_005A => Ok(YCbCr411_8),
956 0x0218_005B => Ok(YCbCr8),
957 0x021E_005C => Ok(RGB10p),
958 0x0224_005D => Ok(RGB12p),
959 0x0230_005E => Ok(RGB14),
960 0x0240_005F => Ok(RGBa10),
961 0x0228_0060 => Ok(RGBa10p),
962 0x0240_0061 => Ok(RGBa12),
963 0x0230_0062 => Ok(RGBa12p),
964 0x0240_0063 => Ok(RGBa14),
965 0x0240_0064 => Ok(RGBa16),
966 0x0220_0065 => Ok(YCbCr422_10),
967 0x0220_0066 => Ok(YCbCr422_12),
968 0x0108_0067 => Ok(SCF1WBWG8),
969 0x0110_0068 => Ok(SCF1WBWG10),
970 0x010A_0069 => Ok(SCF1WBWG10p),
971 0x0110_006A => Ok(SCF1WBWG12),
972 0x010C_006B => Ok(SCF1WBWG12p),
973 0x0110_006C => Ok(SCF1WBWG14),
974 0x0110_006D => Ok(SCF1WBWG16),
975 0x0108_006E => Ok(SCF1WGWB8),
976 0x0110_006F => Ok(SCF1WGWB10),
977 0x010A_0070 => Ok(SCF1WGWB10p),
978 0x0110_0071 => Ok(SCF1WGWB12),
979 0x010C_0072 => Ok(SCF1WGWB12p),
980 0x0110_0073 => Ok(SCF1WGWB14),
981 0x0110_0074 => Ok(SCF1WGWB16),
982 0x0108_0075 => Ok(SCF1WGWR8),
983 0x0110_0076 => Ok(SCF1WGWR10),
984 0x010A_0077 => Ok(SCF1WGWR10p),
985 0x0110_0078 => Ok(SCF1WGWR12),
986 0x010C_0079 => Ok(SCF1WGWR12p),
987 0x0110_007A => Ok(SCF1WGWR14),
988 0x0110_007B => Ok(SCF1WGWR16),
989 0x0108_007C => Ok(SCF1WRWG8),
990 0x0110_007D => Ok(SCF1WRWG10),
991 0x010A_007E => Ok(SCF1WRWG10p),
992 0x0110_007F => Ok(SCF1WRWG12),
993 0x010C_0080 => Ok(SCF1WRWG12p),
994 0x0110_0081 => Ok(SCF1WRWG14),
995 0x0110_0082 => Ok(SCF1WRWG16),
996 0x0230_0083 => Ok(YCbCr10_CbYCr),
997 0x021E_0084 => Ok(YCbCr10p_CbYCr),
998 0x0230_0085 => Ok(YCbCr12_CbYCr),
999 0x0224_0086 => Ok(YCbCr12p_CbYCr),
1000 0x0214_0087 => Ok(YCbCr422_10p),
1001 0x0218_0088 => Ok(YCbCr422_12p),
1002 0x0230_0089 => Ok(YCbCr601_10_CbYCr),
1003 0x021E_008A => Ok(YCbCr601_10p_CbYCr),
1004 0x0230_008B => Ok(YCbCr601_12_CbYCr),
1005 0x0224_008C => Ok(YCbCr601_12p_CbYCr),
1006 0x0220_008D => Ok(YCbCr601_422_10),
1007 0x0214_008E => Ok(YCbCr601_422_10p),
1008 0x0220_008F => Ok(YCbCr601_422_12),
1009 0x0218_0090 => Ok(YCbCr601_422_12p),
1010 0x0230_0091 => Ok(YCbCr709_10_CbYCr),
1011 0x021E_0092 => Ok(YCbCr709_10p_CbYCr),
1012 0x0230_0093 => Ok(YCbCr709_12_CbYCr),
1013 0x0224_0094 => Ok(YCbCr709_12p_CbYCr),
1014 0x0220_0095 => Ok(YCbCr709_422_10),
1015 0x0214_0096 => Ok(YCbCr709_422_10p),
1016 0x0220_0097 => Ok(YCbCr709_422_12),
1017 0x0218_0098 => Ok(YCbCr709_422_12p),
1018 0x0220_0099 => Ok(YCbCr422_10_CbYCrY),
1019 0x0214_009A => Ok(YCbCr422_10p_CbYCrY),
1020 0x0220_009B => Ok(YCbCr422_12_CbYCrY),
1021 0x0218_009C => Ok(YCbCr422_12p_CbYCrY),
1022 0x0220_009D => Ok(YCbCr601_422_10_CbYCrY),
1023 0x0214_009E => Ok(YCbCr601_422_10p_CbYCrY),
1024 0x0220_009F => Ok(YCbCr601_422_12_CbYCrY),
1025 0x0218_00A0 => Ok(YCbCr601_422_12p_CbYCrY),
1026 0x0220_00A1 => Ok(YCbCr709_422_10_CbYCrY),
1027 0x0214_00A2 => Ok(YCbCr709_422_10p_CbYCrY),
1028 0x0220_00A3 => Ok(YCbCr709_422_12_CbYCrY),
1029 0x0218_00A4 => Ok(YCbCr709_422_12p_CbYCrY),
1030 0x0210_00A5 => Ok(BiColorRGBG8),
1031 0x0210_00A6 => Ok(BiColorBGRG8),
1032 0x0220_00A7 => Ok(BiColorRGBG10),
1033 0x0214_00A8 => Ok(BiColorRGBG10p),
1034 0x0220_00A9 => Ok(BiColorBGRG10),
1035 0x0214_00AA => Ok(BiColorBGRG10p),
1036 0x0220_00AB => Ok(BiColorRGBG12),
1037 0x0218_00AC => Ok(BiColorRGBG12p),
1038 0x0220_00AD => Ok(BiColorBGRG12),
1039 0x0218_00AE => Ok(BiColorBGRG12p),
1040 0x0108_00AF => Ok(Coord3D_A8),
1041 0x0108_00B0 => Ok(Coord3D_B8),
1042 0x0108_00B1 => Ok(Coord3D_C8),
1043 0x0218_00B2 => Ok(Coord3D_ABC8),
1044 0x0218_00B3 => Ok(Coord3D_ABC8_Planar),
1045 0x0210_00B4 => Ok(Coord3D_AC8),
1046 0x0210_00B5 => Ok(Coord3D_AC8_Planar),
1047 0x0110_00B6 => Ok(Coord3D_A16),
1048 0x0110_00B7 => Ok(Coord3D_B16),
1049 0x0110_00B8 => Ok(Coord3D_C16),
1050 0x0230_00B9 => Ok(Coord3D_ABC16),
1051 0x0230_00BA => Ok(Coord3D_ABC16_Planar),
1052 0x0220_00BB => Ok(Coord3D_AC16),
1053 0x0220_00BC => Ok(Coord3D_AC16_Planar),
1054 0x0120_00BD => Ok(Coord3D_A32f),
1055 0x0120_00BE => Ok(Coord3D_B32f),
1056 0x0120_00BF => Ok(Coord3D_C32f),
1057 0x0260_00C0 => Ok(Coord3D_ABC32f),
1058 0x0260_00C1 => Ok(Coord3D_ABC32f_Planar),
1059 0x0240_00C2 => Ok(Coord3D_AC32f),
1060 0x0240_00C3 => Ok(Coord3D_AC32f_Planar),
1061 0x0108_00C4 => Ok(Confidence1),
1062 0x0101_00C5 => Ok(Confidence1p),
1063 0x0108_00C6 => Ok(Confidence8),
1064 0x0110_00C7 => Ok(Confidence16),
1065 0x0120_00C8 => Ok(Confidence32f),
1066 0x0108_00C9 => Ok(R8),
1067 0x010A_00CA => Ok(R10),
1068 0x010C_00CB => Ok(R12),
1069 0x0110_00CC => Ok(R16),
1070 0x0108_00CD => Ok(G8),
1071 0x010A_00CE => Ok(G10),
1072 0x010C_00CF => Ok(G12),
1073 0x0110_00D0 => Ok(G16),
1074 0x0108_00D1 => Ok(B8),
1075 0x010A_00D2 => Ok(B10),
1076 0x010C_00D3 => Ok(B12),
1077 0x0110_00D4 => Ok(B16),
1078 0x010A_00D5 => Ok(Coord3D_A10p),
1079 0x010A_00D6 => Ok(Coord3D_B10p),
1080 0x010A_00D7 => Ok(Coord3D_C10p),
1081 0x010C_00D8 => Ok(Coord3D_A12p),
1082 0x010C_00D9 => Ok(Coord3D_B12p),
1083 0x010C_00DA => Ok(Coord3D_C12p),
1084 0x021E_00DB => Ok(Coord3D_ABC10p),
1085 0x021E_00DC => Ok(Coord3D_ABC10p_Planar),
1086 0x0224_00DE => Ok(Coord3D_ABC12p),
1087 0x0224_00DF => Ok(Coord3D_ABC12p_Planar),
1088 0x0214_00F0 => Ok(Coord3D_AC10p),
1089 0x0214_00F1 => Ok(Coord3D_AC10p_Planar),
1090 0x0218_00F2 => Ok(Coord3D_AC12p),
1091 0x0218_00F3 => Ok(Coord3D_AC12p_Planar),
1092 0x0218_00F4 => Ok(YCbCr2020_8_CbYCr),
1093 0x0230_00F5 => Ok(YCbCr2020_10_CbYCr),
1094 0x021E_00F6 => Ok(YCbCr2020_10p_CbYCr),
1095 0x0230_00F7 => Ok(YCbCr2020_12_CbYCr),
1096 0x0224_00F8 => Ok(YCbCr2020_12p_CbYCr),
1097 0x020C_00F9 => Ok(YCbCr2020_411_8_CbYYCrYY),
1098 0x0210_00FA => Ok(YCbCr2020_422_8),
1099 0x0210_00FB => Ok(YCbCr2020_422_8_CbYCrY),
1100 0x0220_00FC => Ok(YCbCr2020_422_10),
1101 0x0220_00FD => Ok(YCbCr2020_422_10_CbYCrY),
1102 0x0214_00FE => Ok(YCbCr2020_422_10p),
1103 0x0214_00FF => Ok(YCbCr2020_422_10p_CbYCrY),
1104 0x0220_0100 => Ok(YCbCr2020_422_12),
1105 0x0220_0101 => Ok(YCbCr2020_422_12_CbYCrY),
1106 0x0218_0102 => Ok(YCbCr2020_422_12p),
1107 0x0218_0103 => Ok(YCbCr2020_422_12p_CbYCrY),
1108 0x010E_0104 => Ok(Mono14p),
1109 0x010E_0105 => Ok(BayerGR14p),
1110 0x010E_0106 => Ok(BayerRG14p),
1111 0x010E_0107 => Ok(BayerGB14p),
1112 0x010E_0108 => Ok(BayerBG14p),
1113 0x0110_0109 => Ok(BayerGR14),
1114 0x0110_010A => Ok(BayerRG14),
1115 0x0110_010B => Ok(BayerGB14),
1116 0x0110_010C => Ok(BayerBG14),
1117 0x0104_010D => Ok(BayerGR4p),
1118 0x0104_010E => Ok(BayerRG4p),
1119 0x0104_010F => Ok(BayerGB4p),
1120 0x0104_0110 => Ok(BayerBG4p),
1121 0x0120_0111 => Ok(Mono32),
1122 0x020C_0112 => Ok(YCbCr420_8_YY_CbCr_Semiplanar),
1123 0x0210_0113 => Ok(YCbCr422_8_YY_CbCr_Semiplanar),
1124 0x020C_0114 => Ok(YCbCr420_8_YY_CrCb_Semiplanar),
1125 0x0210_0115 => Ok(YCbCr422_8_YY_CrCb_Semiplanar),
1126 0x0108_0116 => Ok(Data8),
1127 0x0108_0117 => Ok(Data8s),
1128 0x0110_0118 => Ok(Data16),
1129 0x0110_0119 => Ok(Data16s),
1130 0x0120_011A => Ok(Data32),
1131 0x0120_011B => Ok(Data32s),
1132 0x0120_011C => Ok(Data32f),
1133 0x0140_011D => Ok(Data64),
1134 0x0140_011E => Ok(Data64s),
1135 0x0140_011F => Ok(Data64f),
1136 0x4000_0001 => Ok(BayerRG10g40IDS),
1137 0x4000_0011 => Ok(BayerRG12g24IDS),
1138 0x4000_0002 => Ok(BayerGB10g40IDS),
1139 0x4000_0012 => Ok(BayerGB12g24IDS),
1140 0x4000_0003 => Ok(BayerGR10g40IDS),
1141 0x4000_0013 => Ok(BayerGR12g24IDS),
1142 0x4000_0004 => Ok(BayerBG10g40IDS),
1143 0x4000_0014 => Ok(BayerBG12g24IDS),
1144 0x4000_000F => Ok(Mono10g40IDS),
1145 0x4000_001F => Ok(Mono12g24IDS),
1146 otherwise => Err(format!("{:x} is invalid value for pixel format", otherwise)),
1147 }
1148 }
1149}
1150
1151impl From<PixelFormat> for u32 {
1152 #[allow(clippy::too_many_lines)]
1153 fn from(val: PixelFormat) -> u32 {
1154 match val {
1155 Mono8 => 0x0108_0001,
1156 Mono8s => 0x0108_0002,
1157 Mono10 => 0x0110_0003,
1158 Mono10Packed => 0x010C_0004,
1159 Mono12 => 0x0110_0005,
1160 Mono12Packed => 0x010C_0006,
1161 Mono16 => 0x0110_0007,
1162 BayerGR8 => 0x0108_0008,
1163 BayerRG8 => 0x0108_0009,
1164 BayerGB8 => 0x0108_000A,
1165 BayerBG8 => 0x0108_000B,
1166 BayerGR10 => 0x0110_000C,
1167 BayerRG10 => 0x0110_000D,
1168 BayerGB10 => 0x0110_000E,
1169 BayerBG10 => 0x0110_000F,
1170 BayerGR12 => 0x0110_0010,
1171 BayerRG12 => 0x0110_0011,
1172 BayerGB12 => 0x0110_0012,
1173 BayerBG12 => 0x0110_0013,
1174 RGB8 => 0x0218_0014,
1175 BGR8 => 0x0218_0015,
1176 RGBa8 => 0x0220_0016,
1177 BGRa8 => 0x0220_0017,
1178 RGB10 => 0x0230_0018,
1179 BGR10 => 0x0230_0019,
1180 RGB12 => 0x0230_001A,
1181 BGR12 => 0x0230_001B,
1182 YUV8_UYV => 0x0218_0020,
1183 RGB8_Planar => 0x0218_0021,
1184 RGB10_Planar => 0x0230_0022,
1185 RGB12_Planar => 0x0230_0023,
1186 RGB16_Planar => 0x0230_0024,
1187 Mono14 => 0x0110_0025,
1188 BayerGR10Packed => 0x010C_0026,
1189 BayerRG10Packed => 0x010C_0027,
1190 BayerGB10Packed => 0x010C_0028,
1191 BayerBG10Packed => 0x010C_0029,
1192 BayerGR12Packed => 0x010C_002A,
1193 BayerRG12Packed => 0x010C_002B,
1194 BayerGB12Packed => 0x010C_002C,
1195 BayerBG12Packed => 0x010C_002D,
1196 BayerGR16 => 0x0110_002E,
1197 BayerRG16 => 0x0110_002F,
1198 BayerGB16 => 0x0110_0030,
1199 BayerBG16 => 0x0110_0031,
1200 YUV422_8 => 0x0210_0032,
1201 RGB16 => 0x0230_0033,
1202 RGB12V1Packed => 0x0224_0034,
1203 RGB565p => 0x0210_0035,
1204 BGR565p => 0x0210_0036,
1205 Mono1p => 0x0101_0037,
1206 Mono2p => 0x0102_0038,
1207 Mono4p => 0x0104_0039,
1208 YCbCr8_CbYCr => 0x0218_003A,
1209 YCbCr422_8 => 0x0210_003B,
1210 YCbCr411_8_CbYYCrYY => 0x020C_003C,
1211 YCbCr601_8_CbYCr => 0x0218_003D,
1212 YCbCr601_422_8 => 0x0210_003E,
1213 YCbCr601_411_8_CbYYCrYY => 0x020C_003F,
1214 YCbCr709_8_CbYCr => 0x0218_0040,
1215 YCbCr709_422_8 => 0x0210_0041,
1216 YCbCr709_411_8_CbYYCrYY => 0x020C_0042,
1217 YCbCr422_8_CbYCrY => 0x0210_0043,
1218 YCbCr601_422_8_CbYCrY => 0x0210_0044,
1219 YCbCr709_422_8_CbYCrY => 0x0210_0045,
1220 Mono10p => 0x010A_0046,
1221 Mono12p => 0x010C_0047,
1222 BGR10p => 0x021E_0048,
1223 BGR12p => 0x0224_0049,
1224 BGR14 => 0x0230_004A,
1225 BGR16 => 0x0230_004B,
1226 BGRa10 => 0x0240_004C,
1227 BGRa10p => 0x0228_004D,
1228 BGRa12 => 0x0240_004E,
1229 BGRa12p => 0x0230_004F,
1230 BGRa14 => 0x0240_0050,
1231 BGRa16 => 0x0240_0051,
1232 BayerBG10p => 0x010A_0052,
1233 BayerBG12p => 0x010C_0053,
1234 BayerGB10p => 0x010A_0054,
1235 BayerGB12p => 0x010C_0055,
1236 BayerGR10p => 0x010A_0056,
1237 BayerGR12p => 0x010C_0057,
1238 BayerRG10p => 0x010A_0058,
1239 BayerRG12p => 0x010C_0059,
1240 YCbCr411_8 => 0x020C_005A,
1241 YCbCr8 => 0x0218_005B,
1242 RGB10p => 0x021E_005C,
1243 RGB12p => 0x0224_005D,
1244 RGB14 => 0x0230_005E,
1245 RGBa10 => 0x0240_005F,
1246 RGBa10p => 0x0228_0060,
1247 RGBa12 => 0x0240_0061,
1248 RGBa12p => 0x0230_0062,
1249 RGBa14 => 0x0240_0063,
1250 RGBa16 => 0x0240_0064,
1251 YCbCr422_10 => 0x0220_0065,
1252 YCbCr422_12 => 0x0220_0066,
1253 SCF1WBWG8 => 0x0108_0067,
1254 SCF1WBWG10 => 0x0110_0068,
1255 SCF1WBWG10p => 0x010A_0069,
1256 SCF1WBWG12 => 0x0110_006A,
1257 SCF1WBWG12p => 0x010C_006B,
1258 SCF1WBWG14 => 0x0110_006C,
1259 SCF1WBWG16 => 0x0110_006D,
1260 SCF1WGWB8 => 0x0108_006E,
1261 SCF1WGWB10 => 0x0110_006F,
1262 SCF1WGWB10p => 0x010A_0070,
1263 SCF1WGWB12 => 0x0110_0071,
1264 SCF1WGWB12p => 0x010C_0072,
1265 SCF1WGWB14 => 0x0110_0073,
1266 SCF1WGWB16 => 0x0110_0074,
1267 SCF1WGWR8 => 0x0108_0075,
1268 SCF1WGWR10 => 0x0110_0076,
1269 SCF1WGWR10p => 0x010A_0077,
1270 SCF1WGWR12 => 0x0110_0078,
1271 SCF1WGWR12p => 0x010C_0079,
1272 SCF1WGWR14 => 0x0110_007A,
1273 SCF1WGWR16 => 0x0110_007B,
1274 SCF1WRWG8 => 0x0108_007C,
1275 SCF1WRWG10 => 0x0110_007D,
1276 SCF1WRWG10p => 0x010A_007E,
1277 SCF1WRWG12 => 0x0110_007F,
1278 SCF1WRWG12p => 0x010C_0080,
1279 SCF1WRWG14 => 0x0110_0081,
1280 SCF1WRWG16 => 0x0110_0082,
1281 YCbCr10_CbYCr => 0x0230_0083,
1282 YCbCr10p_CbYCr => 0x021E_0084,
1283 YCbCr12_CbYCr => 0x0230_0085,
1284 YCbCr12p_CbYCr => 0x0224_0086,
1285 YCbCr422_10p => 0x0214_0087,
1286 YCbCr422_12p => 0x0218_0088,
1287 YCbCr601_10_CbYCr => 0x0230_0089,
1288 YCbCr601_10p_CbYCr => 0x021E_008A,
1289 YCbCr601_12_CbYCr => 0x0230_008B,
1290 YCbCr601_12p_CbYCr => 0x0224_008C,
1291 YCbCr601_422_10 => 0x0220_008D,
1292 YCbCr601_422_10p => 0x0214_008E,
1293 YCbCr601_422_12 => 0x0220_008F,
1294 YCbCr601_422_12p => 0x0218_0090,
1295 YCbCr709_10_CbYCr => 0x0230_0091,
1296 YCbCr709_10p_CbYCr => 0x021E_0092,
1297 YCbCr709_12_CbYCr => 0x0230_0093,
1298 YCbCr709_12p_CbYCr => 0x0224_0094,
1299 YCbCr709_422_10 => 0x0220_0095,
1300 YCbCr709_422_10p => 0x0214_0096,
1301 YCbCr709_422_12 => 0x0220_0097,
1302 YCbCr709_422_12p => 0x0218_0098,
1303 YCbCr422_10_CbYCrY => 0x0220_0099,
1304 YCbCr422_10p_CbYCrY => 0x0214_009A,
1305 YCbCr422_12_CbYCrY => 0x0220_009B,
1306 YCbCr422_12p_CbYCrY => 0x0218_009C,
1307 YCbCr601_422_10_CbYCrY => 0x0220_009D,
1308 YCbCr601_422_10p_CbYCrY => 0x0214_009E,
1309 YCbCr601_422_12_CbYCrY => 0x0220_009F,
1310 YCbCr601_422_12p_CbYCrY => 0x0218_00A0,
1311 YCbCr709_422_10_CbYCrY => 0x0220_00A1,
1312 YCbCr709_422_10p_CbYCrY => 0x0214_00A2,
1313 YCbCr709_422_12_CbYCrY => 0x0220_00A3,
1314 YCbCr709_422_12p_CbYCrY => 0x0218_00A4,
1315 BiColorRGBG8 => 0x0210_00A5,
1316 BiColorBGRG8 => 0x0210_00A6,
1317 BiColorRGBG10 => 0x0220_00A7,
1318 BiColorRGBG10p => 0x0214_00A8,
1319 BiColorBGRG10 => 0x0220_00A9,
1320 BiColorBGRG10p => 0x0214_00AA,
1321 BiColorRGBG12 => 0x0220_00AB,
1322 BiColorRGBG12p => 0x0218_00AC,
1323 BiColorBGRG12 => 0x0220_00AD,
1324 BiColorBGRG12p => 0x0218_00AE,
1325 Coord3D_A8 => 0x0108_00AF,
1326 Coord3D_B8 => 0x0108_00B0,
1327 Coord3D_C8 => 0x0108_00B1,
1328 Coord3D_ABC8 => 0x0218_00B2,
1329 Coord3D_ABC8_Planar => 0x0218_00B3,
1330 Coord3D_AC8 => 0x0210_00B4,
1331 Coord3D_AC8_Planar => 0x0210_00B5,
1332 Coord3D_A16 => 0x0110_00B6,
1333 Coord3D_B16 => 0x0110_00B7,
1334 Coord3D_C16 => 0x0110_00B8,
1335 Coord3D_ABC16 => 0x0230_00B9,
1336 Coord3D_ABC16_Planar => 0x0230_00BA,
1337 Coord3D_AC16 => 0x0220_00BB,
1338 Coord3D_AC16_Planar => 0x0220_00BC,
1339 Coord3D_A32f => 0x0120_00BD,
1340 Coord3D_B32f => 0x0120_00BE,
1341 Coord3D_C32f => 0x0120_00BF,
1342 Coord3D_ABC32f => 0x0260_00C0,
1343 Coord3D_ABC32f_Planar => 0x0260_00C1,
1344 Coord3D_AC32f => 0x0240_00C2,
1345 Coord3D_AC32f_Planar => 0x0240_00C3,
1346 Confidence1 => 0x0108_00C4,
1347 Confidence1p => 0x0101_00C5,
1348 Confidence8 => 0x0108_00C6,
1349 Confidence16 => 0x0110_00C7,
1350 Confidence32f => 0x0120_00C8,
1351 R8 => 0x0108_00C9,
1352 R10 => 0x010A_00CA,
1353 R12 => 0x010C_00CB,
1354 R16 => 0x0110_00CC,
1355 G8 => 0x0108_00CD,
1356 G10 => 0x010A_00CE,
1357 G12 => 0x010C_00CF,
1358 G16 => 0x0110_00D0,
1359 B8 => 0x0108_00D1,
1360 B10 => 0x010A_00D2,
1361 B12 => 0x010C_00D3,
1362 B16 => 0x0110_00D4,
1363 Coord3D_A10p => 0x010A_00D5,
1364 Coord3D_B10p => 0x010A_00D6,
1365 Coord3D_C10p => 0x010A_00D7,
1366 Coord3D_A12p => 0x010C_00D8,
1367 Coord3D_B12p => 0x010C_00D9,
1368 Coord3D_C12p => 0x010C_00DA,
1369 Coord3D_ABC10p => 0x021E_00DB,
1370 Coord3D_ABC10p_Planar => 0x021E_00DC,
1371 Coord3D_ABC12p => 0x0224_00DE,
1372 Coord3D_ABC12p_Planar => 0x0224_00DF,
1373 Coord3D_AC10p => 0x0214_00F0,
1374 Coord3D_AC10p_Planar => 0x0214_00F1,
1375 Coord3D_AC12p => 0x0218_00F2,
1376 Coord3D_AC12p_Planar => 0x0218_00F3,
1377 YCbCr2020_8_CbYCr => 0x0218_00F4,
1378 YCbCr2020_10_CbYCr => 0x0230_00F5,
1379 YCbCr2020_10p_CbYCr => 0x021E_00F6,
1380 YCbCr2020_12_CbYCr => 0x0230_00F7,
1381 YCbCr2020_12p_CbYCr => 0x0224_00F8,
1382 YCbCr2020_411_8_CbYYCrYY => 0x020C_00F9,
1383 YCbCr2020_422_8 => 0x0210_00FA,
1384 YCbCr2020_422_8_CbYCrY => 0x0210_00FB,
1385 YCbCr2020_422_10 => 0x0220_00FC,
1386 YCbCr2020_422_10_CbYCrY => 0x0220_00FD,
1387 YCbCr2020_422_10p => 0x0214_00FE,
1388 YCbCr2020_422_10p_CbYCrY => 0x0214_00FF,
1389 YCbCr2020_422_12 => 0x0220_0100,
1390 YCbCr2020_422_12_CbYCrY => 0x0220_0101,
1391 YCbCr2020_422_12p => 0x0218_0102,
1392 YCbCr2020_422_12p_CbYCrY => 0x0218_0103,
1393 Mono14p => 0x010E_0104,
1394 BayerGR14p => 0x010E_0105,
1395 BayerRG14p => 0x010E_0106,
1396 BayerGB14p => 0x010E_0107,
1397 BayerBG14p => 0x010E_0108,
1398 BayerGR14 => 0x0110_0109,
1399 BayerRG14 => 0x0110_010A,
1400 BayerGB14 => 0x0110_010B,
1401 BayerBG14 => 0x0110_010C,
1402 BayerGR4p => 0x0104_010D,
1403 BayerRG4p => 0x0104_010E,
1404 BayerGB4p => 0x0104_010F,
1405 BayerBG4p => 0x0104_0110,
1406 Mono32 => 0x0120_0111,
1407 YCbCr420_8_YY_CbCr_Semiplanar => 0x020C_0112,
1408 YCbCr422_8_YY_CbCr_Semiplanar => 0x0210_0113,
1409 YCbCr420_8_YY_CrCb_Semiplanar => 0x020C_0114,
1410 YCbCr422_8_YY_CrCb_Semiplanar => 0x0210_0115,
1411 Data8 => 0x0108_0116,
1412 Data8s => 0x0108_0117,
1413 Data16 => 0x0110_0118,
1414 Data16s => 0x0110_0119,
1415 Data32 => 0x0120_011A,
1416 Data32s => 0x0120_011B,
1417 Data32f => 0x0120_011C,
1418 Data64 => 0x0140_011D,
1419 Data64s => 0x0140_011E,
1420 Data64f => 0x0140_011F,
1421 BayerRG10g40IDS => 0x4000_0001,
1422 BayerRG12g24IDS => 0x4000_0011,
1423 BayerGB10g40IDS => 0x4000_0002,
1424 BayerGB12g24IDS => 0x4000_0012,
1425 BayerGR10g40IDS => 0x4000_0003,
1426 BayerGR12g24IDS => 0x4000_0013,
1427 BayerBG10g40IDS => 0x4000_0004,
1428 BayerBG12g24IDS => 0x4000_0014,
1429 Mono10g40IDS => 0x4000_000F,
1430 Mono12g24IDS => 0x4000_001F,
1431 }
1432 }
1433}