Tulix Systems
ANSI/SCTE 301 (2025) · early adopter

SCTE 35 marks the moment.SCTE 301 runs the operation.

Forty bytes in the stream say when a break opens and how long it lasts. They say nothing about what plays, for whom, on whose authority, or how each viewer's stream gets built. SCTE 301 standardises that layer — and that layer is where the money is.

Tulix built three systems to make the difference something you can watch instead of something you have to take on faith. All three are running right now.

The marker is necessary. It is nowhere near sufficient.

A splice_insert carries an event id, a direction, a splice point on the 90 kHz clock, a duration and a checksum. Every packager, SSAI vendor, ad server and measurement partner keys on it — which is exactly why SCTE 301 keeps emitting it rather than replacing it.

splice_info_sectionstandard framing · sample payload
FC3025 00000000000000 FFF 014 05 000004B2 7F EFFE 005A6B48 FE 0052CCF5 0000 0000 0000 E5B1AEAF
  • splice_command_type0x05 · splice_insert
  • splice_event_id1202
  • out_of_network_indicatortrue — break opens
  • splice_time · pts_time5925192 (90 kHz)
  • break_duration30.000 s · auto_return
  • tier0xFFF
  • crc_32verified

Four questions it has no field for

  • Which ad plays?There is no creative, no pod, no campaign in the message. Something outside the stream has to decide.
  • For which viewer?One splice reaches every session identically. Addressability cannot come from the marker.
  • On whose authority?Rights, blackouts and substitutions are contracts. The marker carries no policy.
  • Assembled how?Segments, discontinuities, timing and manifest bookkeeping are all downstream of the cue.

Every deployment fills those four gaps with private glue. SCTE 301 is the practice that finally names the glue.

What SCTE 301 actually coordinates

Published in 2025 as a Recommended Practice, SCTE 301 defines no new wire protocol. It describes how a modern linear or FAST channel is assembled by coordinating standards that already exist — and the stages genuinely run in order.

Schedule

Channel composition and rights policy arrive out of band: a lineup of VOD assets, live sources, break rules, and the audiences and windows each policy applies to. Not whatever an encoder happens to be playing.

SCTE 224 · ESNI — audiences, windows, alternate content

Decide

At each signal, a decisioning step answers a single question: what happens here? Fill with ads, pass through, delete the marker, black out, or substitute a different asset — potentially differently per session, region or device.

SCTE 250 · ESAM — acquisition / decisioning split

Assemble

The stream each viewer receives is built at manifest level: program segments, ad segments and slates with correct discontinuity and timing bookkeeping — cheap to compute, cheap to multiply across a channel portfolio.

Manifest manipulation · DAI · per-session output
SCTE 35 throughout An assembled channel still emits standard-framed SCTE-35 at every break, so packagers, SSAI partners and measurement keep working unchanged. Adoption is additive: nothing downstream has to be replaced, and a channel becomes a computed artefact rather than an encoder's output.

Three systems Tulix built, running live

One proves the mechanics, one gives your team the words, one is the platform that runs real channels. Open any of them from this page.

Proof · adgate

Both pipelines, one screen

Fire a single break and watch two philosophies answer it: a cue-driven stream on the left, a per-session assembled channel on the right.

  • Real splice_insert payloads — decode the bytes on screen
  • Six scenarios: break, substitution, blackout, per-viewer ads, marker decode, channel-from-files
  • Channels assembled from VOD with no encoder running
  • Self-running presentation mode for unattended booth loops
Open the comparison :8075/versus

Playback is open. Firing scenarios needs a booth login.

Language · Sales playbook

What to say on the floor

The show-floor script: the twenty-second opener, a timed run of show, six worked examples, and the objections you will actually hear.

  • Say-this / don't-say-this, so nobody claims 301 replaces 35
  • A three-minute run of show from setup to close
  • Two-player comparison with scenario cards
  • One table worth memorising before the doors open
Open the playbook :8085/compare

Built for sales, not engineering. Start here if it is day one.

Production · TULIX FASTBox

The platform that runs it

A single binary doing playout, SSAI, policy, delivery and reporting — the assembly and origination role SCTE 301 describes, implemented and shipped.

  • SCTE 224 policy: country, device and postal audiences, blackout, deny, alternate content
  • SCTE 250-style decision webhook on every detected signal
  • ABR HLS and DASH, DVR, failover, campaigns, VAST, geo and QoE reporting
  • Scope stated plainly in-product: what is implemented, and what is not
Open FASTBox :8080

Sign in with admin / admin. Demo box — change it before production.

What changes when the workflow arrives

The marker keeps doing its job in both columns. The second column is everything the marker was never asked to do.
CapabilitySCTE-35 aloneSCTE 301 workflow
Mark a break in band ✓Its core purpose ✓Still uses 35 for exactly this
Say which ads fill the break ✕No such field exists ✓Decision step, per signal
Different ads per viewer ✕One splice reaches everyone ✓Per-session manifest assembly
Replace program content in flight ✕Cannot express "play this instead" ✓Policy resolved at render time
Blackout with enforcement △Can signal it, cannot fill or scope it ✓Scoped audience, slate served
Channel with no encoder running ✕Needs a live transport stream ✓Assembled from VOD files
Out-of-band schedule and rights ✕In band only ✓SCTE 224 policy layer
Downstream compatibility ✓Universal ✓Emits standard 35 and HLS tags

Built by the people who also carry the packets

Tulix is not a slideware vendor with a reference architecture. We write the origin, the ad insertion and the control plane, and then we run them on our own network — so the assembly path on this page is the same path our customers' channels take to viewers.

That is why we are early on 301: we hit these gaps in production before the practice named them.

Autonomous systems
AS7219with AS10990 and AS36820
DRM
Widevine CWIPcertified implementation partner
Delivery
tulix.tv · bozztv.comowned and operated CDN
Base
Atlanta, Georgiadata centre and engineering

Start with the one that matches who you are

Engineers should open adgate and decode the bytes. Sales should open the playbook. Anyone evaluating a platform should log into FASTBox and build a channel.