Je suis en train de développer un module de gestion et d'acheminement des signaux pour un système audiovisuel intégré et je le conçois dans le but d'être aussi flexible que possible sur différents réseaux de distribution de signaux. L'objectif du module est de gérer le routage à travers un certain nombre de commutateurs matriciels empilés 1 et de gérer la conversion de format nécessaire.
La meilleure solution que j'ai explorée à ce stade consiste à mapper le réseau sur un graphique avec des sommets discrets pour chaque type de signal pris en charge par les commutateurs et qui sont ensuite joints via des nœuds représentant les processeurs vidéo qui gèrent la conversion de format.
Les couleurs représentent les formats de signal. Les nœuds ronds sont soit des commutateurs, des sources ou des puits. Les nœuds carrés sont des processeurs vidéo qui effectuent une conversion de format.
De là, je peux utiliser une implémentation de l'algorithme de Dijkstra pour identifier le chemin qui doit être formé afin d'obtenir l'entrée X à la sortie Y. Cela devrait permettre aux données sur la configuration d'entrée / sortie de tous les commutateurs et processeurs de passer et le module s'adapte en conséquence.
Est-ce une solution appropriée ou existe-t-il une autre approche qui mérite d'être étudiée?
1 aka «crossbar switch», un routeur vidéo avec M entrées x N sorties qui prend en charge les connexions un à plusieurs. Chaque appareil physique peut gérer plusieurs formats de signal et peut ou non être capable d'effectuer une conversion de format.
edit: Comme mentionné par Péter Török, le graphique ne sera pas nécessairement un arbre, le diagramme est un exemple simple pour illustrer l'idée. Lorsqu'il est implémenté dans le «monde réel», il peut exister plusieurs chemins qui offrent différents niveaux de définition (DVI> VGA> composant> composite) que je prévoyais de représenter avec une pondération des bords.
edit 2: Voici un exemple un peu plus complet avec la directivité indiquée et montrant un réseau composé de deux types de signaux. L'exemple initial a été légèrement modifié afin que chaque entrée et sortie sur un périphérique soit définie comme un nœud discret car cela fournira les données requises pour contrôler le routage matriciel / la sélection d'entrée.