Module: libav
Branch: master
Commit: 4f1500689d662cfe08bff6d949f7fb49311024da

Author:    Mans Rullgard <[email protected]>
Committer: Mans Rullgard <[email protected]>
Date:      Thu May 10 12:19:10 2012 +0100

avconv: use lrint() for rounding double timestamps

Converting the double to float for lrintf() loses precision when
the value is not exactly representable as a single-precision float.
Apart from being inaccurate, this causes discrepancies in some
configurations due to differences in rounding.

Note that the changed timestamp in the vc1-ism test is a bogus,
made-up value.

Signed-off-by: Mans Rullgard <[email protected]>

---

 avconv.c               |    4 ++--
 tests/ref/fate/vc1-ism |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/avconv.c b/avconv.c
index 1aed704..c157778 100644
--- a/avconv.c
+++ b/avconv.c
@@ -1697,10 +1697,10 @@ static void do_video_out(AVFormatContext *s,
         if (delta <= -0.6)
             nb_frames = 0;
         else if (delta > 0.6)
-            ost->sync_opts = lrintf(sync_ipts);
+            ost->sync_opts = lrint(sync_ipts);
         break;
     case VSYNC_PASSTHROUGH:
-        ost->sync_opts = lrintf(sync_ipts);
+        ost->sync_opts = lrint(sync_ipts);
         break;
     default:
         av_assert0(0);
diff --git a/tests/ref/fate/vc1-ism b/tests/ref/fate/vc1-ism
index a9cfb2c..a4d29cc 100644
--- a/tests/ref/fate/vc1-ism
+++ b/tests/ref/fate/vc1-ism
@@ -118,4 +118,4 @@
 0,   48750000,   48750000,        0,    37440, 0xf0fe8c1c
 0,   49170000,   49170000,        0,    37440, 0xc0036222
 0,   49590000,   49590000,        0,    37440, 0x3058385c
-0,   49798332,   49798332,        0,    37440, 0x68141016
+0,   49798330,   49798330,        0,    37440, 0x68141016

_______________________________________________
libav-commits mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to