Clifton Craig
2010-Mar-20 23:47 UTC
[Speex-dev] Decode file written from JSpeex using C/C++ API?
I'm new to Speex and I'm trying to compress audio using JSpeex in a
servlet then play it back on the iPhone. I've managed to get Speex to
compile on the iPhone by copying the speex and libspeex folders into XCode.
I've read the sample code and the PDF documentation and I have a rough idea
how to decode a raw stream. (I'm assuming the sampledec source works with
raw speex audio samples and doesn't handle ogg containers.) I've also
managed to compress a wave file and output a .spx file using JSpeex and the
following Groovy code:
AudioInputStream ais = AudioSystem.getAudioInputStream(new
File("16Bitprompt.wav"));
AudioFormat wavFormat = ais.getFormat();
AudioFormat speexFormat =
new AudioFormat(SpeexEncoding.SPEEX_Q5,
wavFormat.getSampleRate(),
-1, // sample size in bits
wavFormat.getChannels(),
-1, // frame size
-1, // frame rate
false); // little endian
ais = AudioSystem.getAudioInputStream(speexFormat, ais);
AudioSystem.write(ais, SpeexFileFormatType.SPEEX, new
File("speex_output.spx"));
I'm assuming this writes to an ogg container? I have a few obvious
questions. First, how would I decompress the above output on the iphone? Do I
need to fuss with OGG or can I assume the output is raw? I know enough to
write/read wave headers using Java or C but I would feel silly writing speex
data to a wave container. Does OGG decoding exist in the libspeex API or do I
need supplemental ogg libs? Where could I look for a simple hello-world like
example dealing with OGG? As a Java developer writing iPhone code I am much more
comfortable with JSpeex. Can somebody here straighten me out?
Clifton Craig
Software Engineer
http://codeforfun.wordpress.com
clifton.craig at gmail.com
