Methods Summary |
---|
public java.lang.Object[] | getControls()
if (controls==null) {
controls=new Control[1];
controls[0]=new SilenceSuppressionAdapter(this,false,false);
}
return (Object[])controls;
|
protected javax.media.Format[] | getMatchingOutputFormats(javax.media.Format in)
AudioFormat af =(AudioFormat) in;
supportedOutputFormats = new AudioFormat[] {
new AudioFormat(
AudioFormat.LINEAR,
af.getSampleRate(),
16,
af.getChannels(),
AudioFormat.LITTLE_ENDIAN, //isBigEndian(),
AudioFormat.SIGNED //isSigned());
)
};
return supportedOutputFormats;
|
private void | initTables()
for (int i=0;i<256;i++) {
int input = ~i;
int mantissa = ( (input & 0xf ) << 3) + 0x84;
int segment = (input & 0x70) >> 4;
int value = mantissa << segment;
value -= 0x84;
if ( (input & 0x80)!=0 )
value = -value;
lutTableL[i]=(byte)value;
lutTableH[i]=(byte)(value>>8);
}
|
public void | open()Initializes the codec.
initTables();
|
public int | process(javax.media.Buffer inputBuffer, javax.media.Buffer outputBuffer)decode the buffer
if (!checkInputBuffer(inputBuffer) ) {
return BUFFER_PROCESSED_FAILED;
}
if (isEOM(inputBuffer) ) {
propagateEOM(outputBuffer);
return BUFFER_PROCESSED_OK;
}
int channels = ((AudioFormat)outputFormat).getChannels();
byte[] inData =(byte[]) inputBuffer.getData();
byte[] outData = validateByteArraySize(outputBuffer, inData.length * 2);
int inpLength=inputBuffer.getLength();
int outLength=2*inpLength;
int inOffset=inputBuffer.getOffset();
int outOffset=outputBuffer.getOffset();
for (int i=0;i<inpLength;i++) {
int temp=inData[inOffset++]&0xff;
outData[outOffset++]=lutTableL[temp];
outData[outOffset++]=lutTableH[temp];
}
updateOutput(outputBuffer,outputFormat, outLength, outputBuffer.getOffset());
return BUFFER_PROCESSED_OK;
|