20#ifndef FREERDP_CODEC_ZGFX_H
21#define FREERDP_CODEC_ZGFX_H
23#include <freerdp/api.h>
24#include <freerdp/types.h>
26#include <freerdp/codec/bulk.h>
28#define ZGFX_SEGMENTED_SINGLE 0xE0
29#define ZGFX_SEGMENTED_MULTIPART 0xE1
31#define ZGFX_PACKET_COMPR_TYPE_RDP8 0x04
33#define ZGFX_SEGMENTED_MAXSIZE 65535
40 typedef struct S_ZGFX_CONTEXT ZGFX_CONTEXT;
43 FREERDP_API
int zgfx_decompress(ZGFX_CONTEXT* WINPR_RESTRICT zgfx,
44 const BYTE* WINPR_RESTRICT pSrcData, UINT32 SrcSize,
45 BYTE** WINPR_RESTRICT ppDstData,
46 UINT32* WINPR_RESTRICT pDstSize, UINT32 flags);
49 FREERDP_API
int zgfx_compress(ZGFX_CONTEXT* WINPR_RESTRICT zgfx,
50 const BYTE* WINPR_RESTRICT pSrcData, UINT32 SrcSize,
51 BYTE** WINPR_RESTRICT ppDstData, UINT32* WINPR_RESTRICT pDstSize,
52 UINT32* WINPR_RESTRICT pFlags);
55 FREERDP_API
int zgfx_compress_to_stream(ZGFX_CONTEXT* WINPR_RESTRICT zgfx,
57 const BYTE* WINPR_RESTRICT pUncompressed,
58 UINT32 uncompressedSize, UINT32* WINPR_RESTRICT pFlags);
60 FREERDP_API
void zgfx_context_reset(ZGFX_CONTEXT* WINPR_RESTRICT zgfx, BOOL flush);
62 FREERDP_API
void zgfx_context_free(ZGFX_CONTEXT* zgfx);
64 WINPR_ATTR_MALLOC(zgfx_context_free, 1)
66 FREERDP_API ZGFX_CONTEXT* zgfx_context_new(BOOL Compressor);