public float time_tell()
{
// translate time to PCM position and call pcm_seek
int link=-1;
long pcm_tot=0;
float time_tot=0.0f;
if(skable)
{
pcm_tot=pcm_total(-1);
time_tot=time_total(-1);
// which bitstream section does this time offset occur in?
for(link=links-1;link>=0;link--)
{
pcm_tot-=pcmlengths[link];
time_tot-=time_total(link);
if(pcm_offset>=pcm_tot)break;
}
}
return((float)time_tot+(float)(pcm_offset-pcm_tot)/vi[link].rate);
}