Progressive struct now opaque.
This commit is contained in:
parent
ace5100e21
commit
d9810dd7a4
@ -31,209 +31,6 @@ typedef struct _PROGRESSIVE_CONTEXT PROGRESSIVE_CONTEXT;
|
||||
#include <freerdp/codec/rfx.h>
|
||||
#include <freerdp/codec/color.h>
|
||||
|
||||
#define RFX_SUBBAND_DIFFING 0x01
|
||||
|
||||
#define RFX_TILE_DIFFERENCE 0x01
|
||||
|
||||
#define RFX_DWT_REDUCE_EXTRAPOLATE 0x01
|
||||
|
||||
#define PROGRESSIVE_WBT_SYNC 0xCCC0
|
||||
#define PROGRESSIVE_WBT_FRAME_BEGIN 0xCCC1
|
||||
#define PROGRESSIVE_WBT_FRAME_END 0xCCC2
|
||||
#define PROGRESSIVE_WBT_CONTEXT 0xCCC3
|
||||
#define PROGRESSIVE_WBT_REGION 0xCCC4
|
||||
#define PROGRESSIVE_WBT_TILE_SIMPLE 0xCCC5
|
||||
#define PROGRESSIVE_WBT_TILE_FIRST 0xCCC6
|
||||
#define PROGRESSIVE_WBT_TILE_UPGRADE 0xCCC7
|
||||
|
||||
struct _RFX_COMPONENT_CODEC_QUANT
|
||||
{
|
||||
BYTE LL3;
|
||||
BYTE HL3;
|
||||
BYTE LH3;
|
||||
BYTE HH3;
|
||||
BYTE HL2;
|
||||
BYTE LH2;
|
||||
BYTE HH2;
|
||||
BYTE HL1;
|
||||
BYTE LH1;
|
||||
BYTE HH1;
|
||||
};
|
||||
typedef struct _RFX_COMPONENT_CODEC_QUANT RFX_COMPONENT_CODEC_QUANT;
|
||||
|
||||
struct _RFX_PROGRESSIVE_CODEC_QUANT
|
||||
{
|
||||
BYTE quality;
|
||||
RFX_COMPONENT_CODEC_QUANT yQuantValues;
|
||||
RFX_COMPONENT_CODEC_QUANT cbQuantValues;
|
||||
RFX_COMPONENT_CODEC_QUANT crQuantValues;
|
||||
};
|
||||
typedef struct _RFX_PROGRESSIVE_CODEC_QUANT RFX_PROGRESSIVE_CODEC_QUANT;
|
||||
|
||||
struct _PROGRESSIVE_BLOCK
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_BLOCK PROGRESSIVE_BLOCK;
|
||||
|
||||
struct _PROGRESSIVE_BLOCK_SYNC
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
|
||||
UINT32 magic;
|
||||
UINT16 version;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_BLOCK_SYNC PROGRESSIVE_BLOCK_SYNC;
|
||||
|
||||
struct _PROGRESSIVE_BLOCK_CONTEXT
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
|
||||
BYTE ctxId;
|
||||
UINT16 tileSize;
|
||||
BYTE flags;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_BLOCK_CONTEXT PROGRESSIVE_BLOCK_CONTEXT;
|
||||
|
||||
struct _RFX_PROGRESSIVE_TILE
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
|
||||
BYTE quantIdxY;
|
||||
BYTE quantIdxCb;
|
||||
BYTE quantIdxCr;
|
||||
UINT16 xIdx;
|
||||
UINT16 yIdx;
|
||||
|
||||
BYTE flags;
|
||||
BYTE quality;
|
||||
|
||||
UINT16 yLen;
|
||||
UINT16 cbLen;
|
||||
UINT16 crLen;
|
||||
UINT16 tailLen;
|
||||
const BYTE* yData;
|
||||
const BYTE* cbData;
|
||||
const BYTE* crData;
|
||||
const BYTE* tailData;
|
||||
|
||||
UINT16 ySrlLen;
|
||||
UINT16 yRawLen;
|
||||
UINT16 cbSrlLen;
|
||||
UINT16 cbRawLen;
|
||||
UINT16 crSrlLen;
|
||||
UINT16 crRawLen;
|
||||
const BYTE* ySrlData;
|
||||
const BYTE* yRawData;
|
||||
const BYTE* cbSrlData;
|
||||
const BYTE* cbRawData;
|
||||
const BYTE* crSrlData;
|
||||
const BYTE* crRawData;
|
||||
|
||||
UINT32 x;
|
||||
UINT32 y;
|
||||
UINT32 width;
|
||||
UINT32 height;
|
||||
UINT32 format;
|
||||
UINT32 stride;
|
||||
|
||||
BYTE* data;
|
||||
BYTE* current;
|
||||
|
||||
UINT16 pass;
|
||||
BYTE* sign;
|
||||
RFX_COMPONENT_CODEC_QUANT yBitPos;
|
||||
RFX_COMPONENT_CODEC_QUANT cbBitPos;
|
||||
RFX_COMPONENT_CODEC_QUANT crBitPos;
|
||||
RFX_COMPONENT_CODEC_QUANT yQuant;
|
||||
RFX_COMPONENT_CODEC_QUANT cbQuant;
|
||||
RFX_COMPONENT_CODEC_QUANT crQuant;
|
||||
RFX_COMPONENT_CODEC_QUANT yProgQuant;
|
||||
RFX_COMPONENT_CODEC_QUANT cbProgQuant;
|
||||
RFX_COMPONENT_CODEC_QUANT crProgQuant;
|
||||
};
|
||||
typedef struct _RFX_PROGRESSIVE_TILE RFX_PROGRESSIVE_TILE;
|
||||
|
||||
struct _PROGRESSIVE_BLOCK_REGION
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
|
||||
BYTE tileSize;
|
||||
UINT16 numRects;
|
||||
BYTE numQuant;
|
||||
BYTE numProgQuant;
|
||||
BYTE flags;
|
||||
UINT16 numTiles;
|
||||
UINT32 tileDataSize;
|
||||
RFX_RECT* rects;
|
||||
RFX_COMPONENT_CODEC_QUANT* quantVals;
|
||||
RFX_PROGRESSIVE_CODEC_QUANT* quantProgVals;
|
||||
RFX_PROGRESSIVE_TILE** tiles;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_BLOCK_REGION PROGRESSIVE_BLOCK_REGION;
|
||||
|
||||
struct _PROGRESSIVE_BLOCK_FRAME_BEGIN
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
|
||||
UINT32 frameIndex;
|
||||
UINT16 regionCount;
|
||||
PROGRESSIVE_BLOCK_REGION* regions;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_BLOCK_FRAME_BEGIN PROGRESSIVE_BLOCK_FRAME_BEGIN;
|
||||
|
||||
struct _PROGRESSIVE_BLOCK_FRAME_END
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_BLOCK_FRAME_END PROGRESSIVE_BLOCK_FRAME_END;
|
||||
|
||||
struct _PROGRESSIVE_SURFACE_CONTEXT
|
||||
{
|
||||
UINT16 id;
|
||||
UINT32 width;
|
||||
UINT32 height;
|
||||
UINT32 gridWidth;
|
||||
UINT32 gridHeight;
|
||||
UINT32 gridSize;
|
||||
RFX_PROGRESSIVE_TILE* tiles;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_SURFACE_CONTEXT PROGRESSIVE_SURFACE_CONTEXT;
|
||||
|
||||
struct _PROGRESSIVE_CONTEXT
|
||||
{
|
||||
BOOL Compressor;
|
||||
|
||||
wBufferPool* bufferPool;
|
||||
|
||||
UINT32 cRects;
|
||||
RFX_RECT* rects;
|
||||
|
||||
UINT32 format;
|
||||
|
||||
UINT32 cTiles;
|
||||
RFX_PROGRESSIVE_TILE** tiles;
|
||||
|
||||
UINT32 cQuant;
|
||||
RFX_COMPONENT_CODEC_QUANT* quantVals;
|
||||
|
||||
UINT32 cProgQuant;
|
||||
RFX_PROGRESSIVE_CODEC_QUANT* quantProgVals;
|
||||
|
||||
PROGRESSIVE_BLOCK_REGION region;
|
||||
RFX_PROGRESSIVE_CODEC_QUANT quantProgValFull;
|
||||
|
||||
wHashTable* SurfaceContexts;
|
||||
wLog* log;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -37,6 +37,209 @@
|
||||
|
||||
#define TAG FREERDP_TAG("codec.progressive")
|
||||
|
||||
#define RFX_SUBBAND_DIFFING 0x01
|
||||
|
||||
#define RFX_TILE_DIFFERENCE 0x01
|
||||
|
||||
#define RFX_DWT_REDUCE_EXTRAPOLATE 0x01
|
||||
|
||||
#define PROGRESSIVE_WBT_SYNC 0xCCC0
|
||||
#define PROGRESSIVE_WBT_FRAME_BEGIN 0xCCC1
|
||||
#define PROGRESSIVE_WBT_FRAME_END 0xCCC2
|
||||
#define PROGRESSIVE_WBT_CONTEXT 0xCCC3
|
||||
#define PROGRESSIVE_WBT_REGION 0xCCC4
|
||||
#define PROGRESSIVE_WBT_TILE_SIMPLE 0xCCC5
|
||||
#define PROGRESSIVE_WBT_TILE_FIRST 0xCCC6
|
||||
#define PROGRESSIVE_WBT_TILE_UPGRADE 0xCCC7
|
||||
|
||||
struct _RFX_COMPONENT_CODEC_QUANT
|
||||
{
|
||||
BYTE LL3;
|
||||
BYTE HL3;
|
||||
BYTE LH3;
|
||||
BYTE HH3;
|
||||
BYTE HL2;
|
||||
BYTE LH2;
|
||||
BYTE HH2;
|
||||
BYTE HL1;
|
||||
BYTE LH1;
|
||||
BYTE HH1;
|
||||
};
|
||||
typedef struct _RFX_COMPONENT_CODEC_QUANT RFX_COMPONENT_CODEC_QUANT;
|
||||
|
||||
struct _RFX_PROGRESSIVE_CODEC_QUANT
|
||||
{
|
||||
BYTE quality;
|
||||
RFX_COMPONENT_CODEC_QUANT yQuantValues;
|
||||
RFX_COMPONENT_CODEC_QUANT cbQuantValues;
|
||||
RFX_COMPONENT_CODEC_QUANT crQuantValues;
|
||||
};
|
||||
typedef struct _RFX_PROGRESSIVE_CODEC_QUANT RFX_PROGRESSIVE_CODEC_QUANT;
|
||||
|
||||
struct _PROGRESSIVE_BLOCK
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_BLOCK PROGRESSIVE_BLOCK;
|
||||
|
||||
struct _PROGRESSIVE_BLOCK_SYNC
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
|
||||
UINT32 magic;
|
||||
UINT16 version;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_BLOCK_SYNC PROGRESSIVE_BLOCK_SYNC;
|
||||
|
||||
struct _PROGRESSIVE_BLOCK_CONTEXT
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
|
||||
BYTE ctxId;
|
||||
UINT16 tileSize;
|
||||
BYTE flags;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_BLOCK_CONTEXT PROGRESSIVE_BLOCK_CONTEXT;
|
||||
|
||||
struct _RFX_PROGRESSIVE_TILE
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
|
||||
BYTE quantIdxY;
|
||||
BYTE quantIdxCb;
|
||||
BYTE quantIdxCr;
|
||||
UINT16 xIdx;
|
||||
UINT16 yIdx;
|
||||
|
||||
BYTE flags;
|
||||
BYTE quality;
|
||||
|
||||
UINT16 yLen;
|
||||
UINT16 cbLen;
|
||||
UINT16 crLen;
|
||||
UINT16 tailLen;
|
||||
const BYTE* yData;
|
||||
const BYTE* cbData;
|
||||
const BYTE* crData;
|
||||
const BYTE* tailData;
|
||||
|
||||
UINT16 ySrlLen;
|
||||
UINT16 yRawLen;
|
||||
UINT16 cbSrlLen;
|
||||
UINT16 cbRawLen;
|
||||
UINT16 crSrlLen;
|
||||
UINT16 crRawLen;
|
||||
const BYTE* ySrlData;
|
||||
const BYTE* yRawData;
|
||||
const BYTE* cbSrlData;
|
||||
const BYTE* cbRawData;
|
||||
const BYTE* crSrlData;
|
||||
const BYTE* crRawData;
|
||||
|
||||
UINT32 x;
|
||||
UINT32 y;
|
||||
UINT32 width;
|
||||
UINT32 height;
|
||||
UINT32 format;
|
||||
UINT32 stride;
|
||||
|
||||
BYTE* data;
|
||||
BYTE* current;
|
||||
|
||||
UINT16 pass;
|
||||
BYTE* sign;
|
||||
RFX_COMPONENT_CODEC_QUANT yBitPos;
|
||||
RFX_COMPONENT_CODEC_QUANT cbBitPos;
|
||||
RFX_COMPONENT_CODEC_QUANT crBitPos;
|
||||
RFX_COMPONENT_CODEC_QUANT yQuant;
|
||||
RFX_COMPONENT_CODEC_QUANT cbQuant;
|
||||
RFX_COMPONENT_CODEC_QUANT crQuant;
|
||||
RFX_COMPONENT_CODEC_QUANT yProgQuant;
|
||||
RFX_COMPONENT_CODEC_QUANT cbProgQuant;
|
||||
RFX_COMPONENT_CODEC_QUANT crProgQuant;
|
||||
};
|
||||
typedef struct _RFX_PROGRESSIVE_TILE RFX_PROGRESSIVE_TILE;
|
||||
|
||||
struct _PROGRESSIVE_BLOCK_REGION
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
|
||||
BYTE tileSize;
|
||||
UINT16 numRects;
|
||||
BYTE numQuant;
|
||||
BYTE numProgQuant;
|
||||
BYTE flags;
|
||||
UINT16 numTiles;
|
||||
UINT32 tileDataSize;
|
||||
RFX_RECT* rects;
|
||||
RFX_COMPONENT_CODEC_QUANT* quantVals;
|
||||
RFX_PROGRESSIVE_CODEC_QUANT* quantProgVals;
|
||||
RFX_PROGRESSIVE_TILE** tiles;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_BLOCK_REGION PROGRESSIVE_BLOCK_REGION;
|
||||
|
||||
struct _PROGRESSIVE_BLOCK_FRAME_BEGIN
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
|
||||
UINT32 frameIndex;
|
||||
UINT16 regionCount;
|
||||
PROGRESSIVE_BLOCK_REGION* regions;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_BLOCK_FRAME_BEGIN PROGRESSIVE_BLOCK_FRAME_BEGIN;
|
||||
|
||||
struct _PROGRESSIVE_BLOCK_FRAME_END
|
||||
{
|
||||
UINT16 blockType;
|
||||
UINT32 blockLen;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_BLOCK_FRAME_END PROGRESSIVE_BLOCK_FRAME_END;
|
||||
|
||||
struct _PROGRESSIVE_SURFACE_CONTEXT
|
||||
{
|
||||
UINT16 id;
|
||||
UINT32 width;
|
||||
UINT32 height;
|
||||
UINT32 gridWidth;
|
||||
UINT32 gridHeight;
|
||||
UINT32 gridSize;
|
||||
RFX_PROGRESSIVE_TILE* tiles;
|
||||
};
|
||||
typedef struct _PROGRESSIVE_SURFACE_CONTEXT PROGRESSIVE_SURFACE_CONTEXT;
|
||||
|
||||
struct _PROGRESSIVE_CONTEXT
|
||||
{
|
||||
BOOL Compressor;
|
||||
|
||||
wBufferPool* bufferPool;
|
||||
|
||||
UINT32 cRects;
|
||||
RFX_RECT* rects;
|
||||
|
||||
UINT32 format;
|
||||
|
||||
UINT32 cTiles;
|
||||
RFX_PROGRESSIVE_TILE** tiles;
|
||||
|
||||
UINT32 cQuant;
|
||||
RFX_COMPONENT_CODEC_QUANT* quantVals;
|
||||
|
||||
UINT32 cProgQuant;
|
||||
RFX_PROGRESSIVE_CODEC_QUANT* quantProgVals;
|
||||
|
||||
PROGRESSIVE_BLOCK_REGION region;
|
||||
RFX_PROGRESSIVE_CODEC_QUANT quantProgValFull;
|
||||
|
||||
wHashTable* SurfaceContexts;
|
||||
wLog* log;
|
||||
};
|
||||
|
||||
static const char* progressive_get_block_type_string(UINT16 blockType)
|
||||
{
|
||||
switch (blockType)
|
||||
@ -846,7 +1049,7 @@ static INLINE int progressive_decompress_tile_first(PROGRESSIVE_CONTEXT* progres
|
||||
pSrcDst[2], pCurrent[2], pSign[2], diff); /* Cr */
|
||||
prims->yCbCrToRGB_16s8u_P3AC4R((const INT16**) pSrcDst, 64 * 2,
|
||||
tile->data, tile->format,
|
||||
64 * GetBytesPerPixel(progressive->format), &roi_64x64);
|
||||
tile->stride, &roi_64x64);
|
||||
BufferPool_Return(progressive->bufferPool, pBuffer);
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user