* ./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.
* All intf_*Msg functions now write to stderr.
* Implemented a message queue interface plugins can subscribe to.
* Wrote the logger interface plugin. Usage:
vlc -I logger:filename.log
* Lots of fixes in the SPU renderer.
the chroma_i420_ymga module instead. This introduces a slight
performance issue as we now need to memcpy() the Y plane, but I have
some vout4 enhancements on their way which make this point moot.
* ./debian/changelog: imported official Debian changelog.
* ./debian/control: activated the vlc-mad and vlc-arts packages; package
builds should now work again.
* ./plugins/dvd/dvd.c: solved a symbol resolution issue when vlc was
compiled without libdvdcss which overflowed the return stack.
* ./plugins/ggi/ggi.c: ported the GGI plugin to vout4.
* ./plugins/glide/glide.c: ported the Glide plugin to vout4 (untested).
* ./src/input/input.c: prepared everything for multi-input mode; since
no interface is yet prepared to handle this, I changed them so that
they just use the first available input for now. This may break other
things, but I promise I'll eventually repair everything :-)
* Removed duplicate function checks from configure.in.
* Added extra magic to Makefile.modules so that the module Makefiles
are now ridiculously simple. And I mean *simple*. Check it! This will
make a possible switch to full autoconf/automake a lot easier.
* Added the vlc version name to the plugin symbols, to be sure we only load
plugins with the same version number. A nasty consequence is that you
need to rebuild your tree after midnight if you are using a CVS tree :-)
* Got rid of modules_export.h by #defining exported functions in the same
header as their prototype.
* Added modules_inner.h and other commonly used .h files to common.h so
there are less and less files to include, and renamed common.h to
<videolan/vlc.h>.
* First modifications to the module handling system towards my ultimate
goal to get rid of the *_Probe functions. Got rid of TestMethod and
TestCPU, as well as src/misc/tests.c.
* Wrote the chroma plugin handling functions. No YUV functions have been
ported yet because it'ls a lot of work, but the core system works, I
tried it with a naive yv12->rgb16 plugin (which will disappear when the
real functions are ready).
* Made a lot of functions in dvd_summary.c one-liners to avoid wasting
too many output lines.
* Fixed a segfault in input_dvd.c:DVDInit.
* Added a fixfiles.sh script in plugins/gtk to be run after Glade has
generated its C files.
* Did some work on the KDE interface to make it suck a bit less. It still
segfaults, but at least it runs and it looks less ugly.
* RGB SDL rendering works again, though in 16bpp only.
* Made plugins/vcd/linux_cdrom_tools.c independent of any vlc structure
so that it'll be easily put in a library. Maybe libdvdcss?
* Fixed VCD date display.
* Merged vout_xvideo.c, vout_x11.c and vout_common.c into xcommon.c.
* Wrote non-Shm XVideo output.
* Made X11 output work again. Still pretty unstable, only works for 16bpp.
* Additional french translation in po/fr.po. Any taker for the rest?
* Fixed a segfault in video_output.c when the allocated pictures were
not direct buffers.
* If $DISPLAY isn't set, don't try to run the Gtk+ interface.
* Replaced 48x48 .xpm images with 32x32 ones to conform to Debian policy
(Closes Debian bug #126939).
* Removed the automatic ./configure launch when running `make all' for
the first time.
Stuff currently more broken than it ought to be:
* The wall filter. Being fixed.
* x11 and sdl plugins for depth != 16bpp.
* Software YUV.
* gvlc, gnome-vlc, kvlc shortcuts. Use --intf instead for the moment.
* Updated config.guess and config.sub from GNU's latest versions (bozo,
you may want to update them in vls as well).
* Added vlc.pot skeleton for translators.
for my nevrotic and destructive pulsions during the next few hours!
* If you want to test vlc, please use the v0_2_92_branch branch.
* Stuff currently working:
- direct to YUV buffer decoding
- non-ugly subtitle blending
- XVideo and SDL video output
* Stuff currently utterly broken:
- aspect ratio
- software rendering (ie, all other video output plugins)
* Additional misc changes:
- Renamed spu_dec to spudec and mad_adec to mad to stay coherent with
other plugins. Also, renamed mpeg to mpeg_system.
- Added jobi to the AUTHORS file.
- Factored code common to vout_x11.c and vout_xvideo.c.
* Fixes to aout_darwin.c by Colin Delacroix <colin@zoy.org>.
* Fixes to configure.in, Makefile.in and main.c (Altivec detection)
by Eugenio Jarosiewicz <ej0@cise.ufl.edu>.
* Added Colin and Eugenio to the AUTHORS file.
---------------------------
* Plugins have completely disappeared, we now only use the new module API.
* All intf and vout modules are now independant. So far, only the Gnome
intf module and the SDL vout module have been ported. configure.in has
been modified to reflect the changes (x11 and dummy aren't compiled by
default anymore, while SDL and Gnome are).
Note that this is _not_ Interface II, it's just a step forward. For
instance, it lacks the whole message passing scheme.
Things that should work:
* Right-clicking on the SDL video output window brings the Gnome menu.
* Pause, Play, Exit, About work from the menu or from the interface window.
* The old SDL keys still work.
Things that are broken or may be broken:
* Xlib calls are not locked yet, which may lead to "Unexpected async reply"
errors, and make the vlc segfault.
* Sound only works for the first file.
* The SDL vout_sdl.c file is absolutely ugly and kludgey.
* The vlc immediately quits when no filename is given as an argument. Not
a real bug, but still annoying.
* The Gnome menu does not work in fullscreen mode.
Things that will come soon, maybe tomorrow:
* Complete navigation buttons (fast forward, slow, etc.).
* File/Open menu to add files to the playlist.
* Return of the X11 video output for those of us who do not have SDL.
* Textmode interface for those of us who do not have Gnome.
* aout and vout autospawn (maybe).
* --enable-sdl and some others are now --with-sdl[=name] to supply an
optional library name ;
* deleted all unnecessary #include <sys/uio.h> ;
* /usr/include is now searched when looking for libraries and headers.
It seems to compile and run on BSD. Under Linux Sam's latest commit makes
vlc crash on startup, so I can't really tell, but hey it compiles.
intf_WarnMsgImm
.on active les messages de warning au lancement avec l'option --warning
.le i_level par d�fault est 12 (on ne montre pas les messages de niveau
inf�rieur � 12
J'esp�re que �a correspond � ce qui a �t� discut� dans videolan-devel.
Some news things:
. I am still going on modifiying the key event handling method to make it more flexible. I still have a few things to get what I'd like to
. added a keystrokes.h include which contains a generic name of all the VLC keys binding
. modified some of the core interface routines to allow the passing of an extra parameter with a keystroke (VLC_CHANNEL).
. next step: move all the interface dependent parts (such as the getKey function) to the plugins.
Hope this will run on your boxes...
. The interface part:
. created intf_AssignKey, intf_getKey and intf_AssignNormalKeys
these new function are a first abstraction of the the key handling system. It makes use of a new structure in the interface : p_keys.
. AssignNormalKeys is commonly used in all the interface plugins.
AssignKey is used to allow the SDL interface to react nicely.
. Now the plugin struct element psz_filename is filled (and freed
at the end of the program).
. the SDL plugin:
works but does only display a green screen for now. so don't use it !
. Please try and compile the client on your box with this version.
I've tried a few output plugin but not all.
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
- r�indentation de quelques bouts de code
- les plugins vont �tre cherch�s en priorit� dans . puis ./plugins
puis dans le r�pertoire habituel
- d�but de communication entre le thread gnome et l'input
- l'interface gnome ne segfaulte plus en sortant
- le menu "Exit" fonctionne
10 avril:
- fen�tre Gnome au lieu de fen�tre Gtk
*** ATTENTION *** l'interface Gnome n'est vraiment qu'un d�but, soyez
gentils de ne pas faire de bug report si un bouton ne fonctionne pas.
- popup "About"
11 avril:
- fen�tre playlist (rien dedans encore)
- masquage du pointeur souris
- popup menu dans la fen�tre vout
- hide/show des fen�tres playlist
- les boutons "Exit" fonctionnent quel que soit le menu
12 avril:
- d�but du cassage des channels
- d�but des menus g�n�r�s en runtime
13 avril:
- ajout du target "snapshot" dans le makefile
14 avril:
- d�codage de tous les sous-titres connus
- spu_decoder.c ne segfaulte plus quand on quitte
- rajout du flag b_active dans la structure audio_decoder
- le bouton pause fonctionne
r�organiser les headers pour que ce soient les headers les plus proches
du syst�me qui se retrouvent en premier (threads.h devrait toujours �tre
le premier des headers non syst�mes). J'ai du aussi rajouter un type
plugin_id_t et par la m�me occasion inclure plugins.h dans la plupart
des fichiers. Voici en vrac les modifs les plus importantes que j'ai op�r�:
o L�g�re r�organisation pour les raisons �voqu�es ci-dessus (certaines
macros comme MIN et MAX peuvent �tre d�j� d�finies par le syst�me et
interf�rer avec celles d�finies dans common.h ou autre)
o Dans intf_msg j'ai du remplacer les vasprintf par des vsprintf
dans le cas o� ARCH=BEOS.
o la commande hostname du Makefile n'�tait pas compatible et je
l'ai donc enlev�, en avons-nous besoin ? Auquel cas il suffit de
rajouter un ifeq.
o J'ai aussi remplac� les bzero et bcopy par memset et memmove.
o plugin.c, mtime.c et threads.h et quelques fichiers de l'input
ont �t� adapt�s � BeOS � grand coup de #ifdef SYS_*.
TODO:
o Ecrire intf_beos.cpp, vout_beos.cpp et aout_beos.cpp
Je suis sous linux et je viens de tester le client qui marche tr�s
bien, mais il est n�anmoins possible que j'ai introduit quelques
probl�mes de compilations pour certains modules, si c'est le cas
pr�venez moi.
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�.
utilisation: c'est tout con, �a marche comme avant. pour le moment
il n'y a pas de v�rification des symboles mais �a viendra.
seule restriction, il faut �tre dans le r�pertoire vlc quand on lance
le client, parce que le chemin des plugins est relatif, mais �a aussi
�a va changer.
le Makefile devient pas tr�s beau, il faudra songer � passer � automake
. *3dfx* devient *glide*
. suppression de tabulations dans quelques fichiers
. suppression des 2 warnings dans sam_synchro
. video_* devient vout_* quand ce sont des m�thodes de vout
. tentative de correction de la d�tection de MMX pour BeOS
. nouvelle option vlc_vout_method (faute de mieux pour le moment)
. modification du Makefile pour supporter plusieurs VIDEO_*
dor�navant on peut compiler plusieurs output diff�rents dans le
client. la pr�f�rence se fait dans l'ordre x11, fb, ggi, glide...
si on le compile avec x11 et fb, par d�faut il se lancera en X.
pour le lancer en framebuffer :
./vlc vlc_vout_method=fb
(il faut que je proprifie un peu le choix de l'output, et que je
facilite l'ajout d'un nouveau vout_*)
D�sol� pour le flood. Les en-t�tes de fonctions ne font plus 81
caract�res, et il n'y a plus d'espaces inutiles, Tous les trailing
spaces ont disparu, j'ai essay� de v�rifier que �a ne p�tait rien,
mais j'ai pu oublier un truc con. J'accepte tous types de ch�timents
� base d'orties fra�ches.
D�sol� d'avoir aussi modifi� les fichiers de ceux qui formataient
bien proprement leurs en-t�tes � 80 et pas 79 sans emb�ter personne,
mais j'ai d� choisir entre les deux.
Dor�navant ce serait bien de formater les en-t�tes et les commentaires
justifi�s � droite � 79 colonnes, ou au pire � 80.
. 1343 moronic long lines destroyed
. 12893 trailing spaces eradicated
. 115 ugly macros fixed
. 959 innocent a_bit_long lines shortened
But hey, 40054 lines were OK !
Toutes les r�f�rences aux pthread que ce soit les thread, les mutex ou
les variables conditionnelles, ont �t� remplac�es par leur �quivalent
vlc_thread. Les vlc_thread sont une version tr�s simplifi�e des pthread et
fonctionnent exactement de la m�me fa�on. Ceci devrait grandement faciliter
le portage vers d'autres OS.
Polux