Hi I am getting lost ogg sync exception when I tried to decompress a speex stream. I am using the following program for both compressing as well as decomressing. I am just planning to test how jspeex works. // File AudioCapture.java import javax.sound.sampled.spi.*; import javax.sound.sampled.*; import org.xiph.speex.spi.*; import java.util.*; import java.net.*; import java.io.*; public class AudioCapture { public static void main(String args[]) { int bufferlength=44100; int framelength=1280; int frameduration=1000; Vector recordBuffer=new Vector(); try { AudioFormat audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 8000, 16, 1, 2, 8000, true); System.out.println("AudioFormat Created"); DataLine.Info dataLineInfo = new DataLine.Info(TargetDataLine.class,audioFormat,8000); System.out.println("Dataline.Info Created"); //DataLine.Info outputDataLineInfo = new DataLine.Info(SourceDataLine.class,audioFormat,44100); TargetDataLine targetDataLine = (TargetDataLine) AudioSystem.getLine(dataLineInfo); System.out.println("TargetDataLine Created"); //SourceDataLine sourceDataLine = (SourceDataLine) AudioSystem.getLine(outputDataLineInfo); AudioInputStream auin=new AudioInputStream(targetDataLine); PipedOutputStream pout=new PipedOutputStream(); //PipedInputStream pin=new PipedInputStream(pout); //ServerSocket serverSocket = new ServerSocket(5555); Pcm2SpeexAudioInputStream pcm2speex=new Pcm2SpeexAudioInputStream(auin, audioFormat, AudioSystem.NOT_SPECIFIED); SpeexPlayer speexPlayer = new SpeexPlayer(pout); //Speex2PcmAudioInputStream speex2pcm=new Speex2PcmAudioInputStream(pin, audioFormat,AudioSystem.NOT_SPECIFIED); //Socket clientSocket = serverSocket.accept(); //ObjectOutputStream toClient = new ObjectOutputStream(clientSocket.getOutputStream()); //BufferedReader fromClient = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); targetDataLine.open(audioFormat,8000); targetDataLine.start(); //sourceDataLine.open(audioFormat,44100); //sourceDataLine.start(); double ratio=bufferlength/framelength; byte[] frame=new byte[framelength]; System.out.println("Entering While..."); System.out.println("Writing into piped output stream done..."); System.out.println("Constructing speex encoder."); System.out.println("Speex encoder constructed."); System.out.println("Speex info: "); System.out.println("Bitrate: "+pcm2speex.getEncoder().getBitRate()); System.out.println("Frame size: "+pcm2speex.getEncoder().getFrameSize()); System.out.println("Complexity: "+pcm2speex.getEncoder().getComplexity()); System.out.println("Mode: "+pcm2speex.getEncoder().getMode()); System.out.println("Sampling rate: "+pcm2speex.getEncoder().getSamplingRate()); System.out.println("relative quality: "+pcm2speex.getEncoder().getRelativeQuality()); System.out.println("*** end of speex info"); System.out.println("everything ok in writer"); //int count = 0; speexPlayer.start(); while(true) { /*count++; if(count == 11) { System.exit(0); }*/ frame=new byte[framelength]; //System.out.println("Reading from Audio Input Stream..."); //int n=auin.read(frame, 0, frame.length); //System.out.println("Reading Done by Audio InputStream..."); //System.out.println("Writing into Piped Output Stream..."); //System.out.println(frame.length); //int m=pcm2speex.read(); pcm2speex.read(frame); System.out.println("Frame buffer Successfully Read"); for(int i = 0;i<framelength;i++) { System.out.print(frame[i]); } System.out.println("End of Frame Contents..."); pout.write(frame,0,framelength); System.out.println("Wrote into Pout"); //System.out.println("Read by Spx.."+m); //recordBuffer.addElement(frame); //byte[] buffer=(byte[]) recordBuffer.elementAt(0); //toClient.write(buffer); //toClient.flush(); //recordBuffer.removeElementAt(0); } } catch(LineUnavailableException e) { System.out.println("LineUnavailableException...."+e.getMessage()); } catch(IOException e) { System.out.println("IOException ....."+e.getMessage()); } } } class SpeexPlayer extends Thread { PipedOutputStream pout; PipedInputStream pin; AudioFormat audioFormat; int bufferlength; DataLine.Info outputDataLineInfo; SourceDataLine sourceDataLine; Speex2PcmAudioInputStream speex2pcm; byte[] tempBuffer; int framelength; int count; double ratio; public SpeexPlayer(PipedOutputStream pout) { try { this.pout = pout; pin = new PipedInputStream(pout); count = 0; framelength = 1280; bufferlength = 1280; tempBuffer = new byte[bufferlength]; //ratio = bufferlength / framelength; audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 44100, 16, 2, 4, 44100, false); outputDataLineInfo = new DataLine.Info(SourceDataLine.class,audioFormat,44100); sourceDataLine = (SourceDataLine) AudioSystem.getLine(outputDataLineInfo); speex2pcm=new Speex2PcmAudioInputStream(pin, audioFormat,AudioSystem.NOT_SPECIFIED); sourceDataLine.open(audioFormat); sourceDataLine.start(); } catch(IOException e) { System.out.println("Exception raised in SpeexPlayer..."+e.getMessage()); } catch(LineUnavailableException e) { System.out.println("Exception raised in SpeexPlayer..."+e.getMessage()); } } public void run() { while(true) { count++; try { speex2pcm.read(tempBuffer); System.out.println("Successfully decoded..."+count); } catch(IOException e) { System.out.println("Exception raised in thread of SpeexPlayer..."+e.getMessage()); System.out.println("Count is...."+count); } //try //{ sourceDataLine.write(tempBuffer,0,framelength); tempBuffer = new byte[bufferlength]; /*try { sleep(5000); } catch(InterruptedException e) { }*/ /*} catch(IOException e) { System.out.println("Exception raised in thread of SpeexPlayer..."+e.getMessage()); }*/ } } } Any kind of help would be very great Thanks in advance... Raghu --- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'speex-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.