org.xiph.speex
Class PcmWaveWriter
public class PcmWaveWriter
Writes basic PCM wave files from binary audio data.
Here's an example that writes 2 seconds of silence
PcmWaveWriter s_wsw = new PcmWaveWriter(2, 44100);
byte[] silence = new byte[16*2*44100];
wsw.Open("C:\\out.wav");
wsw.WriteHeader();
wsw.WriteData(silence, 0, silence.length);
wsw.WriteData(silence, 0, silence.length);
wsw.Close();
- Jim Lawrence, helloNetwork.com
- Marc Gimpel, Wimba S.A. (mgimpel@horizonwimba.com)
static int[][][] | WAVE_BITS_PER_FRAME - Table describing the number of bit per Speex frame, depending on its
mode-1 (1=NB, 2=WB, 3=UWB), channels-1 (1=mono, 2=stereo) and the quality
setting (0 to 10).
|
static short | WAVE_FORMAT_PCM - Wave type code of PCM
|
static short | WAVE_FORMAT_SPEEX - Wave type code of Speex
|
static int[][][] | WAVE_FRAME_SIZES - Table describing the number of frames per packet in a Speex Wave file,
depending on its mode-1 (1=NB, 2=WB, 3=UWB), channels-1 (1=mono, 2=stereo)
and the quality setting (0 to 10).
|
private int | channels - Defines the number of channels of the audio input (1=mono, 2=stereo).
|
private boolean | isPCM
|
private int | mode - Defines the encoder mode (0=NB, 1=WB and 2-UWB).
|
private int | nframes - Defines the number of frames per speex packet.
|
private int | quality
|
private RandomAccessFile | raf
|
private int | sampleRate - Defines the sampling rate of the audio input.
|
private int | size
|
private boolean | vbr - Defines whether or not to use VBR (Variable Bit Rate).
|
private static int | calculateBlockSize(int mode, int channels, int quality) - Calculates block size (considering padding).
|
private static int | calculateEffectiveBitrate(int mode, int channels, int quality) - Calculates effective bitrate (considering padding).
|
void | close() - Closes the output file.
|
void | open(File file) - Open the output file.
|
void | open(String filename) - Open the output file.
|
private void | setPCMFormat(int sampleRate, int channels) - Sets the output format for a PCM Wave file.
|
private void | setSpeexFormat(int mode, int quality, int sampleRate, int channels, int nframes, boolean vbr) - Sets the output format for a Speex Wave file.
|
void | writeHeader(String comment) - Writes the initial data chunks that start the wave file.
|
void | writePacket(byte[] data, int offset, int len) - Writes a packet of audio.
|
buildOggPageHeader , buildSpeexComment , buildSpeexHeader , close , open , open , writeHeader , writeInt , writeInt , writeInt , writeLong , writeLong , writeOggPageHeader , writePacket , writeShort , writeShort , writeShort , writeSpeexComment , writeSpeexHeader , writeString |
WAVE_BITS_PER_FRAME
public static final int[][][] WAVE_BITS_PER_FRAME
Table describing the number of bit per Speex frame, depending on its
mode-1 (1=NB, 2=WB, 3=UWB), channels-1 (1=mono, 2=stereo) and the quality
setting (0 to 10).
See end of file for exerpt from SpeexACM code for more explanations.
WAVE_FORMAT_PCM
public static final short WAVE_FORMAT_PCM
Wave type code of PCM
WAVE_FORMAT_SPEEX
public static final short WAVE_FORMAT_SPEEX
Wave type code of Speex
WAVE_FRAME_SIZES
public static final int[][][] WAVE_FRAME_SIZES
Table describing the number of frames per packet in a Speex Wave file,
depending on its mode-1 (1=NB, 2=WB, 3=UWB), channels-1 (1=mono, 2=stereo)
and the quality setting (0 to 10).
See end of file for exerpt from SpeexACM code for more explanations.
channels
private int channels
Defines the number of channels of the audio input (1=mono, 2=stereo).
isPCM
private boolean isPCM
mode
private int mode
Defines the encoder mode (0=NB, 1=WB and 2-UWB).
nframes
private int nframes
Defines the number of frames per speex packet.
quality
private int quality
raf
private RandomAccessFile raf
sampleRate
private int sampleRate
Defines the sampling rate of the audio input.
vbr
private boolean vbr
Defines whether or not to use VBR (Variable Bit Rate).
PcmWaveWriter
public PcmWaveWriter()
Constructor.
PcmWaveWriter
public PcmWaveWriter(int sampleRate,
int channels)
Constructor.
sampleRate
- the number of samples per second.channels
- the number of audio channels (1=mono, 2=stereo, ...).
PcmWaveWriter
public PcmWaveWriter(int mode,
int quality,
int sampleRate,
int channels,
int nframes,
boolean vbr)
Constructor.
mode
- the mode of the encoder (0=NB, 1=WB, 2=UWB).quality
- sampleRate
- the number of samples per second.channels
- the number of audio channels (1=mono, 2=stereo, ...).nframes
- the number of frames per speex packet.vbr
-
calculateBlockSize
private static final int calculateBlockSize(int mode,
int channels,
int quality)
Calculates block size (considering padding).
See end of file for exerpt from SpeexACM code for more explanations.
mode
- channels
- quality
-
- block size (considering padding).
calculateEffectiveBitrate
private static final int calculateEffectiveBitrate(int mode,
int channels,
int quality)
Calculates effective bitrate (considering padding).
See end of file for exerpt from SpeexACM code for more explanations.
mode
- channels
- quality
-
- effective bitrate (considering padding).
close
public void close()
throws IOException
Closes the output file.
MUST be called to have a correct stream.
- close in interface AudioFileWriter
open
public void open(File file)
throws IOException
Open the output file.
- open in interface AudioFileWriter
open
public void open(String filename)
throws IOException
Open the output file.
- open in interface AudioFileWriter
filename
- filename to open.
setPCMFormat
private void setPCMFormat(int sampleRate,
int channels)
Sets the output format for a PCM Wave file.
Must be called before WriteHeader().
sampleRate
- the number of samples per second.channels
- the number of audio channels (1=mono, 2=stereo, ...).
setSpeexFormat
private void setSpeexFormat(int mode,
int quality,
int sampleRate,
int channels,
int nframes,
boolean vbr)
Sets the output format for a Speex Wave file.
Must be called before WriteHeader().
mode
- the mode of the encoder (0=NB, 1=WB, 2=UWB).quality
- sampleRate
- the number of samples per second.channels
- the number of audio channels (1=mono, 2=stereo, ...).nframes
- the number of frames per speex packet.vbr
-
writeHeader
public void writeHeader(String comment)
throws IOException
Writes the initial data chunks that start the wave file.
Prepares file for data samples to written.
- writeHeader in interface AudioFileWriter
comment
- ignored by the WAV header.
writePacket
public void writePacket(byte[] data,
int offset,
int len)
throws IOException
Writes a packet of audio.
- writePacket in interface AudioFileWriter
data
- audio dataoffset
- the offset from which to start reading the data.len
- the length of data to read.
Copyright © 1999-2004 Wimba S.A. All Rights Reserved.