20 #ifndef FREERDP_CLIENT_CAMERA_H
21 #define FREERDP_CLIENT_CAMERA_H
28 #include <libswscale/swscale.h>
29 #include <libavutil/imgutils.h>
31 #include <winpr/wlog.h>
33 #include <freerdp/api.h>
34 #include <freerdp/types.h>
36 #include <freerdp/client/channels.h>
37 #include <freerdp/channels/log.h>
38 #include <freerdp/channels/rdpecam.h>
39 #include <freerdp/codecs.h>
40 #include <freerdp/primitives.h>
42 #define ECAM_PROTO_VERSION 0x02
44 #define ECAM_DEVICE_MAX_STREAMS 1
45 #define ECAM_MAX_MEDIA_TYPE_DESCRIPTORS 256
51 #define ECAM_MAX_SAMPLE_CREDITS 8
57 #define ECAM_SAMPLE_RESPONSE_BUFFER_SIZE (1024 * 4050)
64 IWTSListener* listener;
81 CAM_MEDIA_FORMAT inputFormat;
82 CAM_MEDIA_FORMAT outputFormat;
97 struct SwsContext* sws;
104 return stream->formats.inputFormat;
108 return stream->formats.outputFormat;
113 IWTSListener* listener;
127 const char* deviceId,
const char* deviceName);
130 typedef UINT (*ICamHalSampleCapturedCallback)(
CameraDevice* dev,
int streamIndex,
131 const BYTE* sample,
size_t size);
136 (ICamHal* ihal, ICamHalEnumCallback callback,
CameraPlugin* ecam,
138 INT16(*GetMediaTypeDescriptions)
139 (ICamHal* ihal,
const char* deviceId,
int streamIndex,
144 ICamHalSampleCapturedCallback callback);
145 UINT (*StopStream)(ICamHal* ihal,
const char* deviceId,
int streamIndex);
146 UINT (*Free)(ICamHal* hal);
149 typedef UINT (*PREGISTERCAMERAHAL)(IWTSPlugin* plugin, ICamHal* hal);
154 PREGISTERCAMERAHAL pRegisterCameraHal;
169 CAM_ERROR_CODE code);
171 wStream* out, BOOL freeStream);
176 WINPR_ATTR_MALLOC(ecam_dev_destroy, 1)
182 BOOL ecam_encoder_compress(
CameraDeviceStream* stream, const BYTE* srcData,
size_t srcSize,
183 BYTE** ppDstData,
size_t* pDstSize);