samedi 17 novembre 2007

Imagegrab et les grandes polices

Certains utilisateurs d'ImageGrab ont des difficultés d'affichage avec mon programme. La fenêtre est décalée, si bien que les boutons utiles ne sont même plus accessibles.



Il s'avère que cela est dû à une incompatibilité d'ImageGrab 4.1.3 avec les grandes polices, utilisées de plus en plus sur les portables sous Windows Vista.

En attendant une correction de ce bug, il est toujours possible de désactiver l'utilisation des grandes polices. Chez moi l'opération est la suivante:

  1. cliquer avec le bouton droit sur l'écran (à un endroit non occupé par une fenêtre)
  2. cliquer sur propriétés
  3. cliquer sur l'onglet paramètres
  4. cliquer sur le bouton Avancé
  5. choisir l'onglet général
  6. sélectionner taille normale (96ppp) dans les paramètres ppp
  7. Ok
  8. répondre Oui -pour utiliser les polices déjà existantes
  9. redémarrer l'ordinateur
Maintenant la fenêtre d'ImageGrab devrait apparaitre normale.



Evidemment cette manip aura des impacts sur vos autres programmes, où les textes vous sembleront alors plus petits. Vous pourrez toujours revenir aux grandes polices en faisant la même opération sauf à l'étape 6, choisir grande taille (120ppp).

lundi 15 octobre 2007

Recyclage



C'est aujourd'hui, 15 octobre, le blog action day, une initiative qui propose à tous les blogueurs de traiter le même jour un même sujet. Cette année c'est le thème de l'environnement. Alors pour une fois je ne vais pas parler de programmation et vidéo, mais du recyclage des déchets informatiques.

Depuis le 15 novembre 2006, nous payons tous une éco-participation sur les achats de matériel informatique destinée à financer le recyclage des déchets informatiques. C'est une bonne chose si cela permet d'éviter de rejeter dans la nature des millions de tonnes de produits nocifs utilisés dans certains composants. En théorie tout cela est écologiquement responsable et fort sympathique. Voyez la théorie ici.

Le problème est que nous payons l'écotaxe, et qu'en fait il n'y a pratiquement pas de recyclage. Regardez ici par exemple une analyse de la situation en juin dernier. La filière recyclage a pris du retard, les collectivités locales qui ont l'obligation d'organiser le recyclage n'ont - sauf exceptions - rien fait, et les revendeurs informatiques qui devraient vous reprendre le matériel ancien le font avec beaucoup de réticences. D'ailleurs si vous achetez du matériel par correspondance, est-ce que vous savez comment renvoyer votre ancien matériel?

Faites donc un test. Ecrivez à votre mairie pour savoir où vous pouvez apporter vos vieux moniteurs informatiques qui pourrissent dans votre cave. Comme il y a des élections municipales l'an prochain elle vous répondra sûrement, mais je doute qu'elle vous donne une solution réellement opérationnelle.

Le résultat est que l'essentiel du matériel informatique des particuliers finit encore à la poubelle, alors que c'est théoriquement interdit. On se demande où va l'argent de l'éco-participation.

Au fait cela ne vous rappelle rien? Il y a aussi une taxe sur les supports informatiques destinée à la copie privée d'oeuvres sous droits d'auteur, mais la copie est interdite!

dimanche 23 septembre 2007

Amélioration des plug-ins pour CaptureFlux


Grâce aux informations données par plusieurs visiteurs de mon blog, j'ai pu constater que les plug-ins que j'avais réalisé pour les boîtiers ADS DVD XPRESS DX2, Dazzle Video Creator (DVC130) et Dazzle Platinum Video Creator (DVC170) ne marchaient pas toujours avec CaptureFlux.
On peut télécharger mes nouveaux plug-ins sur la page de CaptureFlux. Ils portent le même nom que les anciens, et il suffit de remplacer l'ancien par le nouveau, par défaut dans le même dossier que l'application.

Trois problèmes ont été corrigés:

1) en mode mpg2 natif la capture pouvait donner un fichier vide (0 octets). Ceci devrait être corrigé dans les nouveaux plug-ins: j'ai changé le filtre qui écrit la vidéo sur le disque et remis un bon vieux filtre dump. Rassurez-vous, aucun filtre n'est installé sur votre système: le plug-in comprend en interne le logiciel correspondant sans rien installer.

2) j'ai constaté que Pinnacle distribuait plusieurs filtres décodeurs mpeg2 différents, et surtout qui n'avaient pas les mêmes broches. Chez moi, c'était le Pinnacle MPEG 2 Decoder, installé par pclempegbox.ax version 4.0.8.00 . Ce filtres n'a qu'une broche d'entrée et une broche de sortie: le flux vidéo mpeg2 y entre et le flux vidéo décodé en sort.

Or chez Rudy, il n'en était pas de même: son filtre s'appelle bien Pinnacle MPEG 2 Decoder, il est installé par un fichier pclempegbox.ax mais en version 5.0.617.00 Et cette petite différence de version, lui donne trois broches, notamment une nouvelle broche d'entrée pour un flux de "subpicture" qui semble servir pour décoder certains DVD. Du coup quand CaptureFlux cherchait à se connecter, il ne trouvait plus la bonne broche. C'est maintenant réparé et je pense que le plug-in devrait maintenant fonctionner avec les versions différentes du décodeur de Pinnacle.

3) certains utilisateurs, comme ChrisPM, avaient désinstallé le décodeur divx officiel DivX Decoder Filter, qui était utilisé par le plug-in pour gérer les flux divx. Et je ne les blâme pas, s'ils préfèrent fonctionner avec ffdsshow ou XVID. Du coup, le plug-in cherchera maintenant quand même d'abord le decodeur officiel, et s'il ne le trouve pas, essaiera d'en demander un autre au lieu de renoncer bêtement à fonctionner. Cela devrait donner un peu de souplesse de ce côté-là.

Qu'est-ce qui n'a pas pu être résolu?

Certains utilisateurs, comme Pierre Julien n'ont pas de driver pour faire fonctionner le boîtier sous Vista 64 bits. Il est clair que mes plug-ins ne le remplacent pas, et que CaptureFlux en saura pas fonctionner sans un driver approprié.

Certains utilisateurs, comme Gaël me disent que cela marche sur leur ordinateur de bureau, mais pas sur leur portable. Or quand je regarde les filtres de l'ordinateur portable, je m'aperçois qu'aucun filtre de Pinnacle n'est installé. Même si maintenant j'ai introduit un peu de souplesse, je pense qu'il faut quand même installer le logiciel fourni avec le boîtier pour pouvoir le faire fonctionner correctement.

