Hello,
I have question about vorbis performance issues. What is minimal/
recommended system for playing ogg files without distortion?
Kovacs
--- >8 ----
List archives: http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
Hi all,
I'm quite new to Vorbis, so please excuse me if I'm writing complete
nonsense (and, if possible, tell me where I'm wrong).
While searching for optimization possibilities in lib/psy.c, I found the
following
piece of code in _vp_compute_mask():
if(p->vi->smoothp){
/* compute power^.5 of three neighboring bins to smooth for peaks
that get split twixt bins/peaks that nail the bin. This evens
out treatment as we're not doing additive masking any longer. */
double acc=work[0]*work[0]+work[1]*work[1];
double prev=work[0];
work[0]=sqrt(acc);
for(i=1;i<n-1;i++){
double this=work[i];
acc+=work[i+1]*work[i+1];
work[i]=sqrt(acc);
acc-=prev*prev;
prev=this;
}
work[n-1]=sqrt(acc);
}
If this is intended to be a simple smoothing operation, I would expect that
work[0] and work[n-1] must be divided by sqrt(2) and all other entries in work
must be divided by sqrt(3) in order to renormalize work[].
Is there something I overlooked?
Cheers,
Martin
--- >8 ----
List archives: http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
> Hi all, > > I'm quite new to Vorbis, so please excuse me if I'm writing complete > nonsense (and, if possible, tell me where I'm wrong). > > While searching for optimization possibilities in lib/psy.c, I found the following > piece of code in _vp_compute_mask(): > > if(p->vi->smoothp){ > /* compute power^.5 of three neighboring bins to smooth for peaks > that get split twixt bins/peaks that nail the bin. This evens > out treatment as we're not doing additive masking any longer. */ > double acc=work[0]*work[0]+work[1]*work[1]; > double prev=work[0]; > > work[0]=sqrt(acc); > for(i=1;i<n-1;i++){ > double this=work[i]; > acc+=work[i+1]*work[i+1]; > work[i]=sqrt(acc); > acc-=prev*prev; > prev=this; > } > work[n-1]=sqrt(acc); > } > > If this is intended to be a simple smoothing operation, I would expect that > work[0] and work[n-1] must be divided by sqrt(2) and all other entries in work > must be divided by sqrt(3) in order to renormalize work[].it computes 'sqrt(work[i-1]^2+work[i]^2+work[i+1]^2)' as intended. Monty --- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/