FreeRDP
Loading...
Searching...
No Matches
codec/video.h
1
20#ifndef FREERDP_CODEC_VIDEO_H
21#define FREERDP_CODEC_VIDEO_H
22
23#include <freerdp/api.h>
24#include <freerdp/types.h>
25#include <winpr/stream.h>
26
27#ifdef __cplusplus
28extern "C"
29{
30#endif
31
32 typedef struct s_FREERDP_VIDEO_CONTEXT FREERDP_VIDEO_CONTEXT;
33
41 typedef enum
42 {
43 FREERDP_VIDEO_FORMAT_NONE = 0,
44
45 /* Compressed formats */
46 FREERDP_VIDEO_FORMAT_MJPEG,
47 FREERDP_VIDEO_FORMAT_H264,
48
49 /* Planar YUV formats */
50 FREERDP_VIDEO_FORMAT_YUV420P, /* I420 */
51 FREERDP_VIDEO_FORMAT_NV12,
52
53 /* Packed YUV formats */
54 FREERDP_VIDEO_FORMAT_YUYV422, /* YUY2 */
55
56 /* RGB formats */
57 FREERDP_VIDEO_FORMAT_RGB24,
58 FREERDP_VIDEO_FORMAT_RGB32, /* Platform-specific BGRA/ARGB */
59 } FREERDP_VIDEO_FORMAT;
60
67 FREERDP_API void freerdp_video_context_free(FREERDP_VIDEO_CONTEXT* context);
68
77 WINPR_ATTR_MALLOC(freerdp_video_context_free, 1)
78 FREERDP_API FREERDP_VIDEO_CONTEXT* freerdp_video_context_new(UINT32 width, UINT32 height);
79
86 WINPR_ATTR_NODISCARD
87 FREERDP_API BOOL freerdp_video_available(void);
88
97 WINPR_ATTR_NODISCARD
98 FREERDP_API BOOL freerdp_video_conversion_supported(FREERDP_VIDEO_FORMAT srcFormat,
99 FREERDP_VIDEO_FORMAT dstFormat);
100
121 WINPR_ATTR_NODISCARD
122 FREERDP_API BOOL freerdp_video_context_reconfigure(FREERDP_VIDEO_CONTEXT* context, UINT32 width,
123 UINT32 height, UINT32 framerate,
124 UINT32 bitrate, UINT32 usageType);
125
166 WINPR_ATTR_NODISCARD
167 FREERDP_API BOOL freerdp_video_sample_convert(FREERDP_VIDEO_CONTEXT* context,
168 FREERDP_VIDEO_FORMAT srcFormat,
169 const void* srcSampleData, size_t srcSampleLength,
170 FREERDP_VIDEO_FORMAT dstFormat, wStream* output);
171
172#ifdef __cplusplus
173}
174#endif
175
176#endif /* FREERDP_CODEC_VIDEO_H */