* New NextPTS() function, to replace CurrentPTS() (gives the PTS which will
be valid for NEXT byte).
* Fixed mono mode in the builtin mpeg audio decoder.
* Various fixes related to PTS calculation in audio decoders.
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.
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.
now be included *before* threads.h ;
* Changed all files to include intf_msg.h before threads.h ; while I was
at it, I update the copyright notices ;
* Removed the obsolete darwin plug-in.
. fixed audio syncword detection for mpeg 1 streams (hopefully)
FIXME: can anyone confirm we can get rid of adec_byte_stream_next
in audio_decoder_thread.c now that we have the new input ?
. fixed Layer 2 Mono decoding.
FIXME: who created freq_table ? what was the rationale for it, and
where does it come from ?
FIXME: how can we spare the extra DCT in audio_decoder.c:707 ? I'm too
tired to think about it.
. proposal: splitting audio_decoder.c in one file per layer.
* support du layer 1 mono et stereo
* support du layer 2 stereo (j'ai pas encore fait le mono)
* support des low bitrates proposes par le mpeg2 (non teste)
* passage des tests de compliance mpeg :)
* moins de macros qu'avant, mais je dois encore propriser un peu le code.
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.
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.
. 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
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.
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 !
- suppression des `#ifdef AC3_SIGSEGV' ;
- correction d'un bug de la fonction `InitThread()' (scotchage �
l'initialisation du d�codeur AC3 dans certaines conditions tr�s
particuli�res) ;
- support du bool�en `b_invalid' permettant de d�tecter des frames
suppos�es invalides ;
* ac3_decoder/ac3_exponent.c :
- suppression des `#ifdef AC3_SIGSEGV' ;
- d�tection des frames invalides et support du bool�en `b_invalid' ;
* ac3_decoder/ac3_mantissa.c :
- suppression des `#ifdef AC3_SIGSEGV' ;
- d�tection des frames invalides et support du bool�en `b_invalid' ;
- optimisation de la fonction `mantissa_unpack()' ;
* audio_decoder/audio_decoder.c :
- correction d'un bug de la fonction `InitThread()' (scotchage �
l'initialisation du d�codeur MPEG2 dans certaines conditions tr�s
particuli�res) ;
* include/ac3_decoder.h :
- suppression du `#define AC3_SIGSEGV' ;
* include/vpar_synchro.h :
- d�claration explicite de la fonction `vpar_SynchroKludge()' lorsque
`SAM_SYNCHRO' n'est pas activ�e ;
* interface/intf_ctrl.c :
- initialisation � `-1' des variables `i_input' et `i_pid' de la
fonction `SelectPID()' ;
* video_output/video_yuv.c :
- mise en commentaire de la fonction inutilis�e `yuvToRgb24()' ;
* video_parser/video_parser.c :
- int�gration du patch propos� dans videolan-devel ;
* video_parser/vpar_blocks.c :
- int�gration du patch propos� dans videolan-devel ;
NdlR : apu warnings � la compilation :-)
* ce commit devrait corriger les probl�mes de fermeture du vlc, commentaires
souhait�s (et obligatoires) ;
* le probl�me de la synkro initiale de l'audio devrait �tre corrig� : reports
souhait�s (et obligatoires) gr�ce aux messages "aout debug" ;
* en clair FAITES PETER UN MAIL avec vos messages "aout debug" et vos coups
de gueule/coups de coeur quant � la fermeture du vlc ;-)
* ac3_decoder/ac3_decoder.c, audio_decoder/audio_decoder.c :
- rajout d'un msleep() en d�but de fonction RunThread() afin de
contrebalancer le d�lai entre la r�ception d'un paquet TS et la
pr�sentation de son contenu (INPUT_PTS_DELAY) ;
- rajout d'un cond_signal() dans la fonction EndThread() ;
* audio_output/audio_output.c :
- activation des messages de debug ;
- r��criture de la fonction NextFrame() ;
- 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 ;
- correction d'un bug dans la fonction d'initialisation des d�codeurs
(freeze lorsqu'aucun paquet PES n'est envoy� aux d�codeurs) ;
* audio_output/audio_output.c :
- correction d'un bug dans l'initialisation du flag b_die des fifos des
d�codeurs ;
- correction d'un bug dans la lecture des flags b_die des fifos des
d�codeurs (les fifos n'�taient pas d�truites avant la mort du thread
audio_output) ;
- rajout de l'option de compilation qui marche bien -fomit-frame-pointer ;
* include/audio_output.h, audio_output/audio_output.c :
- modification de la m�thode de lecture d'un flux provenant d'un d�codeur
audio : qu'il s'agisse d'un flux audio MPEG2, AC3 ou MPEG12, l'algorithme
reste le m�me ;
* include/audio_decoder.h, audio_decoder/audio_decoder.c :
- rajout de la constante AOUT_FRAME_SIZE et de la structure aout_frame_t
qui d�crivent la forme sous laquelle les samples audio d�cod�s sont
transmis � l'audio_output (cf point pr�c�dent) ;
- l'ancienne m�thode de synchro �tait buggu�e, la nouvelle rewlz... Sam,
j'esp�re que tu me pardonneras un jour ;
* audio_output/audio_output.c :
- suppression des messages de debug, � la demande de Polux, qui veut
squatter seul la console de debug avec ses messages de fps ;
- Correction de deux bugs concernant le calcul de b_has_pts et d'une autre
variable de la structure pes (les masques utilis�s n'�taient pas les bons...
cons�quence imm�diate : la synchro ne voyait jamais de paquet dat�) ;
- Correction d'un bug de la m�thode de calcul de i_pts ;
* audio_decoder/audio_decoder.c :
- Autod�tection des dates en utilisant le champ i_pts fourni par la
synchro... le son � fr�quence variable adapt�e aux pertes de paquets TS et
autres probl�mes est d�sormais une r�alit� :-)
* audio_output/audio_output.c :
+ Rajout de la synchro :
- On attend si on est en avance ;
- On saute des frames si on est en retard ;
+ Ce n'est pas encore tout � fait �a, mais �a commence � prendre forme...
On dirait que le mini-server va trop vite, parce que l'audio est souvent
en retard... Polux ?
* Makefile :
- Modifications cosm�tiques ;
--
MaXX
- Rajout du support permettant de d�tecter la fin du thread input
correspondant au flux de bits pass� en argument � la fonction GetByte ;
* input/input.c :
- Changements cosm�tiques ;
* input/input_psi.c :
- Correction d'un bug de la fonction DestroyPgrmDescr qui faisait
segfaulter le vlc � sa terminaison ;
* audio_decoder/audio_decoder.c :
* generic_decoder/generic_decoder.c :
* video_decoder/video_decoder.c :
- Les fonctions xdec_DestroyThread envoient d�sormais un signal permettant
aux decoder threads de quitter la fonction GetByte meme s'ils sont en
attente dans la fonction pthread_cond_wait ;
--
MaXX
- Rajout de l'option -pg maintenant que le %*!&#@ de bug est corrig�, et en
attendant qu'on trouve le moyen de releaser proprement le lock des
decoder_fifos :-)
* audio_decoder/audio_decoder.c :
- Correction d'un bug qui entrainait une d�rivation du son ;
* include/audio_output.h :
- Passage du nb max de fifos audio de 4 � 2 pour augmenter le niveau sonore ;
* interface/main.c :
- Typo ;
--
MaXX
- Int�gration totale et non comment�e du support de la synchro ;
- Le probl�me du 0.1% de CPU -> 9.7% est r�solu en compilant avec un
flag d'optimisation (cf ci-dessous) ;
* Makefile :
- Rajout d'une ligne *comment�e* avec le flag d'optimisation -O2 ;
- En -O2 et en faisant tourner le mini-server et un vlc --novideo sur la
meme machine, la somme des %CPU du vlc et du mini-server est �gale � 0 :-)
C'est pas beau �a ?
-- MaXX "vlc rewlz"
- Tout est pret pour accueillir la synchro :-)
- Les passages modifi�s sont encore en commentaire, parce qu'avec ma
synchro simul�e le %CPU du d�codeur audio passe de 0.1% � 9.7%, alors
que les op�rations sont toutes simples et pas appel�es tant que �a
(il faudra encore essayer en -Oqqch si �a change qqch) ;
- Reste � modifier l'audio output pour la synchro... coming soon ;
-- MaXX