DGI Blackmagic Design VideoHub Driver

A .NET client library for controlling Blackmagic Design VideoHub matrix switchers over their Ethernet text protocol (TCP port 9990).

Features

  • Full routing control — route any input to any output
  • Label management — read and write input/output port labels
  • Lock management — lock, unlock, and force-unlock output ports
  • Real-time state — in-memory dictionaries kept in sync with every device update
  • Event-driven updates — subscribe to routing, label, lock, and device-info changes
  • Thread-safe — concurrent command calls are serialised; state dictionaries use ConcurrentDictionary
  • Multi-target — targets net47 and net8.0

Installation

Add the NuGet package from the DGI private feed:

dotnet add package DGI.Blackmagic.Design.Video.Hub.Driver

Quick Start

using Dgi_BlackMagicDesignVideoHubDriver;
var tcpDriver = new DotNetTcpClient(
    new DgiRemoteDeviceConfiguration.NetworkConfiguration { IpAddress = "192.168.1.27", Port = 9990 }
);

var driver = new BlackMagicDesignVideoHubDriver(tcpDriver);
driver.Register();
driver.OutputRoutingChanged += (_, e) =>
    PrintUpdate($"Output {e.OutputPort,2} routed → Input {e.InputPort}");
await driver.SetRouteAsync(output, input); // Route input 1 to output 1

// The driver connects in the background and populates state from the
// initial status dump sent by the VideoHub on every new connection.

Call driver.Unregister() to stop the connection and all reconnect attempts.


Port Numbering

All port indices in this library are 0-based, matching the VideoHub Ethernet protocol.
Port 0 in code = port 1 on the physical chassis label.