Class SpeexDecoder

java.lang.Object
org.xiph.speex.SpeexDecoder

public class SpeexDecoder extends Object
Main Speex Decoder class. This class decodes the given Speex packets into PCM 16bit samples.

Here's an example that decodes and recovers one Speex packet.

 SpeexDecoder speexDecoder = new SpeexDecoder();
 speexDecoder.processData(data, packetOffset, packetSize);
 byte[] decoded = new byte[speexDecoder.getProcessedBataByteSize()];
 speexDecoder.getProcessedData(decoded, 0);
 
Version:
$Revision: 1.4 $
Author:
Jim Lawrence, helloNetwork.com, Marc Gimpel, Wimba S.A. (mgimpel@horizonwimba.com)
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private Bits
     
    private int
     
    private float[]
     
    private Decoder
     
    private int
     
    private short[]
     
    private int
     
    private int
     
    static final String
    Version of the Speex Decoder
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructor
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    Returns the number of channels.
    int
    getProcessedData(byte[] data, int offset)
    Pull the decoded data out into a byte array at the given offset and returns the number of bytes processed and just read.
    int
    getProcessedData(short[] data, int offset)
    Pull the decoded data out into a short array at the given offset and returns tne number of shorts processed and just read
    int
    Returns the number of bytes processed and ready to be read.
    int
    Returns the sample rate.
    boolean
    init(int mode, int sampleRate, int channels, boolean enhanced)
    Initialise the Speex Decoder.
    void
    processData(boolean lost)
    This is where the actual decoding takes place.
    void
    processData(byte[] data, int offset, int len)
    This is where the actual decoding takes place

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • VERSION

      public static final String VERSION
      Version of the Speex Decoder
      See Also:
    • sampleRate

      private int sampleRate
    • channels

      private int channels
    • decodedData

      private float[] decodedData
    • outputData

      private short[] outputData
    • outputSize

      private int outputSize
    • bits

      private Bits bits
    • decoder

      private Decoder decoder
    • frameSize

      private int frameSize
  • Constructor Details

    • SpeexDecoder

      public SpeexDecoder()
      Constructor
  • Method Details

    • init

      public boolean init(int mode, int sampleRate, int channels, boolean enhanced)
      Initialise the Speex Decoder.
      Parameters:
      mode - the mode of the decoder (0=NB, 1=WB, 2=UWB).
      sampleRate - the number of samples per second.
      channels - the number of audio channels (1=mono, 2=stereo, ...).
      enhanced - whether to enable perceptual enhancement or not.
      Returns:
      true if initialisation successful.
    • getSampleRate

      public int getSampleRate()
      Returns the sample rate.
      Returns:
      the sample rate.
    • getChannels

      public int getChannels()
      Returns the number of channels.
      Returns:
      the number of channels.
    • getProcessedData

      public int getProcessedData(byte[] data, int offset)
      Pull the decoded data out into a byte array at the given offset and returns the number of bytes processed and just read.
      Parameters:
      data -
      offset -
      Returns:
      the number of bytes processed and just read.
    • getProcessedData

      public int getProcessedData(short[] data, int offset)
      Pull the decoded data out into a short array at the given offset and returns tne number of shorts processed and just read
      Parameters:
      data -
      offset -
      Returns:
      the number of samples processed and just read.
    • getProcessedDataByteSize

      public int getProcessedDataByteSize()
      Returns the number of bytes processed and ready to be read.
      Returns:
      the number of bytes processed and ready to be read.
    • processData

      public void processData(byte[] data, int offset, int len) throws StreamCorruptedException
      This is where the actual decoding takes place
      Parameters:
      data - - the Speex data (frame) to decode. If it is null, the packet is supposed lost.
      offset - - the offset from which to start reading the data.
      len - - the length of data to read (Speex frame size).
      Throws:
      StreamCorruptedException - If the input stream is invalid.
    • processData

      public void processData(boolean lost) throws StreamCorruptedException
      This is where the actual decoding takes place.
      Parameters:
      lost - - true if the Speex packet has been lost.
      Throws:
      StreamCorruptedException - If the input stream is invalid.