On 02/02/2021 03:29 PM, Michael Koch wrote:
-snip-
In my opinion, it would be best to have all documentation in a wiki.

A wiki? Available to all to modify? I respectfully disagree.

Another suggestion: A programmer who adds a new feature to FFmpeg shouldn't write the documentation for this feature himself. Because for him everything is totally clear and he forgets to describe some important details. It's better if someone else tests the new feature and writes the documentation.

I agree wholeheartedly! Further, I prefer that the documentarian submit their writings to an editor, an editor who would also perform documentation triage in the ffmpeg-user list. Even seasoned writers and encyclopedia writers are required to submit their writing to editors. An editor can correct English grammar, can advocate for comprehension goals, can coordinate documentation style, and can, when appropriate, liaison between documentarians and developers. Rather than as a gatekeeper, the editor can function as a first critic who can help relieve the load that developers and documentarians will naturally feel.

Here is the way that I document filters for my own use:
(Hopefully, your email client will not trash this too much.)

minterpolate ...Convert video frames to a specified frame rate by dropping frames or by inserting new frames via frame duplication, blending, or motion compensation. minterpolate=fps=60:mb_size=16:mc_mode=ombc:me_mode=bilat:me=epzs:mi_mode=mci:scd_threshold=10:scd=fdiff:search_param=32:vsbmc=0 ...Defaults. minterpolate=fps ...The output frame rate (integer or fraction). [1]
             fps=30 or fps=30000/1001 or fps=30/1.001   ...Examples.
minterpolate=mb_size                  ...Macroblock size (integer):
             mb_size=4 to mb_size=16
minterpolate=mc_mode                    ...Motion compensation mode (integer or 
string):
             mc_mode=0 or mc_mode=ombc   ...Overlapped block. [2]
             mc_mode=1 or mc_mode=aobmc   ...Adaptive overlapped block. [2][3]
minterpolate=me_mode                      ...Motion estimation mode (integer or 
string):
             me_mode=0 or me_mode=bidir   ...Bidirectional motion estimation. 
[2][4]
             me_mode=1 or me_mode=bilat   ...Bilateral motion estimation. [2][5]
minterpolate=me              ...Motion estimation algorithm to apply (integer 
or string):
             me=1 or me=esa   ...Exhaustive search algorithm. [2]
             me=2 or me=tss   ...Three step search algorithm. [2]
             me=3 or me=tdls   ...Two dimensional logarithmic search algorithm. 
[2]
             me=4 or me=ntss   ...New three step search algorithm. [2]
             me=5 or me=fss   ...Four step search algorithm. [2]
             me=6 or me=ds     ...Diamond search algorithm. [2]
             me=7 or me=hexbs   ...Hexagon-based search algorithm. [2]
             me=8 or me=epzs   ...Enhanced predictive zonal search algorithm. 
[2]
             me=9 or me=umh   ...Uneven multi-hexagon search algorithm. [2]
minterpolate=mi_mode                   ...Motion interpolation mode (integer or 
string):
mi_mode=0 or mi_mode=dup ...Duplicate previous or next frame for interpolating new ones.
             mi_mode=1 or mi_mode=blend   ...Blend source frames. [6]
             mi_mode=2 or mi_mode=mci   ...Motion compensated interpolation.
minterpolate=scd_threshold                         ...Scene change detection 
threshold (integer):
             scd_threshold=0 to scd_threshold=100
minterpolate=scd                ...Scene change detection method (integer or 
string):
             scd=0 or scd=none   ...Disable scene change detection. [7]
             scd=1 or scd=fdiff   ...Frame difference. [7][8]
minterpolate=search_param                            ...Search parameter 
(integer):
             search_param=4 to search_param=INT_MAX   ...?????
minterpolate=vsbmc    ...Variable-size block motion compensation (integer):
             vsbmc=0   ...Off.
             vsbmc=1   ...On.
[1] For each 'current' frame, whenever the prior-output-to-current-input time stamp difference is less than 1/'fps' (i.e. the input frame rate exceeds 'fps'), the current frame is dropped.
[2] Ignored unless 'mi_mode=mci' (or 'mi_mode=2').
[3] To reduce oversmoothing, window weighting coefficients are controlled adaptively according to the reliability of the neighboring motion vectors.
[4] Motion vectors are estimated for each source frame in both forward and 
backward directions.
[5] Motion vectors are estimated directly for interpolated frame.
[6] Interpolated frames are the mean of previous and next frames.
[7] Scene change leads motion vectors to be in random directions. Scene change detection replaces interpolated frames by duplicated ones. May not be needed for mi_mode=dup or mi_mode=blend. [8] Corresponding pixel values are compared and, if they do not exceed the scd_threshold, scene change is detected.

--
Someone's sneaking in and turning up the flame so that my food burns.
I'm sure of it.
And the older I get, the more sure of it I become.
_______________________________________________
ffmpeg-user mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".

Reply via email to