    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}