JavaDecoderpublic class JavaDecoder extends AudioCodec RTP GSM decoder plugin wrapper, which uses Java methods to do the decoding. |
Fields Summary |
---|
public static final String | a_copyright_notice
Licensed Materials - Property of IBM
"Restricted Materials of IBM"
5648-B81
(c) Copyright IBM Corporation 1997,1999 All Rights Reserved
US Government Users Restricted Rights - Use, duplication or
disclosure restricted by GSA ADP Schedule Contract with
IBM Corporation. | protected GsmDecoder | decoder |
Constructors Summary |
---|
public JavaDecoder()
////////////////////////////////////////////////////////////////////////////
// Methods
supportedInputFormats = new AudioFormat[] { new AudioFormat(AudioFormat.GSM),
new AudioFormat(AudioFormat.GSM_RTP)};
defaultOutputFormats = new AudioFormat[] { new AudioFormat(AudioFormat.LINEAR) };
PLUGIN_NAME="GSM Decoder";
|
Methods Summary |
---|
protected int | calculateOutputSize(int inputSize)
return inputSize/33*320;
| public void | close()
freeDecoder();
| protected void | decode(byte[] inpData, int readPtr, byte[] outData, int writePtr, int inpLength)
int numberOfFrames = (inpLength/33);
for ( int n=1 ; n<=numberOfFrames ; n++,writePtr += 320,readPtr += 33) {
decoder.decodeFrame(inpData, readPtr , outData,writePtr);
}
| protected void | freeDecoder()
decoder = null;
| public java.lang.Object[] | getControls()
if (controls==null) {
controls=new Control[1];
controls[0]=new SilenceSuppressionAdapter(this,true,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;
| public void | open()
decoder=new GsmDecoder();
decoder.decoderInit();
| public int | process(javax.media.Buffer inputBuffer, javax.media.Buffer outputBuffer)
if (!checkInputBuffer(inputBuffer) ) {
return BUFFER_PROCESSED_FAILED;
}
if (isEOM(inputBuffer) ) {
propagateEOM(outputBuffer);
return BUFFER_PROCESSED_OK;
}
int inpLength=inputBuffer.getLength();
int outLength = calculateOutputSize(inputBuffer.getLength() );
byte[] inpData = (byte[]) inputBuffer.getData();
byte[] outData = validateByteArraySize(outputBuffer, outLength);
decode(inpData, inputBuffer.getOffset(), outData, 0, inpLength);
updateOutput(outputBuffer, outputFormat, outLength, 0);
return BUFFER_PROCESSED_OK;
| public void | reset()
resetDecoder();
| protected void | resetDecoder()
decoder.decoderInit();
|
|