[vlc-devel] [RFC PATCH] demux/mkv: do not expose hidden chapters

Denis Charmet typx at dinauz.org
Mon Jul 25 11:14:48 CEST 2016


Hi,

On 2016-07-24 00:56, Filip Roséen wrote:
> A few questions:
> 
>     - What was the original purpose/difference between;
>         - chapter_item_c::b_user_display, and;

It means that the chapter has at least one Chapter Display string so we 
have actually something to display as a name in the seekpoint

>         - chapter_item_c::b_display_seekpoint,

It means that the chapter isn't hidden (or that there is a 
chapter_command). I cannot tell for chapter commands...

>       other than that one defaults to false, and the other to true?
> 
>     - Can this patch be pushed as is (prior to a clean-up of relevant
>       sections around it)?
> 
> Thank you!
> ---
>  modules/demux/mkv/virtual_segment.cpp | 26 ++++++++++++++------------
>  1 file changed, 14 insertions(+), 12 deletions(-)
> 
> diff --git a/modules/demux/mkv/virtual_segment.cpp
> b/modules/demux/mkv/virtual_segment.cpp
> index 5d30d7e..2bce464 100644
> --- a/modules/demux/mkv/virtual_segment.cpp
> +++ b/modules/demux/mkv/virtual_segment.cpp
> @@ -592,22 +592,24 @@ int virtual_chapter_c::PublishChapters(
> input_title_t & title, int & i_user_chap
>           ( ( sub_vchapters.size() > 0 && i_mk_virtual_start_time !=
> sub_vchapters[0]->i_mk_virtual_start_time) ||
>             sub_vchapters.size() == 0 ) ) || !p_chapter )
>      {
> -        seekpoint_t *sk = vlc_seekpoint_New();
> +        if( p_chapter && p_chapter->b_user_display )

While I don't mind the fact that you don't publish dummy chapters (and 
yes I should have removed that a long time ago) I'd rather have you 
remove the "|| !p_chapter" above.

Besides since I don't know how chapter commands work this might break 
chapters which have a codecName infered from chapter commands but no 
Chapter display string.

> +        {
> +            seekpoint_t *sk = vlc_seekpoint_New();
> 
> -        sk->i_time_offset = i_mk_virtual_start_time;
> -        if( p_chapter )
> -            sk->psz_name = strdup( p_chapter->psz_name.c_str() );
> -        else
> -            sk->psz_name = strdup("dummy chapter");
> +            sk->i_time_offset = i_mk_virtual_start_time;
> +            if( p_chapter )
> +                sk->psz_name = strdup( p_chapter->psz_name.c_str() );
> +            else
> +                sk->psz_name = strdup("dummy chapter");

remove that it will never happen

> 
> -        /* 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;

Regards,
-- 
Denis Charmet - TypX
Le mauvais esprit est un art de vivre


More information about the vlc-devel mailing list