1. 15 Jun, 2017 1 commit
  2. 01 Jul, 2015 2 commits
    • Rémi Denis-Courmont's avatar
      interrupt: add replacement for vlc_object_alive() · ebb675de
      Rémi Denis-Courmont authored
      There are still many cases where waking up the thread sleeping is only
      half of the problem and waking it up half of the solution. For instance,
      the net_* and stream_* I/O functions have no ways to return a non-fatal
      error.
      ebb675de
    • Rémi Denis-Courmont's avatar
      input: add per-thread sleep interruption framework · 2d099490
      Rémi Denis-Courmont authored
      For the sake of simplicity and for historical reasons, access and demux
      modules perform I/O in blocking mode. If no data is available (or more
      generally no I/O events), the blocking I/O calls will sleep and hold
      the whole input thread. This can lead to long time-outs or even
      complete deadlocks, e.g. notably in case of network error.
      
      Originally, a volatile flag (b_die) was checked at frequent interval to
      ascertain whether to abort. This violated the threaded memory model,
      and was incompatible with race-to-idle power management.
      
      In 2007, the VLC object thread signaling functions were introduced
      (vlc_object_wait, vlc_object_signal, ...) in an attempt to solve this.
      They proved inflexible and were not compatible with poll/select-style
      I/O events multiplexing. Those functions were ultimately removed a
      little over a year later.
      
      In the mean time, the "wait pipe" had been introduced. It was focused
      on network/socket data reception. While it continues to be used, it
      suffers several limitations:
       - it affects other threads using the same VLC object,
         and indistinctly disrupts all I/O after the "kill",
       - it incorrectly assumes that the same VLC object is used everywhere
         (leading to race conditions and live loops),
       - the convenience wrappers around the wait pipe can only wait on one
         single I/O event direction on a single file descriptor at a time,
       - it is currently tied to the VLC input thread.
      
      Also at about the same time, thread cancellation was reintroduced.
      Thread cancellation has proven helpful for simple thread main loops.
      But it ranges from impractical to unusable when sleeping deep within
      layers of code, such as in access and stream modules.
      
      Generally the problem of interrupting I/O is an intractable halting
      problem. And in practice a given reading operations inside a demuxer
      cannot be interrupted without breaking the state machine of the
      demuxer - in many or most cases. This changes set is only an attempt
      to complement thread cancellation, This does overcome most limitations
      of the existing "wait pipe" system and of former VLC object signals:
      
       - It is triggered by a function call specifying a target context.
       The context is tied to the thread that needs to be woken up from
       sleep. This works quite well because the problem essentially relates
       to the call flow of the sleeping thread. On the trigger side, this is
       similar to thread cancellation.
      
       - It leaves some flexibility w.r.t. choice of sleeping primitives.
       This initial change uses semaphores. Low-level file I/O will be
       introduced later.
      
       - The wake-up mechanism is edge-triggered and can be fired multiple
       times. Thus it does not irreversibly prevent all I/O and sleeping
       operations once fired. It only interrupts the ongoing or next sleep.
       In principles non-fatal interruptions could be handled that way, for
       instance input thread seek (rather than forceful stop) although that
       is not part of the changes set.
      
       - It is not tied to any specific event. The initial use case is
       stopping the input thread and checking vlc_object_alive() but it can
       be used for other purposes.
      2d099490
  3. 05 Jun, 2013 1 commit
  4. 02 Sep, 2012 1 commit
  5. 27 Nov, 2011 1 commit
    • Jean-Baptiste Kempf's avatar
      LGPL · 36ab287e
      Jean-Baptiste Kempf authored
      Re-license almost all of libVLC and libVLCcore to LGPLv2.1+
      
      This move was authorized by the developers, either:
       - by e-mail,
       - by vote at the VideoLAN Dev Days 2011,
       - on the license website,
       - in a contract, oral or written.
      No objection was raised, so far.
      
      The developers agreeing are:
        Justus Piater
        Alexis Ballier
        Alexander Bethke
        Mohammed Adnène Trojette
        Alex Converse
        Alexey Sokolov
        Alexis de Lattre
        Andre Pang
        Anthony Loiseau
        Cyril Deguet
        André Weber
        Boris Dorès
        Brieuc Jeunhomme
        Benjamin Drung
        Hugo Beauzée-Luyssen
        Benoit Steiner
        Benjamin Pracht
        Bernie Purcell
        Przemyslaw Fiala
        Arnaud de Bossoreille de Ribou
        Brad Smith
        Nick Briggs
        Christopher Rath
        Christophe Courtaut
        Christopher Mueller
        Clement Chesnin
        Andres Krapf
        Damien Fouilleul
        David Flynn
        Sebastien Zwickert
        Antoine Cellerier
        Jérôme Decoodt
        Jérome Decoodt
        Dylan Yudaken
        Eduard Babayan
        Eugenio Jarosiewicz
        Elliot Murphy
        Eric Petit
        Erwan Tulou
        Etienne Membrives
        Ludovic Fauvet
        Fabio Ritrovato
        Tobias Güntner
        Jakub Wieczorek
        Frédéric Crozat
        Francois Cartegnie
        Laurent Aimar
        Florian G. Pflug
        Felix Paul Kühne
        Frank Enderle
        Rafaël Carré
        Simon Latapie
        Gildas Bazin
        Geoffroy Couprie
        Julien / Gellule
        Gildas Bazin
        Arnaud Schauly
        Toralf Niebuhr
        Vicente Jimenez Aguilar
        Derk-Jan Hartman
        Henri Fallon
        Ilkka Ollakka
        Olivier Teulière
        Rémi Duraffort
        Jakob Leben
        Jean-Baptiste Kempf
        Jean-Paul Saman
        Jean-Philippe Grimaldi
        Jean-François Massol
        Gaël Hendryckx
        Jakob Leben
        Jean-Marc Dressler
        Jai Menon
        Johan Bilien
        Johann Ransay
        Joris van Rooij
        JP Dinger
        Jean-Philippe André
        Adrien Grand
        Juha Jeronen
        Juho Vähä-Herttua
        Kaarlo Raiha
        Kaarlo Raiha
        Kamil Baldyga
        Keary Griffin
        Ken Self
        KO Myung-Hun
        Pierre Ynard
        Filippo Carone
        Loïc Minier
        Luca Barbato
        Lucas C. Villa Real
        Lukas Durfina
        Adrien Maglo
        Marc Ariberti
        Mark Lee
        Mark Moriarty
        Martin Storsjö
        Christophe Massiot
        Michel Kaempf
        Marian Ďurkovič
        Mirsal Ennaime
        Carlo Calabrò
        Damien Lucas
        Naohiro Koriyama
        Basos G
        Pierre Baillet
        Vincent Penquerc'h
        Olivier Aubert
        Pankaj Yadav
        Paul Corke
        Pierre d'Herbemont
        Philippe Morin
        Antoine Lejeune
        Michael Ploujnikov
        Jean-Marc Dressler
        Michael Hanselmann
        Rafaël Carré
        Ramiro Polla
        Rémi Denis-Courmont
        Renaud Dartus
        Richard Shepherd
        Faustino Osuna
        Arnaud Vallat
        Rob Jonson
        Robert Jedrzejczyk
        Steve Lhomme
        Rocky Bernstein
        Romain Goyet
        Rov Juvano
        Sam Hocevar
        Martin T. H. Sandsmark
        Sebastian Birk
        Sébastien Escudier
        Vincent Seguin
        Fabio Ritrovato
        Sigmund Augdal Helberg
        Casian Andrei
        Srikanth Raju
        Hannes Domani
        Stéphane Borel
        Stephan Krempel
        Stephan Assmus
        Tony Castley
        Pavlov Konstantin
        Eric Petit
        Tanguy Krotoff
        Dennis van Amerongen
        Michel Lespinasse
        Can Wu
        Xavier Marchesini
        Sébastien Toque
        Christophe Mutricy
        Yoann Peronneau
        Yohann Martineau
        Yuval Tze
        Scott Caudle
        Clément Stenac
      
      It is possible, that some minor piece of code was badly tracked, for
      some reasons (SVN, mainly) or that some small developers did not answer.
      However, as an "œuvre collective", defined as in "CPI 113-2 alinéa 3",
      and seeing "Cour. Cass. 17 Mai 1978", and seeing that the editor and
      the very vast majority of developers have agreed (> 99.99% of the code,
      > 99% of developers), we are fine here.
      36ab287e
  6. 04 Oct, 2011 1 commit
  7. 21 Jun, 2011 1 commit
  8. 18 Jun, 2011 1 commit
  9. 03 Apr, 2011 1 commit
  10. 11 Jan, 2011 1 commit
  11. 10 Jan, 2011 2 commits
  12. 14 Apr, 2010 1 commit
  13. 17 Oct, 2009 1 commit
  14. 12 Mar, 2009 1 commit
    • Rémi Denis-Courmont's avatar
      Add a centralized avcodec lock · 6f037fa4
      Rémi Denis-Courmont authored
      avcodec is used from at least three different plugins: avcodec,
      switcher (which seems dead though) and indirectly in avformat. We need
      to have a common interlock for all of these.
      6f037fa4
  15. 12 Jan, 2006 1 commit
  16. 09 Jul, 2005 1 commit
  17. 08 Jul, 2005 1 commit
  18. 09 Jan, 2005 1 commit
  19. 22 Dec, 2004 1 commit
  20. 05 Jan, 2004 1 commit
  21. 03 Jan, 2004 1 commit
    • Cyril Deguet's avatar
      * all: brand new skins interface ( still _experimental_) for x11 and · b7dc5e88
      Cyril Deguet authored
        win32, by ipkiss and myself...
       Among the features:
       - framework rewritten from scratch, heavily based on design patterns
        => new controls can be (hopefully) created more easily, portability
        to other OS is better, and the interface is less dependant from
        the vlc core
       - new concept of "layout", to provide a window with several different
        views (as in winamp3 skins)
       - controls can now be placed at a relative position to the edges of
        a window, which allow controls and layouts to be resizable (e.g
        for the playlist window)
       - Use of libpng and libfreetype2 for better portability between x11 and
         win32 => ttf fonts and antialiasing
       - New DTD for the xml theme ( *it will probably change again* )
       - Very very beginning of scripting in the xml file
       - And many things I miss
       - And probably many bugs ;)
      b7dc5e88
  22. 28 Dec, 2003 2 commits
  23. 27 Dec, 2003 1 commit
  24. 26 Dec, 2003 1 commit
  25. 22 Dec, 2003 1 commit
  26. 08 Dec, 2003 1 commit
  27. 07 Dec, 2003 1 commit