19#ifndef FREERDP_SERVER_SHADOW_ENCODER_H
20#define FREERDP_SERVER_SHADOW_ENCODER_H
23#include <winpr/stream.h>
25#include <freerdp/freerdp.h>
26#include <freerdp/codecs.h>
28#include <freerdp/server/shadow.h>
32#define SHADOW_GFX_FRAMES_IN_FLIGHT 8
36 rdpShadowClient* client;
37 rdpShadowServer* server;
54 BITMAP_PLANAR_CONTEXT* planar;
55 BITMAP_INTERLEAVED_CONTEXT* interleaved;
57 PROGRESSIVE_CONTEXT* progressive;
58#if defined(WITH_GFX_AV1)
59 FREERDP_AV1_CONTEXT* av1;
61#if defined(WITH_GFX_AV2)
62 FREERDP_AV2_CONTEXT* av2;
68 UINT32 lastAckframeId;
78 UINT32 statsMaxInFlight;
88 UINT32 gfxSnapshotWidth;
89 UINT32 gfxSnapshotHeight;
90 UINT32 gfxSnapshotStep;
91 BOOL gfxSnapshotValid;
99 WINPR_ATTR_NODISCARD
int shadow_encoder_reset(rdpShadowEncoder* encoder);
100 WINPR_ATTR_NODISCARD
int shadow_encoder_prepare(rdpShadowEncoder* encoder, UINT32 codecs);
101 WINPR_ATTR_NODISCARD UINT32 shadow_encoder_create_frame_id(rdpShadowEncoder* encoder);
103 void shadow_encoder_free(rdpShadowEncoder* encoder);
105 WINPR_ATTR_MALLOC(shadow_encoder_free, 1)
106 rdpShadowEncoder* shadow_encoder_new(rdpShadowClient* client);