Archive ·

Line-accurate SDI output: what the card does, and what the computer has to do

We are often told that line-accurate HD-SDI playout needs a server with two processors. On SDI the output card clocks out every line; the computer’s job is to have the right frame ready in time. What our two single-processor desktops read on 12 November 2026 shows how much room that leaves.

Written once, on the date above. Corrections are added at the end as dated addenda, and nothing above them is changed silently.

The claim

We hear it often, from people who have run playout for years: line-accurate HD-SDI output needs a server with two Xeon processors. The reason behind it is real. The conclusion does not follow from it, and this entry says why, with what our own two machines read on 12 November 2026.

Who draws the lines

An SDI output is a serial stream: every sample of every line, the blanking between lines, and the sound and data packets carried in that blanking, clocked out at a fixed rate by the output card’s own hardware. The computer never times a line. It hands the card complete frames, each picture with its sound and ancillary data, and the card plays each one in its slot.

The rate the card clocks at comes from one of two places. Running free, from its own oscillator. Genlocked, from a house reference on its reference input, so that its frames and lines start in step with every other device on that reference. The second is what “line-accurate” usually means in a facility: the output’s timing held against the house reference. That is a property of the card and the reference. The processor driving the card is not in that loop, whatever its socket count.

What the computer has to get right

Three things, and none of them is timing a line.

  • Never be late. The card must hold the next frame before its slot comes round. Our engine keeps eight frames queued on the card, 160 ms at 1080p50, so a computer that is slow for a moment does not reach the output.
  • The right frame in each slot. Which picture airs in which frame is arithmetic on a clock: the engine schedules on the machine’s TAI time, and each item starts on a frame of the output’s grid.
  • Do each frame’s work in time. Decoding, converting the picture to the card’s format, the sound and the ancillary data, every 20 ms on each 1080p50 channel. That is a question of capacity. More cores buy capacity. They do not make a deadline more certain: the threads that keep time have to be kept clear of everything else, on any number of processors.

So the useful questions about a playout computer are how close its work comes to the frame period, and whether anything it does can make a frame late. Both can be measured, and the engine measures them on every frame.

What our two machines read

Both are built from retail desktop parts, one processor each; the parts are on our hardware page. We read the figures below from each engine’s own interface on 12 November 2026 at 16:16 UTC. Each is a reading of that afternoon, not a claim about any other.

MeasurementValueWhen and how
Processor sockets1 in each machineRead from the operating system on both, 12 Nov 2026
Second unit: channels4, each 1080p50One per SDI output; the hardware page
Second unit: engine run at the reading183 hStarted 5 Nov 2026 00:43 UTC, read 12 Nov 2026 16:16 UTC: 33,039,150 frame ticks
Second unit: frames queued on the card8 on each channelThe engine’s reading of the card, 12 Nov 2026 16:16 UTC
Second unit: clock-thread wakes more than 0.5 ms late0Every frame tick of the run, read 12 Nov 2026 16:16 UTC
Second unit: latest wake of the clock thread4.7 µsThe worst of every frame tick of the run, against a 20 ms frame
Second unit: the clock thread’s work at a tick1.57 ms typical, 5.77 ms at the 99.9th percentile, 7.89 ms at worstEvery frame tick of the run, all four channels together, against a 20 ms frame
First unit: two channels on the current engine8 frames queued; 0 late wakes; latest wake 1.8 µs; work at a tick 1.8 µs typical, 62 µs at worstA run of 48 h at the reading: started 10 Nov 2026 15:53 UTC, read 12 Nov 2026 16:16 UTC

The clock thread is the one that keeps time: at every frame tick it hands each channel its next frame, and decoding and conversion run on other cores. Its work at a tick is the share of the frame period that thread spends before it sleeps again. The first unit runs a newer engine, which hands a decoded frame on without copying it. The two machines differ in engine, processor and channel count, so we compare neither with the other; each reading stands for its own machine.

Where the two-socket advice comes from

The advice has a sound origin. Playout has long done in software what no card does for it: decoding several streams, drawing graphics, often on a general-purpose operating system with no real-time care taken. There, a frame not ready in time went to air, and more cores were the cheapest insurance against it. That insurance buys capacity, and capacity is worth having. It does not touch the output’s line timing, which the card owns.

The worst timing events in our own record were two wakes of the clock thread more than half a millisecond late, in a fourteen-day run in August on a machine playing one channel. Neither reached the output: the card had its queue. Chasing them took us into where Linux places a sleeping thread’s timer, not into a shortage of processing; that work, and what it did and did not settle, is in its own entry.

Written on 10 November 2026, its readings taken again on 12 November 2026, the day it was published, from the record: the two engines’ own readings of that afternoon, both machines’ processor counts, the genlock test of 27 September 2026, and the August late wakes (RET-130).