[FFmpeg-cvslog] avconv: use lrint() for rounding double timestamps
Mans Rullgard
git at videolan.org
Fri May 11 21:04:03 CEST 2012
ffmpeg | branch: master | Mans Rullgard <mans at mansr.com> | Thu May 10 12:19:10 2012 +0100| [4f1500689d662cfe08bff6d949f7fb49311024da] | committer: Mans Rullgard
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 <mans at mansr.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4f1500689d662cfe08bff6d949f7fb49311024da
---
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
More information about the ffmpeg-cvslog
mailing list