On 26/10/13 10:37, Anton Khirnov wrote:
> It does not make sense in the vast majority of use cases, no currently
> defined AV_OPT_TYPE_FLAGS options in Libav set the range to anything
> nontrivial, and many of those get it wrong (the "correct" range is
> INT_MIN to INT_MAX so that the builtin constant "all" works).
> ---
> libavutil/opt.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/libavutil/opt.c b/libavutil/opt.c
> index cba5b29..ef6a9de 100644
> --- a/libavutil/opt.c
> +++ b/libavutil/opt.c
> @@ -61,7 +61,8 @@ static int read_number(const AVOption *o, void *dst, double
> *num, int *den, int6
>
> static int write_number(void *obj, const AVOption *o, void *dst, double num,
> int den, int64_t intnum)
> {
> - if (o->max*den < num*intnum || o->min*den > num*intnum) {
> + if (o->type != AV_OPT_TYPE_FLAGS &&
> + (o->max*den < num*intnum || o->min*den > num*intnum)) {
> av_log(obj, AV_LOG_ERROR, "Value %f for parameter '%s' out of
> range\n",
> num*intnum/den, o->name);
> return AVERROR(ERANGE);
>
Ok, maybe with some spaces sprinkled while at it.
lu
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel