On SDI, PLAYDECK uses SCTE-104 markers in VANC (not SCTE-35). Use SCTE-104 to signal ad inserts / splice points to downstream SDI equipment.
For the full matrix (including streams, recording, NDI) see:
Closed Captions & SCTE — Overview
For IP / MPEG-TS markers, use SCTE-35 instead: Sending SCTE-35 to a stream server.
In this article:
→ SDI vs streams
→ Enable SCTE-104 on SDI
→ Send SCTE-104
→ Detect and log
→ SDI loop test
→ Forwarding
→ Important limit (CC / ASS track)
→ Related
SDI vs streams
| Connection | SCTE type |
|---|---|
| SDI (DeckLink, etc.) | SCTE-104 only (VANC) |
| UDP / SRT / DVB / TS file / HLS segments | SCTE-35 only |
PLAYDECK does not convert SCTE-104 ↔ SCTE-35 automatically.
If you go SDI → IP stream, SCTE-104 will not appear as SCTE-35 on the stream. Fire SCTE-35 on the channel that owns the stream output (see overview and SCTE-35).
Enable SCTE-104 on SDI
Input
On the SDI input, enable VANC Data → Enable Closed Captions and SCTE-104 Triggers.
Same checkbox as Closed Captions capture. It is opt-in because VANC capture adds processing load.
Output
With a license that includes SCTE / CC, SDI output can carry VANC including SCTE-104 when markers are present on the channel.
Send SCTE-104
Attach SCTE commands to clips, blocks, overlays, or Action buttons. Set the command type to SCTE-104 and paste XML your SDI gear expects.
PLAYDECK does not convert SCTE-104 ↔ SCTE-35. If the same break must hit SDI and an IP stream, fire two commands (104 on SDI, 35 on the stream channel).
The Commands dialog has SCTE-104 Out / In samples. One break = one ID: Out uses {eventidhex}, In uses {eventlastidhex}. Duration in 104 is tenths of a second as 4-digit hex ({blockduration10hex}), not the 90 kHz number from SCTE-35.
<SCTE35_protocol_version>0</SCTE35_protocol_version> is a normal field in a 104 multiple_operation_message (the splice op is SCTE-35 protocol version 0). It does not mean PLAYDECK is sending SCTE-35 on SDI. <protocol_version>1</protocol_version> is the 104 message version.
SCTE-104 Out (splice request, opID 257)
Typical on block start. time_type 0 = immediate (no pre-roll clock).
<SCTE104 line=12>
<multiple_operation_message>
<protocol_version>1</protocol_version>
<AS_index>0</AS_index>
<message_number>1</message_number>
<DPI_PID_index>1</DPI_PID_index>
<SCTE35_protocol_version>0</SCTE35_protocol_version>
<timestamp>
<time_type>0</time_type>
</timestamp>
<ops>
<op>
<opID>257</opID>
<data>02 {eventidhex} 00010000 {blockduration10hex} 010101</data>
</op>
</ops>
</multiple_operation_message>
</SCTE104>
SCTE-104 In
Block end. Same ID, no duration in the data.
<SCTE104 line=12>
<multiple_operation_message>
<protocol_version>1</protocol_version>
<AS_index>0</AS_index>
<message_number>1</message_number>
<DPI_PID_index>1</DPI_PID_index>
<SCTE35_protocol_version>0</SCTE35_protocol_version>
<timestamp>
<time_type>0</time_type>
</timestamp>
<ops>
<op>
<opID>257</opID>
<data>04 {eventlastidhex} 00010000 0000 010100</data>
</op>
</ops>
</multiple_operation_message>
</SCTE104>
Adjust line=, AS_index, DPI_PID_index and the <data> layout to whatever your inserter documents. Placeholders are listed on Sending SCTE-35 to Streams & Servers.
Detect and log
Open the SCTE Event Log (Logs → SCTE).
>>= marker sent on that channel<<= marker detected on a receiving playlist (e.g. SDI input playing in another channel)
Logging both directions is the fastest way to verify a loop without external analyzers.
SDI loop test
- Channel 1: SDI output active.
- Physical loop (or second port) into an SDI input; enable VANC Data on that input.
- Channel 2: play that input in the playlist.
- Channel 1: Action button with SCTE-104 sample; both channels playing.
- Event Log:
>>on Ch1 and<<SCTE-104 on Ch2.
You can add a second SDI hop (Ch2 → Ch3) to confirm forwarding on SDI.
Forwarding
PLAYDECK can forward incoming SCTE-104 from an SDI input to an SDI output when that input is played through a channel that drives SDI out.
Forwarding SDI (104) → UDP/SRT (35) does not happen automatically. Use SCTE-35 on the streaming channel instead.
Important limit (CC / ASS track)
If Channel 1 is playing a clip with an active Closed Caption or ASS text track, SCTE-104 on SDI may only be received intermittently (>> still looks fine; << on the loop is unreliable).
Workaround: turn the text track off when SCTE-104 on SDI must be reliable.
This conflict was not observed for SCTE-35 on MPEG-TS streams in the same way.
Related
| Article | Topic |
|---|---|
| Closed Captions & SCTE — Overview | Full matrix, domains, embed flags |
| Sending SCTE-35 to a stream server | UDP/SRT/DVB, Nimble, HLS |
| Closed Captions & Subtitles | CC burn-in / pass-through |
| Recording CC & SCTE | MKV vs TS, sidecars, playback checks |