20 #ifndef FREERDP_CHANNEL_RDPGFX_H
21 #define FREERDP_CHANNEL_RDPGFX_H
23 #include <freerdp/api.h>
24 #include <freerdp/dvc.h>
25 #include <freerdp/types.h>
31 #define RDPGFX_CHANNEL_NAME "rdpgfx"
32 #define RDPGFX_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::Graphics"
56 #define GFX_PIXEL_FORMAT_XRGB_8888 0x20
57 #define GFX_PIXEL_FORMAT_ARGB_8888 0x21
59 typedef BYTE RDPGFX_PIXELFORMAT;
61 #define RDPGFX_CMDID_UNUSED_0000 0x0000
62 #define RDPGFX_CMDID_WIRETOSURFACE_1 0x0001
63 #define RDPGFX_CMDID_WIRETOSURFACE_2 0x0002
64 #define RDPGFX_CMDID_DELETEENCODINGCONTEXT 0x0003
65 #define RDPGFX_CMDID_SOLIDFILL 0x0004
66 #define RDPGFX_CMDID_SURFACETOSURFACE 0x0005
67 #define RDPGFX_CMDID_SURFACETOCACHE 0x0006
68 #define RDPGFX_CMDID_CACHETOSURFACE 0x0007
69 #define RDPGFX_CMDID_EVICTCACHEENTRY 0x0008
70 #define RDPGFX_CMDID_CREATESURFACE 0x0009
71 #define RDPGFX_CMDID_DELETESURFACE 0x000A
72 #define RDPGFX_CMDID_STARTFRAME 0x000B
73 #define RDPGFX_CMDID_ENDFRAME 0x000C
74 #define RDPGFX_CMDID_FRAMEACKNOWLEDGE 0x000D
75 #define RDPGFX_CMDID_RESETGRAPHICS 0x000E
76 #define RDPGFX_CMDID_MAPSURFACETOOUTPUT 0x000F
77 #define RDPGFX_CMDID_CACHEIMPORTOFFER 0x0010
78 #define RDPGFX_CMDID_CACHEIMPORTREPLY 0x0011
79 #define RDPGFX_CMDID_CAPSADVERTISE 0x0012
80 #define RDPGFX_CMDID_CAPSCONFIRM 0x0013
81 #define RDPGFX_CMDID_UNUSED_0014 0x0014
82 #define RDPGFX_CMDID_MAPSURFACETOWINDOW 0x0015
83 #define RDPGFX_CMDID_QOEFRAMEACKNOWLEDGE 0x0016
84 #define RDPGFX_CMDID_MAPSURFACETOSCALEDOUTPUT 0x0017
85 #define RDPGFX_CMDID_MAPSURFACETOSCALEDWINDOW 0x0018
87 #define RDPGFX_HEADER_SIZE 8
100 #define RDPGFX_CAPVERSION_8 0x00080004
101 #define RDPGFX_CAPVERSION_81 0x00080105
102 #define RDPGFX_CAPVERSION_10 0x000A0002
103 #define RDPGFX_CAPVERSION_101 0x000A0100
104 #define RDPGFX_CAPVERSION_102 0x000A0200
105 #define RDPGFX_CAPVERSION_103 0x000A0301
106 #define RDPGFX_CAPVERSION_104 0x000A0400
107 #define RDPGFX_CAPVERSION_105 0x000A0502
108 #define RDPGFX_CAPVERSION_106 \
114 #define RDPGFX_CAPVERSION_106_ERR 0x000A0601
115 #define RDPGFX_CAPVERSION_107 0x000A0701
117 #define RDPGFX_NUMBER_CAPSETS 11
118 #define RDPGFX_CAPSET_BASE_SIZE 8
127 #define RDPGFX_CAPS_FLAG_THINCLIENT 0x00000001U
128 #define RDPGFX_CAPS_FLAG_SMALL_CACHE 0x00000002U
129 #define RDPGFX_CAPS_FLAG_AVC420_ENABLED 0x00000010U
130 #define RDPGFX_CAPS_FLAG_AVC_DISABLED 0x00000020U
131 #define RDPGFX_CAPS_FLAG_AVC_THINCLIENT 0x00000040U
132 #define RDPGFX_CAPS_FLAG_SCALEDMAP_DISABLE 0x00000080U
137 UINT32 capsDataLength;
144 UINT32 capsDataLength;
151 UINT32 capsDataLength;
159 #define RDPGFX_CODECID_UNCOMPRESSED 0x0000
160 #define RDPGFX_CODECID_CAVIDEO 0x0003
161 #define RDPGFX_CODECID_CLEARCODEC 0x0008
162 #define RDPGFX_CODECID_PLANAR 0x000A
163 #define RDPGFX_CODECID_AVC420 0x000B
164 #define RDPGFX_CODECID_ALPHA 0x000C
165 #define RDPGFX_CODECID_AVC444 0x000E
166 #define RDPGFX_CODECID_AVC444v2 0x000F
168 #define RDPGFX_WIRE_TO_SURFACE_PDU_1_SIZE 17
174 RDPGFX_PIXELFORMAT pixelFormat;
176 UINT32 bitmapDataLength;
180 #define RDPGFX_CODECID_CAPROGRESSIVE 0x0009
181 #define RDPGFX_CODECID_CAPROGRESSIVE_V2 0x000D
183 #define RDPGFX_WIRE_TO_SURFACE_PDU_2_SIZE 13
189 UINT32 codecContextId;
190 RDPGFX_PIXELFORMAT pixelFormat;
191 UINT32 bitmapDataLength;
215 UINT32 codecContextId;
222 UINT16 fillRectCount;
229 UINT16 surfaceIdDest;
261 RDPGFX_PIXELFORMAT pixelFormat;
269 #define RDPGFX_START_FRAME_PDU_SIZE 8
277 #define RDPGFX_END_FRAME_PDU_SIZE 4
284 #define QUEUE_DEPTH_UNAVAILABLE 0x00000000
285 #define SUSPEND_FRAME_ACKNOWLEDGEMENT 0xFFFFFFFF
291 UINT32 totalFramesDecoded;
306 UINT32 outputOriginX;
307 UINT32 outputOriginY;
314 UINT32 outputOriginX;
315 UINT32 outputOriginY;
326 #define RDPGFX_CACHE_ENTRY_MAX_COUNT 5462
330 UINT16 cacheEntriesCount;
336 UINT16 importedEntriesCount;
337 UINT16 cacheSlots[RDPGFX_CACHE_ENTRY_MAX_COUNT];
383 UINT32 numRegionRects;
397 UINT32 cbAvc420EncodedBitstream1;