Found-by: Andreas
Signed-off-by: Michael Niedermayer <mich...@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;
-- 
2.10.2

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to