From the moment that I’ve started working for a broadcaster I was immediately fascinated by the video routers, they basically are the core of a production centre the can switch, sync a reclock SDI signals it’s a very simple concept if you think switch a video from one port to others, but they hide a very complicated implementation because since you can switch any source to any destinations in the routing matrix the hardware must be no-blocking and you can’t do bandwidth oversubscription; in the meantime, you’ve to keep the vertical interval synched to avoid frames losses that cause flickering or other unexpected behaviours.
I know everything in the world it’s transitioning some sort of IP/Networked signal, but as I’ve mentioned before with 2022/2110/NDI/SRT you’ll always end up choosing the wrong one, this is the reason why I consider the legacy way more interesting, and there is nothing more legacy than the SDI born in the late ’80 it’s still surviving and actively developed. None I can say about the video routers and their ecosystems still based on some sort of not so fancy control protocol over some sort of serial interface.
To cut short a crosspoint commands it’s made by 3 elements: a destination, a source and a level; the first two are pretty self-explanatory, the level it’s the media type, in the big an complex systems, for example, you can split audio, video and data into different matrixes or different modules and control everything from a single command.
Here we come the reason for this project, some time ago I’ve acquired some video router to build my studio at home I’ve ended up acquiring a lot of 5 8×8 HD/3G routers and 1 8×8 SD (this last one literally catch fire, but this is a story for another time, I’ve managed to save the 5 3G) I quickly realise the problem was not to find the matrix itself but to find the control panels, so why not to do a little reverse engineer and build write something.
My weapon of choice for this project is the
Leitch / Harris / Imagine Communications branded Panacea video router, this kind of devices are in my opinion very consistent XY protocol (in different flavours) the same code that I’ve written for a device released in early 2000 (Panacea/XPlus) can still run on every modern Imagine platforms like the Integrator or Platinum.
Imagine Communications devices are managed via XY Protocols, even if the name is similar between them they behave in a very different way.
- XY Terminal (the crosspoint commands are specified in multiple lines via RS232 variables are decimal numbers)
- XY Telnet (same as the XY Terminal but via Telnet)
- XY Serial (the crosspoint command is a single string and every serial or telnet connection are joined to a shared stream where you can read every session and send commands, variables are hex)
- XY Client (the router open a session to a client but I’ve never figured out how the handshake works)
You can find an example of XY Terminal and XY Serial code at https://github.com/lrizzi/xy-panel the python web services act as an API gateway, the web pages are a simple frontend.