michael@0: /******************************************************************** michael@0: * * michael@0: * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. * michael@0: * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * michael@0: * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * michael@0: * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * michael@0: * * michael@0: * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009 * michael@0: * by the Xiph.Org Foundation and contributors http://www.xiph.org/ * michael@0: * * michael@0: ******************************************************************** michael@0: michael@0: function: michael@0: last mod: $Id: huffman.h 16503 2009-08-22 18:14:02Z giles $ michael@0: michael@0: ********************************************************************/ michael@0: michael@0: #if !defined(_huffman_H) michael@0: # define _hufffman_H (1) michael@0: # include "theora/codec.h" michael@0: # include "ocintrin.h" michael@0: michael@0: /*The range of valid quantized DCT coefficient values. michael@0: VP3 used 511 in the encoder, but the bitstream is capable of 580.*/ michael@0: #define OC_DCT_VAL_RANGE (580) michael@0: michael@0: #define OC_NDCT_TOKEN_BITS (5) michael@0: michael@0: #define OC_DCT_EOB1_TOKEN (0) michael@0: #define OC_DCT_EOB2_TOKEN (1) michael@0: #define OC_DCT_EOB3_TOKEN (2) michael@0: #define OC_DCT_REPEAT_RUN0_TOKEN (3) michael@0: #define OC_DCT_REPEAT_RUN1_TOKEN (4) michael@0: #define OC_DCT_REPEAT_RUN2_TOKEN (5) michael@0: #define OC_DCT_REPEAT_RUN3_TOKEN (6) michael@0: michael@0: #define OC_DCT_SHORT_ZRL_TOKEN (7) michael@0: #define OC_DCT_ZRL_TOKEN (8) michael@0: michael@0: #define OC_ONE_TOKEN (9) michael@0: #define OC_MINUS_ONE_TOKEN (10) michael@0: #define OC_TWO_TOKEN (11) michael@0: #define OC_MINUS_TWO_TOKEN (12) michael@0: michael@0: #define OC_DCT_VAL_CAT2 (13) michael@0: #define OC_DCT_VAL_CAT3 (17) michael@0: #define OC_DCT_VAL_CAT4 (18) michael@0: #define OC_DCT_VAL_CAT5 (19) michael@0: #define OC_DCT_VAL_CAT6 (20) michael@0: #define OC_DCT_VAL_CAT7 (21) michael@0: #define OC_DCT_VAL_CAT8 (22) michael@0: michael@0: #define OC_DCT_RUN_CAT1A (23) michael@0: #define OC_DCT_RUN_CAT1B (28) michael@0: #define OC_DCT_RUN_CAT1C (29) michael@0: #define OC_DCT_RUN_CAT2A (30) michael@0: #define OC_DCT_RUN_CAT2B (31) michael@0: michael@0: #define OC_NDCT_EOB_TOKEN_MAX (7) michael@0: #define OC_NDCT_ZRL_TOKEN_MAX (9) michael@0: #define OC_NDCT_VAL_MAX (23) michael@0: #define OC_NDCT_VAL_CAT1_MAX (13) michael@0: #define OC_NDCT_VAL_CAT2_MAX (17) michael@0: #define OC_NDCT_VAL_CAT2_SIZE (OC_NDCT_VAL_CAT2_MAX-OC_DCT_VAL_CAT2) michael@0: #define OC_NDCT_RUN_MAX (32) michael@0: #define OC_NDCT_RUN_CAT1A_MAX (28) michael@0: michael@0: extern const unsigned char OC_DCT_TOKEN_EXTRA_BITS[TH_NDCT_TOKENS]; michael@0: michael@0: #endif