001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.commons.compress.harmony.pack200; 018 019/** 020 * Sets of codecs that share characteristics. Mainly used for different effort compression heuristics in BandSet. 021 */ 022public class CanonicalCodecFamilies { 023 024 // Families of codecs for bands of positive integers that do not correlate 025 // well (i.e. would not benefit from delta encoding) 026 027 public static BHSDCodec[] nonDeltaUnsignedCodecs1 = { 028 // (1,256) is a special case and is considered separately so shouldn't be included here 029// CodecEncoding.getCanonicalCodec(1), // (1,256) 030 CodecEncoding.getCanonicalCodec(5), // (2,256) 031 CodecEncoding.getCanonicalCodec(9), // (3,256) 032 CodecEncoding.getCanonicalCodec(13) // (4,256) 033 }; 034 035 public static BHSDCodec[] nonDeltaUnsignedCodecs2 = { CodecEncoding.getCanonicalCodec(17), // (5,4) 036 CodecEncoding.getCanonicalCodec(20), // (5,16) 037 CodecEncoding.getCanonicalCodec(23), // (5,32) 038 CodecEncoding.getCanonicalCodec(26), // (5,64) 039 CodecEncoding.getCanonicalCodec(29) // (5,128) 040 }; 041 042 public static BHSDCodec[] nonDeltaUnsignedCodecs3 = { CodecEncoding.getCanonicalCodec(47), // (2,192) 043 CodecEncoding.getCanonicalCodec(48), // (2,224) 044 CodecEncoding.getCanonicalCodec(49), // (2,240) 045 CodecEncoding.getCanonicalCodec(50), // (2,248) 046 CodecEncoding.getCanonicalCodec(51) // (2,252) 047 }; 048 049 public static BHSDCodec[] nonDeltaUnsignedCodecs4 = { CodecEncoding.getCanonicalCodec(70), // (3,192) 050 CodecEncoding.getCanonicalCodec(71), // (3,224) 051 CodecEncoding.getCanonicalCodec(72), // (3,240) 052 CodecEncoding.getCanonicalCodec(73), // (3,248) 053 CodecEncoding.getCanonicalCodec(74) // (3,252) 054 }; 055 056 public static BHSDCodec[] nonDeltaUnsignedCodecs5 = { CodecEncoding.getCanonicalCodec(93), // (4,192) 057 CodecEncoding.getCanonicalCodec(94), // (4,224) 058 CodecEncoding.getCanonicalCodec(95), // (4,240) 059 CodecEncoding.getCanonicalCodec(96), // (4,248) 060 CodecEncoding.getCanonicalCodec(97) // (4,252) 061 }; 062 063 // Families of codecs for bands of positive integers that do correlate well 064 // and would benefit from delta encoding 065 066 public static BHSDCodec[] deltaUnsignedCodecs1 = { CodecEncoding.getCanonicalCodec(3), // (1,256,0,1) 067 CodecEncoding.getCanonicalCodec(7), // (2,256,0,1) 068 CodecEncoding.getCanonicalCodec(11), // (3,256,0,1) 069 CodecEncoding.getCanonicalCodec(15) // (4,256,0,1) 070 }; 071 072 public static BHSDCodec[] deltaUnsignedCodecs2 = { CodecEncoding.getCanonicalCodec(32), // (5,4,0,1) 073 CodecEncoding.getCanonicalCodec(35), // (5,16,0,1) 074 CodecEncoding.getCanonicalCodec(38), // (5,32,0,1) 075 CodecEncoding.getCanonicalCodec(41), // (5,64,0,1) 076 CodecEncoding.getCanonicalCodec(44) // (5,128,0,1) 077 }; 078 079 public static BHSDCodec[] deltaUnsignedCodecs3 = { CodecEncoding.getCanonicalCodec(52), // (2,8,0,1) 080 CodecEncoding.getCanonicalCodec(54), // (2,16,0,1) 081 CodecEncoding.getCanonicalCodec(56), // (2,32,0,1) 082 CodecEncoding.getCanonicalCodec(58), // (2,64,0,1) 083 CodecEncoding.getCanonicalCodec(60), // (2,128,0,1) 084 CodecEncoding.getCanonicalCodec(62), // (2,192,0,1) 085 CodecEncoding.getCanonicalCodec(64), // (2,224,0,1) 086 CodecEncoding.getCanonicalCodec(66), // (2,240,0,1) 087 CodecEncoding.getCanonicalCodec(68) // (2,248,0,1) 088 }; 089 090 public static BHSDCodec[] deltaUnsignedCodecs4 = { CodecEncoding.getCanonicalCodec(75), // (3,8,0,1) 091 CodecEncoding.getCanonicalCodec(77), // (3,16,0,1) 092 CodecEncoding.getCanonicalCodec(79), // (3,32,0,1) 093 CodecEncoding.getCanonicalCodec(81), // (3,64,0,1) 094 CodecEncoding.getCanonicalCodec(83), // (3,128,0,1) 095 CodecEncoding.getCanonicalCodec(85), // (3,192,0,1) 096 CodecEncoding.getCanonicalCodec(87), // (3,224,0,1) 097 CodecEncoding.getCanonicalCodec(89), // (3,240,0,1) 098 CodecEncoding.getCanonicalCodec(91) // (3,248,0,1) 099 }; 100 101 public static BHSDCodec[] deltaUnsignedCodecs5 = { CodecEncoding.getCanonicalCodec(98), // (4,8,0,1) 102 CodecEncoding.getCanonicalCodec(100), // (4,16,0,1) 103 CodecEncoding.getCanonicalCodec(102), // (4,32,0,1) 104 CodecEncoding.getCanonicalCodec(104), // (4,64,0,1) 105 CodecEncoding.getCanonicalCodec(106), // (4,128,0,1) 106 CodecEncoding.getCanonicalCodec(108), // (4,192,0,1) 107 CodecEncoding.getCanonicalCodec(110), // (4,224,0,1) 108 CodecEncoding.getCanonicalCodec(112), // (4,240,0,1) 109 CodecEncoding.getCanonicalCodec(114) // (4,248,0,1) 110 }; 111 112 // Families of codecs for bands containing positive and negative integers 113 // that do correlate well (i.e. delta encoding is used) 114 115 public static BHSDCodec[] deltaSignedCodecs1 = { CodecEncoding.getCanonicalCodec(4), // (1,256,1,1) 116 CodecEncoding.getCanonicalCodec(8), // (2,256,1,1) 117 CodecEncoding.getCanonicalCodec(12), // (3,256,1,1) 118 CodecEncoding.getCanonicalCodec(16) // (4,256,1,1) 119 }; 120 121 public static BHSDCodec[] deltaSignedCodecs2 = { CodecEncoding.getCanonicalCodec(33), // (5,4,1,1) 122 CodecEncoding.getCanonicalCodec(36), // (5,16,1,1) 123 CodecEncoding.getCanonicalCodec(39), // (5,32,1,1) 124 CodecEncoding.getCanonicalCodec(42), // (5,64,1,1) 125 CodecEncoding.getCanonicalCodec(45) // (5,128,1,1) 126 }; 127 128 public static BHSDCodec[] deltaSignedCodecs3 = { CodecEncoding.getCanonicalCodec(53), // (2,8,1,1) 129 CodecEncoding.getCanonicalCodec(55), // (2,16,1,1) 130 CodecEncoding.getCanonicalCodec(57), // (2,32,1,1) 131 CodecEncoding.getCanonicalCodec(59), // (2,64,1,1) 132 CodecEncoding.getCanonicalCodec(61), // (2,128,1,1) 133 CodecEncoding.getCanonicalCodec(63), // (2,192,1,1) 134 CodecEncoding.getCanonicalCodec(65), // (2,224,1,1) 135 CodecEncoding.getCanonicalCodec(67), // (2,240,1,1) 136 CodecEncoding.getCanonicalCodec(69) // (2,248,1,1) 137 }; 138 139 public static BHSDCodec[] deltaSignedCodecs4 = { CodecEncoding.getCanonicalCodec(76), // (3,8,1,1) 140 CodecEncoding.getCanonicalCodec(78), // (3,16,1,1) 141 CodecEncoding.getCanonicalCodec(80), // (3,32,1,1) 142 CodecEncoding.getCanonicalCodec(82), // (3,64,1,1) 143 CodecEncoding.getCanonicalCodec(84), // (3,128,1,1) 144 CodecEncoding.getCanonicalCodec(86), // (3,192,1,1) 145 CodecEncoding.getCanonicalCodec(88), // (3,224,1,1) 146 CodecEncoding.getCanonicalCodec(90), // (3,240,1,1) 147 CodecEncoding.getCanonicalCodec(92) // (3,248,1,1) 148 }; 149 150 public static BHSDCodec[] deltaSignedCodecs5 = { CodecEncoding.getCanonicalCodec(99), // (4,8,1,1) 151 CodecEncoding.getCanonicalCodec(101), // (4,16,1,1) 152 CodecEncoding.getCanonicalCodec(103), // (4,32,1,1) 153 CodecEncoding.getCanonicalCodec(105), // (4,64,1,1) 154 CodecEncoding.getCanonicalCodec(107), // (4,128,1,1) 155 CodecEncoding.getCanonicalCodec(109), // (4,192,1,1) 156 CodecEncoding.getCanonicalCodec(111), // (4,224,1,1) 157 CodecEncoding.getCanonicalCodec(113), // (4,240,1,1) 158 CodecEncoding.getCanonicalCodec(115) // (4,248,1,1) 159 }; 160 161 public static BHSDCodec[] deltaDoubleSignedCodecs1 = { CodecEncoding.getCanonicalCodec(34), // (5,4,2,1) 162 CodecEncoding.getCanonicalCodec(37), // (5,16,2,1) 163 CodecEncoding.getCanonicalCodec(40), // (5,32,2,1) 164 CodecEncoding.getCanonicalCodec(43), // (5,64,2,1) 165 CodecEncoding.getCanonicalCodec(46) // (5,128,2,1) 166 }; 167 168 // Families of codecs for bands containing positive and negative values that 169 // do not correlate well (i.e. delta encoding is not used) 170 171 public static BHSDCodec[] nonDeltaSignedCodecs1 = { CodecEncoding.getCanonicalCodec(2), // (1,256,1) 172 CodecEncoding.getCanonicalCodec(6), // (2,256,1) 173 CodecEncoding.getCanonicalCodec(10), // (3,256,1) 174 CodecEncoding.getCanonicalCodec(14) // (4,256,1) 175 }; 176 177 public static BHSDCodec[] nonDeltaSignedCodecs2 = { CodecEncoding.getCanonicalCodec(18), // (5,4,1) 178 CodecEncoding.getCanonicalCodec(21), // (5,16,1) 179 CodecEncoding.getCanonicalCodec(24), // (5,32,1) 180 CodecEncoding.getCanonicalCodec(27), // (5,64,1) 181 CodecEncoding.getCanonicalCodec(30) // (5,128,1) 182 }; 183 184 public static BHSDCodec[] nonDeltaDoubleSignedCodecs1 = { CodecEncoding.getCanonicalCodec(19), // (5,4,2) 185 CodecEncoding.getCanonicalCodec(22), // (5,16,2) 186 CodecEncoding.getCanonicalCodec(25), // (5,32,2) 187 CodecEncoding.getCanonicalCodec(28), // (5,64,2) 188 CodecEncoding.getCanonicalCodec(31) // (5,128,2) 189 }; 190 191}