Fixposition SDK 0.0.0-heads/main-0-g6a396b9
Collection of c++ libraries and apps for use with Fixposition products on Linux
Loading...
Searching...
No Matches
cam.hpp
Go to the documentation of this file.
1/**
2 * \verbatim
3 * ___ ___
4 * \ \ / /
5 * \ \/ / Copyright (c) Fixposition AG (www.fixposition.com) and contributors
6 * / /\ \ License: see the LICENSE file
7 * /__/ \__\
8 * \endverbatim
9 *
10 * @file
11 * @brief Fixposition SDK: Camera types and utilities
12 *
13 * @page FPSDK_COMMON_CAM Camera types and utilities
14 *
15 * **API**: fpsdk_common/cam.hpp and fpsdk::common::cam
16 *
17 */
18#ifndef __FPSDK_COMMON_CAM_HPP__
19#define __FPSDK_COMMON_CAM_HPP__
20
21/* LIBC/STL */
22#include <cstdint>
23
24/* EXTERNAL */
25
26/* PACKAGE */
27
28namespace fpsdk {
29namespace common {
30/**
31 * @brief Camera types and utilities
32 */
33namespace cam {
34/* ****************************************************************************************************************** */
35
36/**
37 * @brief Camera ID
38 */
39enum class CamId : uint8_t // clang-format off
40{
41 UNSPECIFIED = 0, //!< Unspecified
42 CAM1 = 1, //!< Camera 1
43 CAM2 = 2, //!< Camera 2
44 CAM3 = 3, //!< Camera 3
45 CAM4 = 4, //!< Camera 4
46}; // clang-format on
47
48/**
49 * @brief Stringify camera ID enum
50 *
51 * @param[in] camid Camera ID
52 *
53 * @returns the stringification of the CameraId, or "?" for bad enum values
54 */
55const char* CamIdToStr(const CamId camid);
56
57/**
58 * @brief Convert camera ID string to enum
59 *
60 * @param[in] str Camera ID string
61 * @param[in] def Default Camer ID, for bad str
62 *
63 * @returns the camera ID, or def if str was invalid
64 */
65CamId CamIdFromStrOr(const char* str, const CamId def);
66
67/**
68 * @brief Convert camera ID value to enum
69 *
70 * @param[in] val Camera ID value
71 * @param[in] def Default camera data type, for bad str
72 *
73 * @returns the camera data type, or def if str was invalid
74 */
75CamId CamIdFromValOr(const uint8_t val, const CamId def);
76
77// ---------------------------------------------------------------------------------------------------------------------
78
79/**
80 * @brief Camera data type (type of data)
81 */
82enum class CamDataType : uint8_t // clang-format off
83{
84 UNSPECIFIED = 0, //!< Unspecified
85 HIRES_IMG = 1, //!< High-res image
86 LORES_IMG = 2, //!< Low-res image
87 HIRES_VID = 3, //!< High-res video
88 LORES_VID = 4, //!< Low-res video
89}; // clang-format on
90
91/**
92 * @brief Stringify camera data type enum
93 *
94 * @param[in] type Camera data type
95 *
96 * @returns the stringification of the camera data type, or "?" for bad enum values
97 */
98const char* CamDataTypeToStr(const CamDataType type);
99
100/**
101 * @brief Convert camera data type string to enum
102 *
103 * @param[in] str Camera data type string
104 * @param[in] def Default camera data type, for bad str
105 *
106 * @returns the camera data type, or def if str was invalid
107 */
108CamDataType CamDataTypeFromStrOr(const char* str, const CamDataType def);
109
110/**
111 * @brief Convert camera data type value to enum
112 *
113 * @param[in] val Camera data type value
114 * @param[in] def Default camera data type, for bad str
115 *
116 * @returns the camera data type, or def if str was invalid
117 */
118CamDataType CamDataTypeFromValOr(const uint8_t val, const CamDataType def);
119
120// ---------------------------------------------------------------------------------------------------------------------
121
122/**
123 * @brief Camera data format
124 */
125enum class CamDataFmt : uint8_t // clang-format off
126{
127 UNSPECIFIED = 0, //!< Invalid
128 // Video
129 H264_NAL = 1, //!< H.264 NAL (AVC) (video/avc)
130 H265_NAL = 2, //!< H.265 NAL (HEVC) (video/hevc)
131 MJPEG = 3, //!< Motion JPEG (image/jpeg)
132 // Image
133 JPEG = 4, //!< JPEG (image/jpeg)
134 Y8 = 5, //!< Planar Y (greyscale), 8bpp
135 NV12 = 6, //!< Planar YUV 4:2:0, 12bpp
136 RGB24 = 7, //!< Packed RGB 8:8:8, 24bpp
137}; // clang-format on
138
139/**
140 * @brief Stringify camera data format enum
141 *
142 * @param[in] fmt Camera data format
143 *
144 * @returns the stringification of the camera data format, or "?" for bad enum values
145 */
146const char* CamDataFmtToStr(const CamDataFmt fmt);
147
148/**
149 * @brief Convert camera data format value to enum
150 *
151 * @param[in] val Camera data format value
152 * @param[in] def Default camera data format, for bad str
153 *
154 * @returns the camera data format, or def if str was invalid
155 */
156CamDataFmt CamDataFmtFromValOr(const uint8_t val, const CamDataFmt def);
157
158// ---------------------------------------------------------------------------------------------------------------------
159
160/**
161 * @brief Camera frame type
162 */
163enum class CamDataFrm : uint8_t // clang-format off
164{
165 UNSPECIFIED = 0, //!< Unspecified, invalid data
166 I_FRAME = 1, //!< I-frame (= Horizon camsys MC_H26[45]_NALU_TYPE_I)
167 P_FRAME = 2, //!< P-frame (= Horizon camsys MC_H26[45]_NALU_TYPE_P)
168 FULL = 3, //!< Full frame (non-encoded, e.g. NV12 or JPEG)
169 OTHER = 4, //!< Other frame type (unexpected)
170}; // clang-format on
171
172/**
173 * @brief Stringify camera data frame type enum
174 *
175 * @param[in] frm Camera data frame type
176 *
177 * @returns the stringification of the camera data frame type, or "?" for bad enum values
178 */
179const char* CamDataFrmToStr(const CamDataFrm frm);
180
181/**
182 * @brief Convert camera data frame type value to enum
183 *
184 * @param[in] val Camera data frame type value
185 * @param[in] def Default camera data frame type, for bad str
186 *
187 * @returns the camera data frame type, or def if str was invalid
188 */
189CamDataFrm CamDataFrmFromValOr(const uint8_t val, const CamDataFrm def);
190
191/* ****************************************************************************************************************** */
192} // namespace cam
193} // namespace common
194} // namespace fpsdk
195#endif // __FPSDK_COMMON_CAM_HPP__
Camera types and utilities.
Definition cam.hpp:33
CamId CamIdFromValOr(const uint8_t val, const CamId def)
Convert camera ID value to enum.
const char * CamIdToStr(const CamId camid)
Stringify camera ID enum.
CamDataFrm CamDataFrmFromValOr(const uint8_t val, const CamDataFrm def)
Convert camera data frame type value to enum.
const char * CamDataFmtToStr(const CamDataFmt fmt)
Stringify camera data format enum.
CamId CamIdFromStrOr(const char *str, const CamId def)
Convert camera ID string to enum.
CamId
Camera ID.
Definition cam.hpp:40
@ UNSPECIFIED
Unspecified.
Definition cam.hpp:41
CamDataFmt CamDataFmtFromValOr(const uint8_t val, const CamDataFmt def)
Convert camera data format value to enum.
const char * CamDataTypeToStr(const CamDataType type)
Stringify camera data type enum.
CamDataType
Camera data type (type of data)
Definition cam.hpp:83
@ HIRES_VID
High-res video.
Definition cam.hpp:87
@ LORES_IMG
Low-res image.
Definition cam.hpp:86
@ HIRES_IMG
High-res image.
Definition cam.hpp:85
@ LORES_VID
Low-res video.
Definition cam.hpp:88
const char * CamDataFrmToStr(const CamDataFrm frm)
Stringify camera data frame type enum.
CamDataType CamDataTypeFromValOr(const uint8_t val, const CamDataType def)
Convert camera data type value to enum.
CamDataFmt
Camera data format.
Definition cam.hpp:126
@ RGB24
Packed RGB 8:8:8, 24bpp.
Definition cam.hpp:136
@ MJPEG
Motion JPEG (image/jpeg)
Definition cam.hpp:131
@ NV12
Planar YUV 4:2:0, 12bpp.
Definition cam.hpp:135
@ H264_NAL
H.264 NAL (AVC) (video/avc)
Definition cam.hpp:129
@ JPEG
JPEG (image/jpeg)
Definition cam.hpp:133
@ H265_NAL
H.265 NAL (HEVC) (video/hevc)
Definition cam.hpp:130
@ Y8
Planar Y (greyscale), 8bpp.
Definition cam.hpp:134
CamDataFrm
Camera frame type.
Definition cam.hpp:164
@ OTHER
Other frame type (unexpected)
Definition cam.hpp:169
@ I_FRAME
I-frame (= Horizon camsys MC_H26[45]_NALU_TYPE_I)
Definition cam.hpp:166
@ FULL
Full frame (non-encoded, e.g. NV12 or JPEG)
Definition cam.hpp:168
@ P_FRAME
P-frame (= Horizon camsys MC_H26[45]_NALU_TYPE_P)
Definition cam.hpp:167
CamDataType CamDataTypeFromStrOr(const char *str, const CamDataType def)
Convert camera data type string to enum.
Fixposition SDK: Common library.
Definition doc.hpp:21
Fixposition SDK.