On 10.02.2016 11:40, Paul B Mahol wrote:
On 2/10/16, Tobias Rapp <t.r...@noa-archive.com> wrote:
On 10.02.2016 10:59, Paul B Mahol wrote:
On 2/10/16, Tobias Rapp <t.r...@noa-archive.com> wrote:
On 10.02.2016 10:01, Paul B Mahol wrote:
On 2/10/16, Tobias Rapp <t.r...@noa-archive.com> wrote:
On 06.02.2016 23:30, Paul B Mahol wrote:
On 2/6/16, Paul B Mahol <one...@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?

Not for equal, but for other it is.

OK, now I got it that the argument order is flipped but matches the
documentation. In that case it is a bit counter-intuitive that one has
to do something like

mode=print:key=mykey:value=1.0:function=less

to print all metadata values of "mykey" which are *bigger* than 1.0.


Nope, this works fine here. It prints values less than 1.0

Then I have problems understanding the documentation text of "less" and
"greater".

Ah, the problem was in documenation and code, hopefully it should be clear now.

Yes, with commit 408ea50ca6bcc666babc8b8e654eb135164480af everything is fine.

Thanks for writing the metadata filter! Last week I had an idea for a similar filter but had not started implementation yet -- thus my interest in it.

Regards,
Tobias

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to