<HTML dir=ltr><HEAD></HEAD>
<BODY>
<DIV id=idOWAReplyText8852 dir=ltr>
<DIV dir=ltr><FONT face=Arial color=#000000 size=2><FONT
face=Arial color=#000000 size=2>Hi</FONT></DIV></DIV>
<DIV dir=ltr>
<DIV dir=ltr>
<DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>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.</FONT></DIV>
<DIV> </DIV>
<DIV>// File AudioCapture.java</DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>import javax.sound.sampled.spi.*;import
javax.sound.sampled.*;<BR>import org.xiph.speex.spi.*;<BR>import
java.util.*;<BR>import java.net.*;<BR>import
java.io.*;</FONT></DIV>
<DIV><FONT face=Arial size=2>public class AudioCapture{<BR>
public static void main(String args[])<BR> {<BR> int
bufferlength=44100;<BR> int framelength=1280;<BR> int
frameduration=1000;<BR> Vector recordBuffer=new Vector();<BR>
try<BR> {<BR> AudioFormat audioFormat = new
AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 8000, 16, 1, 2, 8000,
true);<BR> System.out.println("AudioFormat
Created");<BR> DataLine.Info dataLineInfo = new
DataLine.Info(TargetDataLine.class,audioFormat,8000);<BR>
System.out.println("Dataline.Info Created");<BR>
//DataLine.Info outputDataLineInfo = new
DataLine.Info(SourceDataLine.class,audioFormat,44100);<BR>
TargetDataLine targetDataLine = (TargetDataLine)
AudioSystem.getLine(dataLineInfo);<BR>
System.out.println("TargetDataLine Created");<BR>
//SourceDataLine sourceDataLine = (SourceDataLine)
AudioSystem.getLine(outputDataLineInfo);<BR> AudioInputStream auin=new
AudioInputStream(targetDataLine);<BR> PipedOutputStream pout=new
PipedOutputStream();<BR> //PipedInputStream pin=new
PipedInputStream(pout);<BR> //ServerSocket serverSocket = new
ServerSocket(5555);<BR> Pcm2SpeexAudioInputStream pcm2speex=new
Pcm2SpeexAudioInputStream(auin, audioFormat,
AudioSystem.NOT_SPECIFIED);<BR> SpeexPlayer speexPlayer = new
SpeexPlayer(pout);<BR> //Speex2PcmAudioInputStream speex2pcm=new
Speex2PcmAudioInputStream(pin, audioFormat,AudioSystem.NOT_SPECIFIED);<BR>
<BR> //Socket clientSocket = serverSocket.accept();<BR>
//ObjectOutputStream toClient = new
ObjectOutputStream(clientSocket.getOutputStream());<BR> //BufferedReader
fromClient = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));<BR>
targetDataLine.open(audioFormat,8000);<BR>
targetDataLine.start();<BR>
//sourceDataLine.open(audioFormat,44100);<BR>
//sourceDataLine.start();<BR> double ratio=bufferlength/framelength;
<BR> byte[] frame=new byte[framelength];<BR>
System.out.println("Entering While...");<BR>
System.out.println("Writing into piped output stream
done...");<BR> System.out.println("Constructing speex
encoder.");<BR> <BR> System.out.println("Speex
encoder constructed.");<BR> System.out.println("Speex info:
");<BR> System.out.println("Bitrate:
"+pcm2speex.getEncoder().getBitRate());<BR>
System.out.println("Frame size:
"+pcm2speex.getEncoder().getFrameSize());<BR>
System.out.println("Complexity:
"+pcm2speex.getEncoder().getComplexity());<BR>
System.out.println("Mode:
"+pcm2speex.getEncoder().getMode());<BR>
System.out.println("Sampling rate:
"+pcm2speex.getEncoder().getSamplingRate()); <BR>
System.out.println("relative quality:
"+pcm2speex.getEncoder().getRelativeQuality());<BR>
System.out.println("*** end of speex info");<BR> <BR>
System.out.println("everything ok in writer");<BR> //int
count = 0;<BR> speexPlayer.start(); <BR> while(true)<BR>
{<BR> /*count++;<BR> if(count == 11)<BR> {<BR>
System.exit(0);<BR> }*/<BR> frame=new
byte[framelength];<BR> //System.out.println("Reading from Audio
Input Stream...");<BR> //int n=auin.read(frame, 0,
frame.length);<BR> //System.out.println("Reading Done by Audio
InputStream...");<BR> //System.out.println("Writing into
Piped Output Stream...");<BR>
//System.out.println(frame.length);<BR> <BR> <BR>
//int m=pcm2speex.read();<BR> pcm2speex.read(frame);<BR>
System.out.println("Frame buffer Successfully Read");<BR>
for(int i = 0;i<framelength;i++)<BR> {<BR>
System.out.print(frame[i]);<BR> }<BR>
System.out.println("End of Frame Contents...");<BR>
pout.write(frame,0,framelength);<BR> System.out.println("Wrote
into Pout");<BR> <BR> //System.out.println("Read by
Spx.."+m);<BR> //recordBuffer.addElement(frame);<BR>
//byte[] buffer=(byte[]) recordBuffer.elementAt(0);<BR>
//toClient.write(buffer);<BR> //toClient.flush();<BR>
//recordBuffer.removeElementAt(0); <BR> <BR> }<BR>
<BR> }<BR> catch(LineUnavailableException e)<BR>
{<BR>
System.out.println("LineUnavailableException...."+e.getMessage());<BR>
}<BR> catch(IOException e)<BR> {<BR>
System.out.println("IOException ....."+e.getMessage());<BR>
}<BR> }<BR>}</FONT></DIV>
<DIV><FONT face=Arial size=2>class SpeexPlayer extends
Thread{<BR> PipedOutputStream pout;<BR> PipedInputStream
pin;<BR> AudioFormat audioFormat;<BR> int bufferlength;<BR>
DataLine.Info outputDataLineInfo;<BR> SourceDataLine
sourceDataLine;<BR> Speex2PcmAudioInputStream speex2pcm;<BR> byte[]
tempBuffer;<BR> int framelength;<BR> int count;<BR> double
ratio;<BR> <BR> public SpeexPlayer(PipedOutputStream pout)<BR>
{<BR> try<BR> {<BR> this.pout = pout;<BR> pin =
new PipedInputStream(pout);<BR> <BR> count = 0;<BR>
framelength = 1280;<BR> bufferlength = 1280;<BR> tempBuffer =
new byte[bufferlength];<BR> //ratio = bufferlength /
framelength;<BR> audioFormat = new
AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 44100, 16, 2, 4, 44100,
false);<BR> outputDataLineInfo = new
DataLine.Info(SourceDataLine.class,audioFormat,44100);<BR>
sourceDataLine = (SourceDataLine)
AudioSystem.getLine(outputDataLineInfo);<BR> speex2pcm=new
Speex2PcmAudioInputStream(pin, audioFormat,AudioSystem.NOT_SPECIFIED);<BR>
sourceDataLine.open(audioFormat);<BR> sourceDataLine.start();<BR>
}<BR> catch(IOException e)<BR> {<BR>
System.out.println("Exception raised in
SpeexPlayer..."+e.getMessage());<BR> }<BR>
catch(LineUnavailableException e)<BR> {<BR>
System.out.println("Exception raised in
SpeexPlayer..."+e.getMessage());<BR> }<BR> }<BR>
<BR> public void run()<BR> {<BR> while(true)<BR>
{<BR> count++;<BR> try<BR> {<BR>
speex2pcm.read(tempBuffer);<BR> System.out.println("Successfully
decoded..."+count);<BR> <BR> <BR> <BR>
}<BR> catch(IOException e)<BR> {<BR>
System.out.println("Exception raised in thread of
SpeexPlayer..."+e.getMessage());<BR>
System.out.println("Count is...."+count);<BR> }<BR>
//try<BR> //{<BR>
sourceDataLine.write(tempBuffer,0,framelength);<BR> tempBuffer = new
byte[bufferlength];<BR> /*try<BR> {<BR>
sleep(5000);<BR> }<BR> catch(InterruptedException e)<BR>
{<BR> }*/<BR> /*}<BR> catch(IOException e)<BR>
{<BR> System.out.println("Exception raised in thread of
SpeexPlayer..."+e.getMessage());<BR> }*/<BR> }<BR>
<BR> }<BR>} </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Any kind of help would be very
great</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Thanks in
advance...</FONT></DIV>
<DIV><FONT face=Arial size=2>S Reddy</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>
</DIV></FONT></DIV></DIV></DIV></BODY>
--- >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.