SCTE 104/35 Codex
This codex models a curated subset of SCTE 104's operations, focused on the message structures the parser decodes. See the official standard for the complete opID table.
Sections
- 8.2.2Single Operation Message
- 8.2.3Multiple Operation Message
- 8.3Operation Types
- 9.2.1alive_request
- 9.2.2alive_response
- 9.3.1splice request
- 9.6.2inject_response message
- 9.6.3inject_complete response
- 9.8.1time signal request
- 9.8.2splice null request
- 9.8.4insert_avail_descriptor request
- 9.8.5insert_descriptor request
- 9.8.6insert_DTMF_descriptor request
- 9.8.7insert_segmentation_descriptor request
- 9.8.9insert_tier_data request
- 9.8.10insert_time_descriptor request
- 12.4time() Definition
- 12.5timestamp() Definition
- 14Result Codes
single_operation_message()
8.2.2| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| opID | 16 | uimsbf | 8.2.2.1 | ||
| messageSize | 16 | uimsbf | 8.2.2.1 | ||
| result | 16 | uimsbf | 8.2.2.1 | ||
| result_extension | 16 | uimsbf | 0xFFFF unless conveying additional result information | 8.2.2.1 | |
| protocol_version | 8 | uimsbf | 0x00 | 8.2.2.1 | |
| AS_index | 8 | uimsbf | 8.2.2.1 | ||
| message_number | 8 | uimsbf | 8.2.2.1 | ||
| DPI_PID_index | 16 | uimsbf | 8.2.2.1 | ||
| data() | varies | structure | 8.2.2.1 |
multiple_operation_message()
8.2.3| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| Reserved | 16 | uimsbf | 0xFFFF | 8.2.3.3 | |
| messageSize | 16 | uimsbf | 8.2.3.3 | ||
| protocol_version | 8 | uimsbf | 0x00 | 8.2.3.3 | |
| AS_index | 8 | uimsbf | 8.2.3.3 | ||
| message_number | 8 | uimsbf | 8.2.3.3 | ||
| DPI_PID_index | 16 | uimsbf | 8.2.3.3 | ||
| SCTE35_protocol_version | 8 | uimsbf | 8.2.3.3 | ||
| timestamp() | varies | structure | 8.2.3.3 | ||
| num_ops | 8 | uimsbf | 8.2.3.3 | ||
| opID | 16 | uimsbf | for (i=0; i<num_ops; i++) | 8.2.3.3 | |
| data_length | 16 | uimsbf | for (i=0; i<num_ops; i++) | 8.2.3.3 | |
| data() | varies | structure | for (i=0; i<num_ops; i++); length = data_length | 8.2.3.3 |
time()
12.4| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| seconds | 32 | uimsbf | 12.4.1 | ||
| microseconds | 32 | uimsbf | 12.4.1 |
timestamp()
12.5| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| time_type | 8 | uimsbf | 12.5.1 | ||
| UTC_seconds | 32 | uimsbf | if time_type == 1 | 12.5.1 | |
| UTC_microseconds | 16 | uimsbf | if time_type == 1 | 12.5.1 | |
| hours | 8 | uimsbf | if time_type == 2 | 12.5.1 | |
| minutes | 8 | uimsbf | if time_type == 2 | 12.5.1 | |
| seconds | 8 | uimsbf | if time_type == 2 | 12.5.1 | |
| frames | 8 | uimsbf | if time_type == 2 | 12.5.1 | |
| GPI_number | 8 | uimsbf | if time_type == 3 | 12.5.1 | |
| GPI_edge | 8 | uimsbf | if time_type == 3 | 12.5.1 |
splice_request_data()
9.3.1| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| splice_insert_type | 8 | uimsbf | 0x01-0x05 (0x00 reserved) | 9.3.1.1 | |
| splice_event_id | 32 | uimsbf | 9.3.1.1 | ||
| unique_program_id | 16 | uimsbf | 9.3.1.1 | ||
| pre_roll_time | 16 | uimsbf | 9.3.1.1 | ||
| break_duration | 16 | uimsbf | 9.3.1.1 | ||
| avail_num | 8 | uimsbf | 9.3.1.1 | ||
| avails_expected | 8 | uimsbf | 9.3.1.1 | ||
| auto_return_flag | 8 | uimsbf | 9.3.1.1 |
time_signal_request_data()
9.8.1| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| pre-roll_time | 16 | uimsbf | 9.8.1.1 |
splice_null_request_data()
9.8.2No fields are listed for this structure.
insert_avail_descriptor_request_data()
9.8.4| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| num_provider_avails | 8 | uimsbf | 9.8.4.1 | ||
| provider_avail_id | 32 | uimsbf | for (i=0; i<num_provider_avails; i++) | 9.8.4.1 |
insert_descriptor_request_data()
9.8.5| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| descriptor_count | 8 | uimsbf | 9.8.5.1 | ||
| descriptor_image() | varies | structure | for (i=0; i<descriptor_count; i++); complete SCTE 35 descriptor image, length is the descriptor's own second byte | 9.8.5.1 |
insert_DTMF_descriptor_request_data()
9.8.6| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| pre-roll | 8 | uimsbf | 9.8.6.1 | ||
| dtmf_length | 8 | uimsbf | 9.8.6.1 | ||
| DTMF_char | 8 | uimsbf | for (i=0; i<dtmf_length; i++) | 9.8.6.1 |
insert_segmentation_descriptor_request_data()
9.8.7| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| segmentation_event_id | 32 | uimsbf | 9.8.7.1 | ||
| segmentation_event_cancel_indicator | 8 | uimsbf | 9.8.7.1 | ||
| duration | 16 | uimsbf | 9.8.7.1 | ||
| segmentation_upid_type | 8 | uimsbf | 9.8.7.1 | ||
| segmentation_upid_length | 8 | uimsbf | 9.8.7.1 | ||
| segmentation_upid | varies | uimsbf | length = segmentation_upid_length | 9.8.7.1 | |
| segmentation_type_id | 8 | uimsbf | 9.8.7.1 | ||
| segment_num | 8 | uimsbf | 9.8.7.1 | ||
| segments_expected | 8 | uimsbf | 9.8.7.1 | ||
| duration_extension_frames | 8 | uimsbf | 9.8.7.1 | ||
| delivery_not_restricted_flag | 8 | uimsbf | 9.8.7.1 | ||
| web_delivery_allowed_flag | 8 | uimsbf | 9.8.7.1 | ||
| no_regional_blackout_flag | 8 | uimsbf | 9.8.7.1 | ||
| archive_allowed_flag | 8 | uimsbf | 9.8.7.1 | ||
| device_restrictions | 8 | uimsbf | 9.8.7.1 | ||
| insert_sub_segment_info | 8 | uimsbf | 9.8.7.1 | ||
| sub_segment_numAlways present in the 2017 request; insert_sub_segment_info controls only whether it is carried into the resulting SCTE 35 segmentation_descriptor, not whether this byte is present. | 8 | uimsbf | 9.8.7.1 | ||
| sub_segments_expectedAlways present in the 2017 request; carried into the SCTE 35 segmentation_descriptor only when insert_sub_segment_info == 1. | 8 | uimsbf | 9.8.7.1 |
insert_tier_data()
9.8.9| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| tier_data | 16 | uimsbf | most significant nibble 0x0; lower 12 bits carry tier | 9.8.9.1 |
insert_time_descriptor()
9.8.10| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| TAI_seconds | 48 | uimsbf | 9.8.10.1 | ||
| TAI_ns | 32 | uimsbf | 9.8.10.1 | ||
| UTC_offset | 16 | uimsbf | 9.8.10.1 |
alive_request_data()
9.2.1| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| time() | 64 | structure | optional; required when the multiple_operation_message() timestamp() time_type is non-zero | 9.2.1.1 |
alive_response_data()
9.2.2| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| time() | 64 | structure | optional; required when the multiple_operation_message() timestamp() time_type is non-zero | 9.2.2.1 |
inject_response_data()
9.6.2| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| message_number | 8 | uimsbf | 9.6.2.1 |
inject_complete_response_data()
9.6.3| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| message_number | 8 | uimsbf | 9.6.3.1 | ||
| cue_message_count | 8 | uimsbf | 9.6.3.1 |