[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