Sites


Puredata

PDP : Pure Data Packets

PDP est une extension gérant des flux vidéos, développée par Tom Shouten.

Il existe également une extension de PDP dénommée PIDIP proposant de nombreuses fonctionnalités supplémentaires (effets vidéo, dont EffectTV et FreiOr, texte, streaming, enregistrement directement vers le disque, etc.). Celle-ci est développée principalement par Yves Degoyon avec la collaboration de Lluis Gomez i Bigorda et Tatiana de la O.

Ces librairies sont incluses dans la version 0.42.5 de Pd-extended, et sont disponibles séparément pour Pure Data Vanilla (mais incluse dans la distribution Puredyne http://puredyne.org).

On peut noter quelques caractéristiques de PDP :

  • fonctionne sur les systèmes POSIX  : GNU/Linux et Mac OS X (si X11 est installé) ;
  • utilise un système de gestion de flux d'information correspondant à celui du son en « chute d'eau », du haut vers le bas ;
  • autorise le multi-fenêtrage avec plusieurs systèmes de gestion de fenêtres (sorties XV, GLX et SDL) ;

Le principe de PDP fonctionne sur le traitement de matrices. On travaille toujours avec des matrices de même taille et de même type de données. Il faut dès lors s'assurer que les images utilisées sont de la même dimension pour pouvoir les combiner.

Il y a beaucoup d'objets différents dans ces librairies  : effets vidéo de transformation et de mixage, ajout de texte, détection et poursuite de mouvement, analyse de couleur, ainsi que des outils de streaming depuis et vers un serveur Icecast, comme Giss.tv.

Exemple d'architecture des flux

Voici un exemple de patch vidéo avec trois objets propres à PDP/Pidip.

pdp01_1.png

  • [pdp_ieee1394] : lit la sortie d'une webcam ou d'une caméra FireWire et la transforme en série de paquets PDP.
  • [pdp_ascii] : transforme chaque paquet (ou image PDP) en image-texte (ascii-art).
  • [pdp_glx] : envoie les images pour les afficher dans une fenêtre.

Lecture du patch : on appuie sur l'interrupteur. Cela lance le métronome qui cadence alors le flux vidéo, autrement dit l'envoi des « paquets » (ici cent fois par seconde, car un il y a cent fois dix millisecondes dans une seconde) depuis la caméra vidéo. Un effet transforme l'image en art ASCII et l'image est envoyée sur deux fenêtres d'affichage (ici de type GLX) créées automatiquement dès que les objets pdp_glx reçoivent une image. La glissière horizontale permet de régler la taille des caractères.

Note : si l'on désactive l'interrupteur, les images restent. Chaque nouvelle image remplace la précédente. Si on cesse d'envoyer de nouvelles images, c'est la dernière qui reste.

Les fonctionnalités de base

Sorties vidéo

PDP accepte trois types de fenêtres de sortie, basées sur des méthodes différentes de contrôle de l'écran. Chacune a ses avantages et inconvénients, liés au système sur lequel elles sont utilisées.

  • [pdp_xv] sortie X11 (sur GNU/Linux avec XVideo) : utilise le rendu direct de X11 (gestionnaire de l'interface graphique).
  • [pdp_glx] sortie X11 (sur GNU/Linux et Max OS X) : utilise le rendu OpenGL (accélération matérielle du rendu par la carte graphique).
  • [pdp_sdl] sortie SDL (sous GNU/Linux) : rendu qui permet de se passer de X11 (moins utilisé).

L'avantage de PDP par rapport à GEM est notamment la possibilité de sortir le signal dans plusieurs fenêtres indépendantes, et donc de faire du multi-écran de manière très simple.

Lecteurs vidéo

PDP offre plusieurs objets pour lire des fichiers vidéo.

  • [pdp_qt] lecteur vidéo simple basé sur quicktime4linux.
  • [pdp_qt~] lecteur audio-vidéo simple quicktime4linux.
  • [pdp_yqt~] lecteur audio-vidéo Pidip (modification de pdp_qt~).

Ces lecteurs permettent de lire des fichiers vidéo compris par la librairie quicktime4linux ou Quicktime (sur Mac OS X).

pdp-lect_1.png

Pour lire des fichiers OGG/Vorbis/Theora, on utilisera [pdp_theorin~].

Capture vidéo

PDP peut capturer de  la vidéo en temps réel à partir de sources externes diverses  : webcam, cartes d'acquisition analogique, ou caméra DV.

  • [pdp_v4l] acquisition webcam / carte tuner (ancien pilote).
  • [pdp_v4l2] acquisition webcam / carte tuner (nouveau pilote, à préférer).
  • [pdp_i1394] capture DV.

Ces objets ne redimensionnent pas les images capturées, il faut donc toujours s'assurer qu'elles sont de même taille que les images avec lesquelles on souhaite les mixer.

Les effets vidéo de base

  • [pdp_mix] compose deux signaux vidéo, suivant un coefficient (0 = entrée gauche, 1 = entrée droite).
  • [pdp_scale] redimensionne une vidéo (attention  : étape à utiliser avec précaution, assez lourde pour le processeur).

pdp_mix_video.jpeg

  • [pdp_gain] applique un gain de luminosité ou de couleur.
  • [pdp_add] additionne deux flux vidéos.
  • [pdp_mul] multiplie deux flux vidéos.
  • [pdp_zoom] resserre le cadre et agrandit une vidéo.
  • [pdp_canvas] superpose/juxtapose des vidéos dans un écran.

Exemple combinant quatre fichiers vidéo dans une grille :

pdp_canvas.png

Analyse d'images

Voici quelques objets permettant de faire une analyse de l'image pour en ressortir des caractéristiques, et/ou créer une synthèse sonore.

  • [pdp_scan~] synthèse sonore à partir de l'analyse angulaire du plan de luminosité de l'image.
  • [pdp_scanyz~] synthèse sonore à partir de l'analyse plane du plan de luminosité de l'image.
  • [pdp_hue] analyse la couleur globale de l'image et sort les coordonnées RGB.
  • [pdp_ctrack] traque un « blob » de pixel d'une couleur donnée, et en ressort la position X et Y ainsi que la taille de la zone suivie.

Il existe une extension à PDP et GEM intégrant la librairie OpenCV d'analyse d'image, permettant un travail très poussé dans ce domaine : http://www.hangar.org/wikis/lab/doku.php?id=start:puredata_opencv

Enregistrements

  • [pdp_rec~] enregistre l'audio et la vidéo dans un fichier Quicktime en YUV420P.
  • [pdp_theorout~] enregistre l'audio et la vidéo en OGG/Vorbis/Theora.
  • [pdp_loop] enregistre une série d'images dans une boucle de taille variable (comparable à une ligne de délais).

Connections Réseau (streaming)

  • [pdp_netsend] et [pdp_netreceive] permettent l'échange de paquets PDP entre des machines distantes, en UDP ou TCP. L'envoi est non compressé, et nécessite donc une bande passante importante. Cette méthode permet de conserver la qualité de l'image au maximum et de minimiser le délai (en général de l'ordre d'une image sur un réseau local).
  • [pdp_theonice~] et [pdp_icedtheo~] permettent d'envoyer et recevoir du flux audio-vidéo vers et depuis un serveur Icecast2 et Giss.tv (remarque : selon la version de libtheora utilisée pour compiler ces objets, ils peuvent se révéler non fonctionnels sur certaines distributions... à tester avec prudence donc).

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.