Créer un encodeur pal/secam/ntsc

c’est intéressant, ça ouvre donc la possibilité de générer des bouteilles,
j’ai fini par commander sur ebay la puce adv7171 (encodeur pal/ntsc) pour 5 euros et la puce SAA7182WP (encodeur pal/secam/ntsc) pour 2 euros, même si je ne suis pas sûr d’arriver à mes fins, au moins j’aurai en stock ces 2 encodeurs,

entre-temps j’ai remarqué qu’il existait le concept de carte de développement/évaluation proposée par certaines sociétés, ça consiste en une carte avec des encodeurs/décodeurs déjà soudés, avec un microcontroleur, un port USB, un kit logiciel permettant d’interagir avec la puce, et des sorties au format RCA sont disponibles,

par exemple cette carte de développement qui possède un processeur ADSP-BF533, un encodeur adv7171 et des sorties analogiques RCA :
analog.com/media/en/dsp-docu … ev.3.2.pdf

analog.com/en/design-center/ … b-overview

mais 400 euros le prix ça calme :mrgreen:

je pense qu’on devrait arriver à nettement moins cher si on se fabrique sa propre carte, pour piloter l’encodeur (envoie de bits sur le bus de données), un bloc d’alim pour alimenter la puce, des condensateurs, des résistances, des connecteurs RCA pour la sortie analogique, et un microcontroleur (arduino ? ou plus puissant ?)

C’est sûr que à 400€ (hors FdP, of course !) ça fait mal au c*l, faut être motivé ! :laughing:
S’il est possible à minima d’utiliser un Arduino avec la puce, ce dont je ne doute pas, cela pourrait régler des problèmes connus, comme générer et injecter les datas VBI pour Syster, Videocrypt, Ceefax, Antiope, ainsi que régénérer l’ID Trame pour vieux tvc secam.

j’ai reçu la puce adv7171, l’autre puce saa7182wp est en cours d’acheminement,

la puce adv7171 est très petite, un carré de 1 centimètre de coté, au format TQFP44, l’espacement entre les pins est de 0.8 millimètres,
tqfp44.png

il existe un socket permettant de convertir le format TQFP44 au format DIP44, permettant d’utiliser une breadboard :
ebay.com/itm/QFP44-PQFP44-T … m570.l1313

ça permettrait de faire des expérimentations sans sortir le fer à souder,

concernant le microcontroleur arduino uno je ne suis pas sûr qu’il soit assez rapide pour envoyer des données sur le port mpeg de l’adv7171, ça fait quand même 768x576 pixels à transmettre (et pour chaque pixel il faut envoyer les valeurs Y, U et V) à un rythme de 25 images par seconde

Faut oublier l’Arduino et passer au STM32 : st.com/en/microcontrollers/ … -mcus.html

Une carte STM32F4 nucleo ne coute guère plus cher et certaines acceptent même les shields Arduino puisque équipées des rangées de connecteurs qui vont bien.

il s’agit de ce modèle NUCLEO-F401RE ?
fr.farnell.com/stmicroelectronic … dp/2394223

car il existe plusieurs sous-références pour la carte STM32F4 nucleo :
st.com/content/st_com/en/se … cts-page=1

il faut que la carte soit suffisamment rapide pour envoyer des données vidéos à la puce adv7171, un bon point c’est que la carte est compatible avec linux, des outils existent
st.com/content/st_com/en/ab … p3781.html
hackaventure.blogspot.com/2016/ … llers.html

et je songe à une chose :
quid de la sortie vidéo de la framboise ?

est-elle matérielle (encodeur intégré) ou 100 % logicielle (un simple dac) ?

l’avantage, c’est qu’elle peut stocker des gros fichiers
car alimenter une puce en yuv cela fait du débit donc les Go !!!

transmettre une vidéo non compressée d’une seconde demande en effet beaucoup de débit, environ 33 Mo par seconde :
768 x 576 = 442 368 pixels pour une image

chaque pixel est codé sur 3 octets (infos YUV), ça donne au total pour une image : 1 327 104 octets,
comme il y a 25 images par seconde on a donc bien 33 177 600 octets à envoyer par seconde à l’arduino, qui lui doit envoyer ensuite la même quantité de données à la puce adv7171,

