iMotion

Publié par fredix Dim 31 août 2008 14:49:00 GMT

Mon logiciel iMotion avance doucement. Quelques optimisations du code avec GStreamer permettent maintenant de switcher d’effet très rapidement. En effet auparavant le changement d’effet réinitialisait le pipeline et donc la webcam. Maintenant je bloque le pad de la webcam, ce qui me permet de détruire l’ancien GstElement en charge de l’effet, le recréer avec le nouvel effet puis relier les pads. Le résultat est un changement très réactif, on peut s’amuser à jongler entre les effets sans latence. GStreamer me parait très puissant et est à mon avis mal exploité par les logiciels existants. Par exemple Cheese réinitialise la webcam à chaque changement d’effet, je la vois qui clignote…

Il y a je pense encore beaucoup à faire côté multimédia sur Linux, et si l’on veut un peu plus qu’un “simple” lecteur vidéo il nous faudrait de tout évidence un GIMP de la vidéo. Je n’ai bien sûr pas cette prétention, d’autant plus que je m’intéresse plus à l’aspect temps réel que post traitement. Sans aller vers un logiciel aussi poussé que vidvox GNU/Linux est à mon avis capable d’aller sur ce secteur dévolu à Apple. Encore faut-il accepter que cela sera impossible en utilisant de simple langage script comme Python ou Ruby, chose que j’ai fini par admettre :)

Tutoriels C/C++

Publié par fredix Ven 15 août 2008 16:13:00 GMT

Il y a bien 12 ans j’étais convaincu qu’un jour je me mettrais vraiment au C++, juste que je n’avais pas prévu mettre autant de temps :) S’il y en a qui ont tendance à procrastiner comme moi, voici de quoi gagner quelques années.

J’ai découvert il y a peu 2 superbes tutoriels qui permettent d’apprendre les langages C et C++ : Apprenez à programmer en C ! , Apprenez à programmer en C++ !. Excellent car l’auteur est très pédagogue et a la capacité de poser les questions que l’on se pose à mesure de la lecture et d’y répondre.

Il n’y a pas photo, le C++ simplifie énormément le C … Par exemple le CIN et COUT qui remplacent aisément le printf, la possibilité d’utiliser des références à la place des pointeurs, le new qui détecte automatiquement la taille à allouer et donc nul besoin d’effectuer un sizeof, le type bool, le possibilité de déclarer une variable n’importe où même dans la déclaration d’une boucle, le typedef automatique, les valeurs par défaut dans les paramètres des fonctions, la surcharge des fonctions, les fonction inline, et bien sûr tout ce qui est spécifique à la POO.

A mon avis il est quand même nécessaire de comprendre un minimum le C même s’il est possible d’apprendre directement le C++ . Cependant je pense que Ruby est à mon avis un meilleur moyen d’apprendre la programmation et la POO avant d’attaquer le C++ . C -> Ruby -> C++ ou Ruby -> C -> C++ est un bon parcours d’apprentissage.

Évidement en C++ pur on ne fait pas grand chose et il est nécessaire d’apprendre l’usage d’une bibliothèque graphique si on souhaite faire des IHM. Mais quoi qu’il en soit ce langage ouvre toutes sortes de perspectives (embarqué, client desktop, serveur, extensions, ...) choses difficiles à obtenir avec des langages plus simple de haut niveau.

D’autres tutoriels complémentaires : Cours de C/C++ de Christian Casteyde , Introduction au langage C de Bernard Cassagne

Ah si en 1996 j’avais eu Internet, toutes ces docs, le GNU/Linux actuel et Ruby … Ils sont chanceux les gamins d’aujourd’hui :) < / mode papy aigri>.

gtkmm

Publié par fredix Dim 10 août 2008 22:54:00 GMT

J’ai enfin décidé de me mettre au C++ et pour débuter faire une IHM à effectv. Je sais qu’il existe Cheese mais effectv est beaucoup plus fourni en effets visuels et mon objectif n’est pas d’en faire un clone.

Pour l’instant rien d’extraordinaire vu que cette application me sert surtout d’apprentissage mais j’arrive néanmoins à afficher ma webcam et à utiliser des filtres d’effets visuels. Il n’y a que 8 effets qui ont été porté d’effectv en plugin GStreamer mais cela sera l’occasion de tenter de porter ceux qui manquent. Pour ceux qui veulent compiler le source voici le dépôt GIT. Attention je ne me suis pas encore mis aux autotools donc il faut lancer le script compile dans le répertoire script en ayant auparavant modifié la constante DATADIR dans imotionapp.h et installé les bibliothèques de développement gtkmm, libglademm et gstreamermm.

Merci au guru master Dodji pour ses tuyaux :)

un screenshot avec l’effet dicetv :