[vlc-commits] demux/mkv: do not expose hidden chapters

Filip Roséen git at videolan.org
Thu Aug 4 11:25:15 CEST 2016


vlc | branch: master | Filip Roséen <filip at atch.se> | Sun Jul 24 00:56:27 2016 +0200| [5fe874b38f9d9b7f661fe6647327c73c64cdb0af] | committer: Jean-Baptiste Kempf

demux/mkv: do not expose hidden chapters

Given that the matroska format can contain hidden chapters (and that the
demuxer itself create such where it feels applicable), we should not expose
such chapters (as seekpoints) outside of the demuxer module.

This fixes the ticket 17202 by checking whether or not the
chapter should be displayed to the user, and only appends the item to the
title's seekpoint array if this is the case.

Close #17202

Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

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

 modules/demux/mkv/virtual_segment.cpp | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/modules/demux/mkv/virtual_segment.cpp b/modules/demux/mkv/virtual_segment.cpp
index 5d30d7e..b069ce8 100644
--- a/modules/demux/mkv/virtual_segment.cpp
+++ b/modules/demux/mkv/virtual_segment.cpp
@@ -590,24 +590,23 @@ int virtual_chapter_c::PublishChapters( input_title_t & title, int & i_user_chap
 
     if ( ( p_chapter && p_chapter->b_display_seekpoint &&
          ( ( sub_vchapters.size() > 0 && i_mk_virtual_start_time != sub_vchapters[0]->i_mk_virtual_start_time) ||
-           sub_vchapters.size() == 0 ) ) || !p_chapter )
+           sub_vchapters.size() == 0 ) ) )
     {
-        seekpoint_t *sk = vlc_seekpoint_New();
+        if( p_chapter->b_user_display )
+        {
+            seekpoint_t *sk = vlc_seekpoint_New();
 
-        sk->i_time_offset = i_mk_virtual_start_time;
-        if( p_chapter )
+            sk->i_time_offset = i_mk_virtual_start_time;
             sk->psz_name = strdup( p_chapter->psz_name.c_str() );
-        else
-            sk->psz_name = strdup("dummy chapter");
 
-        /* A start time of '0' is ok. A missing ChapterTime element is ok, too, because '0' is its default value. */
-        title.i_seekpoint++;
-        title.seekpoint = (seekpoint_t**)xrealloc( title.seekpoint,
-                                 title.i_seekpoint * sizeof( seekpoint_t* ) );
-        title.seekpoint[title.i_seekpoint-1] = sk;
+            /* A start time of '0' is ok. A missing ChapterTime element is ok, too, because '0' is its default value. */
+            title.i_seekpoint++;
+            title.seekpoint = (seekpoint_t**)xrealloc( title.seekpoint,
+              title.i_seekpoint * sizeof( seekpoint_t* ) );
+            title.seekpoint[title.i_seekpoint-1] = sk;
 
-        if ( (p_chapter && p_chapter->b_user_display ) ||  !p_chapter )
             i_user_chapters++;
+        }
     }
     i_seekpoint_num = i_user_chapters;
 



More information about the vlc-commits mailing list