<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7638.1">
<TITLE>Controlling the vorbis encoder precisely</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<BR>

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

<P><FONT SIZE=2 FACE="Arial">currently I'm working on a vorbis based encoder that adds multiple single wave sounds into one vorbis stream (and put every sound in one or more ogg pages). During the process an index is written in an extra file so later you can locate a sound's position easily by a file position and length value.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">The problem is the sample-exact separation between those encoded wave sounds: If I add the audio data from a new wave sound to the encoding process the resulting vorbis packets also include some samples from the previous encoded wave file at the beginning.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">This seems to be caused by the vorbis encoder using a &quot;delay window&quot; (or something like that) during the process so there's always some data left in the current encoding state.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">So how can I flush those cached samples before every new audio data I'm going to add to the encoding process?</FONT>

<BR><FONT SIZE=2 FACE="Arial">Unfortunately there's still no documentation of libvorbis available even the original source code has no comments at all. And those encoder examples don't use all of the provided functionality.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">I tried the function vorbis_synthesis_restart() because it's named like the thing I've looking for but it doesn't work as expected.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">Currently I only use a hack which produces good but not perfect results: Before I add data from a new wave sound to the encoding process I set the pcm_current variable in the vorbis dsp state to 0 (it's typical size is about 3500). But there should be a more appropriate solution, isn't it?</FONT></P>

<P><FONT SIZE=2 FACE="Arial">I'm looking forward to get some hints on this.</FONT>
</P>

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

<BR><FONT SIZE=2 FACE="Arial">Robin Siegemund, </FONT>

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

</BODY>
</HTML>