[FFmpeg-devel] [RFC] av_set_string() semantics

Stefano Sabatini stefano.sabatini-lala
Sat May 24 12:22:19 CEST 2008


On date Saturday 2008-05-24 12:00:27 +0200, Stefano Sabatini encoded:
> Hi all,
> 
> Setting a value for an option with av_set_string() for a number or a
> flag option currently works like this:
> 
> * A '+' or '-' at the beginning of the value string cause the
>   following value to be added to the *default* value for the option,

Amendment: s/default/current/ here and below.

>   that is for example:
>   ffmpeg -foo +1
> 
>   sets the foo value to default+1
> 
>   while
> 
>   ffmpeg -foo -1
>   sets the foo value to default-1.
> 
>   If you want to set the foo value to -1 you have to perform:
>   ffmpeg -foo 0-1
> 
>   (BTW this behaviour was always true for flags options, and has been
>   introduced for number values too by a recent commit by Michael, so I
>   don't know if this is to be considered a bug or a feature...).
>   
>   Furthermore the evaluation of the value constraints for a number
>   value is performed after the reading of each addend, so for example:
>   ffmpeg -foo 0-n_1+n_2+n_3+...+n_N
> 
>   will fail if any of the partial sum S_i = Sum_j=1..n n_j doesn't
>   respect the constraints for that value.
> 
> This behaviour looks to me very confusing, so my proposal is to change
> the behaviour to this:
> 
> * A '-' or a '+' at the beginning of a string value doesn't have any
>   special meaning, so for example:
> 
>   ffmpeg -foo -1
>   sets foo to -1
> 
>   and
>   ffmpeg -foo +1
>   sets foo to +1.
> 
>   If you want to set foo to its default value +/- a certain value X you
>   have to explicitly set it with:
>   ffmpeg -foo default+X
>   or 
>   ffmpeg -foo default-X.
> 
>   The evaluation of the value constraints is performed after the
>   reading of all the addends, so for example: 
> 
>   ffmpeg -foo 0-n_1+n_2+n_3+...+n_N
> 
>   will fail only if the total Sum_i=1..N n_i doesn't
>   respect the constraints for that value.
>   
> If you agree with this change I'll provide a patch to implement such
> behaviour, if we don't want to change the semantic of av_set_string()
> we should at least document the current beahviour.
[...]

To be able to modify the current value of an option seems anyway a
good feature to keep, so we could use a new keyword "current", so that
for example:

ffmpeg -foo current+1

will increase by one the current value of foo.

Regards.
-- 
FFmpeg = Friendly Freak Multimedia Pitiful EnGine




More information about the ffmpeg-devel mailing list