AW: [Vorbis] Howto get playtime

Thomas Kuglitsch tkuglits at
Thu May 11 01:07:17 PDT 2006

OK. I've found how to get the playtime when I use ogg and 
vorbis resp. ogg and theora in the same c-file (like in 
exampleplayer of libtheora).
I have the problem that I am developing in a project, where 
demuxing of logical streams of an ogg container happens in 
another c++ object than decoding.
but at the time of demuxing i have to know the playback time. 
the demuxed streams will be decoded later on, so the 
dsp-state is not available at the time of demuxing.

I don't get vorbis & theora synchronized :( somehow my 
playtime calculations go wrong.

for vorbis i use:
if(ogg_packet->granulepos >= 0)
	playtime = ogg_packet->granulepos / vorbis_info->rate;
	oldplaytime = playtime;
	playtime = oldplaytime;

for theora i use (parts taken from libtheora):
if(ogg_packet->granulepos >= 0)
	shift = theora_granule_shift(theora_info);
	iframe = ogg_packet->granulepos >> shift;
	pframe = ogg_packet->granulepos - (iframe << shift);
	frameno = iframe + pframe;
	playtime = frameno / (fps_numerator/fps_denominator);
	oldplaytime = playtime;
	playtime = oldplaytime

what am I doing wrong? it SHOULD be nearly synchronized.

> -----Ursprüngliche Nachricht-----
> Von: Ralph Giles [mailto:giles at] 
> Gesendet: Donnerstag, 04. Mai 2006 17:41
> An: Thomas Kuglitsch
> Cc: vorbis at
> Betreff: Re: [Vorbis] Howto get playtime
> On Thu, May 04, 2006 at 03:29:04PM +0200, Thomas Kuglitsch wrote:
> > Searched in Google, browsed xiph vorbis sites but found no good 
> > information about how to get the current playtime out of the 
> > granuleposition of the ogg_packet.
> If you have a configured vorbis_dsp_state for the packet you can use
> vorbis_granule_time() declared in vorbis/codec.h.
> You can also get an approximate value by just dividing by the 
> sample rate given in the info header; but this will not be 
> exact for some streams. Also keep in mind that streams can 
> have holes in them, especially at the beginning, so you may 
> want to take that into account if you're displaying this to a user.
> > Anyone knows if there is any 'Programming with libvorbis' 
> > documentation out there, cause on xiph's site 
> > ( there's nothing :(
> Yes, this is a very unfortunate ommission. :(
>  -r

More information about the Vorbis mailing list