* Built-in modules support almost finished.
Now you can compile any module within vlc, even the Gnome, Qt, SDL
and GGI modules at the same time, resulting in an awful extra fat
vlc binary with gazillons of library dependecies.
The only exception is that the Gnome and Gtk+ modules can't be
compiled together into vlc. But you can have one compiled built-in
and the other as a plugin.
Another consequence is that libdl should no longer be needed under
MacOS X. I'll check this as soon as possible.
A few words about the changes:
- heavy Makefile butchery has taken place, each plugin now has its own
Makefile. I know recursive make blablah harmful, but it was just so
much easier to do this way.
- Makefile.in has disappeared, we now generate Makefile.opts with
the overall configuration options, and Makefile.modules which is
specific to module compilation.
- After ./configure has been run you may want to modify Makefile.opts
to check which modules will be compiled built-in or as plugins.
- Some modules cannot be compiled built-in right now because proper
linkage doesn't work yet. We don't really care since they're the
interface or video output modules. The most important stuff works
(iDCT, motion, YUV, input).
- It's perfectly valid to compile a module both as built-in and as a
plugin. vlc will only load the built-in one, but I'll add an option
to ignore built-in modules for testing purposes.
- We *should* see a performance increase here. I didn't have much time
to test it, but if anyone can confirm and perhaps give a rough
estimate of how much we gain...
separation de ce qui est specifique videolan et de ce qui est generique.
Je compte encore bidouiller pas mal la partie generique, mais deja la ca
marche donc...
top scripts de tibob.
. suppression de Makefile
. rajout de include/defs.h.in qui g�n�re include/defs.h
pour g�n�rer le Makefile et defs.h il faut lancer ./configure
pour ceux qui voudraient toucher � configure.in, "include/defs.h.in" est
g�n�r� par la commande autoheader, et "configure" est g�n�r� par autoconf
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.
- les d�pendances sont cach�es dans .deps/ au lieu de deps/
- suppression d'encore quelques #include inutiles.
- la gestion des plugins est maintenant encapsul�e dans misc/plugin.c
un peu comme les threads, pour faciliter le portage.
- l�ger remaniement de l'output pour --help et --version
- les p_ts_packet sont cast�s en (void *) pour �viter un warning sous
certaines architectures.
- ajout de la GPL dans un fichier COPYING
- fichier README avec rien dedans pour le moment, � part la liste de
toutes les personnes ayant particip� au projet. J'en ai *forc�ment*
oubli� certains, alors si vous avez un nom, rajoutez-le. de m�me, s'il
y a un gros con que j'ai mis par erreur dans la liste et qui n'a jamais
rien fait pour le projet, n'h�sitez pas � le supprimer sournoisement.
- fichier AUTHORS avec la liste des gens ayant boss� sur le client. j'ai
mis toutes les personnes ayant fait au moins un commit, ainsi que Henri
parce que je sais qu'il bosse sur l'audio, et HPReg, Steve et Oli parce
qu'ils ont boss� dessus aussi. Par contre ici aussi j'ai fort probable-
ment oubli� des gens. Corrigez !
- r�pertoire debian/ qui servira � cr�er des packages
- rajout d'une entr�e pour faire `make install' (pas encore parfait)
- nom de code de la future release 0.2 : `Onatopp' :)
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�.
. rajout de #ifdef SYS_LINUX autour du code concernant les interfaces
. suppression de quelques #include <sys/soundcard.h> qui trainaient encore
. option PPRO dans le Makefile (si vous avez des erreurs
'Illegal instruction', �a venait probablement de l�)
. rajout de quelques commentaires pour expliquer en quoi certains #include
sont n�cessaires, aux endroits o� je ne comprenais pas, et suppression
de #include qui semblaient inutiles.
vdec_motion_inner contient le code plus ou moins bourin qui calcule les pixels
(je pense que c'est la que la majorite du temps est ecoulee, et qu'il y aurait
eventuellement un avantage a rechercher des optimisations particulieres pour
ce fichier, genre debouclage de boucles ou quelque chose du genre)
Le code dans vdec_motion contient quand a lui des tests sur le type exact
de prediction a effectuer, des calculs de pointeurs en fonction des motion
vectors, et les appels a vdec_motion_inner.
La fonction MotionComponent de vdec_motion a ete modifiee pour appeler
directement la bonne fonction de vdec_motion_inner en fonction des parametres.
La encore en raison de la gestion d'inlines faite a la compilation, pour chaque
appel les parametres i_width, i_height et b_average sont deja connus et
donc l'appel de MotionComponent devrait s'etendre a un simple switch (i_select)
et un appel de la fonction correspondante dans vdec_motion_inner.
Le code dans vdec_motion presente toujours une apparence contestable mais
je n'ai pas modifie son fonctionnement (seulement la fonction MotionComponent).
. 11 moronic long lines destroyed
. 1282 trailing spaces eradicated
. 4 ugly macros fixed
. 5 innocent a_bit_long lines shortened
. 5987 tabulations transform�es en espaces
. 153 '??' transform�s en 'XXX??' ou 'FIXME??'
(ptyx, j'esp�re que ce compromis te convient)
. commentaires en // corrig�s en /* */
(je parle bien des commentaires, pas des morceaux de code
mis en // comme les printf de debug par exemple)
Au passage :
. version du vlc modifi�e en 0.1.99 (la release sera la 0.2.0)
. suppression de video_x11.h
. correction d'un warning dans intf_ctrl.c
videolan (ac3_decoder_thread) et de ce qui ne l'est pas. Ce n'est pas encore
ideal, la partie "videolan" fait des inits a l'interieur de la partie
"ac3"... il faudra que je fasse une belle interface pour ca.
Le probleme des includes n'est pas non plus regle, mais c'est a cause des
bit_streams :) patience.
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
Bon ben voila, j'ai commence a bouger les .h comme je voulais le faire...
C'est encore un peu le bordel et j'en suis desole. Mais je compte bien
deplacer des trucs jusqu'a ce que ca soit a nouveau bien range :)
d'erreur qui sont affich�s sur stderr vous donnerons une bonne id�e du nombres
d'occasions de planter qui se pr�sentent au client.
J'ai aussi remis le flag DEBUG � 1 et commenter omit-frame-pointer pour que
tout le monde puisse avoir la chance de participer � la chasse aux segfaults
avec son gdb. Les bugs report sont le bienvenu (surtout si c pour l'audio ;).
lors de la lecture d'un octet n'est plus inline. Precedemment le code etait
inclus a chaque invocation de NeedBits ou GetBits...
Vu l'etat de la synchro je n'ai pas pu mesurer d'impact precis sur les fps
mais je ne m'attends pas a ce qu'il soit mesurable de toute facon : on troque
un apel de fonction contre un meilleur comportement du cache code...
Premier checkin de ma part, mais il devrait en venir d'autres.
d�finie une api pour la gestion de plus de 2 voies, qui de toute fa�on
est loin d'�tre une priorit�. je dirais m�me qu'on s'en fout.
o argument suppl�mentaire pour GetBufInfo() pour que la m�thode dummy
attende un temps convenable, et correction de aout_dummy.c
o le test sur la variable DEBUG dans config.h est maintenant conforme
� ce que dit le Makefile.
o suppression d'une variable inutile dans intf_fb.c
o --long-help devient --longhelp comme dans mpg123
o version du programme arbitrairement mise � 0.95.0
o commentaire d'une variable inutilis�e dans Synchronize (video_output.c)
o correction du "LIN" en "LIB" dans le Makefile, qui doit tra�ner l�
depuis des si�cles
o proprification de quelques routines du Makefile
le code de s�lection de m�thode audio/video est loin d'�tre propre, je
dirais m�me que c'est du gros caca, mais j'y bosse.
bonne nuit,
o correction d'une typo d�bile dans audio_output au commit pr�c�dent
o b_stereo est remplac� par i_channels
o suppression de la structure aout_dsp_t dont les membres d�pendant
de l'output se retrouve dans aout_*_sys_t, et les autres directement
dans aout_thread_t, on se fait pas chier.
. nettoyage du code de gestion des m�thodes vout
. nouvelle option --vout
. pr�paration de l'�clatage de l'audio output comme �a a �t�
fait avec le vout.
. nouvelle commande --long-help
La s�lection de la m�thode vout est encore plus simple. Pour s�lectionner
le framebuffer par exemple : "vlc --vout fb". Par d�faut, X11 est choisi.
. *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_*)
. le premier qui se marre gagne le droit de venir voir comment ma 3dfx1
fait l'overlay, le scaling et la YUV en hard (nan je d�conne, elle fait
rien de tout �a, et en plus �a rame).
calcul de la taille optimale d'une image, scaling.
-Le scaling donne de bonnes tailles, mais les conversions YUV ne peuvent
pas suivre pour le moment.
-J'ai peut etre un peu cass� le fb et ggi (trop long � compiler pour tester).
En cas de probl�me, je corrige de suite.
-Les idle screens ("no stream") sont temporairement hors service.
- impl�mentation de la synkro (qui punit m�chant) ;
* audio_decoder/audio_decoder.c, ac3_decoder/ac3_decoder.c :
- rajout de vlc_cond_signal() afin de pr�venir l'audio_output que de
nouveaux samples ont �t� d�cod�s ;
* Makefile :
- rajout de l'options de compilation -g ;
- utilisation du old decoder (synkro) ;
* include/config.h :
- suppression des messages de debug ;
* Utilisation de la mmx pour la dct si l'architechture s'y pr�te
(modif de Makefile et vdec_idct)
* idctmmx.S avec une forme d'appel identique a vdec_idct a ete ajoute a
video_decoder.
- DECODER=old et non DECODER=new ;
* include/ac3_decoder.h :
- rajout, dans la structure ac3dec_thread_t, du membre b_invalid (utilis�
pour skipper une frame ac3 invalide) ;
* ac3_decoder/ac3_decoder.c :
- rajout du support de b_invalid ;
* ac3_decoder/ac3_exponent.c :
- optimisations ;
* ac3_decoder/ac3_mantissa.c :
- d�tection d'une mantisse invalide et m�j de b_invalid ;
* audio_output/audio_output.c :
- resynkro en cas de bouclage du flux ;