D'autres utilisateurs regrettent de ne pas pouvoir enregistrer directement en mp4. Désolé, je n'ai pas pu le rajouter, car je n'ai pas une connaissance suffisante de ce format et des filtres qui permettent d'enregistrer en mp4. C'est peut-être un but pour une prochaine révision.

Que reste-t-il à faire maintenant?

Après les plug-ins DVC130, DVC170 et ADS, je vais regarder encore quelques améliorations pour Captureflux: améliorer le plein écran pour ceux qui ont des écrans larges, peut-être revoir la synchronisation audio/vidéo car dans certains cas ce n'est pas terrible.

A suivre donc.


samedi 1 septembre 2007

CaptureFlux et les DVC 130 et 170

Le DVC 170 , comme d'ailleurs le DVC 130, sont des boîtiers de capture vidéo très peu chers, et qui compressent la vidéo par le hardware (donc sans mobiliser le processeur) en mpeg 1, 2, voire en mpeg-4 et divx. En France, il s'appellent Dazzle Video Creator ou Dazzle Video Creator Platinum, et sont en fait une marque de la société Pinnacle. Celle-ci les distribue avec ses logiciels (genre Studio), mais beaucoup d'utilisateurs regrettent de ne pas pouvoir utiliser d'autres logiciels, notamment pour voir la vidéo en plein écran , sans être obligé de l'enregistrer. C'est le cas de Gaël qui a commenté mon billet précédent. Mon logiciel CaptureFlux fait cela pour pas mal de systèmes, aussi suis-je souvent sollicité pour le rendre compatible avec ces boîtiers.

En fait, je n'ai jamais essayé aucun de ces deux boîtiers, mais je dispose d'un boîtier ADS Tech DVD Xpress DX2, qui utilise la même puce que les DVC 130 et DVC 170 pour numériser et compresser la vidéo. Il s'agit de l'excellente puce WIS GO7007SB, qui a pour les Français aussi l'avantage d'accepter des entrées vidéo en SECAM.

J'ai réussi à faire marcher CaptureFlux avec le boîtier ADS en réalisant un plug-in spécialisé. Grâce à plusieurs utilisateurs de DVC 170 qui ont fait des tests, j'ai aussi développé un plug-in pour les boîtiers Dazzle. Malheureusement cela ne semble pas marcher pour tout le monde, probablement parce qu'il y a plusieurs versions du driver de cette puce, et que mes plug-ins pour CaptureFlux ne marchent que pour certains d'entre eux.

Ce billet de mon blog s'adresse donc aux utilisateurs de DVC 170 et DVC 130 qui voudraient faire marcher CaptureFlux avec leur boîtier. S'ils veulent que je développe un plug-in pour eux, ils devront m'aider en faisant un certain nombre d'essais ou de tests, et en me donnant leurs résultats.

Pour cela, il faut savoir utiliser graphedit. J'ai une page web sur graphedit qui explique comment cela se fait. Si vous ne l'avez pas encore, téléchargez-le plutôt sur doom9 qui donne une version plus récente que Digital Digest (il faut chercher la full software page, puis la rubrique filters). Ne lancez pas tout de suite register.bat, car il installe un tas de filtres directshow dont vous n'aurez pas besoin en principe. La seule chose dont vous avez besoin c'est d'installer la dll qui permettra d'ouvrir les pages de propriétés. Elle s'appelle proppage.dll. Pour cela, soit vous éditez (avec notepad.exe) le fichier register.bat et effacez toutes les lignes sauf regsvr32 proppage.dll /s, soit vous utilisez mon logiciel Filmerit, et glissez simplement le fichier proppage.dll sur sa fenêtre.

Branchez maintenant votre boîtier. Par précaution, vérifiez avec le logiciel d'origine qu'il marche et donne une image. Mais ensuite quittez complètement le logiciel, tout en laissant le boîtier branché.

Lancez ensuite graphedit, puis lorsque la fenêtre vide est affichée, tapez CTRL+F. Chargez d'abord le filtre source de capture qui correspond à votre boîtier. Il doit se trouver dans la rubrique Video Capture Sources, et s'appelle chez moi ADS DVD XPRESS DX2. Chez vous, il y a des chances qu'il s'appelle Dazzle DVC170 ou encore Dazzle DVC 130. Peut-être allez-vous trouver encore autre chose. Sélectionnez-le et tapez Insert Filter.


Puis vous allez dans la rubrique Périphériques de distribution de flux WDM et essayez de trouver un filtre Crossbar. Chez moi, il s'appelle WIS GO7007SB Crossbar, mais chez vous il pourrait s'appeler Dazzle DVC170 CrossBar ou encore Dazzle DVC130 CrossBar, ou autre chose.
Insérez-le aussi.

Ensuite, il faut essayer de construire le graphe. La première chose à faire est de relier le filtre crossbar et le filtre source. Chez moi le filtre source n'a qu'une entrée. On la relie à la sortie vidéo du filtre crossbar. Peut-être chez vous en aura-t-il plusieurs? A vous d'essayer au mieux.

Ensuite, vous terminez le rendu du graphe en cliquant avec le bouton droit sur les broches de sortie du filtre source, et en choisissant render pin. Attention, s'il y a une broche de capture et une broche de preview, il vaut mieux pour mes essais rendre les deux. Souvent, il y a aussi une broche audio. Rendez-la itou.

Vous devriez alors obtenir un graphe complet, du genre suivant:

Avec un peu de chances, il marchera quand vous tapez Entrée pour le faire jouer. S'il ne donne qu'une image noire, il faut sans doute configurer la crossbar. Vous cliquez sur le filtre Crossbar avec le bouton droit, et affichez sa page de propriétés. La principale chose à faire est de vérifier la source vidéo: composite ou s-vidéo, selon ce qui est branché sur votre boîtier. Parfois il y a d'autres réglages. A vous de regarder.

