summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas George <nicolas.george@normalesup.org>2012-03-04 12:17:02 +0100
committerNicolas George <nicolas.george@normalesup.org>2012-04-04 14:32:44 +0200
commit8a9ae37feef5b09332222045a3d9ad948cdcc445 (patch)
treee0c80ab4cef5483ae059fc693731bf58b3be1e88
parente29f66d64a91ab0b1fa12d1d21591d048742c665 (diff)
timefilter: allow to evaluate at other times.
-rw-r--r--libavdevice/timefilter.c5
-rw-r--r--libavdevice/timefilter.h9
2 files changed, 14 insertions, 0 deletions
diff --git a/libavdevice/timefilter.c b/libavdevice/timefilter.c
index 8451466657..a423fc0859 100644
--- a/libavdevice/timefilter.c
+++ b/libavdevice/timefilter.c
@@ -83,6 +83,11 @@ double ff_timefilter_update(TimeFilter *self, double system_time, double period)
return self->cycle_time;
}
+double ff_timefilter_eval(TimeFilter *self, double delta)
+{
+ return self->cycle_time + self->clock_period * delta;
+}
+
#ifdef TEST
#include "libavutil/lfg.h"
#define LFG_MAX ((1LL << 32) - 1)
diff --git a/libavdevice/timefilter.h b/libavdevice/timefilter.h
index 33862f63bb..66629591a2 100644
--- a/libavdevice/timefilter.h
+++ b/libavdevice/timefilter.h
@@ -82,6 +82,15 @@ TimeFilter * ff_timefilter_new(double clock_period, double feedback2_factor, dou
double ff_timefilter_update(TimeFilter *self, double system_time, double period);
/**
+ * Evaluate the filter at a specified time
+ *
+ * @param delta difference between the requested time and the current time
+ * (last call to ff_timefilter_update).
+ * @return the filtered time
+ */
+double ff_timefilter_eval(TimeFilter *self, double delta);
+
+/**
* Reset the filter
*
* This function should mainly be called in case of XRUN.