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
DSP methods for computing mean and variance could be a good project for someone wanting to learn
/Tomas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel