FreeRDP
Loading...
Searching...
No Matches
nsc_types.h
1
21#ifndef FREERDP_LIB_CODEC_NSC_TYPES_H
22#define FREERDP_LIB_CODEC_NSC_TYPES_H
23
24#include <freerdp/config.h>
25
26#include <winpr/assert.h>
27#include <winpr/cast.h>
28#include <winpr/crt.h>
29#include <winpr/wlog.h>
30#include <winpr/collections.h>
31
32#include <freerdp/utils/profiler.h>
33#include <freerdp/codec/nsc.h>
34
35#define ROUND_UP_TO(_b, _n) (_b + ((~(_b & (_n - 1)) + 0x1) & (_n - 1)))
36#define MINMAX(_v, _l, _h) \
37 ((_v) < (_l) ? WINPR_ASSERTING_INT_CAST(BYTE, (_l)) \
38 : ((_v) > (_h) ? WINPR_ASSERTING_INT_CAST(BYTE, (_h)) \
39 : WINPR_ASSERTING_INT_CAST(BYTE, (_v))))
40
41typedef struct
42{
43 wLog* log;
44
45 BYTE* PlaneBuffers[5]; /* Decompressed Plane Buffers in the respective order */
46 UINT32 PlaneBuffersLength; /* Lengths of each plane buffer */
47
48 /* profilers */
49 PROFILER_DEFINE(prof_nsc_rle_decompress_data)
50 PROFILER_DEFINE(prof_nsc_decode)
51 PROFILER_DEFINE(prof_nsc_rle_compress_data)
52 PROFILER_DEFINE(prof_nsc_encode)
54
56{
57 UINT32 OrgByteCount[4];
58 UINT32 format;
59 UINT16 width;
60 UINT16 height;
61 BYTE* BitmapData;
62 size_t BitmapDataLength;
63
64 BYTE* Planes;
65 size_t PlanesSize;
66 UINT32 PlaneByteCount[4];
67 UINT32 ColorLossLevel;
68 UINT32 ChromaSubsamplingLevel;
69 BOOL DynamicColorFidelity;
70
71 /* color palette allocated by the application */
72 const BYTE* palette;
73
74 BOOL (*decode)(NSC_CONTEXT* WINPR_RESTRICT context);
75 BOOL(*encode)
76 (NSC_CONTEXT* WINPR_RESTRICT context, const BYTE* WINPR_RESTRICT BitmapData, UINT32 rowstride);
77
78 NSC_CONTEXT_PRIV* priv;
79};
80
81#endif /* FREERDP_LIB_CODEC_NSC_TYPES_H */