1
//==========================================================================
3
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
4
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
5
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
8
// Copyright (c) 1999 - 2001 On2 Technologies Inc. All Rights Reserved.
10
//--------------------------------------------------------------------------
13
/****************************************************************************
15
* Module Title : Huffman.h
17
* Description : Video CODEC
20
*****************************************************************************
26
#include "type_aliases.h"
27
/****************************************************************************
29
*****************************************************************************
31
#define NUM_HUFF_TABLES 80
32
#define DC_HUFF_OFFSET 0
33
#define AC_HUFF_OFFSET 16
34
#define AC_TABLE_2_THRESH 5
35
#define AC_TABLE_3_THRESH 14
36
#define AC_TABLE_4_THRESH 27
38
#define DC_HUFF_CHOICES 16
39
#define DC_HUFF_CHOICE_BITS 4
41
#define AC_HUFF_CHOICES 16
42
#define AC_HUFF_CHOICE_BITS 4
44
// Constants assosciated with entropy tokenisation.
45
#define MAX_SINGLE_TOKEN_VALUE 6
46
#define DCT_VAL_CAT2_MIN 3
47
#define DCT_VAL_CAT3_MIN 7
48
#define DCT_VAL_CAT4_MIN 9
49
#define DCT_VAL_CAT5_MIN 13
50
#define DCT_VAL_CAT6_MIN 21
51
#define DCT_VAL_CAT7_MIN 37
52
#define DCT_VAL_CAT8_MIN 69
54
#define DCT_EOB_TOKEN 0
55
#define DCT_EOB_PAIR_TOKEN 1
56
#define DCT_EOB_TRIPLE_TOKEN 2
57
#define DCT_REPEAT_RUN_TOKEN 3
58
#define DCT_REPEAT_RUN2_TOKEN 4
59
#define DCT_REPEAT_RUN3_TOKEN 5
60
#define DCT_REPEAT_RUN4_TOKEN 6
62
#define DCT_SHORT_ZRL_TOKEN 7
63
#define DCT_ZRL_TOKEN 8
65
#define ONE_TOKEN 9 // Special tokens for -1,1,-2,2
66
#define MINUS_ONE_TOKEN 10
68
#define MINUS_TWO_TOKEN 12
70
#define LOW_VAL_TOKENS (MINUS_TWO_TOKEN + 1)
71
#define DCT_VAL_CATEGORY3 (LOW_VAL_TOKENS + 4)
72
#define DCT_VAL_CATEGORY4 (DCT_VAL_CATEGORY3 + 1)
73
#define DCT_VAL_CATEGORY5 (DCT_VAL_CATEGORY4 + 1)
74
#define DCT_VAL_CATEGORY6 (DCT_VAL_CATEGORY5 + 1)
75
#define DCT_VAL_CATEGORY7 (DCT_VAL_CATEGORY6 + 1)
76
#define DCT_VAL_CATEGORY8 (DCT_VAL_CATEGORY7 + 1)
78
#define DCT_RUN_CATEGORY1 (DCT_VAL_CATEGORY8 + 1)
79
#define DCT_RUN_CATEGORY1B (DCT_RUN_CATEGORY1 + 5)
80
#define DCT_RUN_CATEGORY1C (DCT_RUN_CATEGORY1B + 1)
81
#define DCT_RUN_CATEGORY2 (DCT_RUN_CATEGORY1C + 1)
84
#define MAX_ENTROPY_TOKENS (DCT_RUN_CATEGORY2 + 2)
86
/****************************************************************************
88
*****************************************************************************
91
typedef char * HUFF_ENTRY_PTR;
94
HUFF_ENTRY_PTR ZeroChild;
95
HUFF_ENTRY_PTR OneChild;
96
HUFF_ENTRY_PTR Previous;
103
/****************************************************************************
105
*****************************************************************************
108
extern UINT8 ExtraBitLengths_VP31[MAX_ENTROPY_TOKENS];
110
/****************************************************************************
112
*****************************************************************************