FreeRDP
Loading...
Searching...
No Matches
channels/rdpgfx.h
1
20
#ifndef FREERDP_CHANNEL_RDPGFX_H
21
#define FREERDP_CHANNEL_RDPGFX_H
22
23
#include <freerdp/api.h>
24
#include <freerdp/dvc.h>
25
#include <freerdp/types.h>
26
#include <freerdp/config.h>
27
32
#define RDPGFX_CHANNEL_NAME "rdpgfx"
33
#define RDPGFX_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::Graphics"
34
35
#ifdef __cplusplus
36
extern
"C"
37
{
38
#endif
43
typedef
struct
44
{
45
UINT16 x;
46
UINT16 y;
47
}
RDPGFX_POINT16
;
48
49
typedef
struct
50
{
51
BYTE B;
52
BYTE G;
53
BYTE R;
54
BYTE XA;
55
}
RDPGFX_COLOR32
;
56
57
#define GFX_PIXEL_FORMAT_XRGB_8888 0x20
58
#define GFX_PIXEL_FORMAT_ARGB_8888 0x21
59
60
typedef
BYTE RDPGFX_PIXELFORMAT;
61
62
#define RDPGFX_CMDID_UNUSED_0000 0x0000
63
#define RDPGFX_CMDID_WIRETOSURFACE_1 0x0001
64
#define RDPGFX_CMDID_WIRETOSURFACE_2 0x0002
65
#define RDPGFX_CMDID_DELETEENCODINGCONTEXT 0x0003
66
#define RDPGFX_CMDID_SOLIDFILL 0x0004
67
#define RDPGFX_CMDID_SURFACETOSURFACE 0x0005
68
#define RDPGFX_CMDID_SURFACETOCACHE 0x0006
69
#define RDPGFX_CMDID_CACHETOSURFACE 0x0007
70
#define RDPGFX_CMDID_EVICTCACHEENTRY 0x0008
71
#define RDPGFX_CMDID_CREATESURFACE 0x0009
72
#define RDPGFX_CMDID_DELETESURFACE 0x000A
73
#define RDPGFX_CMDID_STARTFRAME 0x000B
74
#define RDPGFX_CMDID_ENDFRAME 0x000C
75
#define RDPGFX_CMDID_FRAMEACKNOWLEDGE 0x000D
76
#define RDPGFX_CMDID_RESETGRAPHICS 0x000E
77
#define RDPGFX_CMDID_MAPSURFACETOOUTPUT 0x000F
78
#define RDPGFX_CMDID_CACHEIMPORTOFFER 0x0010
79
#define RDPGFX_CMDID_CACHEIMPORTREPLY 0x0011
80
#define RDPGFX_CMDID_CAPSADVERTISE 0x0012
81
#define RDPGFX_CMDID_CAPSCONFIRM 0x0013
82
#define RDPGFX_CMDID_UNUSED_0014 0x0014
83
#define RDPGFX_CMDID_MAPSURFACETOWINDOW 0x0015
84
#define RDPGFX_CMDID_QOEFRAMEACKNOWLEDGE 0x0016
85
#define RDPGFX_CMDID_MAPSURFACETOSCALEDOUTPUT 0x0017
86
#define RDPGFX_CMDID_MAPSURFACETOSCALEDWINDOW 0x0018
87
88
#define RDPGFX_HEADER_SIZE 8
89
90
typedef
struct
91
{
92
UINT16 cmdId;
93
UINT16 flags;
94
UINT32 pduLength;
95
}
RDPGFX_HEADER
;
96
100
#if defined(WITH_GFX_AV1)
101
#define RDPGFX_CAPVERSION_FRDP_1 0x00010000
/* Custom capversion for FreeRDP extensions */
102
#endif
103
104
#define RDPGFX_CAPVERSION_8 0x00080004
105
#define RDPGFX_CAPVERSION_81 0x00080105
106
#define RDPGFX_CAPVERSION_10 0x000A0002
107
#define RDPGFX_CAPVERSION_101 0x000A0100
108
#define RDPGFX_CAPVERSION_102 0x000A0200
109
#define RDPGFX_CAPVERSION_103 0x000A0301
110
#define RDPGFX_CAPVERSION_104 0x000A0400
111
#define RDPGFX_CAPVERSION_105 0x000A0502
112
#define RDPGFX_CAPVERSION_106 \
113
0x000A0600
118
#define RDPGFX_CAPVERSION_106_ERR 0x000A0601
119
#define RDPGFX_CAPVERSION_107 0x000A0701
121
#define RDPGFX_CAPSET_BASE_SIZE 8
122
123
typedef
struct
124
{
125
UINT32 version;
126
UINT32 length;
127
UINT32 flags;
128
}
RDPGFX_CAPSET
;
129
130
#define RDPGFX_CAPS_FLAG_THINCLIENT 0x00000001U
/* 8.0+ */
131
#define RDPGFX_CAPS_FLAG_SMALL_CACHE 0x00000002U
/* 8.0+ */
132
#define RDPGFX_CAPS_FLAG_AVC420_ENABLED 0x00000010U
/* 8.1+ */
133
#define RDPGFX_CAPS_FLAG_AVC_DISABLED 0x00000020U
/* 10.0+ */
134
#define RDPGFX_CAPS_FLAG_AVC_THINCLIENT 0x00000040U
/* 10.3+ */
135
#define RDPGFX_CAPS_FLAG_SCALEDMAP_DISABLE 0x00000080U
/* 10.7+ */
136
137
#if defined(WITH_GFX_AV1)
138
#define RDPGFX_CAPS_FLAG_AV1_I444_SUPPORTED \
139
0x10000000U
141
#define RDPGFX_CAPS_FLAG_AV1_I444_DISABLED \
142
0x20000000U
144
#endif
145
typedef
struct
146
{
147
UINT32 version;
148
UINT32 capsDataLength;
149
UINT32 flags;
150
}
RDPGFX_CAPSET_VERSION8
;
151
152
typedef
struct
153
{
154
UINT32 version;
155
UINT32 capsDataLength;
156
UINT32 flags;
157
}
RDPGFX_CAPSET_VERSION81
;
158
159
typedef
struct
160
{
161
UINT32 version;
162
UINT32 capsDataLength;
163
UINT32 flags;
164
}
RDPGFX_CAPSET_VERSION10
;
165
170
#define RDPGFX_CODECID_UNCOMPRESSED 0x0000
171
#if defined(WITH_GFX_AV1)
172
#define RDPGFX_CODECID_AV1 \
173
0x0001
174
#endif
175
#define RDPGFX_CODECID_CAVIDEO 0x0003
176
#define RDPGFX_CODECID_CLEARCODEC 0x0008
177
#define RDPGFX_CODECID_PLANAR 0x000A
178
#define RDPGFX_CODECID_AVC420 0x000B
179
#define RDPGFX_CODECID_ALPHA 0x000C
180
#define RDPGFX_CODECID_AVC444 0x000E
181
#define RDPGFX_CODECID_AVC444v2 0x000F
182
183
#define RDPGFX_WIRE_TO_SURFACE_PDU_1_SIZE 17
184
185
typedef
struct
186
{
187
UINT16 surfaceId;
188
UINT16 codecId;
189
RDPGFX_PIXELFORMAT pixelFormat;
190
RECTANGLE_16
destRect;
191
UINT32 bitmapDataLength;
192
BYTE* bitmapData;
193
}
RDPGFX_WIRE_TO_SURFACE_PDU_1
;
194
195
#define RDPGFX_CODECID_CAPROGRESSIVE 0x0009
196
#define RDPGFX_CODECID_CAPROGRESSIVE_V2 0x000D
197
198
#define RDPGFX_WIRE_TO_SURFACE_PDU_2_SIZE 13
199
200
typedef
struct
201
{
202
UINT16 surfaceId;
203
UINT16 codecId;
204
UINT32 codecContextId;
205
RDPGFX_PIXELFORMAT pixelFormat;
206
UINT32 bitmapDataLength;
207
BYTE* bitmapData;
208
}
RDPGFX_WIRE_TO_SURFACE_PDU_2
;
209
210
typedef
struct
211
{
212
UINT32 surfaceId;
213
UINT32 codecId;
214
UINT32 contextId;
215
UINT32 format;
/* FreeRDP color format. @see freerdp/codec/color.h */
216
UINT32 left;
217
UINT32 top;
218
UINT32 right;
219
UINT32 bottom;
220
UINT32 width;
221
UINT32 height;
222
UINT32 length;
223
BYTE* data;
224
void
* extra;
225
}
RDPGFX_SURFACE_COMMAND
;
226
227
typedef
struct
228
{
229
UINT16 surfaceId;
230
UINT32 codecContextId;
231
}
RDPGFX_DELETE_ENCODING_CONTEXT_PDU
;
232
233
typedef
struct
234
{
235
UINT16 surfaceId;
236
RDPGFX_COLOR32
fillPixel;
237
UINT16 fillRectCount;
238
RECTANGLE_16
* fillRects;
239
}
RDPGFX_SOLID_FILL_PDU
;
240
241
typedef
struct
242
{
243
UINT16 surfaceIdSrc;
244
UINT16 surfaceIdDest;
245
RECTANGLE_16
rectSrc;
246
UINT16 destPtsCount;
247
RDPGFX_POINT16
* destPts;
248
}
RDPGFX_SURFACE_TO_SURFACE_PDU
;
249
250
typedef
struct
251
{
252
UINT16 surfaceId;
253
UINT64 cacheKey;
254
UINT16 cacheSlot;
255
RECTANGLE_16
rectSrc;
256
}
RDPGFX_SURFACE_TO_CACHE_PDU
;
257
258
typedef
struct
259
{
260
UINT16 cacheSlot;
261
UINT16 surfaceId;
262
UINT16 destPtsCount;
263
RDPGFX_POINT16
* destPts;
264
}
RDPGFX_CACHE_TO_SURFACE_PDU
;
265
266
typedef
struct
267
{
268
UINT16 cacheSlot;
269
}
RDPGFX_EVICT_CACHE_ENTRY_PDU
;
270
271
typedef
struct
272
{
273
UINT16 surfaceId;
274
UINT16 width;
275
UINT16 height;
276
RDPGFX_PIXELFORMAT pixelFormat;
277
}
RDPGFX_CREATE_SURFACE_PDU
;
278
279
typedef
struct
280
{
281
UINT16 surfaceId;
282
}
RDPGFX_DELETE_SURFACE_PDU
;
283
284
#define RDPGFX_START_FRAME_PDU_SIZE 8
285
286
typedef
struct
287
{
288
UINT32 timestamp;
289
UINT32 frameId;
290
}
RDPGFX_START_FRAME_PDU
;
291
292
#define RDPGFX_END_FRAME_PDU_SIZE 4
293
294
typedef
struct
295
{
296
UINT32 frameId;
297
}
RDPGFX_END_FRAME_PDU
;
298
299
#define QUEUE_DEPTH_UNAVAILABLE 0x00000000
300
#define SUSPEND_FRAME_ACKNOWLEDGEMENT 0xFFFFFFFF
301
302
typedef
struct
303
{
304
UINT32 queueDepth;
305
UINT32 frameId;
306
UINT32 totalFramesDecoded;
307
}
RDPGFX_FRAME_ACKNOWLEDGE_PDU
;
308
309
typedef
struct
310
{
311
UINT32 width;
312
UINT32 height;
313
UINT32 monitorCount;
314
MONITOR_DEF
* monitorDefArray;
315
}
RDPGFX_RESET_GRAPHICS_PDU
;
316
317
typedef
struct
318
{
319
UINT16 surfaceId;
320
UINT16 reserved;
321
UINT32 outputOriginX;
322
UINT32 outputOriginY;
323
}
RDPGFX_MAP_SURFACE_TO_OUTPUT_PDU
;
324
325
typedef
struct
326
{
327
UINT16 surfaceId;
328
UINT16 reserved;
329
UINT32 outputOriginX;
330
UINT32 outputOriginY;
331
UINT32 targetWidth;
332
UINT32 targetHeight;
333
}
RDPGFX_MAP_SURFACE_TO_SCALED_OUTPUT_PDU
;
334
335
typedef
struct
336
{
337
UINT64 cacheKey;
338
UINT32 bitmapLength;
339
}
RDPGFX_CACHE_ENTRY_METADATA
;
340
341
#define RDPGFX_CACHE_ENTRY_MAX_COUNT 5462
342
343
typedef
struct
344
{
345
UINT16 cacheEntriesCount;
346
RDPGFX_CACHE_ENTRY_METADATA
cacheEntries[RDPGFX_CACHE_ENTRY_MAX_COUNT];
347
}
RDPGFX_CACHE_IMPORT_OFFER_PDU
;
348
349
typedef
struct
350
{
351
UINT16 importedEntriesCount;
352
UINT16 cacheSlots[RDPGFX_CACHE_ENTRY_MAX_COUNT];
353
}
RDPGFX_CACHE_IMPORT_REPLY_PDU
;
354
355
typedef
struct
356
{
357
UINT16 capsSetCount;
358
RDPGFX_CAPSET
* capsSets;
359
}
RDPGFX_CAPS_ADVERTISE_PDU
;
360
361
typedef
struct
362
{
363
RDPGFX_CAPSET
* capsSet;
364
}
RDPGFX_CAPS_CONFIRM_PDU
;
365
366
typedef
struct
367
{
368
UINT16 surfaceId;
369
UINT64 windowId;
370
UINT32 mappedWidth;
371
UINT32 mappedHeight;
372
}
RDPGFX_MAP_SURFACE_TO_WINDOW_PDU
;
373
374
typedef
struct
375
{
376
UINT16 surfaceId;
377
UINT64 windowId;
378
UINT32 mappedWidth;
379
UINT32 mappedHeight;
380
UINT32 targetWidth;
381
UINT32 targetHeight;
382
}
RDPGFX_MAP_SURFACE_TO_SCALED_WINDOW_PDU
;
383
384
/* H264 */
385
386
typedef
struct
387
{
388
BYTE qpVal;
389
BYTE qualityVal;
390
391
BYTE qp;
392
BYTE r;
393
BYTE p;
394
}
RDPGFX_H264_QUANT_QUALITY
;
395
396
typedef
struct
397
{
398
UINT32 numRegionRects;
399
RECTANGLE_16
* regionRects;
400
RDPGFX_H264_QUANT_QUALITY
* quantQualityVals;
401
}
RDPGFX_H264_METABLOCK
;
402
403
typedef
struct
404
{
405
RDPGFX_H264_METABLOCK
meta;
406
UINT32 length;
407
BYTE* data;
408
}
RDPGFX_AVC420_BITMAP_STREAM
;
409
410
typedef
struct
411
{
412
UINT32 cbAvc420EncodedBitstream1;
413
BYTE LC;
414
RDPGFX_AVC420_BITMAP_STREAM
bitstream[2];
415
}
RDPGFX_AVC444_BITMAP_STREAM
;
416
417
typedef
struct
418
{
419
UINT32 frameId;
420
UINT32 timestamp;
421
UINT16 timeDiffSE;
422
UINT16 timeDiffEDR;
423
}
RDPGFX_QOE_FRAME_ACKNOWLEDGE_PDU
;
424
425
#ifdef __cplusplus
426
}
427
#endif
428
#endif
/* FREERDP_CHANNEL_RDPGFX_H */
MONITOR_DEF
Definition
settings_types.h:413
RDPGFX_AVC420_BITMAP_STREAM
Definition
channels/rdpgfx.h:400
RDPGFX_AVC444_BITMAP_STREAM
Definition
channels/rdpgfx.h:407
RDPGFX_CACHE_ENTRY_METADATA
Definition
channels/rdpgfx.h:332
RDPGFX_CACHE_IMPORT_OFFER_PDU
Definition
channels/rdpgfx.h:340
RDPGFX_CACHE_IMPORT_REPLY_PDU
Definition
channels/rdpgfx.h:346
RDPGFX_CACHE_TO_SURFACE_PDU
Definition
channels/rdpgfx.h:255
RDPGFX_CAPSET_VERSION10
Definition
channels/rdpgfx.h:156
RDPGFX_CAPSET_VERSION81
Definition
channels/rdpgfx.h:149
RDPGFX_CAPSET_VERSION8
Definition
channels/rdpgfx.h:142
RDPGFX_CAPSET
Definition
channels/rdpgfx.h:120
RDPGFX_CAPS_ADVERTISE_PDU
Definition
channels/rdpgfx.h:352
RDPGFX_CAPS_CONFIRM_PDU
Definition
channels/rdpgfx.h:358
RDPGFX_COLOR32
Definition
channels/rdpgfx.h:50
RDPGFX_CREATE_SURFACE_PDU
Definition
channels/rdpgfx.h:268
RDPGFX_DELETE_ENCODING_CONTEXT_PDU
Definition
channels/rdpgfx.h:224
RDPGFX_DELETE_SURFACE_PDU
Definition
channels/rdpgfx.h:276
RDPGFX_END_FRAME_PDU
Definition
channels/rdpgfx.h:291
RDPGFX_EVICT_CACHE_ENTRY_PDU
Definition
channels/rdpgfx.h:263
RDPGFX_FRAME_ACKNOWLEDGE_PDU
Definition
channels/rdpgfx.h:299
RDPGFX_H264_METABLOCK
Definition
channels/rdpgfx.h:393
RDPGFX_H264_QUANT_QUALITY
Definition
channels/rdpgfx.h:383
RDPGFX_HEADER
Definition
channels/rdpgfx.h:91
RDPGFX_MAP_SURFACE_TO_OUTPUT_PDU
Definition
channels/rdpgfx.h:314
RDPGFX_MAP_SURFACE_TO_SCALED_OUTPUT_PDU
Definition
channels/rdpgfx.h:322
RDPGFX_MAP_SURFACE_TO_SCALED_WINDOW_PDU
Definition
channels/rdpgfx.h:371
RDPGFX_MAP_SURFACE_TO_WINDOW_PDU
Definition
channels/rdpgfx.h:363
RDPGFX_POINT16
Definition
channels/rdpgfx.h:44
RDPGFX_QOE_FRAME_ACKNOWLEDGE_PDU
Definition
channels/rdpgfx.h:414
RDPGFX_RESET_GRAPHICS_PDU
Definition
channels/rdpgfx.h:306
RDPGFX_SOLID_FILL_PDU
Definition
channels/rdpgfx.h:230
RDPGFX_START_FRAME_PDU
Definition
channels/rdpgfx.h:283
RDPGFX_SURFACE_COMMAND
Definition
channels/rdpgfx.h:207
RDPGFX_SURFACE_TO_CACHE_PDU
Definition
channels/rdpgfx.h:247
RDPGFX_SURFACE_TO_SURFACE_PDU
Definition
channels/rdpgfx.h:238
RDPGFX_WIRE_TO_SURFACE_PDU_1
Definition
channels/rdpgfx.h:182
RDPGFX_WIRE_TO_SURFACE_PDU_2
Definition
channels/rdpgfx.h:197
RECTANGLE_16
Definition
types.h:109
include
freerdp
channels
rdpgfx.h
Generated by
1.9.8