Class PcmWaveWriter
java.lang.Object
javaforce.codec.speex.AudioFileWriter
javaforce.codec.speex.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();
- Version:
- $Revision$
- Author:
- Jim Lawrence, helloNetwork.com, Marc Gimpel, Wimba S.A. ([email protected])
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int[][][]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 final shortWave type code of PCMstatic final shortWave type code of Speexstatic final int[][][]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). -
Constructor Summary
ConstructorsConstructorDescriptionConstructor.PcmWaveWriter(int sampleRate, int channels) Constructor.PcmWaveWriter(int mode, int quality, int sampleRate, int channels, int nframes, boolean vbr) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Closes the output file.voidOpen the output file.voidOpen the output file.voidwriteHeader(String comment) Writes the initial data chunks that start the wave file.voidwritePacket(byte[] data, int offset, int len) Writes a packet of audio.Methods inherited from class AudioFileWriter
buildOggPageHeader, buildSpeexComment, buildSpeexHeader, writeInt, writeInt, writeInt, writeLong, writeLong, writeOggPageHeader, writeShort, writeShort, writeShort, writeSpeexComment, writeSpeexHeader, writeStringModifier and TypeMethodDescriptionstatic byte[]buildOggPageHeader(int headerType, long granulepos, int streamSerialNumber, int pageCount, int packetCount, byte[] packetSizes) Builds and returns an Ogg Page Header.static byte[]buildSpeexComment(String comment) Builds and returns a Speex Comment.static byte[]buildSpeexHeader(int sampleRate, int mode, int channels, boolean vbr, int nframes) Builds a Speex Header.static voidwriteInt(byte[] data, int offset, int v) Writes a Little-endian int.static voidwriteInt(DataOutput out, int v) Writes a Little-endian int.static voidwriteInt(OutputStream os, int v) Writes a Little-endian int.static voidwriteLong(byte[] data, int offset, long v) Writes a Little-endian long.static voidwriteLong(OutputStream os, long v) Writes a Little-endian long.static intwriteOggPageHeader(byte[] buf, int offset, int headerType, long granulepos, int streamSerialNumber, int pageCount, int packetCount, byte[] packetSizes) Writes an Ogg Page Header to the given byte array.static voidwriteShort(byte[] data, int offset, int v) Writes a Little-endian short.static voidwriteShort(DataOutput out, short v) Writes a Little-endian short.static voidwriteShort(OutputStream os, short v) Writes a Little-endian short.static intwriteSpeexComment(byte[] buf, int offset, String comment) Writes a Speex Comment to the given byte array.static intwriteSpeexHeader(byte[] buf, int offset, int sampleRate, int mode, int channels, boolean vbr, int nframes) Writes a Speex Header to the given byte array.static voidwriteString(byte[] data, int offset, String v) Writes a String.
-
Field Details
-
WAVE_FORMAT_PCM
public static final short WAVE_FORMAT_PCMWave type code of PCM- See Also:
-
WAVE_FORMAT_SPEEX
public static final short WAVE_FORMAT_SPEEXWave type code of Speex- See Also:
-
WAVE_FRAME_SIZES
public static final int[][][] WAVE_FRAME_SIZESTable 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. -
WAVE_BITS_PER_FRAME
public static final int[][][] WAVE_BITS_PER_FRAMETable 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.
-
-
Constructor Details
-
PcmWaveWriter
public PcmWaveWriter()Constructor. -
PcmWaveWriter
public PcmWaveWriter(int sampleRate, int channels) Constructor.- Parameters:
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.- Parameters:
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-
-
-
Method Details
-
close
Closes the output file. MUST be called to have a correct stream.- Specified by:
closein classAudioFileWriter- Throws:
IOException- if there was an exception closing the Audio Writer.
-
open
Open the output file.- Specified by:
openin classAudioFileWriter- Parameters:
file- - file to open.- Throws:
IOException- if there was an exception opening the Audio Writer.
-
open
Open the output file.- Specified by:
openin classAudioFileWriter- Parameters:
filename- filename to open.- Throws:
IOException- if there was an exception opening the Audio Writer.
-
writeHeader
Writes the initial data chunks that start the wave file. Prepares file for data samples to written.- Specified by:
writeHeaderin classAudioFileWriter- Parameters:
comment- ignored by the WAV header.- Throws:
IOException
-
writePacket
Writes a packet of audio.- Specified by:
writePacketin classAudioFileWriter- Parameters:
data- audio dataoffset- the offset from which to start reading the data.len- the length of data to read.- Throws:
IOException
-