[vlc-devel] [PATCH 00/12] New playlist

Romain Vimont rom1v at videolabs.io
Thu Oct 11 23:14:38 CEST 2018


I posted a RFC few weeks ago:
<https://mailman.videolan.org/pipermail/vlc-devel/2018-September/121253.html>

In addition to the current master branch, it requires:
 - vlc_vector:
   <https://mailman.videolan.org/pipermail/vlc-devel/2018-October/121393.html>
 - vlc_shared_data_ptr:
   <https://mailman.videolan.org/pipermail/vlc-devel/2018-October/121451.html>
 - the current player branch from Thomas (will be posted soon):
   <https://mailman.videolan.org/pipermail/vlc-devel/2018-August/121076.html>

The result is available here:
<https://github.com/rom1v/vlc/commits/newplaylist>

There is a "rendered" documentation (also available in code comments
where relevant):
<https://github.com/rom1v/vlc/blob/newplaylist/WIP-playlist.md>

Patch 1 exposes a locked version of input_item_GetMeta(), useful for
playlist sorting.

Patch 2 adds the playlist API and the "essential" implementation.

Patch 3 adds the "request" functions (see
<https://github.com/rom1v/vlc/blob/newplaylist/WIP-playlist.md#ui-to-core>)

Patch 4 and 5 implement the random playback order (the order of items in
the playlist does not change).

Patch 6 implements shuffle (items are physically moved)

Patch 7 implements sorting.

Patch 8 adds the possibility for a client to receive the current state of the
playlist when it registers a listener (all UI will do that).

Patch 9 exposes a main playlist instance in the core.

Patch 10 and 11 configure the main playlist and its player from VLC
variables.

Patch 12 implements a Qt playlist list model, to be plugged in a Qt
view.

Pierre is currently working on a new Qt UI, which uses this playlist.

Romain Vimont (12):
  input item: expose locked version of GetMeta()
  core: playlist: new playlist API
  core: playlist: expose "request" functions
  core: playlist: add random playback helper
  core: playlist: handle random playback order
  core: playlist: implement shuffle
  core: playlist: implement sorting
  core: playlist: notify on AddListener()
  core: playlist: expose a main playlist instance
  core: playlist: configure main playlist from vars
  core: player: configure main player from vars
  qt: playlist: implement Qt playlist list model

 include/vlc_fixups.h                          |    4 +
 include/vlc_input_item.h                      |    2 +
 include/vlc_interface.h                       |    4 +
 include/vlc_playlist_new.h                    |  835 ++++
 modules/gui/qt/Makefile.am                    |    8 +
 .../gui/qt/components/playlist_new/media.hpp  |   78 +
 .../qt/components/playlist_new/playlist.cpp   |  261 ++
 .../qt/components/playlist_new/playlist.hpp   |  104 +
 .../components/playlist_new/playlist_item.hpp |   96 +
 .../playlist_new/playlist_model.cpp           |  184 +
 .../playlist_new/playlist_model.hpp           |   80 +
 modules/gui/qt/qt.cpp                         |   16 +
 src/Makefile.am                               |   12 +-
 src/input/item.c                              |   24 +-
 src/interface/interface.c                     |    6 +
 src/libvlc.c                                  |   56 +
 src/libvlc.h                                  |    2 +
 src/libvlccore.sym                            |   40 +
 src/playlist/playlist.c                       | 3836 +++++++++++++++++
 src/playlist/randomizer.c                     | 1100 +++++
 src/playlist/randomizer.h                     |  148 +
 21 files changed, 6884 insertions(+), 12 deletions(-)  ¯\_(ツ)_/¯
 create mode 100644 include/vlc_playlist_new.h
 create mode 100644 modules/gui/qt/components/playlist_new/media.hpp
 create mode 100644 modules/gui/qt/components/playlist_new/playlist.cpp
 create mode 100644 modules/gui/qt/components/playlist_new/playlist.hpp
 create mode 100644 modules/gui/qt/components/playlist_new/playlist_item.hpp
 create mode 100644 modules/gui/qt/components/playlist_new/playlist_model.cpp
 create mode 100644 modules/gui/qt/components/playlist_new/playlist_model.hpp
 create mode 100644 src/playlist/playlist.c
 create mode 100644 src/playlist/randomizer.c
 create mode 100644 src/playlist/randomizer.h

-- 
2.19.1



More information about the vlc-devel mailing list