/****************************************************************************
*
*   Module Title :     TokenEntropy.c
*
*   Description  :     Video CODEC: Coefficient token entropy module.
*
*    AUTHOR      :     Paul Wilkins
*
*****************************************************************************
*   Revision History
*
*   1.01 PGW 27 Jun 01 Created
*
*****************************************************************************
*/

/****************************************************************************
*  Header Files
*****************************************************************************
*/


/****************************************************************************
*  Header Frames
*****************************************************************************
*/

#define STRICT              /* Strict type checking. */

#include "type_aliases.h"
#include "systemdependant.h"
#include "codec_common.h"
#include "codec_common_interface.h"
#include "tokenentropy.h"
#include "pbdll.h"


/****************************************************************************
*  Explicit Imports
*****************************************************************************
*/

/****************************************************************************
*  Constants
*****************************************************************************
*/


/****************************************************************************
*  Types
*****************************************************************************
*/        

/****************************************************************************
*   Data structures
*****************************************************************************
*/
#ifndef MAPCA

// Costs in bits for different probabilities (expressed in range 0-255)
// Costs are multiplied by 256
const UINT32 ProbCost[256] = 
{
	2047,
	2047,1791,1641,1535,1452,1385,1328,1279,1235,1196,
	1161,1129,1099,1072,1046,1023,1000,979,959,940,
	922,905,889,873,858,843,829,816,803,790,
	778,767,755,744,733,723,713,703,693,684,
	675,666,657,649,641,633,625,617,609,602,
	594,587,580,573,567,560,553,547,541,534,
	528,522,516,511,505,499,494,488,483,477,
	472,467,462,457,452,447,442,437,433,428,
	424,419,415,410,406,401,397,393,389,385,
	381,377,373,369,365,361,357,353,349,346,
	342,338,335,331,328,324,321,317,314,311,
	307,304,301,297,294,291,288,285,281,278,
	275,272,269,266,263,260,257,255,252,249,
	246,243,240,238,235,232,229,227,224,221,
	219,216,214,211,208,206,203,201,198,196,
	194,191,189,186,184,181,179,177,174,172,
	170,168,165,163,161,159,156,154,152,150,
	148,145,143,141,139,137,135,133,131,129,
	127,125,123,121,119,117,115,113,111,109,
	107,105,103,101,99,97,95,93,92,90,
	88,86,84,82,81,79,77,75,73,72,
	70,68,66,65,63,61,60,58,56,55,
	53,51,50,48,46,45,43,41,40,38,
	37,35,33,32,30,29,27,25,24,22,
	21,19,18,16,15,13,12,10,9,7,
	6,4,3,1,
	1,
};
#endif
// Index categories for previous tokens in this block 
const UINT8  PrevTokenIndex[MAX_ENTROPY_TOKENS] = { 0,1,2,2,2,2,2,2,2,2,2,0 };

// For details of tokens and extra bit breakdown see token definitions in huffman.h
const UINT8  ExtraBitLengths_VP5[MAX_ENTROPY_TOKENS] = { 0, 1, 1, 1, 1, 2, 3, 4, 5, 6, 12, 0 };
const UINT32 DctRangeMinVals[MAX_ENTROPY_TOKENS] = { 0, 1, 2, 3, 4, 5, 7, 11, 19, 35, 67, 0 };

const UINT8 DcUpdateProbs[2][MAX_ENTROPY_TOKENS-1] = 
{ 
	{ 146, 197, 181, 207, 232, 243, 238, 251, 244, 250, 249 },
	{ 179, 219, 214, 240, 250, 254, 244, 254, 254, 254, 254 }
};

