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
66 WINPR_ATTR_NODISCARD
67 FREERDP_API const char* freerdp_video_format_string(UINT32 format);
68
75 FREERDP_API void freerdp_video_context_free(FREERDP_VIDEO_CONTEXT* context);
76
85 WINPR_ATTR_MALLOC(freerdp_video_context_free, 1)
86 FREERDP_API FREERDP_VIDEO_CONTEXT* freerdp_video_context_new(UINT32 width, UINT32 height);
87
94 WINPR_ATTR_NODISCARD
95 FREERDP_API BOOL freerdp_video_available(void);
96
105 WINPR_ATTR_NODISCARD
106 FREERDP_API BOOL freerdp_video_conversion_supported(FREERDP_VIDEO_FORMAT srcFormat,
107 FREERDP_VIDEO_FORMAT dstFormat);
108
129 WINPR_ATTR_NODISCARD
130 FREERDP_API BOOL freerdp_video_context_reconfigure(FREERDP_VIDEO_CONTEXT* context, UINT32 width,
131 UINT32 height, UINT32 framerate,
132 UINT32 bitrate, UINT32 usageType);
133
174 WINPR_ATTR_NODISCARD
175 FREERDP_API BOOL freerdp_video_sample_convert(FREERDP_VIDEO_CONTEXT* context,
176 FREERDP_VIDEO_FORMAT srcFormat,
177 const void* srcSampleData, size_t srcSampleLength,
178 FREERDP_VIDEO_FORMAT dstFormat, wStream* output);
179
180#ifdef __cplusplus
181}
182#endif
183
184#endif /* FREERDP_CODEC_VIDEO_H */