lundi 26 mars 2007

Paul Glagla censuré en Chine?

Jusqu'en décembre 2006, j'ai eu pas mal de visiteurs chinois sur mon site. J'ai entretenu une correspondance par e-mail avec certains d'entre eux, et notamment adapté DVdate aux caractères unicode pour pouvoir afficher du texte en Chinois. Pendant l'année 2006, la fréquentation moyenne de mon site à partir de la Chine a dépassé 10 visiteurs par jour.

Voici par exemple les statistiques de visites pour le 3ème trimestre 2006. On voit clairement un flux continu de visites, qui se situe entre 5 et 10 par jours.

Brutalement, depuis le 4 décembre, presque plus rien.

Voici les statistiques du 4ème trimestre 2006. On voit que le même flux se poursuit jusqu'au 3 décembre, et brutalement le 4 décembre le trafic tombe à 0, excepté très épisodiquement une seule visite.

Pendant tout le mois de janvier 2007, il y a en tout et pour tout seulement deux visites. Depuis février cela remonte doucement, mais sans réatteindre les fréquences d'avant 2006.

Pendant le 1er trimestre 2007, le trafic est nul en janvier, et reprend progressivement depuis le début février, mais avec des flux de 1 à 6 visites en pointe. (attention, ce graphique n'est pas à la même échelle que les précédents).

Je soumets à votre réflexion ces constatations. Sachant ce qu'on sait sur le contrôle d'Internet par les autorités chinoises, on peut tout imaginer. Mais franchement, je me demande ce qui peut paraître subversif sur mon site.

dimanche 25 mars 2007

Codecs ou filtres?

Il y a beaucoup de confusion dans les forums Internet sur les codecs et les filtres. Essayons de clarifier cela un peu.

Ce qui est commun aux deux concepts, c'est l'idée d'avoir un fichier spécialisé contenant un algorithme de compression ou de décompression, de façon à ce que toutes sortes d'application multimedia puissent l'utiliser. Ces applications lorsqu'elles ont besoin de faire le traitement dont il s'agit, chargent le fichier en mémoire et appellent certaines des fonctions qui y sont contenues. Par exemple comprimer une vidéo en XviD MPEG-4 Codec fait appel à un fichier xvidvfw.dll ou comprimer en DivX s'appuie chez moi sur un filtre DivX Encoder Filter contenu dans un fichier divxenc.ax.

Microsoft a défini deux "architectures" différentes pour créer des applications multimedia. La plus ancienne s'appelle Video for Windows (vfw), la plus récente s'appelle directshow. La manière de rechercher et d'appeler les fichiers de compression ou décompression est différente selon l'architecture, ce qui crée une différenciation entre les fichiers destinés à une application vfw ("les codecs") et les fichiers destinés à une application directshow ('les filtres").

Un exemple d'application video for windows est virtualdub. Un exemple d'application directshow est Windows Media Player, mais aussi mes applications CaptureFlux ou ImageGrab.

Heureusement, Microsoft a prévu une compatibilité ascendante: les codecs VFW existant sur le marché peuvent dans la plupart des cas être utilisés par une application directshow, grâce au Video Compression Manager. C'est un filtre directshow générique, contenu dans un fichier qcap.dll, qui au lieu d'effectuer lui-même un traitement, sait appeler un ancien codec VFW à qui il sous-traite le travail. C'est donc grâce à lui que les codecs peuvent être utilisés dans les applications directshow, sans devoir être réécrits spécialement.

Mais cette compatibilité ne marche que dans un sens. Dans l'autre sens, il y a beaucoup de filtres de compression ou de décompression qui ne peuvent être utilisés que par des applications directshow, et qui sont inexploitables par une application VFW. C'est notamment le cas des filtres Microsoft de compression ou décompression DV (qui s'appellent parfois improprement les codecs DV ou dvsd de Microsoft), qui n'existent que sous forme de filtre, ce qui fait que VirtualDub a du mal avec les fichiers DV, sauf si vous installez un codec DV comme celui de Mainconcept ou de Panasonic.

Pour reprendre l'exemple cité plus haut,
XviD MPEG-4 Codec est bien un codec VFW, qui grâce au compression manager peut aussi être utilisé dans une application directshow. CaptureFlux sait par exemple le mobiliser pour faire de la compression en Xvid en temps réel. A l'inverse, DivX Encoder Filter est un filtre directshow, qui n'a pas la capacité d'être exploité par une application VFW.

Ce qui est vrai pour la vidéo l'est aussi pour l'audio. Il faut distinguer entre les codecs audio et les filtres directshow traitant l'audio. Grâce à l' Audio Compression Manager, contenu dans le fichier quartz.dll, il y a la même compatibilité ascendante. Par exemple un codec de compression en mp3 est fourni en standard dans le fichier l3codeca.acm. Un filtre pur de compression en mp3 est contenu dans le fichier lame.ax qu'on peut télécharger sur le site Elecard.

Dans sa version 2.1, Filmerit ne traitait que des "purs filtres directshow", et n'indiquait rien sur les codecs. Dans sa version 3.3, Filmerit traitera aussi les filtres construits à partir des codecs video ou audio.

samedi 24 mars 2007

Comment reconnaître un fichier DV?

J'ai trouvé ces jours-ci sur le forum du site web VideoHelp une discussion à propos de DVDate. La question était in fine de savoir comment DVDate reconnaîssait qu'un fichier avi est un fichier DV.

Le moyen traditionnel d'identifier la compression d'un fichier AVI est de lire le code à quatre caractères (le "FourCC") qui apparaît dans l'en-tête. Cette méthode se heurte cependant à deux difficultés:
  • d'une part, il y a plusieurs FourCC possibles pour un fichier DV: dvsd, dsvd ou par exemple CDVC pour le codec DV de Canopus. Il y en a encore d'autres, sans compter les variantes en majuscules.
  • d'autre part, il y a plusieurs endroits où ce FourCC peut se lire, soit dans le AVI Stream Header, dans une variable appelée FourccHandler, soit dans le Stream Format Header, dans une variable appelée bicompression.
Si vous voulez voir ces valeurs pour un fichier avi donné, ouvrez celui-ci dans DVDate et tapez CTRL+H. Vous obtenez alors un listing, dont j'ai extrait à titre d'illustration les éléments intéressants:

---------------(Vidéo)---------------
------Début du AVI Stream Header------
FourccType = vids
FourccHandler = dvsd
Flags = 00000000
Priority = 0
Language = 0000
InitialFrames = 0
Scale = 400000
Rate = 10000000
Start = 0
Length = 29
SuggestedBufferSize = 144008
Quality = 00000000
SampleSize = 0
rcFrame.Left = 0
rcFrame.Top = 0
rcFrame.Right = 720
rcFrame.Bottom = 576

-------Fin du AVI Stream Header-------

et

----Début du Stream Format Header----
biSize = 40
biWidth = 720
biHeight = 576
biPlanes = 1
biBitCount = 24
biCompression = dvsd
biSizeImage = 144000
biXPelsPerMeter = 0
biYPelsPerMeter = 0
biClrUsed = 0
biClrImportant = 0
-------Fin du AVI Stream Format-------

Le problème était donc que certaines applications créent des fichiers avi où ces deux valeurs ne coïncident pas. Cela semble être le cas des fichiers DV produits par Adobe Premiere Pro 2, où la première valeur est vide alors que la seconde est "dvsd" (si j'en crois les constatations de JohnnyMalaria). Et dans ce cas la version 6.2.1 de
DVDate ne savait pas trancher.

Il faut noter qu'avec ma webcam Logitech et mon freeware CaptureFlux, je crée des fichiers avi (certes pas DV) qui ont aussi ce problème, mais en sens inverse: c'est le FourccHandler qui est égal à "DIB ", alors que le paramètre bicompression ne comprend rien d'affichable.

------Début du AVI Stream Header------
FourccType = vids
FourccHandler = DIB
Flags = 00000000
Priority = 0
Language = 0000
InitialFrames = 0
Scale = 333333
Rate = 10000000
Start = 0
Length = 9
SuggestedBufferSize = 304136
Quality = 00000000
SampleSize = 0
rcFrame.Left = 0
rcFrame.Top = 0
rcFrame.Right = 0
rcFrame.Bottom = 0
-------Fin du AVI Stream Header-------


et


----Début du Stream Format Header----
biSize = 40
biWidth = 352
biHeight = 288
biPlanes = 1
biBitCount = 24
biCompression =
biSizeImage = 304128
biXPelsPerMeter = 0
biYPelsPerMeter = 0
biClrUsed = 0
biClrImportant = 0
-------Fin du AVI Stream Format-------

J'ouvre donc le concours: quelles sont les applications qui produisent des fichiers où ces deux paramètres sont distincts, et dans quelles conditions? Si vous en trouvez, postez nous ici le Header obtenu avec DVdate.

Dans la version 6.3.0 de
DVDate, encore en phase de test, mais téléchargeable ici, j'ai pris l'option suivante: le codec est pris dans bicompression, sauf si cette dernière valeur contient des caractères non affichables (de valeur ASCII inférieure à 32). Dans ce cas, le codec affiché par DVDate sera la valeur FourccHandler.

Je me demande cependant si cela répond à tous les cas de figure. Ne faut-il pas faire l'inverse, et donner la priorité au FourccHandler?


Pourquoi un blog de Paul Glagla

Je suis l'auteur de quelques logiciels principalement dédiés à la vidéo numérique, notamment DVdate, CaptureFlux, ImageGrab et autres Filmerit ou CassetteDV qui connaissent un joli succès à la fois en France et dans le reste du monde.

Jusqu'à présent, je communiquais avec mes utilisateurs, d'une part avec mes pages web, et d'autre part par e-mail.

Mais produire des pages web est un boulot lourd et peu réactif, qui m'est très pénible, et me prend beaucoup de temps que je préfère consacrer à de la programmation.

D'un autre côté, le problème des e-mails, c'est que je reçois des dizaines de messages (sans même parler du spam) qui portent sur des tas de sujets souvent intéressants mais très spécifiques et que chaque réponse nécessite de ma part des réflexions et des recherches qui au bout du compte ne bénéficient qu'à un seul utilisateur. Du coup, je m'y investis moins. Actuellement je réponds à moins de 5% des mails que je reçois. Par contre, je lis tous les mails reçus et je finis tôt ou tard par exploiter les idées qui me sont soumises. Ce n'est donc pas inutile de continuer à m'écrire.

Devant cette situation, j'ai pensé me mettre au goût du jour et créer un blog, pour compléter mon site et mes e-mails par des communications diverses, mais d'intérêt général pour les amateurs de mes logiciels. Cela me permettra de diffuser des idées ou des commentaires et de susciter une certaine interactivité, sans efforts trop démesurés.

J'espère bien sûr avoir des réponses sur les sujets que je lancerai. C'est vital pour que mes productions progressent, car je n'ai accès qu'à très peu de matériel ou de logiciels. Je suis en effet un simple amateur dont l'équipement se limite en ce moment à

- un ordinateur Pentium4 à 3GHZ avec 512 M0 de mémoire, muni de Windows XP SP2
- un camescope Sony DCR-PC101E Pal, donc un modèle déjà assez ancien
- une webcam Logitech Clicksmart 310
- un boitier ADS Tech DVD Xpress DX2
- une ancienne carte miro DC30+

C'est avec ce matériel que je teste mes productions. Cela ne couvre donc qu'un petit champ des configurations que l'on rencontre sur le marché. D'où mon slogan: "mes logiciels fonctionnent bien chez moi, ils pourraient bien fonctionner chez vous, mais peut-être pas. Essayez vous-même, et faites moi savoir ce que cela donne."

Encore une chose: je travaille par périodes sur un programme donné. Actuellement c'est sur Filmerit. Si vous me donnez des idées ou des constatations qui concernent le programme sur lequel je suis en train de travailler, je les exploiterai beaucoup plus vite. Les autres commentaires seront stockés et vraiment utiles peut-être seulement dans quelques mois.

Pour vous permettre de cibler vos remarques, voici le planning que j'envisage pour les prochaines semaines:

D'abord terminer une version 3.0.0 de Filmerit. L'objectif principal est d'étendre ce logiciel à l'analyse et à la réparation des filtres directshow de toutes catégories. Actuellement, il ne s'occupe que des filtres qui sont en directshow natif. A l'avenir, il devrait aussi s'occuper des filtres DMO (Direct Media Object), des filtres Compression Manager, et des filtres Plug and Play. Cela devrait encore me prendre le mois d'avril.

En mai, j'ai envie de réattaquer ImageGrab qui est actuellement resté à la version 3.0 depuis juillet 2004. J'ai de nombreuses idées pour le mettre à jour, ne serait-ce qu'en y intégrant des technologies qui sont maintenant couramment intégrées dans mes logiciels plus récents: par exemple sauvegarder les préférences dans le registre, désentrelacer les images sans utiliser Studio, y incruster du texte ou une date, retourner l'image en miroir etc... Peut-être encore d'autres nouveautés.

Ensuite, cet été, je compte bien revoir CassetteDV. C'est l'un des logiciels dont je suis le plus fier, mais je vois bien qu'il crée de nombreux déçus. Il est en effet très complexe, et dépend beaucoup de chaque configuration. Il y a à l'évidence des configurations avec lesquelles il ne fonctionne pas bien, et ce sera donc l'objectif principal de la prochaine grande révision à venir que d'améliorer sa compatibilité avec davantage de situations.

Entre temps, il n'est pas exclu que je publie des versions de CaptureFlux ou DVdate corrigeant certains bugs. La version 6.3.0 de DVdate est d'ailleurs en phase de test. Si vous voulez la tester, elle est téléchargeable ici. Elle corrige quelques bugs (j'espère qu'elle n'en crée pas d'autres ce faisant !?) et apporte une petite amélioration fonctionnelle: l'incrustation peut maintenant être entourée d'un bordure noire pour que le texte incrusté ressorte mieux devant la vidéo, même quand le fond est clair.