[vlc-devel] [PATCH] demux:mkv: make sure b_(fast)seekable is always set and const
Steve Lhomme
robux4 at ycbcr.xyz
Fri Jan 5 09:51:03 CET 2018
Also STREAM_CAN_FASTSEEK cannot fail
Replaces https://patches.videolan.org/patch/19338/
- rebased
---
modules/demux/mkv/demux.hpp | 16 ++++++++++++----
modules/demux/mkv/mkv.cpp | 4 ----
2 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/modules/demux/mkv/demux.hpp b/modules/demux/mkv/demux.hpp
index f139a58854..3ae6df35af 100644
--- a/modules/demux/mkv/demux.hpp
+++ b/modules/demux/mkv/demux.hpp
@@ -331,8 +331,8 @@ struct demux_sys_t
public:
demux_sys_t( demux_t & demux )
:demuxer(demux)
- ,b_seekable(false)
- ,b_fastseekable(false)
+ ,b_seekable(CanSeekMode( demux, STREAM_CAN_SEEK ))
+ ,b_fastseekable(CanSeekMode( demux, STREAM_CAN_FASTSEEK ))
,i_pts(VLC_TS_INVALID)
,i_pcr(VLC_TS_INVALID)
,i_start_pts(VLC_TS_0)
@@ -353,8 +353,8 @@ public:
/* current data */
demux_t & demuxer;
- bool b_seekable;
- bool b_fastseekable;
+ const bool b_seekable;
+ const bool b_fastseekable;
mtime_t i_pts;
mtime_t i_pcr;
@@ -403,6 +403,14 @@ public:
/* event */
event_thread_t *p_ev;
+
+private:
+ static bool CanSeekMode(demux_t & demux, enum stream_query_e mode)
+ {
+ bool b_seekable;
+ vlc_stream_Control( demux.s, mode, &b_seekable );
+ return b_seekable;
+ }
};
diff --git a/modules/demux/mkv/mkv.cpp b/modules/demux/mkv/mkv.cpp
index 99967c67aa..b813e99ece 100644
--- a/modules/demux/mkv/mkv.cpp
+++ b/modules/demux/mkv/mkv.cpp
@@ -112,10 +112,6 @@ static int Open( vlc_object_t * p_this )
p_demux->pf_control = Control;
p_demux->p_sys = p_sys = new demux_sys_t( *p_demux );
- vlc_stream_Control( p_demux->s, STREAM_CAN_SEEK, &p_sys->b_seekable );
- if ( vlc_stream_Control( p_demux->s, STREAM_CAN_FASTSEEK, &p_sys->b_fastseekable ) )
- p_sys->b_fastseekable = false;
-
p_io_callback = new vlc_stream_io_callback( p_demux->s, false );
p_io_stream = new (std::nothrow) EbmlStream( *p_io_callback );
--
2.14.2
More information about the vlc-devel
mailing list