<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7226.0">
<TITLE>Speex Windows from 1.1.6 source</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P><FONT SIZE=2 FACE="Arial">Hi All,</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">I am using Speex for encoding/decoding the audio stream for</FONT>

<BR><FONT SIZE=2 FACE="Arial">my streaming application. I have used almost the same code</FONT>

<BR><FONT SIZE=2 FACE="Arial">In the sampleenc.c and sampledec.c, except that I have used</FONT>

<BR><FONT SIZE=2 FACE="Arial">The buffers from the mic as input for encoder and encoded audio</FONT>

<BR><FONT SIZE=2 FACE="Arial">As input for decoder, instead of files input.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">My Problem is the audio played on the receiving side after decoding</FONT>

<BR><FONT SIZE=2 FACE="Arial">Is only a &quot;hush&quot; or it is pure noise. </FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Below is my code, that I have used for encoding and decoding. </FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp; /************** Encode ******************/</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp; speex_bits_reset(&amp;Encbits);</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp; psInput = (short *)InputBuf;</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp; iIndex = 80;</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; memset(OutputBuf,0,(200 * sizeof(float)));</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; /*Copy the 16 bits values to float so Speex can work on them*/</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp; for (i=0;i&lt;iIndex;i++){</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* float */pfEncBuf[i]=/* short */psInput[i];&nbsp; </FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; /*Encode the frame*/</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; speex_encode(encState,pfEncBuf, &amp;Encbits);</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp; memset(OutputBuf,0,outputSize);</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp; /*Copy the bits to an array of char that can be written*/</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp; iEncBytes = speex_bits_write(&amp;Encbits, OutputBuf, outputSize);</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; return iEncBytes;</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp; </FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp; </FONT>

<BR><FONT SIZE=2 FACE="Arial">/**************** Decode ******************/</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; /*&nbsp; Flush all the bits in the struct so we can code a new frame&nbsp; */</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; speex_bits_reset(&amp;Decbits);</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; /*&nbsp; Copy the data into the bit-stream struct&nbsp; */</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; speex_bits_read_from(&amp;Decbits, InputBuf, InputSize);</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; /* Get the Size of the Decoded Frame */</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; speex_decoder_ctl(decState, SPEEX_GET_FRAME_SIZE, &amp;iDecBytes);</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; if(iIndex &gt; outputSize)</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">return -1;</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; iIndex = iDecBytes/sizeof(short);</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; /* Allocate the Decode Frame */</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; memset(pfDecBuf,0,sizeof(200 * sizeof(float)));</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; /*&nbsp; Decode the data&nbsp; */</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; speex_decode(decState, &amp;Decbits, pfDecBuf);</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; memset(OutputBuf,0,outputSize);</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; psOutput = (short *)OutputBuf;</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; /*&nbsp; Copy from float to short (16 bits) for output&nbsp; */</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; for (i=0;i&lt;iIndex;i++)</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; psOutput[i]=(short) pfDecBuf[i];</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; return iDecBytes;</FONT>
</P>
<BR>

<P><FONT SIZE=2 FACE="Arial">I tried encoding, decoding and playing on the</FONT>

<BR><FONT SIZE=2 FACE="Arial">Same , the results are the same. I am not sure</FONT>

<BR><FONT SIZE=2 FACE="Arial">If I am missing something here.Any Light on this is </FONT>

<BR><FONT SIZE=2 FACE="Arial">much appreciated.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Thanx,</FONT>

<BR><FONT SIZE=2 FACE="Arial">Palani.<I></I></FONT><I></I><I></I>
</P>

</BODY>
</HTML>