<DIV>Hi,</DIV>  <DIV>Thanks for the info. I have checked for alternative endian also. The result is same. I am&nbsp;pasting the code i have written. It differs from the example code only when we read/write the data from/to the file. Symbian file read - write APIs support only descriptors. </DIV>  <DIV>It would be helpful if you can point out whether i am missing somewhere in the below code. This code generates the ogg with more of noise but some music somewhere in the background. Same file goldwav converts properly into an oggfile. does any one have a working example code, I would be grateful if you can send me as soon as possible.</DIV>  <DIV>&nbsp;</DIV>  <DIV>TInt CVorbisEncoder::CompleteConvert()<BR>&nbsp;{<BR>&nbsp; ogg_stream_state os; /* take physical pages, weld into a logical<BR>&nbsp;&nbsp;&nbsp;&nbsp; stream of packets */<BR>&nbsp; ogg_page&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; og; /* one Ogg bitstream page.&nbsp; Vorbis packets are inside */<BR>&nbsp;
 ogg_packet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; op; /* one raw packet of data for decode */<BR>&nbsp; <BR>&nbsp; vorbis_info&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vi; /* struct that stores all the static vorbis bitstream<BR>&nbsp;&nbsp;&nbsp;&nbsp; settings */<BR>&nbsp; vorbis_comment&nbsp;&nbsp; vc; /* struct that stores all the user comments */</DIV>  <DIV>&nbsp; vorbis_dsp_state vd; /* central working state for the packet-&gt;PCM decoder */<BR>&nbsp; vorbis_block&nbsp;&nbsp;&nbsp;&nbsp; vb; /* local working space for packet-&gt;PCM decode */</DIV>  <DIV>&nbsp; int eos=0,ret;<BR>&nbsp; int i;</DIV>  <DIV><BR>&nbsp; RFs iFs;<BR>&nbsp; RFile iWriteFile;<BR>&nbsp; RFile iReadFile;<BR>&nbsp; TInt iCurrentPosition = 44;<BR>&nbsp; TInt iPosition = 0;<BR>&nbsp; iFs.Connect();<BR>&nbsp; iFs.Delete(_L("c:\\ccodecoutput.ogg"));<BR>&nbsp; <BR>&nbsp; TInt err = iReadFile.Open(iFs,_L("c:\\bradams.wav"),EFileRead);<BR>&nbsp; err = iWriteFile.Create(iFs,_L("c:\\ccodecoutput.ogg"), EFileWrite);<BR>&nbsp;
 <BR>&nbsp; /********** Encode setup ************/</DIV>  <DIV>&nbsp; vorbis_info_init(&amp;vi);</DIV>  <DIV>&nbsp; <BR>&nbsp; ret=vorbis_encode_init_vbr(&amp;vi,2,44100,0.4);</DIV>  <DIV>&nbsp; /* do not continue if setup failed; this can happen if we ask for a<BR>&nbsp;&nbsp;&nbsp;&nbsp; mode that libVorbis does not support (eg, too low a bitrate, etc,<BR>&nbsp;&nbsp;&nbsp;&nbsp; will return 'OV_EIMPL') */</DIV>  <DIV>&nbsp; if(ret)<BR>&nbsp; &nbsp;return 0;</DIV>  <DIV>&nbsp; /* add a comment */<BR>&nbsp; vorbis_comment_init(&amp;vc);<BR>&nbsp; vorbis_comment_add_tag(&amp;vc,"ENCODER","encoder_example.c");</DIV>  <DIV>&nbsp; /* set up the analysis state and auxiliary encoding storage */<BR>&nbsp; vorbis_analysis_init(&amp;vd,&amp;vi);<BR>&nbsp; vorbis_block_init(&amp;vd,&amp;vb);<BR>&nbsp; <BR>&nbsp; <BR>&nbsp; ogg_stream_init(&amp;os,10);</DIV>  <DIV>&nbsp; /* Vorbis streams begin with three headers; the initial header (with<BR>&nbsp;&nbsp;&nbsp;&nbsp; most of the codec setup
 parameters) which is mandated by the Ogg<BR>&nbsp;&nbsp;&nbsp;&nbsp; bitstream spec.&nbsp; The second header holds any comment fields.&nbsp; The<BR>&nbsp;&nbsp;&nbsp;&nbsp; third header holds the bitstream codebook.&nbsp; We merely need to<BR>&nbsp;&nbsp;&nbsp;&nbsp; make the headers, then pass them to libvorbis one at a time;<BR>&nbsp;&nbsp;&nbsp;&nbsp; libvorbis handles the additional Ogg bitstream constraints */</DIV>  <DIV>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; ogg_packet header;<BR>&nbsp;&nbsp;&nbsp; ogg_packet header_comm;<BR>&nbsp;&nbsp;&nbsp; ogg_packet header_code;</DIV>  <DIV>&nbsp;&nbsp;&nbsp; vorbis_analysis_headerout(&amp;vd,&amp;vc,&amp;header,&amp;header_comm,&amp;header_code);<BR>&nbsp;&nbsp;&nbsp; ogg_stream_packetin(&amp;os,&amp;header); /* automatically placed in its own<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; page */<BR>&nbsp;&nbsp;&nbsp; ogg_stream_packetin(&amp;os,&amp;header_comm);<BR>&nbsp;&nbsp;&nbsp; ogg_stream_packetin(&amp;os,&amp;header_code);</DIV>  <DIV>&nbsp;/*
 This ensures the actual<BR>&nbsp; * audio data will start on a new page, as per spec<BR>&nbsp; */<BR>&nbsp;while(!eos){<BR>&nbsp;&nbsp;int result=ogg_stream_flush(&amp;os,&amp;og);<BR>&nbsp;&nbsp;if(result==0)break;<BR>&nbsp;&nbsp;//fwrite(og.header,1,og.header_len,stdout);<BR>&nbsp;&nbsp;//fwrite(og.body,1,og.body_len,stdout);<BR>&nbsp;&nbsp;TPtr8 tempHeader(og.header, (TInt)og.header_len, (TInt)og.header_len);<BR>&nbsp;&nbsp;TPtr8 tempBody(og.body, (TInt)og.body_len, (TInt)og.body_len);<BR>&nbsp;&nbsp;iWriteFile.Write(tempHeader, (TInt)og.header_len);<BR>&nbsp;&nbsp;iWriteFile.Write(tempBody, (TInt)og.body_len);<BR>&nbsp;}</DIV>  <DIV>&nbsp; }<BR>&nbsp; <BR>&nbsp; while(!eos){<BR>&nbsp;&nbsp;&nbsp; long i;<BR>&nbsp;&nbsp;&nbsp; //long bytes=fread(readbuffer,1,READ*4,stdin); /* stereo hardwired here */<BR>&nbsp;<BR>&nbsp;TBuf8&lt;4096&gt; readBuffer;<BR>&nbsp;TInt err = iReadFile.Read(iCurrentPosition, readBuffer, 4096);<BR>&nbsp;if(err ==
 KErrNone)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;iCurrentPosition = iCurrentPosition + readBuffer.Length();<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp; TInt bytes = readBuffer.Length();<BR>&nbsp;&nbsp;&nbsp; if(bytes==0){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* end of file.&nbsp; this can be done implicitly in the mainline,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; but it's easier to see here in non-clever fashion.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tell the library we're at end of stream so that it can handle<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the last frame and mark end of stream in the output properly */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vorbis_analysis_wrote(&amp;vd,0);</DIV>  <DIV>&nbsp;&nbsp;&nbsp; }else{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* data to encode */</DIV>  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* expose the buffer to submit data */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float
 **buffer=vorbis_analysis_buffer(&amp;vd,1024);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* uninterleave samples */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;bytes/4;i++){<BR>&nbsp;buffer[0][i]=((readBuffer[i*4+1]&lt;&lt;8)|<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (0x00ff&amp;(int)readBuffer[i*4]))/32768.f;<BR>&nbsp;buffer[1][i]=((readBuffer[i*4+3]&lt;&lt;8)|<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (0x00ff&amp;(int)readBuffer[i*4+2]))/32768.f;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* tell the library how much we actually submitted */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vorbis_analysis_wrote(&amp;vd,i);<BR>&nbsp;&nbsp;&nbsp; }</DIV>  <DIV>&nbsp;&nbsp;&nbsp; /* vorbis does some data preanalysis, then divvies up blocks for<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; more involved (potentially parallel) processing.&nbsp; Get a single<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; block for encoding now
 */<BR>&nbsp;&nbsp;&nbsp; while(vorbis_analysis_blockout(&amp;vd,&amp;vb)==1){</DIV>  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* analysis, assume we want to use bitrate management */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vorbis_analysis(&amp;vb,NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vorbis_bitrate_addblock(&amp;vb);</DIV>  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(vorbis_bitrate_flushpacket(&amp;vd,&amp;op)){<BR>&nbsp;<BR>&nbsp;/* weld the packet into the bitstream */<BR>&nbsp;ogg_stream_packetin(&amp;os,&amp;op);<BR>&nbsp;<BR>&nbsp;/* write out pages (if any) */<BR>&nbsp;while(!eos){<BR>&nbsp;&nbsp; int result=ogg_stream_pageout(&amp;os,&amp;og);<BR>&nbsp;&nbsp; if(result==0)break;<BR>&nbsp;&nbsp; //fwrite(og.header,1,og.header_len,stdout);<BR>&nbsp;&nbsp; //fwrite(og.body,1,og.body_len,stdout);<BR>&nbsp;&nbsp; TPtr8 tempHeader(og.header, (TInt)og.header_len, (TInt)og.header_len);<BR>&nbsp;&nbsp; TPtr8 tempBody(og.body, (TInt)og.body_len, (TInt)og.body_len);<BR>&nbsp;&nbsp;
 iWriteFile.Write(tempHeader, (TInt)og.header_len);<BR>&nbsp;&nbsp; iWriteFile.Write(tempBody, (TInt)og.body_len);<BR>&nbsp;&nbsp; /* this could be set above, but for illustrative purposes, I do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; it here (to show that vorbis does know where the stream ends) */<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; if(ogg_page_eos(&amp;og))eos=1;<BR>&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; }<BR><BR>regards,</DIV>  <DIV>Pavan.</DIV>  <DIV><BR><B><I>Ian Malone &lt;ibm21@cam.ac.uk&gt;</I></B> wrote:</DIV>  <BLOCKQUOTE class=replbq style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">pavan kumar wrote:<BR>&gt; Hi All,<BR>&gt; <BR>&gt; It would be really helpful for me if you comment on the following.<BR>&gt; My VorbisEncoder uses libvorbis to encode into the vorbis data. I have <BR>&gt; followed the call sequence given in libvorbis\examples\encoder_example.c.<BR>&gt; I am taking a 16bit pcm Stereo wav file and
 generating an oggvorbis file <BR>&gt; using libvorbis and libogg. There is lots of noise in the file except <BR>&gt; music is heard very feable in the background. To compare, I have created <BR>&gt; an ogg file with the same configuration(same quality) using GoldWav. I <BR>&gt; have observed that even the headerpages differ from the file i have <BR>&gt; generated.<BR>&gt; I am using TInt ret=vorbis_encode_init_vbr(&amp;iInfo,2,44100,.4); for the setup<BR>&gt; <BR><BR><SNIP><BR><BR>&gt; give me an example which you are sure that it is working without any <BR>&gt; modification.<BR>&gt; <BR><BR>I'm afraid I haven't used the encoder enough to be of much help. If<BR>everything is right encoder_example.c should work without modification.<BR>You're not having endianness issues are you (IIRC the example encoder<BR>is written to handle 16 bit LE)? Have you tried other wav files?<BR>Is GoldWav using the same versions of libvorbis and libogg (I wouldn't<BR>be very surprised by differences in
 headers if it used different<BR>versions)?<BR><BR>-- <BR>imalone<BR>_______________________________________________<BR>Vorbis mailing list<BR>Vorbis@xiph.org<BR>http://lists.xiph.org/mailman/listinfo/vorbis<BR></BLOCKQUOTE>  <DIV><BR></DIV><p>Send instant messages to your online friends http://in.messenger.yahoo.com