<div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face="Times New Roman" size=3>Hello, All.</FONT></SPAN></div>  <div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></SPAN></div>  <div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face="Times New Roman" size=3>First, I want to thank Ian Malone and Ralph Giles, thanks for your kind replies. But I still have problems about seek.</FONT></SPAN></div>  <div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></SPAN></div>  <div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face="Times New Roman" size=3>As you suggested, I could use ov_open_callbacks() to supply my own read/write/seek functions. So, can you give me an example? I’m sorry for my
 ignorance, because I haven’t used callbacks before.</FONT></SPAN></div>  <div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></SPAN></div>  <div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face="Times New Roman" size=3>I analyzed the vorbisfile.c in Tremor, and I think I need more specific information about the seek algorithm. As far as I know, I could use ogg_sync_pageseek() function to find the next page; if it returns 0, that means I need to read more data; if it returns n, that means the page was synced at the current location with a page length of n bytes, so the location is where the “Oggs” is, am I right? And if it returns -n, does it mean I already skipped n bytes from the start point or I need to skip back n bytes to get the sync page? </FONT></SPAN></div>  <div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face="Times New Roman"
 size=3>&nbsp;</FONT></o:p></SPAN></div>  <div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face="Times New Roman" size=3>Also, if I find the sync page, I must update the decode engine, the structures, like ogg_page, ogg_packet, etc need to get a new value, is that right? Then, there is another problem. I might have passed several segments of a packet, but the packet is not finished, so the next page starts with segments of the last packet. Can these segments be decoded? Or I must find the next packet? If so, how can I do it? I think granulepos is not very helpful in this case.</FONT></SPAN></div>  <div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></SPAN></div>  <div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face="Times New Roman" size=3>Hope you can give me more information. Thank you all.</FONT></SPAN></div>  <div class=MsoNormal style="MARGIN: 0cm
 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></SPAN></div>  <div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face="Times New Roman" size=3>Best wishes,</FONT></SPAN></div>  <div class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face="Times New Roman" size=3>Susan </FONT></SPAN></div><p>&#32;
                <hr size=1><a href="http://music.yahoo.com.cn/?source=mail_mailbox_footer" target=blank> 
Mp3疯狂搜-新歌热歌高速下 
</a>