Re-license almost all the playback modules to LGPLv2.1+ with
authorization from their respective contributors (230+)
This includes:
- access, codec, packetizers, demux
- audio filters, audio mixers, audio output
- video filters, video chroma, video output
- text renderers
- XML parser
- ARM NEON and SSE2 optimisations (mostly for chromas and filters)
Some modules are not concerned:
- BDA and DShow access modules because Manol Manolov is AWOL
- Real RTSP, because it is derived from Xine
- x264 and t140 because they are encoders only
- DLL Loader, because it is derived from MPlayer
- DTS packetizer, because Jon Lech Johansen is AWOL
- Shine and WMAfixed, because they are derived from Rockbox
- Real demuxer, as it is derived from MPlayer and Wang Bo is AWOL
- MPC demuxer, as Yavor Doganov is AWOL
- Tivo demuxer, because it is derived from an MPlayer fork
- Playlist demuxer, (WPL and ZPL parts missing), because suheaven is AWOL
- iOS audio output and video display, because author refuses the license change
- Equalizer and compressor, because Ronald Wright is AWOL
- Mono, Headphone and Dolby, because author refuses the license change
- hqdn3d and yadif, because they are from MPlayer/libavfilter
- remoteosd, because it derives from RealVNC code
- MMX optimisations, because Ollie Lho, from SiS, is AWOL
- Rotate, because it depends on GPL motion
Nota Bene:
- Some modules depend on GPL-only libraries, a LGPL module does not mean
that the resulting binary module will be LGPL.
Libraries affected would include liba52, libdvdcss, libdvdnav, libdvdread,
faad2, libdca, libmad, libmpeg2, libpostproc, SRC, sid, zvbi and probably others.
The attribute name is valid until the next attribute or next node.
This simplifies the code a bit: fewer error paths, and free() calls.
A few potential memory leaks were fixed too.
It is behaving a little bit different from the libxml parser which has
caused weird bugs in the past. Anyway, everybody has libxml (I am
planning to write an Expat parser too but not there yet).
On windows,
- libxml2 spawns a 'watchdog' thread, when statically linked.
- libqt4 spawns a 'watcher' thread.
These threads clean up remaining ressources once their initiator thread has
terminated. So, the associated dll must NOT be freed explicitly and blindly.
Since there is no means to know when these 'cleanup' threads terminate,
the safe approach is to not free the dlls and let freeing occur when vlc
terminates.
Thread initialization has changed in 2.7, such that VLC and Qt4 cannot
both use libxml2. While this maximum version requirement is bound to
frustrate Linux/BSD users, we cannot fix this within VLC. Falling back
to xtag is not quite as bad as crashing.
declare unused parameters in callbacks as void
use size_t
xml/xtag.c: comment dead code
freetype: use mdate() instead of time(), remove unused parameter from UnderlineGlyphYUVA()
notify/growl: factorize NotifyGrowl()
Missing some cases that I could not test.
Also ffmpeg/chroma.c is locked, so I can but leave it broken.
Fix is for the remaining modules is obvious and the issue is easy to detect.