/*
* SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.impl.media.codec.audio.alaw;
import javax.media.*;
import javax.media.format.*;
import com.sun.media.codec.audio.*;
import net.java.sip.communicator.impl.media.codec.*;
/**
* DePacketizer for ALAW codec
* @author Damian Minkov
*/
public class DePacketizer
extends AudioCodec
{
/**
* Creates DePacketizer
*/
public DePacketizer()
{
inputFormats = new Format[]{new AudioFormat(Constants.ALAW_RTP)};
}
/**
* Returns the name of the DePacketizer
* @return String
*/
public String getName()
{
return "ALAW DePacketizer";
}
/**
* Returns the supported output formats
* @param in Format
* @return Format[]
*/
public Format[] getSupportedOutputFormats(Format in)
{
if (in == null)
{
return new Format[]{new AudioFormat(AudioFormat.ALAW)};
}
if (matches(in, inputFormats) == null)
{
return new Format[1];
}
if (! (in instanceof AudioFormat))
{
return new Format[]{new AudioFormat(AudioFormat.ALAW)};
}
AudioFormat af = (AudioFormat) in;
return new Format[]
{
new AudioFormat(
AudioFormat.ALAW,
af.getSampleRate(),
af.getSampleSizeInBits(),
af.getChannels())
};
}
/**
* Initializes the codec.
*/
public void open()
{}
/**
* Clean up
*/
public void close()
{}
/**
* decode the buffer
* @param inputBuffer Buffer
* @param outputBuffer Buffer
* @return int
*/
public int process(Buffer inputBuffer, Buffer outputBuffer)
{
if (!checkInputBuffer(inputBuffer))
{
return BUFFER_PROCESSED_FAILED;
}
if (isEOM(inputBuffer))
{
propagateEOM(outputBuffer);
return BUFFER_PROCESSED_OK;
}
Object outData = outputBuffer.getData();
outputBuffer.setData(inputBuffer.getData());
inputBuffer.setData(outData);
outputBuffer.setLength(inputBuffer.getLength());
outputBuffer.setFormat(outputFormat);
outputBuffer.setOffset(inputBuffer.getOffset());
return BUFFER_PROCESSED_OK;
}
}