FreeRDP
Loading...
Searching...
No Matches
rdpecam-utils.h
1
21#pragma once
22
23#include <freerdp/config.h>
24
25#if defined(CHANNEL_RDPECAM)
26#include <stdbool.h>
27#include <winpr/wtypes.h>
28#include <freerdp/channels/rdpecam.h>
29
30WINPR_ATTR_FORMAT_ARG(5, 6)
31static inline void rdpecam_PrintWarning(wLog* log, const char* file, const char* fkt, size_t line,
32 WINPR_FORMAT_ARG const char* fmt, ...)
33{
34 const DWORD level = WLOG_WARN;
35 va_list ap;
36
37 va_start(ap, fmt);
38 if (WLog_IsLevelActive(log, level))
39 WLog_PrintTextMessageVA(log, level, line, file, fkt, fmt, ap);
40 va_end(ap);
41}
42
54#define rdpecam_valid_messageId(id) \
55 rdpecam_valid_messageId_((id), WLog_Get(TAG), __FILE__, __func__, __LINE__)
56static inline bool rdpecam_valid_messageId_(UINT8 id, wLog* log, const char* file, const char* fkt,
57 size_t line)
58{
59 switch (id)
60 {
61 case CAM_MSG_ID_SuccessResponse:
62 case CAM_MSG_ID_ErrorResponse:
63 case CAM_MSG_ID_SelectVersionRequest:
64 case CAM_MSG_ID_SelectVersionResponse:
65 case CAM_MSG_ID_DeviceAddedNotification:
66 case CAM_MSG_ID_DeviceRemovedNotification:
67 case CAM_MSG_ID_ActivateDeviceRequest:
68 case CAM_MSG_ID_DeactivateDeviceRequest:
69 case CAM_MSG_ID_StreamListRequest:
70 case CAM_MSG_ID_StreamListResponse:
71 case CAM_MSG_ID_MediaTypeListRequest:
72 case CAM_MSG_ID_MediaTypeListResponse:
73 case CAM_MSG_ID_CurrentMediaTypeRequest:
74 case CAM_MSG_ID_CurrentMediaTypeResponse:
75 case CAM_MSG_ID_StartStreamsRequest:
76 case CAM_MSG_ID_StopStreamsRequest:
77 case CAM_MSG_ID_SampleRequest:
78 case CAM_MSG_ID_SampleResponse:
79 case CAM_MSG_ID_SampleErrorResponse:
80 case CAM_MSG_ID_PropertyListRequest:
81 case CAM_MSG_ID_PropertyListResponse:
82 case CAM_MSG_ID_PropertyValueRequest:
83 case CAM_MSG_ID_PropertyValueResponse:
84 case CAM_MSG_ID_SetPropertyValueRequest:
85 return true;
86 default:
87 rdpecam_PrintWarning(log, file, fkt, line, "Invalid CAM_MSG_ID %" PRIu8, id);
88 return false;
89 }
90}
91
103#define rdpecam_valid_CamErrorCode(code) \
104 rdpecam_valid_CamErrorCode_((code), WLog_Get(TAG), __FILE__, __func__, __LINE__)
105static inline bool rdpecam_valid_CamErrorCode_(UINT32 code, wLog* log, const char* file,
106 const char* fkt, size_t line)
107{
108 switch (code)
109 {
110 case CAM_ERROR_CODE_UnexpectedError:
111 case CAM_ERROR_CODE_InvalidMessage:
112 case CAM_ERROR_CODE_NotInitialized:
113 case CAM_ERROR_CODE_InvalidRequest:
114 case CAM_ERROR_CODE_InvalidStreamNumber:
115 case CAM_ERROR_CODE_InvalidMediaType:
116 case CAM_ERROR_CODE_OutOfMemory:
117 case CAM_ERROR_CODE_ItemNotFound:
118 case CAM_ERROR_CODE_SetNotFound:
119 case CAM_ERROR_CODE_OperationNotSupported:
120 return true;
121 default:
122 rdpecam_PrintWarning(log, file, fkt, line, "Invalid CAM_ERROR_CODE %" PRIu32, code);
123 return false;
124 }
125}
126
138#define rdpecam_valid_CamStreamFrameSourceType(val) \
139 rdpecam_valid_CamStreamFrameSourceType_((val), WLog_Get(TAG), __FILE__, __func__, __LINE__)
140static inline bool rdpecam_valid_CamStreamFrameSourceType_(UINT16 val, wLog* log, const char* file,
141 const char* fkt, size_t line)
142{
143 switch (val)
144 {
145 case CAM_STREAM_FRAME_SOURCE_TYPE_Color:
146 case CAM_STREAM_FRAME_SOURCE_TYPE_Infrared:
147 case CAM_STREAM_FRAME_SOURCE_TYPE_Custom:
148 return true;
149 default:
150 rdpecam_PrintWarning(log, file, fkt, line,
151 "Invalid CAM_STREAM_FRAME_SOURCE_TYPES %" PRIu16, val);
152 return false;
153 }
154}
155
167#define rdpecam_valid_CamStreamCategory(val) \
168 rdpecam_valid_CamStreamCategory_((val), WLog_Get(TAG), __FILE__, __func__, __LINE__)
169static inline bool rdpecam_valid_CamStreamCategory_(UINT8 val, wLog* log, const char* file,
170 const char* fkt, size_t line)
171{
172 switch (val)
173 {
174 case CAM_STREAM_CATEGORY_Capture:
175 return true;
176 default:
177 rdpecam_PrintWarning(log, file, fkt, line, "Invalid CAM_STREAM_CATEGORY %" PRIu8, val);
178 return false;
179 }
180}
181
193#define rdpecam_valid_CamMediaFormat(val) \
194 rdpecam_valid_CamMediaFormat_((val), WLog_Get(TAG), __FILE__, __func__, __LINE__)
195static inline bool rdpecam_valid_CamMediaFormat_(UINT8 val, wLog* log, const char* file,
196 const char* fkt, size_t line)
197{
198 switch (val)
199 {
200 case CAM_MEDIA_FORMAT_INVALID:
201 case CAM_MEDIA_FORMAT_H264:
202 case CAM_MEDIA_FORMAT_MJPG:
203 case CAM_MEDIA_FORMAT_YUY2:
204 case CAM_MEDIA_FORMAT_NV12:
205 case CAM_MEDIA_FORMAT_I420:
206 case CAM_MEDIA_FORMAT_RGB24:
207 case CAM_MEDIA_FORMAT_RGB32:
208 return true;
209 default:
210 rdpecam_PrintWarning(log, file, fkt, line, "Invalid CAM_MEDIA_FORMAT %" PRIu8, val);
211 return false;
212 }
213}
214
226#define rdpecam_valid_MediaTypeDescriptionFlags(val) \
227 rdpecam_valid_MediaTypeDescriptionFlags_((val), WLog_Get(TAG), __FILE__, __func__, __LINE__)
228static inline bool rdpecam_valid_MediaTypeDescriptionFlags_(UINT8 val, wLog* log, const char* file,
229 const char* fkt, size_t line)
230{
231 switch (val)
232 {
233 case CAM_MEDIA_TYPE_DESCRIPTION_FLAG_DecodingRequired:
234 case CAM_MEDIA_TYPE_DESCRIPTION_FLAG_BottomUpImage:
235 return true;
236 default:
237 rdpecam_PrintWarning(log, file, fkt, line,
238 "Invalid CAM_MEDIA_TYPE_DESCRIPTION_FLAGS %" PRIu8, val);
239 return false;
240 }
241}
242
254#define rdpecam_valid_CamPropertyMode(val) \
255 rdpecam_valid_CamPropertyMode_((val), WLog_Get(TAG), __FILE__, __func__, __LINE__)
256static inline bool rdpecam_valid_CamPropertyMode_(UINT8 val, wLog* log, const char* file,
257 const char* fkt, size_t line)
258{
259 switch (val)
260 {
261 case CAM_PROPERTY_MODE_Manual:
262 case CAM_PROPERTY_MODE_Auto:
263 return true;
264 default:
265 rdpecam_PrintWarning(log, file, fkt, line, "Invalid CAM_PROPERTY_MODE %" PRIu8, val);
266 return false;
267 }
268}
269
281#define rdpecam_valid_CamPropertySet(val) \
282 rdpecam_valid_CamPropertySet_((val), WLog_Get(TAG), __FILE__, __func__, __LINE__)
283static inline bool rdpecam_valid_CamPropertySet_(UINT8 val, wLog* log, const char* file,
284 const char* fkt, size_t line)
285{
286 switch (val)
287 {
288 case CAM_PROPERTY_SET_CameraControl:
289 case CAM_PROPERTY_SET_VideoProcAmp:
290 return true;
291 default:
292 rdpecam_PrintWarning(log, file, fkt, line, "Invalid CAM_PROPERTY_SET %" PRIu8, val);
293 return false;
294 }
295}
296
308#define rdpecam_valid_CamPropertyCapabilities(val) \
309 rdpecam_valid_CamPropertyCapabilities_((val), WLog_Get(TAG), __FILE__, __func__, __LINE__)
310static inline bool rdpecam_valid_CamPropertyCapabilities_(UINT8 val, wLog* log, const char* file,
311 const char* fkt, size_t line)
312{
313 switch (val)
314 {
315 case CAM_PROPERTY_CAPABILITY_Manual:
316 case CAM_PROPERTY_CAPABILITY_Auto:
317 return true;
318 default:
319 rdpecam_PrintWarning(log, file, fkt, line, "Invalid CAM_PROPERTY_CAPABILITIES %" PRIu8,
320 val);
321 return false;
322 }
323}
324
325#endif