On 26-04-2020 06:07 pm, John Hawkinson wrote:
Gyan Doshi <ffm...@gyani.pro> wrote on Sun, 26 Apr 2020
at 02:03:23 EDT in <76dff16c-331a-534c-fe28-558dae8a8...@gyani.pro>:
The temporal parameters t, n and pos are only applicable for x and y
expressions. At present, the only way to vary w and h over time is by
sending commands with varying constants for w/h. Not very convenient, I
know. Open a ticket if you want an enhancement for the crop filter.
Thanks, that's clear enough.
It would appear that there is both a documentation bug (the crop filter's doc says
"The out_w, out_h, x, y parameters are expressions containing the following
constants" and includes a list with n, pos, and t), and also either bugs or odd
limitations in the error reporting.
These errors don't seem to make sense:
Undefined constant or missing '(' in 'T'
Error when evaluating the expression '1146+T'
Unknown function in 'T*(1920-1146)'
Error when evaluating the expression '1146+T*(1920-1146)'
Error when evaluating the expression '1146+t'
There is a generic expression evaluator which can be used by clients
such as a filter. It basically carries out two tasks: 1) accept a
string and an array of symbols and generate a parsed expression which is
ready to be mathematically evaluated when values have been provided that
correspond to those symbols. 2) accept a parsed expression and an array
of values and generate a numerical value (when possible, else return
value of NaN and an error). The first task matches by literals so it is
case-sensitive. Crop uses 't' for time, not 'T'. The evaluator does not
know the specific semantics so all it can complain about is that a
symbol is not recognized.
As for code enhancements, it seems to me that it would be more valuable to
focus on the zoompan filter?
For instance, I would like to:
* give it a duration for the entire zoom effect (in frames or seconds, just
like fade and oher filters
* specify a starting and ending zoom factor, rather than the current zoom
factor and calculate an expression to
parameterize steps, which needs clip() or max() and other awkward functions
* Not force me hard-code the fps. Since fps isn't available in the expression
parser, there seesm no way to make zoompan operate properly on video input
without a preprocessing step to check the fps of the input video.
* Similarly, a way to not hard-code the resolution, although I assume
s=(iw)x(ih) might work, although maybe the parser wouldn't be happy?
It also seems the filter could use a clearer definition than "Apply Zoom & Pan
effect."
zoompan is maintained by Paul Mahol. Best to ask him about it.
Philosophically, I kind of wonder why "crop", "scale", and "zoompan" are 3 separate
filters. It would seem that "zoompan" could do the same work as a chain of crop and scale, so I have to
imagine one method is more efficeint than the other, but the arbitrary differences in parameters and evaluable
expressions just feel odd.
All filters were independently written at different times by different
devs. And typically, the idea is to let each module do one thing.
zoompan does do scaling post-zoom but that's because the filtering
framework doesn't allow filters to "insert" a filter within the graph,
so Paul added a direct call to the scaling library with limited options
as compared to the scale filter.
Gyan
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user
To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".