11e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan/* 21e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan * DeltaDecoder 31e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan * 41e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan * Author: Lasse Collin <lasse.collin@tukaani.org> 51e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan * 61e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan * This file has been put into the public domain. 71e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan * You can do whatever you want with this file. 81e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan */ 91e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan 101e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnanpackage org.tukaani.xz; 111e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan 121e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnanimport java.io.InputStream; 131e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan 141e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnanclass DeltaDecoder extends DeltaCoder implements FilterDecoder { 151e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan private final int distance; 161e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan 171e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan DeltaDecoder(byte[] props) throws UnsupportedOptionsException { 181e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan if (props.length != 1) 191e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan throw new UnsupportedOptionsException( 201e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan "Unsupported Delta filter properties"); 211e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan 221e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan distance = (props[0] & 0xFF) + 1; 231e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan } 241e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan 251e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan public int getMemoryUsage() { 261e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan return 1; 271e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan } 281e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan 291e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan public InputStream getInputStream(InputStream in) { 301e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan return new DeltaInputStream(in, distance); 311e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan } 321e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan} 33