[Speex-dev] Encoding a wave file with a bad header

Clifton Craig clifton.craig at gmail.com
Thu May 6 07:08:32 PDT 2010


If I use Speex, JSpeex actually, to compress an otherwise valid wave file with zero lengths in the header would it impact the compression at all? Here's what I'm doing during compression in Java:

        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
        AudioInputStream spx = AudioSystem.getAudioInputStream(speexFormat, ais);
        AudioSystem.write(spx, SpeexFileFormatType.SPEEX, getOutputStream());

I then use speex C library to decompress on the receiving end. In one case where audio comes from a certain source (headers are properly formed) the compression/decompression works but in another case where wave audio comes from a different source (different sample rate and zeroes in the size fields) I get slowed playback speed. Its as if the sample rate is off or as if the encoding is not seeing the proper size of the samples. The second case with the corrupt headers uses 16 bit sample size for PCM linear wave.


Clifton Craig
Software Engineer
http://codeforfun.wordpress.com
clifton.craig at gmail.com



More information about the Speex-dev mailing list