[vlc-devel] [PATCH 00/20] player: multiple track handling

Roland Bewick roland.bewick at gmail.com
Fri Jun 21 07:58:46 CEST 2019


On 20/06/2019 10:23 PM, Thomas Guillem wrote:
> Hello,
>
> Here is the result of the merge of Roland Bewick work about dual subtitles
> handling.
>
> I started from Roland's work but did some modifications, mainly for polishing
> the player API regarding multiple tracks handling. For now, only multiple video
> and dual subtitles are supported, but we won't have to modify the player API if
> we add multiple audio support later.
>
> I rejected the change regarding dual tracks selection in Qt. I didn't like the
> way it interacted with the hotkeys plugin. Multiple tracks selection inside Qt
> should be more graphical, like adding a checking in tracks selection to enable
> multiple mode, then selecting a track will add it instead of replacing it.

That's what I added, see a gif: 
https://gyazo.com/5520dee77935f14020cb879a791e24c1

The only issue was that the checkboxes show rather than radio buttons 
when dual subtitles is disabled. But that is an existing bug.

Now that you've made the changes to retrieve the spu_order for a 
vlc_es_id, I think the interaction between the QT interface and hotkeys 
plugin is minimal. In fact, as far as I can see the only requirement is 
for the QT interface to listen to track selection changes and toggle the 
"Enable Dual Subtitles" checkbox if there is a track with 
VLC_SPU_CHANNEL_ORDER_SECONDARY.

Other than that, I'm happy with your changes. Thank you for picking up 
my work and seeing it to completion :-)

>
> The player gained finer controls with SPU tracks. Indeed, users can know which
> vout is linked with wich SPU tracks, and if a SPU track is primary or secondary.
>
> Regards,
> Thomas
>
> Roland Bewick (12):
>    demux: add DEMUX_SET_ES_LIST control
>    input: add INPUT_CONTROL_SET_ES_LIST
>    player: add vlc_player_SelectEsIdList
>    vout: spu: handle secondary channel order
>    vout: spu: pass channel order to vout_ChangeSubMargin
>    player: handle secondary-sub-margin notification
>    libvlc: add secondary sub options
>    libvlc: add a key to switch spu channel orders
>    vout: handle secondary-sub-margin callback
>    hotkeys: handle secondary subtitles options
>    qt: add secondary sub margin/alignment preferences
>    qt: add secondary subtitle delay synchronization
>
> Thomas Guillem (8):
>    input: add input_SetEsIdDelay
>    es_out: handle all tracks delays in EsOutGetTracksDelay
>    player: add vlc_player_SetEsIdDelay
>    vout: spu: use mutex instead of atomic
>    input: pass vout and spu_order via events
>    player: rename vlc_player_GetVoutFromEsId
>    player: get vout and spu channel order from SPU es_ids
>    qt: re-indent after last commit
>
>   include/vlc_actions.h                         |   2 +
>   include/vlc_demux.h                           |   3 +-
>   include/vlc_es_out.h                          |   1 +
>   include/vlc_player.h                          |  93 +++++++++-
>   include/vlc_vout.h                            |  10 +
>   lib/media_player.c                            |   9 +-
>   modules/access/bluray.c                       |   3 +
>   modules/control/gestures.c                    |   8 +-
>   modules/control/hotkeys.c                     | 154 +++++++++++++--
>   modules/demux/adaptive/plumbing/FakeESOut.cpp |   1 +
>   modules/demux/asf/asf.c                       |   3 +
>   modules/demux/mock.c                          |   2 +
>   modules/demux/mpeg/ts.c                       |  10 +-
>   .../gui/macosx/playlist/VLCPlayerController.m |   7 +-
>   modules/gui/qt/components/extended_panels.cpp |  44 ++++-
>   modules/gui/qt/components/extended_panels.hpp |   2 +
>   .../gui/qt/components/player_controller.cpp   |  98 ++++++++--
>   .../gui/qt/components/player_controller.hpp   |   4 +
>   .../gui/qt/components/player_controller_p.hpp |   6 +-
>   .../gui/qt/components/simple_preferences.cpp  |   3 +
>   modules/gui/qt/ui/sprefs_subtitles.ui         |  91 +++++++++
>   .../chromecast/chromecast_demux.cpp           |   1 +
>   src/input/decoder.c                           |  40 +++-
>   src/input/demux.c                             |   1 +
>   src/input/es_out.c                            | 100 +++++++++-
>   src/input/es_out.h                            |   8 +
>   src/input/es_out_timeshift.c                  |   2 +
>   src/input/event.h                             |   9 +
>   src/input/input.c                             |  49 +++++
>   src/input/input_internal.h                    |  23 +++
>   src/input/player.c                            | 175 +++++++++++++++++-
>   src/libvlc-module.c                           |  29 +++
>   src/libvlccore.sym                            |   6 +-
>   src/misc/actions.c                            |   1 +
>   src/video_output/video_output.c               |  10 +-
>   src/video_output/vout_internal.h              |  10 +-
>   src/video_output/vout_intf.c                  |  22 ++-
>   src/video_output/vout_subpictures.c           | 107 ++++++++---
>   test/src/input/player.c                       |   5 +-
>   39 files changed, 1056 insertions(+), 96 deletions(-)
>


More information about the vlc-devel mailing list