View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   https://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.commons.compress.harmony.pack200;
20  
21  /**
22   * Sets of codecs that share characteristics. Mainly used for different effort compression heuristics in BandSet.
23   */
24  public class CanonicalCodecFamilies {
25  
26      // Families of codecs for bands of positive integers that do not correlate
27      // well (i.e. would not benefit from delta encoding)
28  
29      /**
30       * Non-delta unsigned codecs 1.
31       */
32      public static BHSDCodec[] nonDeltaUnsignedCodecs1 = {
33              // (1,256) is a special case and is considered separately so shouldn't be included here
34  //        CodecEncoding.getCanonicalCodec(1), // (1,256)
35              CodecEncoding.getCanonicalCodec(5), // (2,256)
36              CodecEncoding.getCanonicalCodec(9), // (3,256)
37              CodecEncoding.getCanonicalCodec(13) // (4,256)
38      };
39  
40      /**
41       * Non-delta unsigned codecs 2.
42       */
43      public static BHSDCodec[] nonDeltaUnsignedCodecs2 = { CodecEncoding.getCanonicalCodec(17), // (5,4)
44              CodecEncoding.getCanonicalCodec(20), // (5,16)
45              CodecEncoding.getCanonicalCodec(23), // (5,32)
46              CodecEncoding.getCanonicalCodec(26), // (5,64)
47              CodecEncoding.getCanonicalCodec(29) // (5,128)
48      };
49  
50      /**
51       * Non-delta unsigned codecs 3.
52       */
53      public static BHSDCodec[] nonDeltaUnsignedCodecs3 = { CodecEncoding.getCanonicalCodec(47), // (2,192)
54              CodecEncoding.getCanonicalCodec(48), // (2,224)
55              CodecEncoding.getCanonicalCodec(49), // (2,240)
56              CodecEncoding.getCanonicalCodec(50), // (2,248)
57              CodecEncoding.getCanonicalCodec(51) // (2,252)
58      };
59  
60      /**
61       * Non-delta unsigned codecs 4.
62       */
63      public static BHSDCodec[] nonDeltaUnsignedCodecs4 = { CodecEncoding.getCanonicalCodec(70), // (3,192)
64              CodecEncoding.getCanonicalCodec(71), // (3,224)
65              CodecEncoding.getCanonicalCodec(72), // (3,240)
66              CodecEncoding.getCanonicalCodec(73), // (3,248)
67              CodecEncoding.getCanonicalCodec(74) // (3,252)
68      };
69  
70      /**
71       * Non-delta unsigned codecs 5.
72       */
73      public static BHSDCodec[] nonDeltaUnsignedCodecs5 = { CodecEncoding.getCanonicalCodec(93), // (4,192)
74              CodecEncoding.getCanonicalCodec(94), // (4,224)
75              CodecEncoding.getCanonicalCodec(95), // (4,240)
76              CodecEncoding.getCanonicalCodec(96), // (4,248)
77              CodecEncoding.getCanonicalCodec(97) // (4,252)
78      };
79  
80      // Families of codecs for bands of positive integers that do correlate well
81      // and would benefit from delta encoding
82  
83      /**
84       * Delta unsigned codecs 1.
85       */
86      public static BHSDCodec[] deltaUnsignedCodecs1 = { CodecEncoding.getCanonicalCodec(3), // (1,256,0,1)
87              CodecEncoding.getCanonicalCodec(7), // (2,256,0,1)
88              CodecEncoding.getCanonicalCodec(11), // (3,256,0,1)
89              CodecEncoding.getCanonicalCodec(15) // (4,256,0,1)
90      };
91  
92      /**
93       * Delta unsigned codecs 2.
94       */
95      public static BHSDCodec[] deltaUnsignedCodecs2 = { CodecEncoding.getCanonicalCodec(32), // (5,4,0,1)
96              CodecEncoding.getCanonicalCodec(35), // (5,16,0,1)
97              CodecEncoding.getCanonicalCodec(38), // (5,32,0,1)
98              CodecEncoding.getCanonicalCodec(41), // (5,64,0,1)
99              CodecEncoding.getCanonicalCodec(44) // (5,128,0,1)
100     };
101 
102     /**
103      * Delta unsigned codecs 3.
104      */
105     public static BHSDCodec[] deltaUnsignedCodecs3 = { CodecEncoding.getCanonicalCodec(52), // (2,8,0,1)
106             CodecEncoding.getCanonicalCodec(54), // (2,16,0,1)
107             CodecEncoding.getCanonicalCodec(56), // (2,32,0,1)
108             CodecEncoding.getCanonicalCodec(58), // (2,64,0,1)
109             CodecEncoding.getCanonicalCodec(60), // (2,128,0,1)
110             CodecEncoding.getCanonicalCodec(62), // (2,192,0,1)
111             CodecEncoding.getCanonicalCodec(64), // (2,224,0,1)
112             CodecEncoding.getCanonicalCodec(66), // (2,240,0,1)
113             CodecEncoding.getCanonicalCodec(68) // (2,248,0,1)
114     };
115 
116     /**
117      * Delta unsigned codecs 4.
118      */
119     public static BHSDCodec[] deltaUnsignedCodecs4 = { CodecEncoding.getCanonicalCodec(75), // (3,8,0,1)
120             CodecEncoding.getCanonicalCodec(77), // (3,16,0,1)
121             CodecEncoding.getCanonicalCodec(79), // (3,32,0,1)
122             CodecEncoding.getCanonicalCodec(81), // (3,64,0,1)
123             CodecEncoding.getCanonicalCodec(83), // (3,128,0,1)
124             CodecEncoding.getCanonicalCodec(85), // (3,192,0,1)
125             CodecEncoding.getCanonicalCodec(87), // (3,224,0,1)
126             CodecEncoding.getCanonicalCodec(89), // (3,240,0,1)
127             CodecEncoding.getCanonicalCodec(91) // (3,248,0,1)
128     };
129 
130     /**
131      * Delta unsigned codecs 5.
132      */
133     public static BHSDCodec[] deltaUnsignedCodecs5 = { CodecEncoding.getCanonicalCodec(98), // (4,8,0,1)
134             CodecEncoding.getCanonicalCodec(100), // (4,16,0,1)
135             CodecEncoding.getCanonicalCodec(102), // (4,32,0,1)
136             CodecEncoding.getCanonicalCodec(104), // (4,64,0,1)
137             CodecEncoding.getCanonicalCodec(106), // (4,128,0,1)
138             CodecEncoding.getCanonicalCodec(108), // (4,192,0,1)
139             CodecEncoding.getCanonicalCodec(110), // (4,224,0,1)
140             CodecEncoding.getCanonicalCodec(112), // (4,240,0,1)
141             CodecEncoding.getCanonicalCodec(114) // (4,248,0,1)
142     };
143 
144     // Families of codecs for bands containing positive and negative integers
145     // that do correlate well (i.e. delta encoding is used)
146 
147     /**
148      * Delta signed codecs 1.
149      */
150     public static BHSDCodec[] deltaSignedCodecs1 = { CodecEncoding.getCanonicalCodec(4), // (1,256,1,1)
151             CodecEncoding.getCanonicalCodec(8), // (2,256,1,1)
152             CodecEncoding.getCanonicalCodec(12), // (3,256,1,1)
153             CodecEncoding.getCanonicalCodec(16) // (4,256,1,1)
154     };
155 
156     /**
157      * Delta signed codecs 2.
158      */
159     public static BHSDCodec[] deltaSignedCodecs2 = { CodecEncoding.getCanonicalCodec(33), // (5,4,1,1)
160             CodecEncoding.getCanonicalCodec(36), // (5,16,1,1)
161             CodecEncoding.getCanonicalCodec(39), // (5,32,1,1)
162             CodecEncoding.getCanonicalCodec(42), // (5,64,1,1)
163             CodecEncoding.getCanonicalCodec(45) // (5,128,1,1)
164     };
165 
166     /**
167      * Delta signed codecs 3.
168      */
169     public static BHSDCodec[] deltaSignedCodecs3 = { CodecEncoding.getCanonicalCodec(53), // (2,8,1,1)
170             CodecEncoding.getCanonicalCodec(55), // (2,16,1,1)
171             CodecEncoding.getCanonicalCodec(57), // (2,32,1,1)
172             CodecEncoding.getCanonicalCodec(59), // (2,64,1,1)
173             CodecEncoding.getCanonicalCodec(61), // (2,128,1,1)
174             CodecEncoding.getCanonicalCodec(63), // (2,192,1,1)
175             CodecEncoding.getCanonicalCodec(65), // (2,224,1,1)
176             CodecEncoding.getCanonicalCodec(67), // (2,240,1,1)
177             CodecEncoding.getCanonicalCodec(69) // (2,248,1,1)
178     };
179 
180     /**
181      * Delta signed codecs 4.
182      */
183     public static BHSDCodec[] deltaSignedCodecs4 = { CodecEncoding.getCanonicalCodec(76), // (3,8,1,1)
184             CodecEncoding.getCanonicalCodec(78), // (3,16,1,1)
185             CodecEncoding.getCanonicalCodec(80), // (3,32,1,1)
186             CodecEncoding.getCanonicalCodec(82), // (3,64,1,1)
187             CodecEncoding.getCanonicalCodec(84), // (3,128,1,1)
188             CodecEncoding.getCanonicalCodec(86), // (3,192,1,1)
189             CodecEncoding.getCanonicalCodec(88), // (3,224,1,1)
190             CodecEncoding.getCanonicalCodec(90), // (3,240,1,1)
191             CodecEncoding.getCanonicalCodec(92) // (3,248,1,1)
192     };
193 
194     /**
195      * Delta signed codecs 5.
196      */
197     public static BHSDCodec[] deltaSignedCodecs5 = { CodecEncoding.getCanonicalCodec(99), // (4,8,1,1)
198             CodecEncoding.getCanonicalCodec(101), // (4,16,1,1)
199             CodecEncoding.getCanonicalCodec(103), // (4,32,1,1)
200             CodecEncoding.getCanonicalCodec(105), // (4,64,1,1)
201             CodecEncoding.getCanonicalCodec(107), // (4,128,1,1)
202             CodecEncoding.getCanonicalCodec(109), // (4,192,1,1)
203             CodecEncoding.getCanonicalCodec(111), // (4,224,1,1)
204             CodecEncoding.getCanonicalCodec(113), // (4,240,1,1)
205             CodecEncoding.getCanonicalCodec(115) // (4,248,1,1)
206     };
207 
208     /**
209      * Delta double signed codecs 1.
210      */
211     public static BHSDCodec[] deltaDoubleSignedCodecs1 = { CodecEncoding.getCanonicalCodec(34), // (5,4,2,1)
212             CodecEncoding.getCanonicalCodec(37), // (5,16,2,1)
213             CodecEncoding.getCanonicalCodec(40), // (5,32,2,1)
214             CodecEncoding.getCanonicalCodec(43), // (5,64,2,1)
215             CodecEncoding.getCanonicalCodec(46) // (5,128,2,1)
216     };
217 
218     // Families of codecs for bands containing positive and negative values that
219     // do not correlate well (i.e. delta encoding is not used)
220 
221     /**
222      * Non-delta signed codecs 1.
223      */
224     public static BHSDCodec[] nonDeltaSignedCodecs1 = { CodecEncoding.getCanonicalCodec(2), // (1,256,1)
225             CodecEncoding.getCanonicalCodec(6), // (2,256,1)
226             CodecEncoding.getCanonicalCodec(10), // (3,256,1)
227             CodecEncoding.getCanonicalCodec(14) // (4,256,1)
228     };
229 
230     /**
231      * Non-delta signed codecs 2.
232      */
233     public static BHSDCodec[] nonDeltaSignedCodecs2 = { CodecEncoding.getCanonicalCodec(18), // (5,4,1)
234             CodecEncoding.getCanonicalCodec(21), // (5,16,1)
235             CodecEncoding.getCanonicalCodec(24), // (5,32,1)
236             CodecEncoding.getCanonicalCodec(27), // (5,64,1)
237             CodecEncoding.getCanonicalCodec(30) // (5,128,1)
238     };
239 
240     /**
241      * Non-delta double signed codecs 1.
242      */
243     public static BHSDCodec[] nonDeltaDoubleSignedCodecs1 = { CodecEncoding.getCanonicalCodec(19), // (5,4,2)
244             CodecEncoding.getCanonicalCodec(22), // (5,16,2)
245             CodecEncoding.getCanonicalCodec(25), // (5,32,2)
246             CodecEncoding.getCanonicalCodec(28), // (5,64,2)
247             CodecEncoding.getCanonicalCodec(31) // (5,128,2)
248     };
249 
250 
251     /**
252      * Constructs a new instance.
253      *
254      * @deprecated Will be private in the next major release.
255      */
256     @Deprecated
257     public CanonicalCodecFamilies() {
258         // empty
259     }
260 }