peut-être que la solution serait d’utiliser une puce décodeur mpeg2 à intercaler entre l’arduino et l’adv7171 ?
il y aurait moins de données à envoyer, car la vidéo serait au format compressé mpeg2, on peut aussi utiliser une puce qui décode à la fois le mpeg2 et le h264 (encore moins de données à envoyer), quelqu’un connaît une référence de puce décodeur mpeg2/h264 ?

autre solution : utiliser un raspberry pi, il y aura la puissance nécessaire, l’espace disque et la mémoire pour envoyer les données via le GPIO, mais le raspberry n’est pas vraiment conçu pour faire du temps réel (risque de latence, d’interruption du processeur pour effectuer une autre tâche)

voici une description de la norme ITU-R BT.656, qui concerne les signaux numériques vidéos non compressés YCbCr, la puce adv7171 récupère depuis un port ITU-R BT.656 (8 pins pour récupérer 8 bits, envoyés de manière parallèle) ce genre de signal :
en.wikipedia.org/wiki/ITU-R_BT.656

la documentation complète :
itu.int/dms_pubrec/itu-r/rec … !PDF-F.pdf

une interface SDI existe pour ce type de signal numérique :
en.wikipedia.org/wiki/Serial_digital_interface
fr.wikipedia.org/wiki/Serial_digital_interface

le défi ici consiste à trouver un moyen économique d’envoyer ces données à la puce adv7171, peut-être en utilisant un raspberry pi ?

As-tu fait des essais de recolorisation avec le NTSC ?
J’ai remarqué sur mon tv n&b que le moiré est bien plus visible dans ce standard qu’en pal/secam.

non j’ai pas encore essayé,
si tu as paint shop pro 8 il y a ce script qui simule l’encodage pal depuis une image :
web.comhem.se/zacabeb/whims/tvsim.html

Où en est le projet de l’encodeur ? :wink:

au point mort, car il y a la difficulté de générer le signal vidéo numérique au bon format attendu par la puce et à un débit suffisant,
et j’ai pas tous les composants nécessaires,

reste la possibilité d’utiliser le mode « générateur de mire » intégré à la puce ADV7171

Pour générer une mire de barres en NTSC ou PAL, n’importe quel décodeur de TV numérique (SD ou HD, terrestre ou satellite) équipé d’un port USB peut le faire à partir d’images JPEG stockées sur une clé USB (ou de séquences MPEG ou H264 pour de la vidéo).
Il a existé quelques décodeurs TNT SD avec encodage SECAM et port USB mais en HD c’est plus rare.

