CanonicalCodecFamilies.java

  1. /*
  2.  *  Licensed to the Apache Software Foundation (ASF) under one or more
  3.  *  contributor license agreements.  See the NOTICE file distributed with
  4.  *  this work for additional information regarding copyright ownership.
  5.  *  The ASF licenses this file to You under the Apache License, Version 2.0
  6.  *  (the "License"); you may not use this file except in compliance with
  7.  *  the License.  You may obtain a copy of the License at
  8.  *
  9.  *     http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  *  Unless required by applicable law or agreed to in writing, software
  12.  *  distributed under the License is distributed on an "AS IS" BASIS,
  13.  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  *  See the License for the specific language governing permissions and
  15.  *  limitations under the License.
  16.  */
  17. package org.apache.commons.compress.harmony.pack200;

  18. /**
  19.  * Sets of codecs that share characteristics. Mainly used for different effort compression heuristics in BandSet.
  20.  */
  21. public class CanonicalCodecFamilies {

  22.     // Families of codecs for bands of positive integers that do not correlate
  23.     // well (i.e. would not benefit from delta encoding)

  24.     public static BHSDCodec[] nonDeltaUnsignedCodecs1 = {
  25.             // (1,256) is a special case and is considered separately so shouldn't be included here
  26. //        CodecEncoding.getCanonicalCodec(1), // (1,256)
  27.             CodecEncoding.getCanonicalCodec(5), // (2,256)
  28.             CodecEncoding.getCanonicalCodec(9), // (3,256)
  29.             CodecEncoding.getCanonicalCodec(13) // (4,256)
  30.     };

  31.     public static BHSDCodec[] nonDeltaUnsignedCodecs2 = { CodecEncoding.getCanonicalCodec(17), // (5,4)
  32.             CodecEncoding.getCanonicalCodec(20), // (5,16)
  33.             CodecEncoding.getCanonicalCodec(23), // (5,32)
  34.             CodecEncoding.getCanonicalCodec(26), // (5,64)
  35.             CodecEncoding.getCanonicalCodec(29) // (5,128)
  36.     };

  37.     public static BHSDCodec[] nonDeltaUnsignedCodecs3 = { CodecEncoding.getCanonicalCodec(47), // (2,192)
  38.             CodecEncoding.getCanonicalCodec(48), // (2,224)
  39.             CodecEncoding.getCanonicalCodec(49), // (2,240)
  40.             CodecEncoding.getCanonicalCodec(50), // (2,248)
  41.             CodecEncoding.getCanonicalCodec(51) // (2,252)
  42.     };

  43.     public static BHSDCodec[] nonDeltaUnsignedCodecs4 = { CodecEncoding.getCanonicalCodec(70), // (3,192)
  44.             CodecEncoding.getCanonicalCodec(71), // (3,224)
  45.             CodecEncoding.getCanonicalCodec(72), // (3,240)
  46.             CodecEncoding.getCanonicalCodec(73), // (3,248)
  47.             CodecEncoding.getCanonicalCodec(74) // (3,252)
  48.     };

  49.     public static BHSDCodec[] nonDeltaUnsignedCodecs5 = { CodecEncoding.getCanonicalCodec(93), // (4,192)
  50.             CodecEncoding.getCanonicalCodec(94), // (4,224)
  51.             CodecEncoding.getCanonicalCodec(95), // (4,240)
  52.             CodecEncoding.getCanonicalCodec(96), // (4,248)
  53.             CodecEncoding.getCanonicalCodec(97) // (4,252)
  54.     };

  55.     // Families of codecs for bands of positive integers that do correlate well
  56.     // and would benefit from delta encoding

  57.     public static BHSDCodec[] deltaUnsignedCodecs1 = { CodecEncoding.getCanonicalCodec(3), // (1,256,0,1)
  58.             CodecEncoding.getCanonicalCodec(7), // (2,256,0,1)
  59.             CodecEncoding.getCanonicalCodec(11), // (3,256,0,1)
  60.             CodecEncoding.getCanonicalCodec(15) // (4,256,0,1)
  61.     };

  62.     public static BHSDCodec[] deltaUnsignedCodecs2 = { CodecEncoding.getCanonicalCodec(32), // (5,4,0,1)
  63.             CodecEncoding.getCanonicalCodec(35), // (5,16,0,1)
  64.             CodecEncoding.getCanonicalCodec(38), // (5,32,0,1)
  65.             CodecEncoding.getCanonicalCodec(41), // (5,64,0,1)
  66.             CodecEncoding.getCanonicalCodec(44) // (5,128,0,1)
  67.     };

  68.     public static BHSDCodec[] deltaUnsignedCodecs3 = { CodecEncoding.getCanonicalCodec(52), // (2,8,0,1)
  69.             CodecEncoding.getCanonicalCodec(54), // (2,16,0,1)
  70.             CodecEncoding.getCanonicalCodec(56), // (2,32,0,1)
  71.             CodecEncoding.getCanonicalCodec(58), // (2,64,0,1)
  72.             CodecEncoding.getCanonicalCodec(60), // (2,128,0,1)
  73.             CodecEncoding.getCanonicalCodec(62), // (2,192,0,1)
  74.             CodecEncoding.getCanonicalCodec(64), // (2,224,0,1)
  75.             CodecEncoding.getCanonicalCodec(66), // (2,240,0,1)
  76.             CodecEncoding.getCanonicalCodec(68) // (2,248,0,1)
  77.     };

  78.     public static BHSDCodec[] deltaUnsignedCodecs4 = { CodecEncoding.getCanonicalCodec(75), // (3,8,0,1)
  79.             CodecEncoding.getCanonicalCodec(77), // (3,16,0,1)
  80.             CodecEncoding.getCanonicalCodec(79), // (3,32,0,1)
  81.             CodecEncoding.getCanonicalCodec(81), // (3,64,0,1)
  82.             CodecEncoding.getCanonicalCodec(83), // (3,128,0,1)
  83.             CodecEncoding.getCanonicalCodec(85), // (3,192,0,1)
  84.             CodecEncoding.getCanonicalCodec(87), // (3,224,0,1)
  85.             CodecEncoding.getCanonicalCodec(89), // (3,240,0,1)
  86.             CodecEncoding.getCanonicalCodec(91) // (3,248,0,1)
  87.     };

  88.     public static BHSDCodec[] deltaUnsignedCodecs5 = { CodecEncoding.getCanonicalCodec(98), // (4,8,0,1)
  89.             CodecEncoding.getCanonicalCodec(100), // (4,16,0,1)
  90.             CodecEncoding.getCanonicalCodec(102), // (4,32,0,1)
  91.             CodecEncoding.getCanonicalCodec(104), // (4,64,0,1)
  92.             CodecEncoding.getCanonicalCodec(106), // (4,128,0,1)
  93.             CodecEncoding.getCanonicalCodec(108), // (4,192,0,1)
  94.             CodecEncoding.getCanonicalCodec(110), // (4,224,0,1)
  95.             CodecEncoding.getCanonicalCodec(112), // (4,240,0,1)
  96.             CodecEncoding.getCanonicalCodec(114) // (4,248,0,1)
  97.     };

  98.     // Families of codecs for bands containing positive and negative integers
  99.     // that do correlate well (i.e. delta encoding is used)

  100.     public static BHSDCodec[] deltaSignedCodecs1 = { CodecEncoding.getCanonicalCodec(4), // (1,256,1,1)
  101.             CodecEncoding.getCanonicalCodec(8), // (2,256,1,1)
  102.             CodecEncoding.getCanonicalCodec(12), // (3,256,1,1)
  103.             CodecEncoding.getCanonicalCodec(16) // (4,256,1,1)
  104.     };

  105.     public static BHSDCodec[] deltaSignedCodecs2 = { CodecEncoding.getCanonicalCodec(33), // (5,4,1,1)
  106.             CodecEncoding.getCanonicalCodec(36), // (5,16,1,1)
  107.             CodecEncoding.getCanonicalCodec(39), // (5,32,1,1)
  108.             CodecEncoding.getCanonicalCodec(42), // (5,64,1,1)
  109.             CodecEncoding.getCanonicalCodec(45) // (5,128,1,1)
  110.     };

  111.     public static BHSDCodec[] deltaSignedCodecs3 = { CodecEncoding.getCanonicalCodec(53), // (2,8,1,1)
  112.             CodecEncoding.getCanonicalCodec(55), // (2,16,1,1)
  113.             CodecEncoding.getCanonicalCodec(57), // (2,32,1,1)
  114.             CodecEncoding.getCanonicalCodec(59), // (2,64,1,1)
  115.             CodecEncoding.getCanonicalCodec(61), // (2,128,1,1)
  116.             CodecEncoding.getCanonicalCodec(63), // (2,192,1,1)
  117.             CodecEncoding.getCanonicalCodec(65), // (2,224,1,1)
  118.             CodecEncoding.getCanonicalCodec(67), // (2,240,1,1)
  119.             CodecEncoding.getCanonicalCodec(69) // (2,248,1,1)
  120.     };

  121.     public static BHSDCodec[] deltaSignedCodecs4 = { CodecEncoding.getCanonicalCodec(76), // (3,8,1,1)
  122.             CodecEncoding.getCanonicalCodec(78), // (3,16,1,1)
  123.             CodecEncoding.getCanonicalCodec(80), // (3,32,1,1)
  124.             CodecEncoding.getCanonicalCodec(82), // (3,64,1,1)
  125.             CodecEncoding.getCanonicalCodec(84), // (3,128,1,1)
  126.             CodecEncoding.getCanonicalCodec(86), // (3,192,1,1)
  127.             CodecEncoding.getCanonicalCodec(88), // (3,224,1,1)
  128.             CodecEncoding.getCanonicalCodec(90), // (3,240,1,1)
  129.             CodecEncoding.getCanonicalCodec(92) // (3,248,1,1)
  130.     };

  131.     public static BHSDCodec[] deltaSignedCodecs5 = { CodecEncoding.getCanonicalCodec(99), // (4,8,1,1)
  132.             CodecEncoding.getCanonicalCodec(101), // (4,16,1,1)
  133.             CodecEncoding.getCanonicalCodec(103), // (4,32,1,1)
  134.             CodecEncoding.getCanonicalCodec(105), // (4,64,1,1)
  135.             CodecEncoding.getCanonicalCodec(107), // (4,128,1,1)
  136.             CodecEncoding.getCanonicalCodec(109), // (4,192,1,1)
  137.             CodecEncoding.getCanonicalCodec(111), // (4,224,1,1)
  138.             CodecEncoding.getCanonicalCodec(113), // (4,240,1,1)
  139.             CodecEncoding.getCanonicalCodec(115) // (4,248,1,1)
  140.     };

  141.     public static BHSDCodec[] deltaDoubleSignedCodecs1 = { CodecEncoding.getCanonicalCodec(34), // (5,4,2,1)
  142.             CodecEncoding.getCanonicalCodec(37), // (5,16,2,1)
  143.             CodecEncoding.getCanonicalCodec(40), // (5,32,2,1)
  144.             CodecEncoding.getCanonicalCodec(43), // (5,64,2,1)
  145.             CodecEncoding.getCanonicalCodec(46) // (5,128,2,1)
  146.     };

  147.     // Families of codecs for bands containing positive and negative values that
  148.     // do not correlate well (i.e. delta encoding is not used)

  149.     public static BHSDCodec[] nonDeltaSignedCodecs1 = { CodecEncoding.getCanonicalCodec(2), // (1,256,1)
  150.             CodecEncoding.getCanonicalCodec(6), // (2,256,1)
  151.             CodecEncoding.getCanonicalCodec(10), // (3,256,1)
  152.             CodecEncoding.getCanonicalCodec(14) // (4,256,1)
  153.     };

  154.     public static BHSDCodec[] nonDeltaSignedCodecs2 = { CodecEncoding.getCanonicalCodec(18), // (5,4,1)
  155.             CodecEncoding.getCanonicalCodec(21), // (5,16,1)
  156.             CodecEncoding.getCanonicalCodec(24), // (5,32,1)
  157.             CodecEncoding.getCanonicalCodec(27), // (5,64,1)
  158.             CodecEncoding.getCanonicalCodec(30) // (5,128,1)
  159.     };

  160.     public static BHSDCodec[] nonDeltaDoubleSignedCodecs1 = { CodecEncoding.getCanonicalCodec(19), // (5,4,2)
  161.             CodecEncoding.getCanonicalCodec(22), // (5,16,2)
  162.             CodecEncoding.getCanonicalCodec(25), // (5,32,2)
  163.             CodecEncoding.getCanonicalCodec(28), // (5,64,2)
  164.             CodecEncoding.getCanonicalCodec(31) // (5,128,2)
  165.     };

  166. }