| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | /******************************************************************************   Module Title :     TokenEntropy.h**   Description  :     Video CODEC: Coefficient toke entropy header.**    AUTHOR      :     Paul Wilkins*******************************************************************************   Revision History**   1.01 PGW 27 Jun 01  Module created.*******************************************************************************//*****************************************************************************  Header Files******************************************************************************//*****************************************************************************  Header Frames******************************************************************************/#ifndef TOKEN_ENTROPY_H#define TOKEN_ENTROPY_H#include "type_aliases.h"#include "boolhuff.h"#include "codec_common.h"#include "huffman.h"/*****************************************************************************  Constants******************************************************************************/// VP5 hufman table AC bands#define VP5_AC_BANDS			6// Tokens								Value		Extra Bits (range + sign)#define ZERO_TOKEN              0		//0			Extra Bits 0+0#define ONE_TOKEN               1		//1			Extra Bits 0+1       #define TWO_TOKEN               2		//2			Extra Bits 0+1 #define THREE_TOKEN             3		//3			Extra Bits 0+1#define FOUR_TOKEN              4		//4			Extra Bits 0+1#define DCT_VAL_CATEGORY1		5		//5-6		Extra Bits 1+1#define DCT_VAL_CATEGORY2		6		//7-10		Extra Bits 2+1#define DCT_VAL_CATEGORY3		7		//11-26		Extra Bits 4+1#define DCT_VAL_CATEGORY4		8		//11-26		Extra Bits 5+1#define DCT_VAL_CATEGORY5		9		//27-58		Extra Bits 5+1#define DCT_VAL_CATEGORY6		10		//59+		Extra Bits 11+1	#define DCT_EOB_TOKEN           11		//EOB		Extra Bits 0+0#define MAX_ENTROPY_TOKENS      (DCT_EOB_TOKEN + 1)  #define ILLEGAL_TOKEN			255#define TOKEN_CONTEXTS			6 // EOB, 0, 1, 2, 3-4, x#define CONTEXT_NODES			(MAX_ENTROPY_TOKENS-7)#define PREC_CASES				3#define DC_PROBABILITY_UPDATE_THRESH	100#define ZERO_CONTEXT_NODE		0#define EOB_CONTEXT_NODE		1#define ONE_CONTEXT_NODE		2#define LOW_VAL_CONTEXT_NODE	3#define TWO_CONTEXT_NODE		4#define THREE_CONTEXT_NODE		5#define HIGH_LOW_CONTEXT_NODE	6#define CAT_ONE_CONTEXT_NODE	7#define CAT_THREEFOUR_CONTEXT_NODE	8#define CAT_THREE_CONTEXT_NODE	9#define CAT_FIVE_CONTEXT_NODE	10#define PROB_UPDATE_BASELINE_COST	7#define MAX_PROB				254#define DCT_MAX_VALUE			2048/*****************************************************************************  Types******************************************************************************/        extern const UINT32 ProbCost[256];extern const UINT8  ExtraBitLengths_VP5[MAX_ENTROPY_TOKENS];extern const UINT32 DctRangeMinVals[MAX_ENTROPY_TOKENS];typedef struct LineEq{    INT32	M;    INT32	C;} LINE_EQ;extern const UINT8 DcUpdateProbs[2][MAX_ENTROPY_TOKENS-1];extern const UINT8 AcUpdateProbs[PREC_CASES][2][VP5_AC_BANDS][MAX_ENTROPY_TOKENS-1];extern const UINT8 PrevTokenIndex[MAX_ENTROPY_TOKENS];extern UINT8 PrecZeroRunLength[BLOCK_SIZE];/*****************************************************************************   Data structures******************************************************************************/// These table contains the normailized probabilities required to traverse the// entropy tree for DC and AC value tokens representing values >= 2// Probabilities are normalized to 8 bits and represent the likelyhood of a zero branch./*****************************************************************************  Functions******************************************************************************/#endif
 |