[vlc-commits] demux: add SetTime/SetPosition helpers

Thomas Guillem git at videolan.org
Wed Sep 5 09:47:47 CEST 2018


vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Wed Sep  5 09:29:54 2018 +0200| [27a80909ec7f657372b8542ec8231e5f096de343] | committer: Thomas Guillem

demux: add SetTime/SetPosition helpers

And handle relative seeks too.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=27a80909ec7f657372b8542ec8231e5f096de343
---

 include/vlc_demux.h | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/include/vlc_demux.h b/include/vlc_demux.h
index 26328c7268..928aa0c77e 100644
--- a/include/vlc_demux.h
+++ b/include/vlc_demux.h
@@ -367,6 +367,42 @@ static inline bool demux_IsForced( demux_t *p_demux, const char *psz_name )
     return true;
 }
 
+static inline int demux_SetPosition( demux_t *p_demux, double pos, bool precise,
+                                     bool absolute)
+{
+    if( !absolute )
+    {
+        double current_pos;
+        int ret = demux_Control( p_demux, DEMUX_GET_POSITION, &current_pos );
+        if( ret != VLC_SUCCESS )
+            return ret;
+        pos += current_pos;
+    }
+
+    if( pos < 0.f )
+        pos = 0.f;
+    else if( pos > 1.f )
+        pos = 1.f;
+    return demux_Control( p_demux, DEMUX_SET_POSITION, pos, precise );
+}
+
+static inline int demux_SetTime( demux_t *p_demux, vlc_tick_t time, bool precise,
+                                 bool absolute )
+{
+    if( !absolute )
+    {
+        vlc_tick_t current_time;
+        int ret = demux_Control( p_demux, DEMUX_GET_TIME, &current_time );
+        if( ret != VLC_SUCCESS )
+            return ret;
+        time += current_time;
+    }
+
+    if( time < 0 )
+        time = 0;
+    return demux_Control( p_demux, DEMUX_SET_TIME, time, precise );
+}
+
 /**
  * This function will create a packetizer suitable for a demuxer that parses
  * elementary stream.



More information about the vlc-commits mailing list