[FFmpeg-devel] [PATCH 1/6] avcodec/vorbisenc: Add pre-echo detection
Tyler Jones
tdjones879 at gmail.com
Thu Aug 24 03:11:42 EEST 2017
On Wed, Aug 23, 2017 at 10:11:50AM +0200, Tomas Härdin wrote:
> On 2017-08-22 03:23, Tyler Jones wrote:
> > +
> > +/**
> > + * Calculate the variance of a block of samples
> > + *
> > + * @param in Array of input samples
> > + * @param length Number of input samples being analyzed
> > + * @return The variance for the current block
> > + */
> > +static float variance(const float *in, int length, AVFloatDSPContext *fdsp)
> > +{
> > + int i;
> > + float mean = 0.0f, square_sum = 0.0f;
> > +
> > + for (i = 0; i < length; i++) {
> > + mean += in[i];
> > + }
> > +
> > + square_sum = fdsp->scalarproduct_float(in, in, length);
> > +
> > + mean /= length;
> > + return (square_sum - length * mean * mean) / (length - 1);
> > +}
>
> Isn't this method much more numerically unstable compared to the naïve
> method? Might not matter too much when the source data is 16-bit, but
> throwing it out there anyway
This does have the possibility of being more unstable than the naive
version. However, I have not been able to find a sample file where it is
even close to influential. The epsilon constant added during comparison
between variances has a much greater impact. A quick run of the same samples
through python was able to verify this.
> DSP methods for computing mean and variance could be a good project for
> someone wanting to learn
>
> /Tomas
I am unsure of how many codecs use direct calculation of statistical
values. Perhaps someone with more experience than myself could comment on
the usefulness of such methods.
I appreciate your comments,
Tyler Jones
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20170823/8822ed7b/attachment.sig>
More information about the ffmpeg-devel
mailing list