20#ifndef FREERDP_CHANNEL_RDPECAM_H
21#define FREERDP_CHANNEL_RDPECAM_H
23#include <freerdp/api.h>
24#include <freerdp/dvc.h>
25#include <freerdp/types.h>
31#define RDPECAM_CHANNEL_NAME "rdpecam"
32#define RDPECAM_DVC_CHANNEL_NAME "rdpecam"
33#define RDPECAM_CONTROL_DVC_CHANNEL_NAME "RDCamera_Device_Enumerator"
42 CAM_MSG_ID_Invalid = 0x00,
43 CAM_MSG_ID_SuccessResponse = 0x01,
44 CAM_MSG_ID_ErrorResponse = 0x02,
45 CAM_MSG_ID_SelectVersionRequest = 0x03,
46 CAM_MSG_ID_SelectVersionResponse = 0x04,
47 CAM_MSG_ID_DeviceAddedNotification = 0x05,
48 CAM_MSG_ID_DeviceRemovedNotification = 0x06,
49 CAM_MSG_ID_ActivateDeviceRequest = 0x07,
50 CAM_MSG_ID_DeactivateDeviceRequest = 0x08,
51 CAM_MSG_ID_StreamListRequest = 0x09,
52 CAM_MSG_ID_StreamListResponse = 0x0A,
53 CAM_MSG_ID_MediaTypeListRequest = 0x0B,
54 CAM_MSG_ID_MediaTypeListResponse = 0x0C,
55 CAM_MSG_ID_CurrentMediaTypeRequest = 0x0D,
56 CAM_MSG_ID_CurrentMediaTypeResponse = 0x0E,
57 CAM_MSG_ID_StartStreamsRequest = 0x0F,
58 CAM_MSG_ID_StopStreamsRequest = 0x10,
59 CAM_MSG_ID_SampleRequest = 0x11,
60 CAM_MSG_ID_SampleResponse = 0x12,
61 CAM_MSG_ID_SampleErrorResponse = 0x13,
62 CAM_MSG_ID_PropertyListRequest = 0x14,
63 CAM_MSG_ID_PropertyListResponse = 0x15,
64 CAM_MSG_ID_PropertyValueRequest = 0x16,
65 CAM_MSG_ID_PropertyValueResponse = 0x17,
66 CAM_MSG_ID_SetPropertyValueRequest = 0x18,
69#define CAM_HEADER_SIZE 2
93 char* VirtualChannelName;
99 char* VirtualChannelName;
111 CAM_ERROR_CODE_None = 0x00000000,
112 CAM_ERROR_CODE_UnexpectedError = 0x00000001,
113 CAM_ERROR_CODE_InvalidMessage = 0x00000002,
114 CAM_ERROR_CODE_NotInitialized = 0x00000003,
115 CAM_ERROR_CODE_InvalidRequest = 0x00000004,
116 CAM_ERROR_CODE_InvalidStreamNumber = 0x00000005,
117 CAM_ERROR_CODE_InvalidMediaType = 0x00000006,
118 CAM_ERROR_CODE_OutOfMemory = 0x00000007,
119 CAM_ERROR_CODE_ItemNotFound = 0x00000008,
120 CAM_ERROR_CODE_SetNotFound = 0x00000009,
121 CAM_ERROR_CODE_OperationNotSupported = 0x0000000A,
127 CAM_ERROR_CODE ErrorCode;
147 CAM_STREAM_FRAME_SOURCE_TYPE_Color = 0x0001,
148 CAM_STREAM_FRAME_SOURCE_TYPE_Infrared = 0x0002,
149 CAM_STREAM_FRAME_SOURCE_TYPE_Custom = 0x0008,
150} CAM_STREAM_FRAME_SOURCE_TYPES;
154 CAM_STREAM_CATEGORY_Capture = 0x01,
155} CAM_STREAM_CATEGORY;
159 CAM_STREAM_FRAME_SOURCE_TYPES FrameSourceTypes;
160 CAM_STREAM_CATEGORY StreamCategory;
180 CAM_MEDIA_FORMAT_INVALID = 0x00,
181 CAM_MEDIA_FORMAT_H264 = 0x01,
182 CAM_MEDIA_FORMAT_MJPG = 0x02,
183 CAM_MEDIA_FORMAT_YUY2 = 0x03,
184 CAM_MEDIA_FORMAT_NV12 = 0x04,
185 CAM_MEDIA_FORMAT_I420 = 0x05,
186 CAM_MEDIA_FORMAT_RGB24 = 0x06,
187 CAM_MEDIA_FORMAT_RGB32 = 0x07,
192 AM_MEDIA_TYPE_DESCRIPTION_FLAG_Invalid = 0x00,
193 CAM_MEDIA_TYPE_DESCRIPTION_FLAG_DecodingRequired = 0x01,
194 CAM_MEDIA_TYPE_DESCRIPTION_FLAG_BottomUpImage = 0x02,
195} CAM_MEDIA_TYPE_DESCRIPTION_FLAGS;
199 CAM_MEDIA_FORMAT Format;
202 UINT32 FrameRateNumerator;
203 UINT32 FrameRateDenominator;
204 UINT32 PixelAspectRatioNumerator;
205 UINT32 PixelAspectRatioDenominator;
206 CAM_MEDIA_TYPE_DESCRIPTION_FLAGS Flags;
212 size_t N_Descriptions;
264 CAM_ERROR_CODE ErrorCode;
274 CAM_PROPERTY_SET_CameraControl = 0x01,
275 CAM_PROPERTY_SET_VideoProcAmp = 0x02
281 CAM_PROPERTY_ID_CAMERA_CONTROL_Exposure = 0x01,
282 CAM_PROPERTY_ID_CAMERA_CONTROL_Focus = 0x02,
283 CAM_PROPERTY_ID_CAMERA_CONTROL_Pan = 0x03,
284 CAM_PROPERTY_ID_CAMERA_CONTROL_Roll = 0x04,
285 CAM_PROPERTY_ID_CAMERA_CONTROL_Tilt = 0x05,
286 CAM_PROPERTY_ID_CAMERA_CONTROL_Zoom = 0x06
292 CAM_PROPERTY_ID_VIDEO_PROC_AMP_BacklightCompensation = 0x01,
293 CAM_PROPERTY_ID_VIDEO_PROC_AMP_Brightness = 0x02,
294 CAM_PROPERTY_ID_VIDEO_PROC_AMP_Contrast = 0x03,
295 CAM_PROPERTY_ID_VIDEO_PROC_AMP_Hue = 0x04,
296 CAM_PROPERTY_ID_VIDEO_PROC_AMP_WhiteBalance = 0x05
297} CAM_PROPERTY_ID_VIDEO;
301 CAM_PROPERTY_CAPABILITY_Manual = 0x01u,
302 CAM_PROPERTY_CAPABILITY_Auto = 0x02u
303} CAM_PROPERTY_CAPABILITIES;
307 CAM_PROPERTY_SET PropertySet;
326 CAM_PROPERTY_SET PropertySet;
332 CAM_PROPERTY_MODE_Manual = 0x01,
333 CAM_PROPERTY_MODE_Auto = 0x02,
338 CAM_PROPERTY_MODE Mode;
351 CAM_PROPERTY_SET PropertySet;