[quote="Pour générer une mire de barres en NTSC ou PAL, n’importe quel décodeur de TV numérique (SD ou HD, terrestre ou satellite) équipé d’un port USB peut le faire à partir d’images JPEG stockées sur une clé USB (ou de séquences MPEG ou H264 pour de la vidéo).
Il a existé quelques décodeurs TNT SD avec encodage SECAM et port USB mais en HD c’est plus rare.[/quote]

Bonjour,marceljack connaissez-vous des marques de deco sd/hd proposant le secam ?

Bonjour,marceljack connaissez-vous des marques de deco sd/hd proposant le secam ?
[/quote]
Oui, moi j’ en connais:
-Le SAGEM TNtop MPEG 4 HD/SD
-Le MEDIASAT DVB-S Canal satellite, et son frere jumeau pour le DVB-C Cable que louait numéricable MPEG 2 SD
-Le visiosat 7500 TNT SAT MPEG 2 DVB-S SD
-Le Visiopass Cable DVB-C de SAGEM en MPEG 2 SD

Au choix, signal CVBS PAL ou SECAM( SECAM identification ligne uniquement, car reinsertion TXT sur VBI )

Sinon il y le DIGIPAL 01 TECHNISAT DVB-T MPEG 2 SD, et le VEOX TNTSAT ou FRANSAT CAHORS MPEG 4 HD/SD DVB-S2 qui ont une sortie CVBS PAL/SECAM( secam avec identification ligne, et VBI avec identification trame, avec les 9 « Bouteilles », sans reinsertion TXT, du fait )

Quel sera le prochain épisode de l’encodeur ? :smiley:
Stay tuned !

je dirai que la prochaine étape serait d’acheter un adaptateur TQFP44 vers DIP 44 :

hobbytronics.co.uk/tqfp-44-breakout

afin d’y souder la puce pal/ntsc adv7171, c’est pas évident car l’espace entre les pattes est très faible et je ne suis pas doué en soudure de composants CMS,
l’objectif étant ensuite de pouvoir utiliser cette petite plaquette sur une breadboard, avec un microcontrôleur (arduino, stm32), pour des expérimentations sans soudures :

breadboard.jpg

ça permet au minimum d’activer l’option « générateur d’une mire de barres de couleurs » qui est intégrée dans la puce adv7171 :
ez.analog.com/video/f/q-a/5899/ … -pal/23407

si on veut aller plus loin (convertir une image numérique vers le format analogique pal) alors il faut créer une interface pour convertir un fichier vidéo (présent sur une carte mémoire flash) vers le format d’entrée attendu par la puce (ITU-R 1 BT601/656 YCrCb), et créer le programme pour le microcontrôleur capable de piloter la puce, là c’est nettement plus dur :mrgreen:

autre difficulté : la puce adv7171 est ancienne et n’est plus supportée par le fabricant, si on veut de l’aide sur les forums du fabricant il faut migrer vers la puce adv7342/7343 qui lui a succédé :
analog.com/media/en/technic … 2_7343.pdf

concernant la puce pal/secam/ntsc philips saa7182wp j’ai acheté un socket format plcc84 (moins d’un euro), qu’il faudra ensuite souder sur une plaquette

reichelt.com/de/en/ic-socke … 14704.html

ce genre de plaquette avec le socket déjà soudé coûte très cher, du coup j’ai que le socket pour l’instant, l’idéal étant d’arriver à ce type de plaquette utilisable sur une breadboard, pour des expérimentations sans soudures :

plcc84.jpg

Les vidéos présentées ici ont été colorisées grâce à l’IA.
https://www.youtube.com/channel/UCRTR0R-2n-rcMrItamVKX9g
Toutefois, je me demande comment coloriser informatiquement si aucune information de couleur n’est présente dans l’original ?

Cela utilise les réseaux de neurones artificiels :

  • On entraîne au préalable un modèle de réseaux de neurones en lui donnant en entrée une image en noir et blanc, avec en sortie l’image colorisée qu’il devra prédire,

l’image est convertie en vecteur numérique, pour être facilement manipulable par des opérations mathématiques,
entre l’entrée et la sortie du réseau de neurones il y a plusieurs couches équipées de neurones artificiels, qui vont appliquer des opérations mathématiques (une multiplication) sur des vecteurs via des « poids » (un peu comme des coefficients), lorsque la multiplication dépasse une certaine valeur (déterminée par une fonction d’activation) alors la valeur est transmise au neurone de la couche suivante, qui refait le même travail, jusqu’à la sortie (l’image colorisée),

on répète l’opération des millions de fois avec d’autres exemples d’images, à chaque itération les poids de chaque neurone de chaque couche sont mis à jour de manière à minimiser l’erreur de prédiction en sortie (la tâche du réseau étant de prédire la bonne couleur de tel pixel de l’image en sortie), une fois l’apprentissage terminé on aura un modèle efficace, qui saura prédire une image couleur plausible, en faisant de simples opérations de multiplications (aucune intelligence réelle, c’est juste une grosse calculatrice qui applique des poids sur des valeurs numériques).

voilà expliqué de manière très grossière comment fonctionne un réseau de neurones artificiels, il y a rien d’intelligent en fait, c’est juste une moulinette mathématique à plusieurs couches dont on a trouvé les bons « poids » (après un long apprentissage) qui permettent de générer des couleurs plausibles depuis une image noir et blanc en entrée.

fr.wikipedia.org/wiki/Apprentissage_profond
fr.wikipedia.org/wiki/R%C3%A9se … %C3%A9seau
towardsdatascience.com/colorizi … 92d71956e2

le principe existe depuis les années 50, mais à l’époque on avait pas assez de puissance de calcul pour mettre en oeuvre ces réseaux de neurones artificiels, il a fallu attendre le début des années 2010 quand les cartes graphiques sont devenus suffisamment puissantes pour faire l’apprentissage sur des quantités énormes de données (un CPU mettrait trop de temps, les cartes graphiques ont l’avantage de faire des millions de calculs en parallèle, ça accélère le temps d’apprentissage des réseaux de neurones, au lieu que ça prenne plusieurs mois avec un CPU ça prendra que 8 heures par exemple avec des données d’apprentissage de 50 millions d’images et une bonne carte graphique).