Do not declare *_sys_t typedefs globally in vlc_common.h. Instead,
declare them locally in each module that provides a definition.
This paves the way to move C++ definitions into anonymous namespaces in
order to respect C++ ODR.
The picture_resource_t and sout_stream_id_sys_t typedefs will be handled
separately, since they require specific additional changes.
See #18033
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
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.
- This is needed for proper seek/pause/fast forward/...
- The decoder/packetizer do not need to scale packet length anymore as the
decoder thread do it.
* src/video_output/vout_subpictures.c: more correct cropping (cropping coordinates are relative to the video size, not subpicture size).
* include/vlc_es.h, modules/video_filter/blend.c: use the i_entries member of video_palette_t.
* include/vlc_common.h: added SetWBE()/SetDWBE()/SetQWBE() facility.
When you want to use OSD, you have to register an OSD channel, by calling
vout_RegisterOSDChannel, then pass it to vout_CreateSubPicture.
There is a particular channel, DEFAULT_CHANNEL that can be used for
general purpose.
See modules/control/hotkeys.c for an example.
- Removed all the RLE subtitle font code.
- Removed the .rle and even older .psf font files.
- Moved the filesubtitle code from spudec to subsdec.
- spudec is again DVD only.
include/video_output.h: added some members needed by text renderer modules
src/video_output/video_output.c: load and unload text renderer module when needed
src/video_output/video_text.c: implemented some functions to show text on the video
include/osd.h: exported the functions to show text
modules/misc/Modules.am, module/misc/freetype.c: new text renderer module, largly based on the old osdtext module.
modules/video_filter/Modules.am, modules/video_filter/osd_text.c: removed the osdtext module
configure.ac: changes "osdtext" to "freetype" some places
modules/codec/spudec/*: when iconv is available, use it to convert textual subtitles from the encoding given by --sub-encoding to utf8. Use new code to render subtitles
modules/control/lirc/lirc.c: use new code to give feedback on buttons pressed. untested.
modules/demux/util/sub.c: remove all traces of the ugly old osdtext module
modules/misc/dummy/*: added a "text renderer" submodule in the dummy module
src/misc/modules.c: included osd.h as it seems to be needed to export symbols
final notes: you need to give a proper value to --freetype-font. This should be the path to a font file freetype2 can handle (almost any format afaik) with a unicode translation table in it. Windows ttf files will do. In linux at least openoffice distributes some fonts that work. I think macosx and beos also has useable fonts.
functions.
* ./modules/demux/mpeg/audio.c: at least three PS startcodes are required
before we abort the parsing and consider the input as PS instead of MP3.
waveout, directx, qnx, beos, win32, macosx, and the AltiVec modules.
* ALL: removed mention of AC3 in favour of A52.
* ./configure.in, ./Makefile*: modules can now be built deeper than 1
directory. As a consequence, the build is even slower (but I'm fixing
this) and make clean doesn't work anymore.
* ./src/libvlc.c, ./include/vlc/vlc.h: created reentrant versions of the
libvlc API.
* ./src/vlc.c: vlc uses the non-reentrant libvlc functions.
* ./mozilla/vlcplugin.c: the mozilla plugin uses the reentrant functions.
* ./debian/*: created packages for libvlc0-dev.
As for video output 4, this breaks almost everything, but I'll slowly
do what remains to be fixed during the weekend.
Changes in vlc:
===============
* vlc is now a very small program (20 lines) which uses the libvlc API;
it is quite simple for the moment but can be extended in the future.
* interfaces, decoders, video outputs, etc. are now almost the same
objects (yes, I know, this is C++ redone in C) and are structured in
a tree. More about this later, but basically it allows the following
nice features:
- several interfaces
- several playlists with several outputs
- input plugins spawning helper interfaces (will be used for DVD menus)
- anything spawning anything; I swear there are useful uses for this!
* libvlc can be used in other programs; I'm currently writing a Mozilla
plugin for my employer.
Things currently broken:
========================
* most interfaces, most ports
* the playlist handling (almost finished rewriting this though). This means
no file can be played from the GUI, you need to use the commandline. This
also means it segfaults at EOF, when exiting the program, and it sometimes
refuses to open a file when asked to.
Voil� le changelog appoximatif :
. fichier INSTALL plus clair
. vir� quelques warnings
. *PATH sont maintenant d�finis dans config.h
. quelques fautes d'orthographe
. l'option --enable-ppro n'est pas mise par d�faut car elle ne fonctionne
pas sur un K6-2
. nouvelle API des plugins
. le client framebuffer ne d�truit plus la console quand on quitte
. r�paration de la YUV 8 bits
. mise des YUV en plugins
. transfo YUV 32bits MMX chour�e dans la libmpeg2
le flood, c'est la derni�re fois.
. apr�s le demoronifier, le GPLifier: il y a les ent�tes de la GPL dans
chaque fichier ; votre mission, si vous l'acceptez, est de mettre votre
nom dans chaque fichier qui est votre oeuvre ou auquel vous avez
particip�, pour qu'on sache qui a fait quoi. Pas de fausse modestie,
c'est plus pour des raisons pratiques que pour la gloire.
. rajout de -lthreads pour que �a linke sous Hurd
. rajout de quelques #include pour que �a compile sous FreeBSD
(d'ailleurs �a compile mais �a ne linke pas, je ne sais pas comment
linker avec la libpthread sur la machine de Dae)
. quelques #ifdef SYS_BSD �� et l�.