1. 13 Aug, 2019 1 commit
  2. 05 Jul, 2019 1 commit
  3. 03 Jun, 2019 2 commits
  4. 28 May, 2019 1 commit
  5. 23 May, 2019 1 commit
  6. 10 May, 2019 1 commit
  7. 10 Apr, 2019 1 commit
  8. 20 Mar, 2019 1 commit
  9. 11 Mar, 2019 2 commits
  10. 18 Feb, 2019 1 commit
  11. 15 Feb, 2019 1 commit
  12. 22 Jan, 2019 2 commits
  13. 26 Nov, 2018 1 commit
    • Romain Vimont's avatar
      media source: introduce media source/tree API · 3e0cc194
      Romain Vimont authored
      Add an API to manage "services discovery" easily from UI clients.
      
      A "media source provider" allows to retrieve media sources (each
      associated to a services discovery module).
      
      A media source holds a media tree, containing both the media detected by
      the services discovery module and the media detected by preparsing.
      Clients may listen to the tree to be notified of changes.
      
      A client may retrieve a media source at any time and listen to its
      media tree, even if it is already populated, without race condition.
      Signed-off-by: Thomas Guillem's avatarThomas Guillem <thomas@gllm.fr>
      3e0cc194
  14. 15 Nov, 2018 9 commits
    • Romain Vimont's avatar
      core: playlist: implement sorting · ac37b52a
      Romain Vimont authored
      Expose a function to sort the items in the playlist by a list of
      criteria. A criterion is composed of a key (title, duration, etc.) and
      an order (ascending or descending).
      Signed-off-by: Thomas Guillem's avatarThomas Guillem <thomas@gllm.fr>
      ac37b52a
    • Romain Vimont's avatar
      core: playlist: implement shuffle · ff4c4e02
      Romain Vimont authored
      Expose a function to shuffle the items in the playlist. Contrary to the
      random playback mode, the location of the items within the playlist
      changes.
      Signed-off-by: Thomas Guillem's avatarThomas Guillem <thomas@gllm.fr>
      ff4c4e02
    • Romain Vimont's avatar
      core: playlist: handle random playback order · be63ef87
      Romain Vimont authored
      Use the randomizer in the playlist to implement random playback order.
      Signed-off-by: Thomas Guillem's avatarThomas Guillem <thomas@gllm.fr>
      be63ef87
    • Romain Vimont's avatar
      core: playlist: add random playback helper · 93164d91
      Romain Vimont authored
      Add a "randomizer" to provide the random playback rules, to be used by
      the playlist.
      Signed-off-by: Thomas Guillem's avatarThomas Guillem <thomas@gllm.fr>
      93164d91
    • Romain Vimont's avatar
      core: playlist: expose "request" functions · b9313307
      Romain Vimont authored
      When a user requests to insert, move or remove items, or to set the
      current item, before the core playlist lock is successfully acquired,
      another client may have changed the list.
      
      Expose functions to apply the requested changes with potential conflicts
      resolved. The actual changes applied are notified through the callbacks.
      Signed-off-by: Thomas Guillem's avatarThomas Guillem <thomas@gllm.fr>
      b9313307
    • Romain Vimont's avatar
      core: playlist: new playlist API · 7c82c7bf
      Romain Vimont authored
      Add a new playlist API.
      
      A playlist contains a simple list of items, and owns a player.
      
      Callbacks are exposed so that clients (UI) are notified when items are
      updated, insert, moved or removed. The playlist is responsible for the
      playback order and repeat mode, and manages a cursor to the "current"
      item.
      Signed-off-by: Thomas Guillem's avatarThomas Guillem <thomas@gllm.fr>
      7c82c7bf
    • Thomas Guillem's avatar
      core: add player API · a80c78fc
      Thomas Guillem authored
      This API will replace the usage of input_thread_t from interface modules. The
      player implementation continue to use input_thread_t in private. The goal is to
      hide the input_thread_t API when every modules are switched to the player API.
      
      TODO (all need to be fixed, for VLC 4.0):
      
       - Gapless: API is complete but not implemented (the player can play several
         medias in a row, but without gapless).
       - Position callbacks: still using the input_thread_t position that is really
         imprecise (notified every 250ms minimum, and sometime more, depending on
         pf_demux implementation).
       - Seek/discontinuity callbacks: when seeking, the player can still send
         position of the requested position, the actual position or the next position
         to come. This leads to UI inconsistency.
       - OSD messages should be display from input callbacks but it's not possible
         now since you can't know if the event come from the user or from the core.
      a80c78fc
    • Thomas Guillem's avatar
      core: move playlist to playlist_legacy · 034a3f75
      Thomas Guillem authored
      To make room for the new playlist.
      This playlist_legacy will be removed once all modules are using the new
      playlist.
      034a3f75
    • Romain Vimont's avatar
      include: add C++ wrapper for C shared resources · 40c6d71f
      Romain Vimont authored
      Add a helper to create RAII wrappers for C shared resources, which
      automatically call the Hold() and Release() functions associated to the
      raw pointer.
      
      Just declare a new shared resource wrapper type:
      
          using InputItemPtr = vlc_shared_data_ptr_type(input_item_t,
                                                        input_item_Hold,
                                                        input_item_Release);
      
      Then use this new type directly:
      
          input_item_t *ptr = /* ... */;
          InputItemPtr item(ptr);
          QString name = item->psz_name;
          InputItemPtr other = item; /* hold automatically */
      40c6d71f
  15. 12 Nov, 2018 1 commit
  16. 28 Oct, 2018 1 commit
  17. 25 Oct, 2018 1 commit
  18. 18 Oct, 2018 1 commit
    • Romain Vimont's avatar
      vlc_vector: add helpers for vectors · 983c43f0
      Romain Vimont authored
      Add a new API for handling general-purpose vectors, intended to replace
      ARRAY_*.
      
      Like ARRAY_*, it provides macros to handle a dynamic array generic
      over the type of its items.
      
      Contrary to ARRAY_*:
       - it does not abort on allocation failure (but reports the error);
       - it uses size_t instead of int to store the capacity and the size;
       - it checks for overflows on reallocation.
      
      For illustration purpose, embedding a vector of input_item_t* in a
      struct looks like:
      
          struct playlist {
              struct VLC_VECTOR(input_item_t *) items;
              // ...
          };
      
      The main features (with names inspired by std::vector from C++ and
      std::vec::Vec from Rust) are:
       - void vlc_vector_init(pv)
            init the vector (use VLC_VECTOR_INITIALIZER for static init)
       - void vlc_vector_destroy(pv)
            destroy the vector and release any associated resources
       - void vlc_vector_clear(pv)
            remove all items from the vector
       - vec.size
            read the size of the vector
       - vec.data[i]
            access the i_th item
       - bool vlc_vector_push(pv, item)
            push an item to the end of the vector
       - bool vlc_vector_push_all(pv, items, count)
            push serveral items to the end of the vector
       - bool vlc_vector_insert(pv, index, item)
            insert an item at index
       - bool vlc_vector_insert_all(pv, index, items, count)
            insert several items at index
       - void vlc_vector_move(pv, index, target)
            move an item to target
       - void vlc_vector_move_all(pv, index, count, target)
            move a slice of items to target
       - void vlc_vector_remove(pv, index)
            remove an item
       - void vlc_vector_remove_slice(pv, index, count)
            remove a slice of items
       - void vlc_vector_swap_remove(pv, index)
            remove an item in O(1) without preserving ordering
       - bool vlc_vector_reserve(pv, mincap)
            increase the capacity of the vector in advance
       - void vlc_vector_shrink_to_fit(pv)
            resize the vector to its actual size
       - void vlc_vector_index_of(pv, index, pidx)
            find the index of an item (returns the result in *pidx)
       - vlc_vector_foreach(item, pv)
            a for-each loop
      
      It uses an exponential growth policy for both increasing and decreasing
      the size. As a consequence, the amortized complexity of
      vlc_vector_push() is O(1).
      Signed-off-by: Thomas Guillem's avatarThomas Guillem <thomas@gllm.fr>
      983c43f0
  19. 15 Oct, 2018 1 commit
  20. 14 Sep, 2018 1 commit
  21. 05 Sep, 2018 1 commit
  22. 09 Aug, 2018 1 commit
  23. 17 Jul, 2018 2 commits
  24. 02 Jul, 2018 1 commit
  25. 22 Jun, 2018 1 commit
  26. 18 Jun, 2018 1 commit
  27. 13 Jun, 2018 2 commits