[vlc-commits] mkv: add DEMUX_GET_(TITLE|SEEKPOINT)
Rémi Denis-Courmont
git at videolan.org
Sun Dec 3 13:27:23 CET 2017
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sun Dec 3 12:14:15 2017 +0200| [db33e6a2ed90aaa1989ee471d08742597f35e1e7] | committer: Rémi Denis-Courmont
mkv: add DEMUX_GET_(TITLE|SEEKPOINT)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=db33e6a2ed90aaa1989ee471d08742597f35e1e7
---
modules/demux/mkv/demux.hpp | 2 ++
modules/demux/mkv/mkv.cpp | 13 ++++++++++---
modules/demux/mkv/virtual_segment.cpp | 8 ++++----
3 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/modules/demux/mkv/demux.hpp b/modules/demux/mkv/demux.hpp
index f5b0b0d9db..1d6c3d5bf5 100644
--- a/modules/demux/mkv/demux.hpp
+++ b/modules/demux/mkv/demux.hpp
@@ -337,6 +337,7 @@ public:
,i_mk_chapter_time(0)
,meta(NULL)
,i_current_title(0)
+ ,i_current_seekpoint(0)
,p_current_vsegment(NULL)
,dvd_interpretor( *this )
,f_duration(-1.0)
@@ -360,6 +361,7 @@ public:
std::vector<input_title_t*> titles; // matroska editions
size_t i_current_title;
+ size_t i_current_seekpoint;
std::vector<matroska_stream_c*> streams;
std::vector<attachment_c*> stored_attachments;
diff --git a/modules/demux/mkv/mkv.cpp b/modules/demux/mkv/mkv.cpp
index 3a8a0baaae..95d4308ab3 100644
--- a/modules/demux/mkv/mkv.cpp
+++ b/modules/demux/mkv/mkv.cpp
@@ -394,8 +394,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
Seek( p_demux, static_cast<int64_t>( p_sys->titles[i_idx]->seekpoint[0]->i_time_offset ), -1, NULL) )
{
p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT|INPUT_UPDATE_TITLE;
- p_demux->info.i_seekpoint = 0;
- p_demux->info.i_title = i_idx;
+ p_sys->i_current_seekpoint = 0;
p_sys->f_duration = (float) p_sys->titles[i_idx]->i_length / 1000.f;
return VLC_SUCCESS;
}
@@ -417,12 +416,20 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
if( i_ret == VLC_SUCCESS )
{
p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
- p_demux->info.i_seekpoint = i_skp;
+ p_sys->i_current_seekpoint = i_skp;
}
return i_ret;
}
return VLC_EGENERIC;
+ case DEMUX_GET_TITLE:
+ *va_arg( args, int * ) = p_sys->i_current_title;
+ return VLC_SUCCESS;
+
+ case DEMUX_GET_SEEKPOINT:
+ *va_arg( args, int * ) = p_sys->i_current_seekpoint;
+ return VLC_SUCCESS;
+
case DEMUX_GET_FPS:
pf = va_arg( args, double * );
*pf = 0.0;
diff --git a/modules/demux/mkv/virtual_segment.cpp b/modules/demux/mkv/virtual_segment.cpp
index a3b2e34127..eea846ffd5 100644
--- a/modules/demux/mkv/virtual_segment.cpp
+++ b/modules/demux/mkv/virtual_segment.cpp
@@ -474,8 +474,8 @@ bool virtual_segment_c::UpdateCurrentToChapter( demux_t & demux )
if ( p_cur_vchapter->i_seekpoint_num > 0 )
{
demux.info.i_update |= INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT;
- demux.info.i_title = sys.i_current_title = i_sys_title;
- demux.info.i_seekpoint = p_cur_vchapter->i_seekpoint_num - 1;
+ sys.i_current_title = i_sys_title;
+ sys.i_current_seekpoint = p_cur_vchapter->i_seekpoint_num - 1;
}
return b_has_seeked;
@@ -531,8 +531,8 @@ bool virtual_segment_c::Seek( demux_t & demuxer, mtime_t i_mk_date,
if ( p_vchapter->p_chapter && p_vchapter->i_seekpoint_num > 0 )
{
demuxer.info.i_update |= INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT;
- demuxer.info.i_title = p_sys->i_current_title = i_sys_title;
- demuxer.info.i_seekpoint = p_vchapter->i_seekpoint_num - 1;
+ p_sys->i_current_title = i_sys_title;
+ p_sys->i_current_seekpoint = p_vchapter->i_seekpoint_num - 1;
}
if( p_current_vchapter == NULL || &p_current_vchapter->segment != &p_vchapter->segment )
More information about the vlc-commits
mailing list