[FFmpeg-devel] [PATCH] avutil/eval: add function to track variable use

Gyan ffmpeg at gyani.pro
Sat Nov 9 16:51:31 EET 2019



On 05-11-2019 06:35 pm, Gyan wrote:
>
>
> On 05-11-2019 03:55 pm, Michael Niedermayer wrote:
>> On Tue, Nov 05, 2019 at 10:13:52AM +0530, Gyan wrote:
>>>
>>> On 05-11-2019 04:35 am, Michael Niedermayer wrote:
>>>> On Sun, Nov 03, 2019 at 11:14:25AM +0530, Gyan wrote:
>>>>> Helps better identification of expr eval failures.
>>>>>
>>>>> Gyan
>>>>>   eval.c    |   21 +++++++++++++++++++++
>>>>>   eval.h    |   10 ++++++++++
>>>>>   version.h |    4 ++--
>>>>>   3 files changed, 33 insertions(+), 2 deletions(-)
>>>>> 3dd142baa0144fd324eb9da8a9932cfd7ab2cd98 
>>>>> 0001-avutil-eval-add-function-to-track-variable-use.patch
>>>>>  From 19bce329464676f071707b99575f80e5abe1cd4c Mon Sep 17 00:00:00 
>>>>> 2001
>>>>> From: Gyan Doshi <ffmpeg at gyani.pro>
>>>>> Date: Sat, 2 Nov 2019 20:16:42 +0530
>>>>> Subject: [PATCH] avutil/eval: add function to track variable use
>>>>>
>>>>> Helps avoid multiple evals of cross-referenced expressions
>>>>> and catch the use of non-applicable variables with respect
>>>>> to eval or special mode in filters
>>>> Maybe you should provide more details of the use case of this, maybe
>>>> with an example. Because it seems not completely obvious
>>> An example of a cross-referenced expression would be 'y=x+rand(10)'.
>>> Normally in filters, X would be evaluated first, then Y, then X 
>>> again. The
>>> 2nd eval of X will overwrite the first and can generate a different 
>>> value.
>>> With this func, we can avoid the 2nd eval.
>>>
>>> I'm in the process of modifying the scale filter to allow 'n', 't', 
>>> 'pos'
>>> variables in frame eval mode (it already supports dynamic output 
>>> based on
>>> incoming frame changes) and I would like to catch their presence in 
>>> init
>>> mode, since av_expr_eval will fail. Now, it can also fail due to 
>>> circularly
>>> referenced expressions e.g. 'x=y+10' and 'y=x+10' and there's no way to
>>> detect whether it's this case or if inapplicable variables have been 
>>> used.
>> please add this (or similar information) to the commit message
>
> Done.

Ping.

Gyan


More information about the ffmpeg-devel mailing list