FreeRDP
Loading...
Searching...
No Matches
hevc.h
1
18#pragma once
19
20#include <winpr/wlog.h>
21
22#include <freerdp/api.h>
23#include <freerdp/types.h>
24#include <freerdp/channels/rdpgfx.h>
25
26#ifdef __cplusplus
27extern "C"
28{
29#endif
30
31 typedef struct S_FREERDP_HEVC_CONTEXT FREERDP_HEVC_CONTEXT;
32
34 typedef enum
35 {
36 FREERDP_HEVC_VBR,
37 FREERDP_HEVC_CBR,
38 FREERDP_HEVC_CQ,
39 FREERDP_HEVC_Q
40 } FREERDP_HEVC_RATECONTROL;
41
43 typedef enum
44 {
45 FREERDP_HEVC_CONTEXT_OPTION_PROFILE,
46 FREERDP_HEVC_CONTEXT_OPTION_RATECONTROL,
47 FREERDP_HEVC_CONTEXT_OPTION_BITRATE,
48 FREERDP_HEVC_CONTEXT_OPTION_USAGETYPE,
49 FREERDP_HEVC_CONTEXT_OPTION_HW_ACCEL
50 } FREERDP_HEVC_CONTEXT_OPTION;
51
61 WINPR_ATTR_NODISCARD
62 FREERDP_API BOOL freerdp_hevc_context_set_option(FREERDP_HEVC_CONTEXT* hevc,
63 FREERDP_HEVC_CONTEXT_OPTION option,
64 UINT32 value);
65
73 WINPR_ATTR_NODISCARD
74 FREERDP_API UINT32 freerdp_hevc_context_get_option(FREERDP_HEVC_CONTEXT* hevc,
75 FREERDP_HEVC_CONTEXT_OPTION option);
76
93 WINPR_ATTR_NODISCARD
94 FREERDP_API INT32 freerdp_hevc_compress(FREERDP_HEVC_CONTEXT* hevc, const BYTE* pSrcData,
95 DWORD SrcFormat, UINT32 nSrcStep, UINT32 nSrcWidth,
96 UINT32 nSrcHeight, const RECTANGLE_16* regionRect,
97 BYTE** ppDstData, UINT32* pDstSize,
99
116 WINPR_ATTR_NODISCARD
117 FREERDP_API INT32 freerdp_hevc_decompress(FREERDP_HEVC_CONTEXT* hevc, const BYTE* pSrcData,
118 UINT32 SrcSize, BYTE* pDstData, DWORD DstFormat,
119 UINT32 nDstStep, UINT32 nDstWidth, UINT32 nDstHeight,
120 const RECTANGLE_16* regionRects,
121 UINT32 numRegionRect);
122
128 WINPR_ATTR_NODISCARD
129 FREERDP_API BOOL freerdp_hevc_context_reset(FREERDP_HEVC_CONTEXT* hevc, UINT32 width,
130 UINT32 height);
131
137 FREERDP_API void freerdp_hevc_context_free(FREERDP_HEVC_CONTEXT* hevc);
138
146 WINPR_ATTR_MALLOC(freerdp_hevc_context_free, 1)
147 FREERDP_API FREERDP_HEVC_CONTEXT* freerdp_hevc_context_new(BOOL Compressor);
148
149#ifdef __cplusplus
150}
151#endif