Example #1
0
 void BuildPackedTable(HTreeGroup htree_group)
 {
     var huff = htree_group.packed_table;
     for (int code = 0; code < Huffman.PackedTableSize; ++code)
     {
         uint bits = (uint)code;
         var hcode = htree_group.GetCode (HuffIndex.Green, code);
         if (hcode.value >= Huffman.NumLiteralCodes)
         {
             huff[code].bits = hcode.bits + BitsSpecialMarker;
             huff[code].value = hcode.value;
         }
         else
         {
             huff[code].bits = 0;
             huff[code].value = 0;
             bits >>= AccumulateHCode (hcode, 8, ref huff[code]);
             bits >>= AccumulateHCode (htree_group.GetCode (HuffIndex.Red, (int)bits), 16, ref huff[code]);
             bits >>= AccumulateHCode (htree_group.GetCode (HuffIndex.Blue, (int)bits), 0, ref huff[code]);
             bits >>= AccumulateHCode (htree_group.GetCode (HuffIndex.Alpha, (int)bits), 24, ref huff[code]);
         }
     }
 }