const UINT8 AcUpdateProbs[PREC_CASES][2][VP5_AC_BANDS][MAX_ENTROPY_TOKENS-1] =
{
	{	// preceded by 0
		{
			{ 227, 246, 230, 247, 244, 254, 254, 254, 254, 254, 254 },
			{ 202, 254, 209, 231, 231, 249, 249, 253, 254, 254, 254 },
			{ 206, 254, 225, 242, 241, 251, 253, 254, 254, 254, 254 },
			{ 235, 254, 241, 253, 252, 254, 254, 254, 254, 254, 254 },
			{ 234, 254, 248, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
		},
		{
			{ 240, 254, 248, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 238, 254, 240, 253, 254, 254, 254, 254, 254, 254, 254 },
			{ 244, 254, 251, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
		},
	},
	{	// preceded by 1
		{
			{ 206, 203, 227, 239, 247, 254, 253, 254, 254, 254, 254 },
			{ 207, 199, 220, 236, 243, 252, 252, 254, 254, 254, 254 },
			{ 212, 219, 230, 243, 244, 253, 252, 254, 254, 254, 254 },
			{ 236, 237, 247, 252, 253, 254, 254, 254, 254, 254, 254 },
			{ 240, 240, 248, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
		},
		{
			{ 230, 233, 249, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 238, 238, 250, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 248, 251, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
		},
	},
	{	// preceded by > 1
		{
			{ 225, 239, 227, 231, 244, 253, 243, 254, 254, 253, 254 },
			{ 232, 234, 224, 228, 242, 249, 242, 252, 251, 251, 254 },
			{ 235, 249, 238, 240, 251, 254, 249, 254, 253, 253, 254 },
			{ 249, 253, 251, 250, 254, 254, 254, 254, 254, 254, 254 },
			{ 251, 250, 249, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
		},
		{
			{ 243, 244, 250, 250, 254, 254, 254, 254, 254, 254, 254 },
			{ 249, 248, 250, 253, 254, 254, 254, 254, 254, 254, 254 },
			{ 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
		},
	},
};

/*
{
	{	// preceded by 0
		{
			{ 234, 246, 250, 249, 244, 254, 254, 254, 254, 254, 254 },
			{ 225, 254, 242, 238, 234, 253, 252, 254, 254, 254, 254 },
			{ 230, 254, 248, 243, 238, 254, 254, 254, 254, 254, 254 },
			{ 244, 254, 254, 252, 247, 254, 254, 254, 254, 254, 254 },
			{ 253, 254, 254, 254, 253, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },

			 227, 246, 230, 247, 244, 254, 254, 254, 254, 254, 254,
			 202, 254, 209, 231, 231, 249, 249, 253, 254, 254, 254,
			 206, 254, 225, 242, 241, 251, 253, 254, 254, 254, 254,
			 235, 254, 241, 253, 252, 254, 254, 254, 254, 254, 254,
			 234, 254, 248, 254, 254, 254, 254, 254, 254, 254, 254,
			 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
		},
		{
			{ 251, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 243, 254, 254, 253, 253, 254, 254, 254, 254, 254, 254 },
			{ 252, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },	
		},
	},
	{	// preceded by 1
		{
			{ 211, 216, 233, 233, 234, 252, 251, 254, 254, 254, 254 },
			{ 224, 219, 236, 237, 236, 252, 250, 254, 254, 253, 254 },
			{ 227, 230, 245, 241, 238, 253, 254, 254, 254, 254, 254 },
			{ 237, 235, 253, 252, 250, 254, 254, 254, 254, 254, 254 },
			{ 252, 251, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },	
		},
		{
			{ 237, 242, 253, 253, 253, 254, 254, 254, 254, 254, 254 },
			{ 248, 250, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },	
		},
	},
	{	// preceded by > 1
		{
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },	
		},
		{
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
			{ 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },	
		},
	},
};
*/
// DC context equations
LINE_EQ DcNodeEqs[CONTEXT_NODES][TOKEN_CONTEXTS][TOKEN_CONTEXTS] =
{
  { // zero
    { { 154,  61 },{ 141,  54 },{  90,  45 },{  54,  34 },{  54,  13 },{ 128, 109 }, },
    { { 136,  54 },{ 148,  45 },{  92,  41 },{  54,  33 },{  51,  15 },{  87, 113 }, },
    { {  87,  44 },{  97,  40 },{  67,  36 },{  46,  29 },{  41,  15 },{  64,  80 }, },
    { {  59,  33 },{  61,  31 },{  51,  28 },{  44,  22 },{  33,  12 },{  49,  63 }, },
    { {  69,  12 },{  59,  16 },{  46,  14 },{  31,  13 },{  26,   6 },{  92,  26 }, },
    { { 128, 108 },{  77, 119 },{  54,  84 },{  26,  71 },{  87,  19 },{  95, 155 }, },
  },
  { // eob
    { { 154,   4 },{ 182,   0 },{ 159,  -8 },{ 128,  -5 },{ 143,  -5 },{ 187,  55 }, },
    { { 182,   0 },{ 228,  -3 },{ 187,  -7 },{ 174,  -9 },{ 189, -11 },{ 169,  79 }, },
    { { 161,  -9 },{ 192,  -8 },{ 187,  -9 },{ 169, -10 },{ 136,  -9 },{ 184,  40 }, },
    { { 164, -11 },{ 179, -10 },{ 174, -10 },{ 161, -10 },{ 115,  -7 },{ 197,  20 }, },
    { { 195, -11 },{ 195, -11 },{ 146, -10 },{ 110,  -6 },{  95,  -4 },{ 195,  39 }, },
    { { 182,  55 },{ 172,  77 },{ 177,  37 },{ 169,  29 },{ 172,  52 },{  92, 162 }, },
  },
  { // one
    { { 174,  80 },{ 164,  80 },{  95,  80 },{  46,  66 },{  56,  24 },{  36, 193 }, },
    { { 164,  80 },{ 166,  77 },{ 105,  76 },{  49,  68 },{  46,  31 },{  49, 186 }, },
    { {  97,  78 },{ 110,  74 },{  72,  72 },{  44,  60 },{  33,  30 },{  69, 131 }, },
    { {  61,  61 },{  69,  63 },{  51,  57 },{  31,  48 },{  26,  27 },{  64,  89 }, },
    { {  67,  23 },{  51,  32 },{  36,  33 },{  26,  28 },{  20,  12 },{  44,  68 }, },
    { {  26, 197 },{  41, 189 },{  61, 129 },{  28, 103 },{  49,  52 },{ -12, 245 }, },
  },
  { // low value
    { { 102, 141 },{  79, 166 },{  72, 162 },{  97, 125 },{ 179,   4 },{ 307,   0 }, },
    { {  72, 168 },{  69, 175 },{  84, 160 },{ 105, 127 },{ 148,  34 },{ 310,   0 }, },
    { {  84, 151 },{  82, 161 },{  87, 153 },{  87, 135 },{ 115,  51 },{ 317,   0 }, },
    { {  97, 125 },{ 102, 131 },{ 105, 125 },{  87, 122 },{  84,  64 },{  54, 184 }, },
    { { 166,  18 },{ 146,  43 },{ 125,  51 },{  90,  64 },{  95,   7 },{  38, 154 }, },
    { { 294,   0 },{  13, 225 },{  10, 225 },{  67, 168 },{   0, 167 },{ 161,  94 }, },
  },
  { // two 
    { { 172,  76 },{ 172,  75 },{ 136,  80 },{  64,  98 },{  74,  67 },{ 315,   0 }, },
    { { 169,  76 },{ 207,  56 },{ 164,  66 },{  97,  80 },{  67,  72 },{ 328,   0 }, },
    { { 136,  80 },{ 187,  53 },{ 154,  62 },{  72,  85 },{  -2, 105 },{ 305,   0 }, },
    { {  74,  91 },{ 128,  64 },{ 113,  64 },{  61,  77 },{  41,  75 },{ 259,   0 }, },
    { {  46,  84 },{  51,  81 },{  28,  89 },{  31,  78 },{  23,  77 },{ 202,   0 }, },
    { { 323,   0 },{ 323,   0 },{ 300,   0 },{ 236,   0 },{ 195,   0 },{ 328,   0 }, },
  },
};
// AC context equations
LINE_EQ AcNodeEqs[PREC_CASES][VP5_AC_BANDS-3][CONTEXT_NODES][TOKEN_CONTEXTS] =
{
  { // Preceded by 0 
    { // Band 0
      { { 276,   0 },{ 238,   0 },{ 195,   0 },{ 156,   0 },{ 113,   0 },{ 274,   0 }, },
      { {   0,   1 },{   0,   1 },{   0,   1 },{   0,   1 },{   0,   1 },{   0,   1 }, },
      { { 192,  59 },{ 182,  50 },{ 141,  48 },{ 110,  40 },{  92,  19 },{ 125, 128 }, },
      { { 169,  87 },{ 169,  83 },{ 184,  62 },{ 220,  16 },{ 184,   0 },{ 264,   0 }, },
      { { 212,  40 },{ 212,  36 },{ 169,  49 },{ 174,  27 },{   8, 120 },{ 182,  71 }, },
    },
    { // Band 1
      { { 259,  10 },{ 197,  19 },{ 143,  22 },{ 123,  16 },{ 110,   8 },{ 133,  88 }, },
      { {   0,   1 },{ 256,   0 },{   0,   1 },{   0,   1 },{   0,   1 },{   0,   1 }, },
      { { 207,  46 },{ 187,  50 },{  97,  83 },{  23, 100 },{  41,  56 },{  56, 188 }, },
      { { 166,  90 },{ 146, 108 },{ 161,  88 },{ 136,  95 },{ 174,   0 },{ 266,   0 }, },
      { { 264,   7 },{ 243,  18 },{ 184,  43 },{ -14, 154 },{  20, 112 },{  20, 199 }, },
    },
    { // Band 2
      { { 230,  26 },{ 197,  22 },{ 159,  20 },{ 146,  12 },{ 136,   4 },{  54, 162 }, },
      { {   0,   1 },{   0,   1 },{   0,   1 },{   0,   1 },{   0,   1 },{   0,   1 }, },
      { { 192,  59 },{ 156,  72 },{  84, 101 },{  49, 101 },{  79,  47 },{  79, 167 }, },
      { { 138, 115 },{ 136, 116 },{ 166,  80 },{ 238,   0 },{ 195,   0 },{ 261,   0 }, },
      { { 225,  33 },{ 205,  42 },{ 159,  61 },{  79,  96 },{  92,  66 },{  28, 195 }, },
    },
  },
  { // Preceded by 1 
    { // Band 0
      { { 200,  37 },{ 197,  18 },{ 159,  13 },{ 143,   7 },{ 102,   5 },{ 123, 126 }, },
      { { 197,   3 },{ 220,  -9 },{ 210, -12 },{ 187,  -6 },{ 151,  -2 },{ 174,  80 }, },
      { { 200,  53 },{ 187,  47 },{ 159,  40 },{ 118,  38 },{ 100,  18 },{ 141, 111 }, },
      { { 179,  78 },{ 166,  86 },{ 197,  50 },{ 207,  27 },{ 187,   0 },{ 115, 139 }, },
      { { 218,  34 },{ 220,  29 },{ 174,  46 },{ 128,  61 },{  54,  89 },{ 187,  65 }, },
    },
    { // Band 1
      { { 238,  14 },{ 197,  18 },{ 125,  26 },{  90,  25 },{  82,  13 },{ 161,  86 }, },
      { { 189,   1 },{ 205,  -2 },{ 156,  -4 },{ 143,  -4 },{ 146,  -4 },{ 172,  72 }, },
      { { 230,  31 },{ 192,  45 },{ 102,  76 },{  38,  85 },{  56,  41 },{  64, 173 }, },
      { { 166,  91 },{ 141, 111 },{ 128, 116 },{ 118, 109 },{ 177,   0 },{  23, 222 }, },
      { { 253,  14 },{ 236,  21 },{ 174,  49 },{  33, 118 },{  44,  93 },{  23, 187 }, },
    },
    { // Band 2
      { { 218,  28 },{ 179,  28 },{ 118,  35 },{  95,  30 },{  72,  24 },{ 128, 108 }, },
      { { 187,   1 },{ 174,  -1 },{ 125,  -1 },{ 110,  -1 },{ 108,  -1 },{ 202,  52 }, },
      { { 197,  53 },{ 146,  75 },{  46, 118 },{  33, 103 },{  64,  50 },{ 118, 126 }, },
      { { 138, 114 },{ 128, 122 },{ 161,  86 },{ 243,  -6 },{ 195,   0 },{  38, 210 }, },
      { { 215,  39 },{ 179,  58 },{  97, 101 },{  95,  85 },{  87,  70 },{  69, 152 }, },
    },
  },
  { // Preceded by 2 
    { // Band 0
      { { 236,  24 },{ 205,  18 },{ 172,  12 },{ 154,   6 },{ 125,   1 },{ 169,  75 }, },
      { { 187,   4 },{ 230,  -2 },{ 228,  -4 },{ 236,  -4 },{ 241,  -2 },{ 192,  66 }, },
      { { 200,  46 },{ 187,  42 },{ 159,  34 },{ 136,  25 },{ 105,  10 },{ 179,  62 }, },
      { { 207,  55 },{ 192,  63 },{ 192,  54 },{ 195,  36 },{ 177,   1 },{ 143,  98 }, },
      { { 225,  27 },{ 207,  34 },{ 200,  30 },{ 131,  57 },{  97,  60 },{ 197,  45 }, },
    },
    { // Band 1
      { { 271,   8 },{ 218,  13 },{ 133,  19 },{  90,  19 },{  72,   7 },{ 182,  51 }, },
      { { 179,   1 },{ 225,  -1 },{ 154,  -2 },{ 110,  -1 },{  92,   0 },{ 195,  41 }, },
      { { 241,  26 },{ 189,  40 },{  82,  64 },{  33,  60 },{  67,  17 },{ 120,  94 }, },
      { { 192,  68 },{ 151,  94 },{ 146,  90 },{ 143,  72 },{ 161,   0 },{ 113, 128 }, },
      { { 256,  12 },{ 218,  29 },{ 166,  48 },{  44,  99 },{  31,  87 },{ 148,  78 }, },
    },
    { // Band 2
      { { 238,  20 },{ 184,  22 },{ 113,  27 },{  90,  22 },{  74,   9 },{ 192,  37 }, },
      { { 184,   0 },{ 215,  -1 },{ 141,  -1 },{  97,   0 },{  49,   0 },{ 264,  13 }, },
      { { 182,  51 },{ 138,  61 },{  95,  63 },{  54,  59 },{  64,  25 },{ 200,  45 }, },
      { { 179,  75 },{ 156,  87 },{ 174,  65 },{ 177,  44 },{ 174,   0 },{ 164,  85 }, },
      { { 195,  45 },{ 148,  65 },{ 105,  79 },{  95,  72 },{  87,  60 },{ 169,  63 }, },
    },
  },
};

/****************************************************************************
*   Functions
*****************************************************************************
*/
/****************************************************************************
 * 
 *  ROUTINE       :     ConfigureContexts
 *
 *  INPUTS        :     Decoder Instance
 *                      
 *                      
 *  OUTPUTS       :     None.
 *
 *  RETURNS       :     None.
 *
 *  FUNCTION      :     Configures the context dependant entropy probabilities.
 *
 *  SPECIAL NOTES :     None. 
 *
 *
 *  ERRORS        :     None.
 *
 ****************************************************************************/
void ConfigureContexts(PB_INSTANCE *pbi)
{
	UINT32 i,j;

	UINT32 Band;
	UINT32 Node;
	UINT32 Plane;
	UINT32 Prec;
	INT32  Temp;


	// Clear MMX state so floating point can work again
	#ifndef MACPPC
#ifndef MAPCA
	ClearSysState();
#endif
	#endif

	// DC Node Probabilities
	for ( Plane = 0; Plane < 2; Plane ++ )
	{
		for ( i = 0; i < TOKEN_CONTEXTS; i++ )
		{
			for ( j = 0; j < TOKEN_CONTEXTS; j++ )
			{
				// Tree Nodes
				for ( Node = 0; Node < CONTEXT_NODES; Node ++ )
				{
					Temp = ( ( pbi->DcProbs[DCProbOffset(Plane,Node)] * DcNodeEqs[Node][i][j].M + 128 ) >> 8) 
						+ DcNodeEqs[Node][i][j].C;	
                    Temp = (Temp > 254)? 254: Temp;
                    Temp = (Temp <   1)? 1  : Temp;
					pbi->DcNodeContexts[DCContextOffset(Plane,i,j,Node)] = (UINT8)Temp;

				}

			}
		}
	}


	// AC  Node Probabilities
	for ( Prec = 0; Prec < PREC_CASES; Prec++ )
	{
		for ( Plane = 0; Plane < 2; Plane ++ )
		{
			// Higher AC bands do not use contexts.
			for ( Band = 0; Band < VP5_AC_BANDS-3; Band++ )
			{
				for ( i = 0; i < TOKEN_CONTEXTS; i++ )
				{
					// Tree Nodes
					for ( Node = 0; Node < CONTEXT_NODES; Node ++ )
					{
                        Temp = ( ( pbi->AcProbs[ACProbOffset(Plane,Prec,Band,Node)] 
							       * AcNodeEqs[Prec][Band][Node][i].M + 128 ) >> 8) 
						  	 + AcNodeEqs[Prec][Band][Node][i].C;	

                        Temp = (Temp > 254)? 254: Temp;
                        Temp = (Temp <   1)? 1  : Temp;
                        pbi->AcNodeContexts[ACContextOffset(Plane,Prec,Band,i,Node)] = (UINT8)Temp;

					}
				}
			}
		}
	}
}

