[vorbis-dev] vorbisfile bug?

Vitaly Nechyos nvit at open.by
Wed Sep 25 15:08:54 PDT 2002



Good day.

It seems vorbisfile has a bug.

There is a such string in ov_time_seek:
ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;

It is not accounted type convertion between double and ogg_int64_t.
E.g. if I convert 440267'th sample (44100Hz source) to time:
double dSec = 440267 / (double) 44100;
and then try to seek dSec:
ov_time_seek(pOVFile, dSec);
the resulting offset will be 440266'th sample, because of
dSec*44100 gives 440266.999999997...
Probably the line
ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;
should be replaced with something like:
ogg_int64_t target=pcm_total+( (seconds-time_total)*vf->vi[link].rate +
0.499999);

It is very likely that this is not a unique place in source code with the
same problem.
(I use Visual C++ 6.0)

Vitaly.

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'vorbis-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the Vorbis-dev mailing list