[FFmpeg-devel] [PATCH] avfilter: add audio pulsator filter

Paul B Mahol onemda at gmail.com
Wed Dec 2 07:17:02 CET 2015


On 12/2/15, Ganesh Ajjanagadde <gajjanag at mit.edu> wrote:
>> +static void lfo_advance(SimpleLFO *lfo, unsigned count)
>> +{
>> +    lfo->phase = fabs(lfo->phase + count * lfo->freq / lfo->srate);
>> +    if (lfo->phase >= 1)
>> +        lfo->phase = fmod(lfo->phase, 1);
>> +}
>> +
>> +static double lfo_get_value(SimpleLFO *lfo)
>> +{
>> +    double phs = FFMIN(100, lfo->phase / FFMIN(1.99, FFMAX(0.01,
>> lfo->pwidth)) + lfo->offset);
>> +    double val;
>> +
>> +    if (phs > 1)
>> +        phs = fmod(phs, 1.);
>> +
>> +    switch (lfo->mode) {
>> +    case SINE:
>> +        val = sin(phs * 2 * M_PI);
>> +        break;
>> +    case TRIANGLE:
>> +        if (phs > 0.75)
>> +            val = (phs - 0.75) * 4 - 1;
>> +        else if (phs > 0.5)
>> +            val = (phs - 0.5) * 4 * -1;
>> +        else if (phs > 0.25)
>> +            val = 1 - (phs - 0.25) * 4;
>> +        else
>> +            val = phs * 4;
>
> Why didn't you remove the useless branch and replace with a simple
> -4*phs + 2 for 0.25 to 0.75 case?
>
> I guess you did not remove the branch because you believed (but have
> not substantiated) that some notion of "bit-exactness" (highly dubious
> since floating point is not reproducible exactly across all platforms)
> with respect to some reference is violated. This "reference" is copied
> over from some other source code with no link whatsoever in the commit
> message or for the reviewer; only a simple copyright notice, making it
> impossible for a reviewer to do a proper review.
>
> [...]

In both cases the output is different and that is for s16 output case.


More information about the ffmpeg-devel mailing list