1. 30 Mar, 2017 28 commits
  2. 29 Mar, 2017 12 commits
    • François Cartegnie's avatar
    • François Cartegnie's avatar
      d4b4d137
    • François Cartegnie's avatar
      143ae28f
    • François Cartegnie's avatar
      decoder: VideoToolbox: have adaptive DPB · a7db3f04
      François Cartegnie authored
      Max DPB is wrong on some streams. What else can go wrong ?
      a7db3f04
    • François Cartegnie's avatar
      decoder: VideoToolBox: use POC for H264 · 017f1b05
      François Cartegnie authored
      Also fixes the PTS less playback
      017f1b05
    • Filip Roséen's avatar
      libvlc-module: change preparsing options descriptions · 81d4001f
      Filip Roséen authored and Hugo Beauzée-Luyssen's avatar Hugo Beauzée-Luyssen committed
      
      
      There is nothing stating that we only preparse "files", as such the
      usage of "file" has been changed to "item". Also, the previous text
      did not mention in what unit the timeout was given - these changes
      simply adds information stating that it is is milliseconds.
      Signed-off-by: Hugo Beauzée-Luyssen's avatarHugo Beauzée-Luyssen <hugo@beauzee.fr>
      81d4001f
    • Filip Roséen's avatar
      preparser: post-pone event until after art fetching is complete · 5e6e0a66
      Filip Roséen authored and Hugo Beauzée-Luyssen's avatar Hugo Beauzée-Luyssen committed
      Since one can request art to be fetched through
      libvlc_media_parse_with_options, one would expect the event
      originating from this request to be sent upon the completion of all
      requested operations (not just the preparsing). The alternative would
      be to monitor the libvlc_MediaMetaChanged, hoping for an artwork URL
      change, but this can't account for error nor timeout.
      
      --
      
      The changes introduced were written after a discussion with Hugo
      Beauzée-Luyssen where he expressed that he would, if possible, be able to
      post-pone the preparsing events until the art fetching is complete.
      
      Post-poning the event fixes issues that are currently reproducible where
      medialibrary is used, and art is missing (because it listens to the preparse
      event in order to generate the database contents).
      
      It can be viewed as a follow-up to the below rejected patch (with the
      same goal in mind):
      
       - https://patches.videolan.org/patch/15810/
      
      Signed-off-by: Hugo Beauzée-Luyss...
      5e6e0a66
    • Filip Roséen's avatar
      playlist: fix deadlock on destruction while preparser adds items to playlist · befb82c2
      Filip Roséen authored and Hugo Beauzée-Luyssen's avatar Hugo Beauzée-Luyssen committed
      As we can have incoming requests to the preparser while we are
      destroying libvlc, we can end up in a deadlock while we are removing
      all playlist_item_t from the playlist, while an item being preparsed
      tries to add additional items to the list.
      
      These changes fixes the issue by introducing a preparser-deactivation
      function, that will make sure that we:
      
       1) clear out any pending preparsing requests
       2) cancel the current item preparsing (blocking)
       3) prevent further requests to the preparser
      
      fixes: #18151
      
      Signed-off-by: Hugo Beauzée-Luyssen's avatarHugo Beauzée-Luyssen <hugo@beauzee.fr>
      befb82c2
    • Filip Roséen's avatar
      playlist: cancel preparsing upon playback · cf59d2a3
      Filip Roséen authored and Hugo Beauzée-Luyssen's avatar Hugo Beauzée-Luyssen committed
      
      
      This will cancel any pending request for preparsing the relevant
      playlist_item_t as preparsing the entity:
      
       - is redundant since we are about to start playback,
       - can remove metadata added during playback, and;
       - can lead to duplicate entries in the playlist if the
         playlist_item_t is a directory (as children are added each time
         such entity is "played").
      
      fixes: #17441
      fixes: #17232
      Signed-off-by: Hugo Beauzée-Luyssen's avatarHugo Beauzée-Luyssen <hugo@beauzee.fr>
      cf59d2a3
    • Filip Roséen's avatar
      playlist/fetcher: refactor · ea88b8d6
      Filip Roséen authored and Hugo Beauzée-Luyssen's avatar Hugo Beauzée-Luyssen committed
      
      
      The following changes refactors the fetcher to take advantange of the
      newly introduced background_worker helper. The new implementation
      should not only be easier to maintain, but it also adds some
      advantages over the old implementation:
      
       - The implementation has shrunk in size.
      
       - A fetch-request can include a timeout.
      
       - Given that there now is a background worker associated with each of
         the different fetcher types (local, network, download):
      
          - A slow download does not prevent the network-fetcher from
            working the queue.
      
          - A slow network-fetcher does not prevent further work in regards
            of pending requests in the local fetcher.
      
       - A fetch request can now be properly cancelled (most importantly
         during VLC close).
      
       - We no longer invoke modules with "meta fetcher" capability if the
         item already has all metadata in terms of title, album, and artist.
      
       - We no longer invoke modules with "art finder" capability of the
         item already has vlc_meta_ArtworkUrl.
      
      fixes: #18150
      Signed-off-by: Hugo Beauzée-Luyssen's avatarHugo Beauzée-Luyssen <hugo@beauzee.fr>
      ea88b8d6
    • Filip Roséen's avatar
      playlist/preparser: refactor · 5c42881e
      Filip Roséen authored and Hugo Beauzée-Luyssen's avatar Hugo Beauzée-Luyssen committed
      
      
      This refactoring should not only allow for easier maintenance as the
      code size has shrunk, it also implements a few advantages over the
      previous implementation:
      
       - playlist_preparser_Cancel is now optionally blocking if the
         referred to item is currently being preparsed (required in cases
         where another action would race with the preparser, such as
         playback (as preparsing and playing an entity at the same time can
         lead to duplicate items in the playlist).
      
       - the congestion in terms of interacting with the preparser, and the
         preparsing itself, is lower. Meaning that we will finish a queue of
         items to preparse faster than with the old implementation.
      Signed-off-by: Hugo Beauzée-Luyssen's avatarHugo Beauzée-Luyssen <hugo@beauzee.fr>
      5c42881e
    • Filip Roséen's avatar
      playlist/background_worker: introduce background-worker utility · 537fd3b0
      Filip Roséen authored and Hugo Beauzée-Luyssen's avatar Hugo Beauzée-Luyssen committed
      
      
      This added utility will make it easier to handle a queue of tasks that
      is to be finished in the order received. It allows for users of the
      utility to focus on the end-goal instead of having to deal with
      synchronization issues in terms of task-queue handling.
      Signed-off-by: Hugo Beauzée-Luyssen's avatarHugo Beauzée-Luyssen <hugo@beauzee.fr>
      537fd3b0