Quand vous avez un graphe qui marche, et qui donne une image et du son, c'est presque gagné: vous pouvez déjà profiter de votre boîtier autrement qu'avec Studio de Pinnacle. Enregistrez le graphe avec CTRL+S, et envoyez-le moi (c'est un filtre grf) avec les commentaires utiles. Ce sera ma matière première pour fabriquer un plug-in.

A ce stade, il faut remarquer que le filtre source peut donner des flux vidéos très différents: mpeg1, mpeg2 ,mpeg4 ,divx etc... selon les règlages de sa page de propriétés. Chacun de ces flux sera rendu différemment, notamment en mobilisant un décodeur différent. Vous devriez donc recommencer plusieurs fois, et avant de rendre les broches de sortie du filtre source, ouvrir sa page de propriétés et choisir différents formats de sortie, puis compléter le graphe de rendu. Envoyez-moi tous les graphes obtenus qui marchent.
Il reste une dernière difficulté: CaptureFlux doit décomprimer l'image dans la mémoire vive de l'ordinateur, et pas dans la mémoire de la carte vidéo. C'est un problème qui se pose avec les flux mpeg2, qui sont parfois décodés en mode overlay. Si le graphe de rendu fait appel à des filtres décodeurs de mpeg2 tels que ceux de Cyberlink, et fait apparaître un filtre overlay ce n'est pas bon pour CaptureFlux. Il faudra donc voir si vous avez d'autres filtres mobilisables. Le mieux pour cela, est d'utiliser mon logiciel Filmerit, déjà cité plus haut pour prendre une photo de tous vos filtres, et de m'envoyer aussi le zip obtenu.

Pour l'envoi, vous trouverez mon adresse e-mail sur mon site, ou sur les pages d'aide de CaptureFlux ou Filmerit. Si ces indications ne sont pas claires, faites des commentaires à ce billet. Sinon envoyez-moi vos résultats.

dimanche 19 août 2007

Croissance inexorable de Vista

Hier - le 18 août 2007 - pour la première fois les visites de mon site provenant d'un ordinateur équipé de Windows Vista ont dépassé 10% du total des visites. C'est un résultat que je me garderai évidemment de généraliser à tout le web, car les visiteurs de mon site consacré à la vidéo et à la programmation sont sans doute plus technophiles que la moyenne des surfeurs sur le web.

C'est quand même un résultat remarquable, si l'on se souvient que Vista n'est proposé aux utilisateurs individuels que depuis février dernier.

Voici la répartition des systèmes d'exploitation de mes visiteurs en juillet 2007, selon Xiti, le site que j'utilise - dans sa version gratuite - pour connaître mes visiteurs :


Pour l'ensemble du mois de juillet, Windows XP reste bien sûr écrasant, et équipe 83,9% de mes visiteurs, mais Vista représente déjà 7,4%.

Il n'y a pas si longtemps, en janvier 2007 la répartition était la suivante:

On voit donc que Vista progresse au détriment de XP, alors que les autres systèmes d'exploitation sont assez stables sur leurs niches. Chaque mois Vista gagne à peu près 1% de "parts de marché".

J'en tire comme conclusion que les programmeurs doivent tenir compte de cette réalité, et adapter leurs logiciels aux spécificités de Vista. Pour ma part, je fonctionne encore complètement sous XP SP2, mais je teste mes réalisations sous Vista sur l'ordinateur portable de ma femme.

C'est comme cela que je peux annoncer mes logiciels comme compatibles avec Vista. Si certains d'entre vous pensent que ce n'est pas totalement le cas, merci de me le signaler, car je ne suis pas encore très familier avec ce système d'exploitation.

mardi 7 août 2007

Conversion de Pal en NTSC

Jacques m'interroge - dans un commentaire à mon billet précédent - sur la conversion de DVD Pal en NTSC. C'est un sujet qui intéresse beaucoup de vidéastes si on en juge par le nombre de forums de discussions, de faq et de tutorials qui traitent de cette question.

Sur l'un des principaux sites américains qui traitent de DVD, videohelp.com, si je fais une recherche avec les deux mots-clés Pal et Ntsc, il cite 12.700 pages sur ce seul site qui contiennent ces deux termes, et publie 11 guides relatifs à cette question. On y trouve pêle-même la méthode utilisant l'application Cinema Craft Encoder (si vous avez $2000 à mettre dans un encodeur mpeg2) et celle qui utilise TmpgEnc (encodeur dont on peut avoir une version d'essai pour quelques cacahuètes), une méthode dite du patch qui ne nécessite aucune reconversion si on arrive à tromper son lecteur, comme une méthode dite en 12 étapes, qui semble une vraie usine à gaz.

Pour sa part, DVdate est très utile pour convertir de l'avi DV Pal en avi DV NTSC, et permet donc de faire un DVD NTSC à partir d'un camescope DV Pal, comme je l'explique ici. Mais j'ai bien peur que cela ne réponde pas au problème de Jacques, car il veut convertir les fichiers Vob de son DVD Pal et non des vidéos au format avi DV Pal.

Il n'est toutefois pas impossible d'obtenir quelque chose, mais ce serait assez lourd et se ferait avec une notable perte de qualité.

Pour ceux qui veulent vraiment tenter l'affaire, la méthode serait la suivante:

  1. ripper le DVD en un avi divx de la meilleure qualité possible. Il existe plein de tutoriels un peu partout pour expliquer comment faire cela. Comme les divx peuvent être regardés sur l'ordinateur ou sur un nombre croissant de lecteurs DVD, on pourra d'ailleurs souvent s'arrêter là.
  2. si on veut absolument obtenir un DVD NTSC, utiliser DVdate pour convertir le divx en une vidéo DV type 2 . C'est une commande du menu convertir, qui certes dégradera la qualité, mais pas beaucoup plus que le passage du vob en divx. On prendra soin dans les préférences de DVdate, de demander que cette conversion soit faite au format NTSC, et éventuellement à la fréquence audio 48000 Hz.
  3. avec n'importe quel logiciel de montage vidéo capable de sortir un DVD (par exemple Studio de Pinnacle, ou Ulead, ou Nero), on charge alors le fichier avi DV NTSC fabriqué par DVdate et l'application produit en principe un DVD NTSC.
Cette méthode n'est évidemment pas très recommandable car elle a beaucoup d'inconvénients:
  • D'abord, on multiple les décompressions/ recompressions: on doit d'abord décomprimer le vob pour le comprimer en divx, pour décomprimer le divx pour le convertir en avi DV NTSC, puis décomprimer le DV pour le reconvertir en vob (mpeg2). Cela fait une perte de temps et de qualité d'image. Les meilleures méthodes décompriment le vob initial et le compriment tout de suite en vob final: 1 seule décompression/recompression au lieu de 3.
  • Ensuite on perd l'entrelacement: en principe le DVD initial était entrelacé pour une lecture fluide sur la TV. Il y a fort à parier que dans ces décompressions/recompressions l'entrelacement aura disparu. Or perdre l'entrelacement donne une image moins fluide sur la TV où le résultat final sera regardé. Paradoxalement, il faut d'ailleurs souhaiter qu'à l'une des étapes ci-dessus, et notamment la première, il y ait eu un désentrelacement propre des images, car sinon il y a fort à parier que le résultat final donnerait des stries d'entrelacement incontrôlées qui feraient un effet de peigne monstrueux sur l'image finale.
  • Ensuite - et c'est le point faible de toutes les méthodes, quel que soit le prix que vous y mettrez -, il n'existe pas de bonne méthode pour passer de 25 images à 29.97 par secondes (on peut même arrondir à 30 si vous préférez, cela ne change rien). Aucune méthode du commerce ne se risque vraiment à fabriquer de nouvelles images en interpolant entre plusieurs images de la vidéo d'origine. En fait, elles prennent en substance dans la vidéo d'origine 5 images puis répètent la 5ème une fois pour former la 6 ème image. C'est ainsi que les 25 images (soit 5 groupes de 5) d'une seconde passent à 30 images (soit 5 groupes de 6).
Pour illustrer l'effet de ce bidouillage d'images, supposons que nous filmions une voiture qui avance sur une ligne droite à 90km/h , soit 25 m par secondes. Notre film d'origine qui est à 25 images/secondes la photographiera donc à la position 1 m, 2m, 3m.... jusqu'à 25m pour les images de la première seconde. Quand on aura converti cela en NTSC on aura une vidéo qui la montre à 1m sur la 1ère image, alors que le temps écoulé n'est que de 1/30ème de seconde et que la voiture devrait être à 25/30 m=0.83m. Puis la 2ème image à 2m, alors que la voiture est réellement au bout de 2/30 de secondes à 1.66m et ainsi de suite jusqu'à la 5 ème image qui présentera la voiture à la position 5 m, alors que le temps passé sera de 5/30èmes de secondes et donc que la position réelle devrait être de 4.17 m. Puis tout à coup se répète la position 5m pendant la 6ème image. Cela donne au total une vidéo qui semble un peu accélérée pendant 5 images (les 4,17 premières secondes de chaque séquence) puis s'arrête pendant une image, avant de recommencer le cycle.

Considéré autrement, on devrait voir chaque position sur l'écran de la voiture 1m, 2m, 3 m... 5m pendant 40 millisecondes. Après conversion, on voit la voiture à 1m, 2m jusqu'à 4m pendant 33 millisecondes chacune, puis on la voit à 5m pendant 66 millisecondes.

Cet effet ne me paraît pas totalement rédhibitoire, grâce à la bonne volonté de l'oeil humain. D'ailleurs la vidéo d'origine fait aussi des approximations, puisqu'elle montre la voiture faisant des sauts de 1 m par 1m, alors qu'elle avance en réalité continuement. Mais le processus donne quand même une impression légèrement saccadée et peu naturelle lorsqu'on regarde le résultat.
  • Un dernier point faible, commun à toutes les méthodes: tout cela permet éventuellement de convertir un fichier vob issu du DVD, mais qu'en est-il des menus, sous-titres de langue, bandes audio additionnelles etc... C'est encore une autre paire de manches que de reproduire tout ce binz en gardant en outre toute la synchronisation nécessaire.
Plusieurs de ces inconvénients, sauf sans doute le premier, sont des points communs à la plupart des méthodes. C'est sans doute pourquoi aucune méthode n'a réussi à s'imposer. En fonction de ses besoins, et surtout de ses possibilités, notamment en disponibilité de logiciels, on pourra donc essayer diverses méthodes disponibles, quitte à savoir fermer les yeux sur leurs points faibles.

samedi 4 août 2007

Retour de vacances

Me voilà rentré de vacances, avec 5 cassettes DV en LP de films à monter. Cela va concurrencer mes activités de programmation.



Ce qui me frappe en étant allé dans les pays les plus pauvres de l'Indochine, c'est qu'au moins dans leurs villes les cyber-cafés sont omniprésents et qu'il est très facile et peu cher de se connecter sur Internet et donc de suivre -même au bout du monde- ce qui se passe sur son blog, son site, ses messageries... On a là vraiment le sentiment concret que la mondialisation est en marche, et pas seulement dans quelques hôtels qui diffusent CNN.

Le vrai exotisme qui reste alors sur la planète est peut-être tout proche de nous: m'étant lamentablement perdu en voiture du côté de Deuil-la-Barre dans la banlieue parisienne l'autre soir, je me suis décidé à acheter mon premier GPS (un ViaMichelin X980T quand même!) pour pouvoir à l'avenir m'y repérer.

J'avais publié DVdate 6.4.1 avant mon départ. A mon retour je trouve plusieurs mails signalant des bugs qu'il fallait corriger d'urgence. J'ai donc fait immédiatement la mise à jour vers 6.4.4 publiée hier. J'en ai profité pour actualiser les pages d'aide sur mon site.

Il semble que CaptureFlux donne aussi quelques soucis à certains. Je vais voir si c'est remédiable rapidement, ou si cela nécessite une grande révision. Dans le premier cas, je le mettrai à jour tout de suite. Dans le second cas, je reporterai ces travaux jusqu'à ce que la grande révision de CassetteDV ait été faite.

mercredi 11 juillet 2007

Logiciels portables

Il y a une demande croissante pour des logiciels portables, c'est-à-dire des logiciels que l'on copie sur une clé USB ou sur un disque dur externe, et que l'on peut ensuite transporter avec soi et brancher à volonté sur n'importe quel système matériel.

L'idée est vraiment intéressante, car c'est exactement l'idée inverse de celle dont rêvent toutes les grandes firmes informatiques qui voudraient nous imposer des systèmes n'ayant plus d'unités de stockage, pour que tout soit stocké sur leurs serveurs centralisés, et que nous devenions totalement dépendants de leurs services et de leurs réseaux.

Le logiciel portable permet à l'inverse de ne plus dépendre du tout du matériel, qui ne devient qu'un hôte pour notre unité de stockage portable, tout ce qui est important étant décentralisé auprès de l'utilisateur.

La première condition pour qu'un logiciel soit portable, c'est qu'il n'ait pas besoin d'inscrire des données dans le registre de Windows. Certains disent qu'il ne doit pas avoir besoin d'installation. En réalité c'est seulement l'installation dans le registre de Windows ou dans des dossiers fixes du système comme c:\windows\system32 qui doit être prohibée. Si le logiciel a une procédure d'installation qui se contente de copier des fichiers sur l'unité de stockage portable, alors cela ne nuit pas à la portabilité. Par exemple, dézipper des fichiers. S'il écrivait par contre des données dans le registre de Windows, il ne pourrait pas les transporter sur un autre ordinateur, et ne pourrait ainsi sans doute pas fonctionner sur son nouvel hôte.

Vous savez que mes logiciels n'ont pas besoin d'installation, autre que de dézipper le fichier exécutable. Ils respectent donc le 1er niveau de portabilité. Mais ils sauvent - du moins si vous l'acceptez - leurs préférences dans le registre. D'où le second niveau de portabilité à respecter: pouvoir retrouver ses préférences quel que soit le système sur lequel tourne la clé. Par exemple si vous avez un navigateur web, vous voudrez avoir toujours sous la main ses favoris. Ou si vous avez changé les couleurs dans Filmerit, il faut que ces changements suivent le logiciel dans la clé usb.

J'avais tenu compte de cet objectif sur les dernières révisions de DVdate, Filmerit et ImageGrab, en permettant à l'utilisateur de sauver ses préférences dans un fichier ini situé dans le même dossier que l'application, donc circulant avec cette dernière sur l'unité de stockage mobile.

Christophe qui travaille sur le projet liberkey, une compilation de logiciels portables gratuits que l'on peut copier sur une clé usb, me signale que cela n'est pas encore suffisant.

En effet, dans les préférences, il y a parfois l'indication d'un dossier, ou d'un fichier utilisables par le logiciel. Par exemple dans DVdate, les préférences comprennent:
  • le dossier par défaut pour ouvrir des vidéos
  • le dossier préféré ouvert par F7
  • le dossier par défaut pour ouvrir les playlist
  • le dossier pour les fichiers créés par conversion
  • l'emplacement du fichier imagegrab
  • l'emplacement de deux fichiers à lancer par F3 ou F4
Enfin, de manière moins voyante, sous le nom exename, les préférences sauvent aussi l'adresse de l'application. C'est utile pour que mes programmes puissent s'appeler l'un l'autre, en sachant où chacun a été copié.

Supposons maintenant que le fichier imagegrab soit sur la même clé usb que DVdate, sous le chemin e:\image\imagegrab.exe. Ce fichier e:\image\imagegrab.exe sera noté dans le fichier ini. Or au prochain lancement, la clé sera peut-être implantée sur un autre ordinateur et aura hérité de la lettre de lecteur F:\. Alors DVdate aura un problème car il cherchera imagegrab.exe dans le dossier e:\image\ qui n'existe pas, et qui est devenu le dossier f:\image\.

Christophe me demande d'en tenir compte dans mes logiciels, en sauvant des chemins relatifs au lieu de sauver des chemins absolus. C'est ce qu'on pourrait appeler une précaution de troisième niveau.

Cela me pose deux difficultés: d'abord une difficulté de programmation, car pour saisir des chemins j'utilise des composants de delphi qui ne fonctionnent qu'en chemin absolu.

Ensuite une difficulté de fond: pour un logiciel qui traite de vidéo numérique, il faut manipuler de très gros fichiers. Il y a donc peu de chances que le dossier où chercher ces très gros fichiers soit sur une clé usb. En revanche, il pourrait très bien être sur un disque dur externe. Dans le premier cas, il est donc inutile de transcrire son adresse en relatif, alors que dans le second cas, il faudrait y procéder. Comment faire la différence?

J'ai mis au point la solution suivante pour contourner ces difficultés, et compte l'implanter dès la prochaine révision de mes logiciels:

D'abord l'utilisateur devra indiquer s'il veut que sa version soit portable (donc enregistre ses préférences dans un fichier ini situé dans le même dossier que l'application) ou s'il veut que sa version soit normale (et enregistre ses préférences dans le registre).

S'il est dans le premier cas, au prochain lancement, le programme regardera quelle était la lettre du périphérique dans l'exécutable indiqué sous exename. C'était la lettre de l'unité usb ou disque dur externe, par exemple E:\. Ensuite il regarde quelle est la lettre actuelle du périphérique sur lequel se trouve l'application (qui par définition est considéré comme une unité de stockage portable). Par exemple F:\.

Chaque fois que dans les préférences apparaîtra un dossier ou le chemin d'un fichier commençant par la première lettre ( E:\), on corrigera cette lettre en la remplaçant par la seconde ( F:\).

De cette manière, toutes les références qui pointaient vers la clé usb (ou le disque dur externe) continueront à pointer vers la clé usb (ou le disque dur externe). Pour autant, l'utilisateur n'a absolument besoin de se préoccuper de rien, il ne verra que des chemins absolus et non relatifs, et le programme n'écrira dans le fichier ini que des chemins absolus et non relatifs. C'est DVdate qui saura relativiser tout cela au lancement.

Si Christophe lit ce billet, il me dira peut-être qu'il faut assurer un quatrième niveau de portabilité: en effet, il ne lui aura pas échappé que DVdate peut sauver l'adresse d'une playlist. Avec ma technique de 3ème niveau, si l'utilisateur prend soin de sauver la playlist dans un dossier qui figure sur la clé usb, alors DVdate pointera toujours vers ce dossier, même si la clé a été déplacée sur un autre système. Par contre, le fichier playlist.txt ainsi pointé, liste lui-même des fichiers vidéo, dont certains pouvaient être sur la clé usb. Si j'étais rigoriste, je devrais donc aussi corriger ces fichiers en changeant leur périphérique E:\ en F:\.

Je ne suis sans doute pas assez rigoriste en matière de portabilité pour aller aussi loin, car au fond je crois que ce n'est pas utile, et compliquerait les opérations de DVdate. Par contre, si je trouvais un mécanisme simple et automatique pour imposer toutes les corrections de E:\ vers F:\au fur et à mesure que l'on veut utiliser un fichier ou un dossier, sans devoir les lister a priori, je n'hésiterai pas à l'implanter.

En attendant, vous pouvez tester la clé liberkey sur laquelle vous trouverez Filmerit, en version 3.0.8, donc avec une portabilité de niveau 2 pour reprendre l'échelle ci-dessus. Et ne ratez pas la prochaine version 6.4.0 de DVdate, qui devrait avoir la portabilité de niveau 3.

samedi 7 juillet 2007

L'été sera glagla

Je trouve dans Libération un article qui ne peut pas me laisser indifférent, puisqu'il dit:

depuis que Nicolas Sarkozy est à l’Elysée, la météo est pourrie. Vents déments, pluies battantes, froid de gueux, nous n’aurons qu’un mot : glagla


Et l'article de décliner les programmes télé de l'été autour du thème glagla: Glagla, les miquettes; Glagla, les énigmes; Glagla, l'amour.

C'est pour moi l'occasion de vous confirmer mon programme de travail pour l'été 2007:

Je termine en ce moment une révision de DVdate,

Ce sera probablement la version 6.4.0, qui comprendra un vrai éditeur de scènes, capable de faire automatiquement la liste des scènes (par analyse du contenu s'il ne s'agit pas d'un programme avi DV), qui permettra ensuite de corriger ce découpage, en fusionnant ou découpant des scènes, de donner des titres aux scènes, et de sauver tout cela dans un fichier scn compatible avec Studio de Pinnacle, ou dans un fichier texte utilisable dans Excel ou tout autre programme pouvant importer des bases de données sous forme de texte séparé par des virgules.

J'espère terminer cela avant de partir en congés le 14 Juillet.

A mon retour, début août, c'est promis, je me lancerai dans la grande révision de CassetteDV que beaucoup de mes interlocuteurs attendent.

J'ai toujours beaucoup de demandes d'améliorations ponctuelles qui m'arrivent par mail pour chacun des programmes. Si elles ne concernent pas le programme sur lequel je suis en train de travailler, je les stocke jusqu'au moment où je lancerai la révision.

Mais le moment venu, il faut bien sûr trier parmi toutes les suggestions. Je sais que le côté usine à gaz des programmes rebute plus d'utilisateurs qu'il n'en satisfait. Donc j'y vais avec prudence, et n'essaie d'intégrer que des améliorations utiles au plus grand nombre et qui restent cohérentes avec l'esprit du programme.

samedi 16 juin 2007

Réduction des coûts avec ImageGrab

Dans un précédent billet, je me demandais à quoi servait ImageGrab. Voilà un exemple:

Un employé du groupe Thalès m'a commandé une licence pour ImageGrab, car il veut utiliser ce programme dans le cadre de ses activités professionnelles, et notamment avoir la possibilité d'automatiser l'extraction d'images d'un grand nombre de fichiers. Il travaille sur des images vidéo de visages pour constituer des bases de données de biométrie.

Son objectif est d'extraire une dizaine de milliers d'images d'un millier de fichiers video mpg, avi, wma. Dès le premier jour où je lui ai envoyé le programme sous licence, il m'a confirmé que le
premier batch (500 images, sur 50 fichiers mpg) s'est très bien passé.

Suite à ma recommandation il a aussi installé une version (gratuite) de démo de Ulead pour avoir les filtres de décompression mpeg2 qui marchent le mieux avec ImageGrab.

Voilà donc un investissement de 19€ (licence d'ImageGrab) qui est rentable: si je compte ne serait-ce qu'une minute par image extraite manuellement, il aurait dû passer 166 heures de travail, soit, à raison de 35 heures par semaine, plus d'un mois de travail sur ce projet.

Au prix où les ingénieurs et techniciens sont payés chez Thalès, cela représente donc une grande économie de coûts. J'espère que mon utilisateur économe verra sa sagacité récompensée.

lundi 28 mai 2007

Le moteur d'ImageGrab 4.1.0

J'ai publié à la fin de ce billet un lien vers la version 4.1.0 de ImageGrab. Cette version fait encore progresser l'interface de ImageGrab, mais surtout elle comprend un "moteur" amélioré pour lire les vidéos.


Voici trois exemples d'améliorations de ce "moteur":

1. la lecture des fichiers mpeg2.

Avec la version 3.0 la lecture des mpeg2 était très aléatoire, et donnait parfois seulement une image à l'envers, et au bout de multiples essais. Cette fois, si un décodeur mpeg2 approprié est installé sur votre système, ImageGrab ne devrait pas se faire prier pour donner l'image et dans le bon sens.

Qu'est-ce qu'un décodeur approprié? C'est un décodeur capable de donner l'image vidéo dans la mémoire de l'ordinateur, sans passer directement par la mémoire vidéo (overlay). Ulead ou Pinnacle fournissent de tels décodeurs. Ceux de Cyberlink ou Fraunhofer ne conviennent pas toujours. La nouveauté est que si au moins un des décodeurs appropriés est correctement installé, alors ImageGrab saura le trouver et le faire fonctionner correctement.

Ce qui vaut pour les fichiers mpeg2 vaut aussi pour les fichiers vob non cryptés. Vous pourrez donc lire et extraire des images des DVD non cryptés que vous avez fabriqués.

Vous pouvez lancer Filmerit pour avoir la liste des filtres installés sur votre système. Si vous n'arrivez pas à lire les fichiers mpeg2 avec ImageGrab, essayez d'installer une version de démonstration de Ulead ou de Pinnacle.

2. La lecture des vidéos ayant des sous-titres srt

Il suffisait parfois de lire un fichier avi doté d'un fichier de sous-titres srt pour que ImageGrab se bloque. En effet, si un fichier srt se trouve dans le même dossier que le fichier avi, et que le filtre DirectVobSub (auto-loading version) est installé sur votre système, alors ce dernier tente de s'insèrer dans le graphe de l'application multimedia , ce qui jusqu'ici bloquait ImageGrab. Cela n'est plus le cas.

A noter cependant que Imagegrab empêchant désormais ce filtre de s'insérer dans le graphe, il n'affichera pas vos sous-titres.

3. La lecture des sources vidéos Live

Vous l'aviez sans doute remarqué, ImageGrab sait lire une vidéo sur une source Live connectée à votre ordinateur. C'est une fonction prisée en liaison avec l'intervallomètre qui peut ainsi capturer une photo régulièrement. Dans la version 3.0 les sources utilisables étaient relativement peu nombreuses: ImageGrab savait lire essentiellement les caméras DV et quelques webcams. Dans la version 4.1.0 il saura lire beaucoup plus de sources, notamment les boitiers ADS Tech DVD Xpress, et donc vraisemblablement les boitiers DVC130 et DVC 170 de Dazzle (DVD Video Creator et DVD Video Creator Platinum ), mais aussi par exemple avec une carte DC30+ munie du driver de Maik.

Toutefois si votre boitier fournit une source en mpeg2, alors ImageGrab ne saura la lire que si un décodeur approprié est installé sur votre système (voir le § 1 ci-dessus).

Je serais intéressé par des commentaires sur ce point si vous avez d'autres sources de capture, disposant d'un driver compatibles avec directShow. Peut-être certains voudront faire l'essai avec une caméra HDV?

Pour essayer toutes ces nouveautés, téléchargez la version 4.1.0 en français ici

lundi 21 mai 2007

ImageGrab version 4.0.0

Une version beta de ImageGrab 4.0.0 est téléchargeable ici.
Elle fait 520K0 seulement, et pourtant comprend d'intéressantes nouveautés, que je vous livre en avant-première:
  • on peut enregistrer les préférences pour les retrouver au prochain lancement
  • la numérotation est assouplie, et on peut choisir autant de chiffres que l'on veut. La formation du nom des fichiers images est clarifiée
  • les lignes de commande sont très puissantes, j'en donne le mode d'emploi ici
  • on peut accéder aux dossiers et aux fichiers source et destination par de simples clics
  • les touches de raccourci sont plus nombreuses et sont listées dans les options (F10)
  • on peut désentrelacer les images, sans avoir besoin pour cela du filtre de désentrelacement de Pinnacle.
  • si des images existent déjà, on est mieux averti de ce fait à tout instant
Attention, cependant le "moteur" de ImageGrab n'a pas été changé. Si vous aviez du mal à charger certains fichiers vidéo, cela sera encore le cas avec ImageGrab 4.0.0.

Si vous utilisez la version 4.0.0 et avez des remarques à faire, je suis preneur bien sûr de vos réactions, soit sur ce blog, soit par e-mail.

vendredi 18 mai 2007

Comment réviser ImageGrab?

ImageGrab est l'un des plus grands succès parmi mes logiciels. Si je tape ce mot-clé dans Google, je trouve 11.400 pages web qui l'évoquent. En France, CaptureFlux a plus de succès; dans le reste du monde, DVdate a plus de succès; mais dans les deux cas, ImageGrab vient tout de suite en second, si bien que, quand je globalise, ImageGrab est sans doute le logiciel de Paul Glagla le plus téléchargé et utilisé au monde.

Je me suis parfois demandé ce qui fait le succès d'ImageGrab: si quelques passionnés l'utilisent pour des activités fort sympathiques comme étudier la vie des chauve-souris, ou analyser des séquences sportives (notamment en parachutisme), une bonne partie des utilisateurs (dont moi-même) l'utilisent principalement pour extraire des images de vidéos destinées à illustrer des pochettes de DVD ou de CD. Mais je ne me fais pas d'illusion, au fur et à mesure que je découvre de nouveaux sites ou forums qui parlent d'ImageGrab, je me rends compte qu'il y a de plus en plus de sites pornographiques qui l'utilisent pour extraire des photos à partir de vidéo X. C'est pourquoi je m'en étais un peu désintéressé depuis juillet 2004, date de sa dernière révision.

D'un autre côté, je reçois tellement de remerciements pour ce programme au fond tout simple, que je me suis décidé à le réviser maintenant, ne serait-ce que pour y introduire quelques perfectionnements qui sont dans la plupart de mes autres programmes, et qui n'avaient pas encore été introduits dans ImageGrab.

J'ouvre donc la discussion sur mon blog: quelles améliorations faut-il apporter à ImageGrab?

Il y en a quelques-unes qui sont déjà prévues:
  • permettre de sauver ses préférences, pour les retrouver au prochain lancement sans devoir tout reparamétrer.
  • permettre une numérotation plus ouverte: certains utilisateurs se plaignent d'être contraints de numéroter les images avec 4 chiffres seulement
  • ajouter et rationaliser les raccourcis clavier
  • ajouter une fonction intégrée de désentrelacement des images, pour ne pas dépendre du filtre de désentrelacement de Pinnacle
  • mieux gérer les vidéos en mpeg2 (si j'y arrive)
  • permettre d'inverser l'image
Si vous avez d'autres attentes, c'est le moment de réagir sur mon blog.

dimanche 13 mai 2007

Restaurer la restauration système

J'ai été frappé ces jours-ci par le syndrome de la restauration impossible du système. Il semble assez répandu chez les internautes utilisant Windows. Pour vous en rendre compte, lancez une recherche Google avec la phrase "Restoration Incomplete. Your computer cannot be restored". Vous trouverez plein de sites qui parlent de ce problème et proposent des diagnostics. Chez moi la forme du symptôme était que les points de restauration plus vieux que 48h ne marchaient plus. Les plus récents marchaient encore, et je pouvais d'ailleurs en créer de nouveaux.

Rien de ce que j'ai trouvé sur le web n'a permis de restaurer ma base de registres à ce qu'elle était il y a un mois. Or, en regardant dans le dossier c:\System Volume Information j'ai constaté que les points de restauration en cause existaient bel et bien. Ils sont contenus dans un dossier au nom abscons commençant par _restore. Et chaque point de restauration figure dans un sous-dossier nommé RPxxx. On peut trouver à quelle date le point de restauration a été effectué, simplement en regardant la date de création du dossier RPxxx. Notez que le dossier System Volume Information est un dossier caché et protégé qu'il faut déverrouiller avant de pouvoir y accéder. Microsoft fournit le mode d'emploi ici.

J'ai donc fait de la chirurgie fine, et par chance elle a marché:

J'ai créé un nouveau Point de restauration, et constaté qu'il avait créé dans le dossier correspondant (-restore....) de "C:\system volume information" un dossier appelé RP192. Dans ce dossier RP192, j'ai remplacé le sous-dossier snapshot par le sous-dossier snapshot issu du dossier RP113 correspondant au point de restauration voulu.

Et voilà, c'est tout: mon dernier point de restauration a pu être rechargé sans problème, et j'ai retrouvé le registre du mois précédent. Cette opération n'est peut-être pas sans risque. Elle peut donner un peu d'incohérence, dans la mesure où elle restaure les fichiers du système à la date la plus récente et le registre, contenu dans snapshot, à une date plus ancienne. Mais chez moi cela a marché.

J'en tire d'ailleurs comme conclusion que le syndrome est causé par la restauration des fichiers système et non par la restauration du registre. C'est peut être bon à savoir.

vendredi 20 avril 2007

Si vous n'aimez pas regsvr32

Quand vous avec récupéré un filtre directshow, il se trouve souvent dans un fichier *.ax (ce que j'appelle le fichier serveur) qu'il faut alors installer sur votre système. La méthode classique suppose d'écrire avec notepad un fichier *.bat contenant une ligne de commande du genre:
regsvr32.exe c:\chemin\fichier.ax

Cela marche assez bien, mais n'est pas très commode à l'heure des interfaces graphiques de Windows (on se croirait encore sous DOS quand on travaille comme cela). De plus cela peut poser des problèmes si on ne sait pas écrire très exactement les chemins soit vers regsvr32.exe, soit vers le fichier serveur. (Quand il y a des espaces dans un nom de dossier, faut-il le mettre entre guillemets?)

Filmerit 3.0.0
comprend une petite fonction toute simple: il suffit de glisser/déposer le fichier serveur sur sa fenêtre, et votre filtre est installé.

Je me demande pourquoi cela n'avait pas été proposé plus tôt.


mardi 17 avril 2007

Filmerit 3.0.0 est en ligne

Je mets aujourd'hui en ligne la version beta 3.0.0 de Filmerit.


Elle m'a demandé quatre mois de travail. Elle représente un progrès très substantiel par rapport à la version 2.1 précédente. Jugez plutôt:

- Elle permet d'analyser quatre sortes de filtres à savoir les filtres directshow, les filtres DMO, les filtres Compression Manager, et les filtres Plug-and-Play. Elle peut même afficher les filtres plug-and-play inactifs, par exemple si vous aviez un jour branché un camescope DV sur votre ordinateur, il restera un filtre PnP inactif appelé "Microsoft DV Camera and VCR".

- La liste des filtres peut être affichée triée soit selon l'ordre des catégories, soit selon l'ordre alphabétique, soit selon les valeurs des mérites (ce qui est commode pour repérer tout de suite les filtres qui s'imposent avec de grosses valeurs), soit selon le fichier serveur.

- La liste des filtres (avec toutes leurs caractéristiques) peut être sauvée dans des fichiers comprimés zip, contenant soit un fichier de texte pur, soit un fichier rtf avec des mises en forme pour en faciliter la lecture.

- Pour augmenter la sécurité, Filmerit essaie de créer un point de restauration avant de sortir du mode "Lecture seule".

- Un support (minimaliste, certes) pour Windows Vista est assuré. Il faut savoir que Vista protège très rigoureusement l'accès aux clés de registre. Il faudra donc, si vous utilisez vista, soit lancer l'application comme administrateur, soit même désactiver le "User Account Control", avant de quitter le mode "Lecture seule".

- Une amélioration pour tous ceux qui aspirent à des programmes "portables", c'est-à-dire qu'on peut lancer depuis une clé usb, sans qu'elle ne modifie le registre: on peut maintenant sauver les préférences de Filmerit dans des fichiers ini si on veut.

-La fenêtre de Filmerit peut être redimensionnée, voire mise en plein écran, pour améliorer le confort de travail.

Et bien sûr, les fonctions de base de Filmerit restent plus que jamais présentes:
  • lister et analyser les filtres présents sur un système
  • comparer les filtres avant et après une installation
  • effacer des filtres
  • réparer des filtres
  • modifier le mérite d'un filtre
  • recharger toute une configuration de mérites
  • réparer d'un seul bouton tout le système
Attention, cependant cette version 3.0.0 doit être considérée comme une version beta. Elle pourrait encore subir quelques corrections dans les semaines qui viennent. Je serai très reconnaissant à ceux qui accepteront de la tester et de me faire part de leur expérience.

Pour la télécharger, il faut cliquer ici

vendredi 6 avril 2007

Les fichiers scn

Un internaute hongrois me demande quelle est la structure des fichiers *.scn.

Rappelons que les fichiers *.scn sont produits par Studio de Pinnacle et contiennent les informations relatives au découpage en scènes d'un fichier vidéo. Pinnacle ne donne guère d'indications sur la structure de ces fichiers. Donc c'est en procédant à des expérimentations que j'ai pu comprendre un certain nombre des choses que je présente ici sans garanties.

J'ai implanté l'utilisation des fichiers *.scn dans ImageGrab et dans DVdate. En outre, DVdate comme CaptureFlux peuvent créer des fichiers *.scn à partir de vidéos au format DV.

En fait, ces fichiers sont inutilement complexes et redondants. Je suppose que Pinnacle les a introduits en se basant sur les fichiers de projet *.stu qu'utilise Studio. On aurait pu créer des fichiers plus simples contenant les mêmes données. C'est donc seulement parce que j'ai souhaité une compatibilité avec Studio que j'ai travaillé sur ces fichiers *.scn.

Un fichier *.scn commence par un en-tête qui en hexadécimal est le suivant:
63 26
01 00 04 00 00 00 FF FF
03 00 0A 00 'SourceTape' [len] filename 00 00 00 00 00 00 00 00 {nbscenes} FF FF
01 00 04 00 'Clip' 50 00 00 00 FF FF

Puis pour la première scène:

01 00 05 00 'Scene' 00 00 00 00 00 (scene_2) 00 00 00 00 01 80 [len] filename 00 00 00 00 00 00 00 00 (scene_2)


Puis pour chacune des scènes suivantes, notées scene_i (avec i>=2):

03 80 F0 00 00 00 05 80 00 (scene_i) (longueur_i) 00 00 00 00 07 00 (scene_i) (longueur_i) (scene_i)

Ici ma notation est la suivante:
  • [len] est la longueur du nom du fichier avi (avec son chemin complet). [len] est noté sur un seul octet.
  • filename est le nom du fichier avi avec son chemin complet
  • {nbscenes} est le nombre total de scènes - sur 2 octets
  • (scene_i) est le numéro de la frame dans le fichier avi où commence la scène i. scene_1 n'est ici pas utilisé, car il serait nul. Ce numéro est un entier codé sur 4 octets.
  • (longueur_i) est la longueur - en nombre de frames -sur 4 octets de la scène i. Donc en principe (longueur_i)=(scene_i+1)-(scene_i)
Voilà c'est un peu bizarre, mais ce n'est pas moi qui ai inventé cela. En outre, je ne garantis pas que tous les fichiers *.scn suivent strictement ce format-là. Mais les fichiers que Studio a produit chez moi le suivent, et quand DVdate produit des fichiers *.scn de ce format, ils marchent dans Studio. Alors cela doit quand même être correct.

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.