[FFmpeg-devel] [PATCH] avfilter: add metadata filters

Tobias Rapp t.rapp at noa-archive.com
Wed Feb 10 09:03:57 CET 2016


On 06.02.2016 23:30, Paul B Mahol wrote:
> On 2/6/16, Paul B Mahol <onemda at gmail.com> wrote:
>> Hi,
>>
>> patch attached.
>>
>
> Improved version attached.
>
> [...]
> +
> +static int string(const char *value1, const char *value2, size_t length)
> +{
> +    return !strncmp(value1, value2, length);
> +}

If I understand correctly this function is used to compare if the start 
of value2 matches value1. Maybe this function should be called 
"starts_with" (also in the "function" option enum)?

> +
> +static int equal(const char *value1, const char *value2, size_t length)
> +{
> +    float f1, f2;
> +
> +    if (sscanf(value1, "%f", &f1) + sscanf(value2, "%f", &f2) != 2)
> +        return 0;
> +
> +    return f1 != f2;
> +}
> +
> +static int less(const char *value1, const char *value2, size_t length)
> +{
> +    float f1, f2;
> +
> +    if (sscanf(value1, "%f", &f1) + sscanf(value2, "%f", &f2) != 2)
> +        return 0;
> +
> +    return f1 > f2;
> +}
> +
> +static int greater(const char *value1, const char *value2, size_t length)
> +{
> +    float f1, f2;
> +
> +    if (sscanf(value1, "%f", &f1) + sscanf(value2, "%f", &f2) != 2)
> +        return 0;
> +
> +    return f1 < f2;
> +}
> +
> [...]

I think it would be better to not compare float values directly with 
"==", "<" or ">". Instead use some code like "fabsf(f1 - f2) <= epsilon".

BTW: Is the return value of "equal", "less" and "greater" inverse on 
purpose?

Another sidenote: I have seen that some filters use a common expression 
language (e.g. aeval, crop, scale). Not sure if this expression language 
supports string operators or if it is limited to numbers but in my 
opinion it would be great to re-use it here.

Regards,
Tobias



More information about the ffmpeg-devel mailing list