Cannes Frame Splicing: Video Feed Sorting
Frame splicing at the Cannes ingest layer is where sloppy video feed sorting pipelines go to die, and I have watched more operators than I care to count blame the encoder when the real culprit was a timestamp reconciliation loop that never got audited. The mechanism is brutally simple and brutally unforgiving: every incoming stream carries a presentation timestamp, a decode timestamp, and a sequence header, and the splice engine has roughly one frame interval to decide whether to trust them. Get that ordering wrong by a single field and your output buffer desynchronizes at the multiplexer, which means duplicate frames, ghost overlays, and a wagering interface that renders the wrong round state at exactly the wrong millisecond.

The Timestamp Drift Nobody Audits
Here is what the vendor decks never show you. Drift accumulates at the splice boundary because most feed sorters re-order by arrival wall-clock instead of by embedded PCR, and over a four-hour session that misordering compounds into visible tearing on the client. I have torn apart hardware capture cards from three separate manufacturers and found the same flaw in each: the firmware queues frames in a fixed-depth ring buffer, and when the buffer overruns, the oldest frame drops silently. That silent drop is the beginning of every video feed sorting failure I have ever diagnosed, and it is invisible in the logs unless you are keying on sequence gaps rather than error counters. If your monitoring agent only alerts on decode failures, you are flying blind through the entire incident.

Sequence Header Reconciliation Is Not Optional
Reconciliation logic has to run before the splice, not after. The correct architecture reads the sequence header, validates the profile and level against the expected decoder capability, and only then admits the frame into the sorting queue. Skip that step and a mid-stream resolution change from the source will corrupt the entire downstream render tree. I have seen this exact failure cascade produce phantom bet confirmations in a live environment because the overlay compositor was reading a stale frame index. The fix is not glamorous — it is a hard gate that rejects any frame whose header mismatches the session contract, plus a re-keying routine that rebuilds the sort map from the last known-good keyframe. Operators who skip the gate because it "adds latency" are the same operators who file incident reports at 3 a.m. asking why settlement timestamps do not match the recorded feed. Build the gate, eat the two-millisecond hit, and sleep through the night.
Buffer Depth and the Illusion of Low Latency
Every product manager wants the latency number low. Fine — but the buffer depth that buys you that number is exactly the knob that determines how much jitter the splice engine can absorb before it starts reordering frames it should have played in sequence. A ring buffer of eight frames survives network jitter beautifully and collapses the moment the source encoder hiccups. I run deeper buffers than most, accept the added milliseconds, and never regret it, because a stable playout clock beats a fast unstable one every single day of the week. The sorting layer must treat buffer occupancy as a first-class signal, not an afterthought, and it must log occupancy at the splice boundary so you can correlate a future desync to the exact moment the queue thinned out. Without that correlation data, root-cause analysis is guesswork dressed up as engineering.
Deterministic Splice Ordering Under Load
The only defensible design is a deterministic sort: embedded PCR first, sequence number as tiebreaker, arrival time as a last resort that should never fire in a healthy pipeline. When arrival time fires, you log it as an anomaly, because that means your upstream is lying about its timing contract. During peak load — and in this vertical, peak load is a business requirement, not an edge case — the splice engine must degrade by dropping whole GOPs rather than individual frames, since a dropped GOP re-syncs cleanly at the next keyframe while a dropped frame poisons every subsequent prediction. I have benchmarked both approaches on identical hardware, and the GOP-drop strategy cut visible artifacts by an order of magnitude under a simulated 40 percent packet loss. That number is not theory. It is the difference between a feed that holds together and one that generates settlement disputes you cannot unwind.