FreeRDP
Loading...
Searching...
No Matches
yuv.h
1
20#ifndef FREERDP_CODEC_YUV_H
21#define FREERDP_CODEC_YUV_H
22
23#include <freerdp/api.h>
24#include <freerdp/types.h>
25#include <freerdp/constants.h>
26
27#ifdef __cplusplus
28extern "C"
29{
30#endif
31
32 typedef struct S_YUV_CONTEXT YUV_CONTEXT;
33
34 WINPR_ATTR_NODISCARD
35 FREERDP_API BOOL yuv420_context_decode(
36 YUV_CONTEXT* WINPR_RESTRICT context, const BYTE* WINPR_RESTRICT pYUVData[3],
37 const UINT32 iStride[3], UINT32 yuvHeight, DWORD DstFormat, BYTE* WINPR_RESTRICT dest,
38 UINT32 nDstStep, const RECTANGLE_16* WINPR_RESTRICT regionRects, UINT32 numRegionRects);
39
40 WINPR_ATTR_NODISCARD
41 FREERDP_API BOOL yuv420_context_encode(YUV_CONTEXT* WINPR_RESTRICT context,
42 const BYTE* WINPR_RESTRICT pSrcData, UINT32 nSrcStep,
43 UINT32 SrcFormat, const UINT32 iStride[3],
44 BYTE* WINPR_RESTRICT pYUVData[3],
45 const RECTANGLE_16* WINPR_RESTRICT regionRects,
46 UINT32 numRegionRects);
47
48 WINPR_ATTR_NODISCARD
49 FREERDP_API BOOL yuv444_context_decode(
50 YUV_CONTEXT* WINPR_RESTRICT context, BYTE type, const BYTE* WINPR_RESTRICT pYUVData[3],
51 const UINT32 iStride[3], UINT32 srcYuvHeight, BYTE* WINPR_RESTRICT pYUVDstData[3],
52 const UINT32 iDstStride[3], DWORD DstFormat, BYTE* WINPR_RESTRICT dest, UINT32 nDstStep,
53 const RECTANGLE_16* WINPR_RESTRICT regionRects, UINT32 numRegionRects);
54
55 WINPR_ATTR_NODISCARD
56 FREERDP_API BOOL yuv444_context_encode(YUV_CONTEXT* WINPR_RESTRICT context, BYTE version,
57 const BYTE* WINPR_RESTRICT pSrcData, UINT32 nSrcStep,
58 UINT32 SrcFormat, const UINT32 iStride[3],
59 BYTE* WINPR_RESTRICT pYUVLumaData[3],
60 BYTE* WINPR_RESTRICT pYUVChromaData[3],
61 const RECTANGLE_16* WINPR_RESTRICT regionRects,
62 UINT32 numRegionRects);
63
64 WINPR_ATTR_NODISCARD
65 FREERDP_API BOOL yuv_context_reset(YUV_CONTEXT* WINPR_RESTRICT context, UINT32 width,
66 UINT32 height);
67
68 FREERDP_API void yuv_context_free(YUV_CONTEXT* context);
69
70 WINPR_ATTR_MALLOC(yuv_context_free, 1)
71 WINPR_ATTR_NODISCARD
72 FREERDP_API YUV_CONTEXT* yuv_context_new(BOOL encoder, UINT32 ThreadingFlags);
73
74#ifdef __cplusplus
75}
76#endif
77
78#endif /* FREERDP_CODEC_YUV_H */