org.xiph.speex

Class SpeexEncoder


public class SpeexEncoder
extends java.lang.Object

Main Speex Encoder class. This class encodes the given PCM 16bit samples into Speex packets.
Version:
$Revision: 1.6 $
Author:
Marc Gimpel, Wimba S.A. (mgimpel@horizonwimba.com)

Field Summary

static String
VERSION
Version of the Speex Encoder
private Bits
bits
private int
channels
private Encoder
encoder
private int
frameSize
private float[]
rawData
private int
sampleRate

Constructor Summary

SpeexEncoder()
Constructor

Method Summary

int
getChannels()
Returns the number of channels.
Encoder
getEncoder()
Returns the Encoder being used (Narrowband, Wideband or Ultrawideband).
int
getFrameSize()
Returns the size of a frame.
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 of encoded data just read.
int
getProcessedDataByteSize()
Returns the number of bytes of encoded data ready to be read.
int
getSampleRate()
Returns the sample rate.
boolean
init(int mode, int quality, int sampleRate, int channels)
Initialisation
static void
mapPcm16bitLittleEndian2Float(byte[] pcm16bitBytes, int offsetInput, float[] samples, int offsetOutput, int length)
Converts a 16 bit linear PCM stream (in the form of a byte array) into a floating point PCM stream (in the form of an float array).
boolean
processData(byte[] data, int offset, int len)
This is where the actual encoding takes place
boolean
processData(float[] data, int numSamples)
Encode an array of floats.
boolean
processData(short[] data, int offset, int numShorts)
Encode an array of shorts.

Field Details

VERSION

public static final String VERSION
Version of the Speex Encoder

bits

private Bits bits

channels

private int channels

encoder

private Encoder encoder

frameSize

private int frameSize

rawData

private float[] rawData

sampleRate

private int sampleRate

Constructor Details

SpeexEncoder

public SpeexEncoder()
Constructor

Method Details

getChannels

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

getEncoder

public Encoder getEncoder()
Returns the Encoder being used (Narrowband, Wideband or Ultrawideband).
Returns:
the Encoder being used (Narrowband, Wideband or Ultrawideband).

getFrameSize

public int getFrameSize()
Returns the size of a frame.
Returns:
the size of a frame.

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 of encoded data just read.
Parameters:
data -
offset -
Returns:
the number of bytes of encoded data just read.

getProcessedDataByteSize

public int getProcessedDataByteSize()
Returns the number of bytes of encoded data ready to be read.
Returns:
the number of bytes of encoded data ready to be read.

getSampleRate

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

init

public boolean init(int mode,
                    int quality,
                    int sampleRate,
                    int channels)
Initialisation
Parameters:
mode - the mode of the encoder (0=NB, 1=WB, 2=UWB).
quality - the quality setting of the encoder (between 0 and 10).
sampleRate - the number of samples per second.
channels - the number of audio channels (1=mono, 2=stereo, ...).
Returns:
true if initialisation successful.

mapPcm16bitLittleEndian2Float

public static void mapPcm16bitLittleEndian2Float(byte[] pcm16bitBytes,
                                                 int offsetInput,
                                                 float[] samples,
                                                 int offsetOutput,
                                                 int length)
Converts a 16 bit linear PCM stream (in the form of a byte array) into a floating point PCM stream (in the form of an float array). Here are some important details about the encoding:
  • Java uses big endian for shorts and ints, and Windows uses little Endian. Therefore, shorts and ints must be read as sequences of bytes and combined with shifting operations.
Parameters:
pcm16bitBytes - - byte array of linear 16-bit PCM formated audio.
offsetInput -
samples - - float array to receive the 16-bit linear audio samples.
offsetOutput -
length -

processData

public boolean processData(byte[] data,
                           int offset,
                           int len)
This is where the actual encoding takes place
Parameters:
data -
offset -
len -
Returns:
true if successful.

processData

public boolean processData(float[] data,
                           int numSamples)
Encode an array of floats.
Parameters:
data -
numSamples -
Returns:
true if successful.

processData

public boolean processData(short[] data,
                           int offset,
                           int numShorts)
Encode an array of shorts.
Parameters:
data -
offset -
numShorts -
Returns:
true if successful.

Copyright © 1999-2004 Wimba S.A. All Rights Reserved.