001/*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *   https://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied.  See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 */
019package org.apache.commons.compress.harmony.pack200;
020
021/**
022 * Sets of codecs that share characteristics. Mainly used for different effort compression heuristics in BandSet.
023 */
024public class CanonicalCodecFamilies {
025
026    // Families of codecs for bands of positive integers that do not correlate
027    // well (i.e. would not benefit from delta encoding)
028
029    /**
030     * Non-delta unsigned codecs 1.
031     */
032    public static BHSDCodec[] nonDeltaUnsignedCodecs1 = {
033            // (1,256) is a special case and is considered separately so shouldn't be included here
034//        CodecEncoding.getCanonicalCodec(1), // (1,256)
035            CodecEncoding.getCanonicalCodec(5), // (2,256)
036            CodecEncoding.getCanonicalCodec(9), // (3,256)
037            CodecEncoding.getCanonicalCodec(13) // (4,256)
038    };
039
040    /**
041     * Non-delta unsigned codecs 2.
042     */
043    public static BHSDCodec[] nonDeltaUnsignedCodecs2 = { CodecEncoding.getCanonicalCodec(17), // (5,4)
044            CodecEncoding.getCanonicalCodec(20), // (5,16)
045            CodecEncoding.getCanonicalCodec(23), // (5,32)
046            CodecEncoding.getCanonicalCodec(26), // (5,64)
047            CodecEncoding.getCanonicalCodec(29) // (5,128)
048    };
049
050    /**
051     * Non-delta unsigned codecs 3.
052     */
053    public static BHSDCodec[] nonDeltaUnsignedCodecs3 = { CodecEncoding.getCanonicalCodec(47), // (2,192)
054            CodecEncoding.getCanonicalCodec(48), // (2,224)
055            CodecEncoding.getCanonicalCodec(49), // (2,240)
056            CodecEncoding.getCanonicalCodec(50), // (2,248)
057            CodecEncoding.getCanonicalCodec(51) // (2,252)
058    };
059
060    /**
061     * Non-delta unsigned codecs 4.
062     */
063    public static BHSDCodec[] nonDeltaUnsignedCodecs4 = { CodecEncoding.getCanonicalCodec(70), // (3,192)
064            CodecEncoding.getCanonicalCodec(71), // (3,224)
065            CodecEncoding.getCanonicalCodec(72), // (3,240)
066            CodecEncoding.getCanonicalCodec(73), // (3,248)
067            CodecEncoding.getCanonicalCodec(74) // (3,252)
068    };
069
070    /**
071     * Non-delta unsigned codecs 5.
072     */
073    public static BHSDCodec[] nonDeltaUnsignedCodecs5 = { CodecEncoding.getCanonicalCodec(93), // (4,192)
074            CodecEncoding.getCanonicalCodec(94), // (4,224)
075            CodecEncoding.getCanonicalCodec(95), // (4,240)
076            CodecEncoding.getCanonicalCodec(96), // (4,248)
077            CodecEncoding.getCanonicalCodec(97) // (4,252)
078    };
079
080    // Families of codecs for bands of positive integers that do correlate well
081    // and would benefit from delta encoding
082
083    /**
084     * Delta unsigned codecs 1.
085     */
086    public static BHSDCodec[] deltaUnsignedCodecs1 = { CodecEncoding.getCanonicalCodec(3), // (1,256,0,1)
087            CodecEncoding.getCanonicalCodec(7), // (2,256,0,1)
088            CodecEncoding.getCanonicalCodec(11), // (3,256,0,1)
089            CodecEncoding.getCanonicalCodec(15) // (4,256,0,1)
090    };
091
092    /**
093     * Delta unsigned codecs 2.
094     */
095    public static BHSDCodec[] deltaUnsignedCodecs2 = { CodecEncoding.getCanonicalCodec(32), // (5,4,0,1)
096            CodecEncoding.getCanonicalCodec(35), // (5,16,0,1)
097            CodecEncoding.getCanonicalCodec(38), // (5,32,0,1)
098            CodecEncoding.getCanonicalCodec(41), // (5,64,0,1)
099            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}