package uk.co.mmscomputing.device.capi.sound;
import java.io.*;
public class LawOutputStream extends FilterOutputStream{
static private byte[] inverse=null;
public LawOutputStream(OutputStream out)throws IOException{
super(out);
}
public void write(int b)throws IOException{
out.write(inverse[b&0x000000FF]);
}
public void write(byte[] b)throws IOException{
int len=b.length;
for(int i=0;i<len;i++){
b[i]=inverse[b[i]&0x000000FF];
}
out.write(b);
}
public void write(byte[] b, int off, int len)throws IOException{
for(int i=0;i<len;i++){
b[off+i]=inverse[b[off+i]&0x000000FF];
}
out.write(b,off,len);
}
static{
inverse=new byte[256];
int s=0;
for(int t=0;t<256;t++){
inverse[t]=(byte)s;
int u=256;
do{
u>>=1;
s^=u;
}while((s^u)>s);
}
}
}