[Vorbis-dev] Missing audio when converting PCM to Ogg
Ilya Ganelin
ilganeli at gmail.com
Tue Oct 22 19:21:08 PDT 2013
Thank you for the suggestions Ian and Ralph.
I was able to get around the issue by adding an additional call to this
chunk of code :
vorbis_analysis_wrote(&vd,0); /* Length set to 0 to signal end of buffer */
/* vorbis does some data preanalysis, then divvies up blocks for
more involved (potentially parallel) processing. Get a single
block for encoding now */
while(vorbis_analysis_blockout(&vd,&vb)==1){
/* analysis, assume we want to use bitrate management */
vorbis_analysis(&vb,NULL);
vorbis_bitrate_addblock(&vb);
while(vorbis_bitrate_flushpacket(&vd,&op)){
/* weld the packet into the bitstream */
ogg_stream_packetin(&os,&op);
/* write out pages (if any) */
while(!eos){
int result=ogg_stream_pageout(&os,&og);
if(result==0)break;
fwrite(og.header,1,og.header_len,stdout);
fwrite(og.body,1,og.body_len,stdout);
/* this could be set above, but for illustrative purposes, I do
it here (to show that vorbis does know where the stream ends) */
if(ogg_page_eos(&og))eos=1;
}
}
I still have a small issue in that a small amount of the audio is
clipped at the start of the stream. In general, my input is a buffer
of PCM data that I convert to either OGG or WAV. A small amount of
data is missing in the ogg relative to the wav. Any thoughts on what
could cause this?
-Ilya Ganelin
On Tue, Oct 22, 2013 at 5:28 PM, Ian Malone <ibmalone at gmail.com> wrote:
> On 22 October 2013 22:09, Ilya Ganelin <ilganeli at gmail.com> wrote:
> > Hello,
> >
> > I am using the Ogg Vorbis library to encode PCM data into ogg format. The
> > conversion seems to work fine with the exception that the first and last
> > little bit of audio appears cut off in each converted stream. It's about
> .25
> > seconds that are lost.
> >
> > I am essentially following the example from here:
> > http://svn.xiph.org/trunk/vorbis/examples/encoder_example.c
> >
> > When I added a "Sleep(5)" between writing the ogg data to file, and
> clearing
> > the ogg/vorbis state structures, the ogg output files were closer in
> length
> > but still seemed somewhat shorter. I figured that I might have been
> > interrupting the output but this seems like a hacky way of doing things.
> >
> > Is there a more proper way of solving this issue?
> >
>
> It's very hard to say without seeing the code. What I do know is the
> sleep function[1] should not affect a simple procedural program. So,
> randomly guessing, I suspect problems with file handling and not
> closing the output stream explaining the end of the output file
> missing. Not sure about the start.
>
> [1] I assume we do both mean the C function sleep:
> #include <unistd.h>
>
> unsigned int sleep(unsigned int seconds);
>
>
> --
> imalone
> http://ibmalone.blogspot.co.uk
> _______________________________________________
> Vorbis-dev mailing list
> Vorbis-dev at xiph.org
> http://lists.xiph.org/mailman/listinfo/vorbis-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/vorbis-dev/attachments/20131022/3dc52c8c/attachment.htm
More information about the Vorbis-dev
mailing list