[vlc-devel] [PATCH 08/10] vlc_tick: add helper fonctions to convert from vlc_tick_t from floating point seconds
Steve Lhomme
robux4 at ycbcr.xyz
Fri Jun 22 14:53:25 CEST 2018
---
include/vlc_tick.h | 40 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 39 insertions(+), 1 deletion(-)
diff --git a/include/vlc_tick.h b/include/vlc_tick.h
index 0cd42824405..9e7f909e149 100644
--- a/include/vlc_tick.h
+++ b/include/vlc_tick.h
@@ -58,16 +58,54 @@ typedef vlc_tick_t mtime_t; /* deprecated, use vlc_tick_t */
#define NS_FROM_VLC_TICK(vtk) ((vtk) * (INT64_C(1000000000) / CLOCK_FREQ)) /* vlc_tick_t in nanoseconds */
+#ifdef __cplusplus
static inline vlc_tick_t vlc_tick_from_sec(int64_t sec)
{
- return sec * CLOCK_FREQ;
+ return CLOCK_FREQ * sec;
+}
+static inline vlc_tick_t vlc_tick_from_sec(int sec)
+{
+ return CLOCK_FREQ * sec;
+}
+static inline vlc_tick_t vlc_tick_from_sec(long sec)
+{
+ return CLOCK_FREQ * sec;
+}
+static inline vlc_tick_t vlc_tick_from_sec(uint32_t sec)
+{
+ return CLOCK_FREQ * sec;
+}
+static inline vlc_tick_t vlc_tick_from_sec(double secf)
+{
+ return (vlc_tick_t)(CLOCK_FREQ * secf); /* TODO use llround ? */
+}
+#else /* !__cplusplus */
+static inline vlc_tick_t vlc_tick_from_seci(int64_t s)
+{
+ return CLOCK_FREQ * s;
+}
+
+static inline vlc_tick_t vlc_tick_from_secf(double secf)
+{
+ return (vlc_tick_t)(CLOCK_FREQ * secf); /* TODO use llround ? */
}
+#define vlc_tick_from_sec(sec) _Generic((sec), \
+ double: vlc_tick_from_secf(sec), \
+ float: vlc_tick_from_secf(sec), \
+ default: vlc_tick_from_seci(sec) )
+#endif /* !__cplusplus */
+
static inline int64_t sec_from_vlc_tick(vlc_tick_t vtk)
{
return vtk / CLOCK_FREQ;
}
+static inline double secf_from_vlc_tick(vlc_tick_t vtk)
+{
+ return (double)vtk / (double)CLOCK_FREQ;
+}
+
static inline vlc_tick_t vlc_tick_from_ms(int64_t ms)
{
/* TODO refine if CLOCK_FREQ is not a multiple of 1000 */
--
2.17.0
More information about the vlc-devel
mailing list