[FFmpeg-devel] [PATCH 1/3] avutil/opt: Fix setting int64 to its maximum

Andreas Cadhalpun andreas.cadhalpun at googlemail.com
Sun Nov 20 21:53:19 EET 2016


On 20.11.2016 12:57, Michael Niedermayer wrote:
> Found-by: Andreas
> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
>  libavutil/opt.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/libavutil/opt.c b/libavutil/opt.c
> index cd16bd1..6669356 100644
> --- a/libavutil/opt.c
> +++ b/libavutil/opt.c
> @@ -126,9 +126,11 @@ static int write_number(void *obj, const AVOption *o, void *dst, double num, int
>          break;
>      case AV_OPT_TYPE_DURATION:
>      case AV_OPT_TYPE_CHANNEL_LAYOUT:
> -    case AV_OPT_TYPE_INT64:
> -        *(int64_t *)dst = llrint(num / den) * intnum;
> -        break;
> +    case AV_OPT_TYPE_INT64:{
> +        double d = num / den;
> +        if (intnum == 1 && d == (double)INT64_MAX) *(int64_t *)dst = INT64_MAX;
> +        else                                       *(int64_t *)dst = llrint(d) * intnum;
> +        break;}
>      case AV_OPT_TYPE_FLOAT:
>          *(float *)dst = num * intnum / den;
>          break;
> 

LGTM. Thanks for finding a better fix for the problem!

Best regards,
Andreas


More information about the ffmpeg-devel mailing list