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.3opID Assigned Values and Meanings
- 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
- 9.8.11insert_audio_descriptor request
- 9.8.12insert_audio_provisioning request
- 9.8.13insert_alternate_break_duration_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 | 0x00 | 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 | ||
| not_an_entry_flag | 8 | uimsbf | optional; presence determined by data_length (added SCTE 104 2022) | 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 | N*8 | 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 | optional appendix; presence determined by data_length (sub-segment fields added SCTE 104 2017) | 9.8.7.1 | |
| sub_segment_num | 8 | uimsbf | optional appendix; presence determined by data_length (sub-segment fields added SCTE 104 2017) | 9.8.7.1 | |
| sub_segments_expected | 8 | uimsbf | optional appendix; presence determined by data_length (sub-segment fields added SCTE 104 2017) | 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 |
insert_audio_descriptor()
9.8.11| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| audio_count | 8 | uimsbf | 9.8.11.1 | ||
| component_tag | 8 | uimsbf | for (i=0; i<audio_count; i++) | 9.8.11.1 | |
| ISO_code | 24 | uimsbf | for (i=0; i<audio_count; i++) | 9.8.11.1 | |
| Bit_Stream_Mode | 8 | uimsbf | for (i=0; i<audio_count; i++) | 9.8.11.1 | |
| Num_Channels | 8 | uimsbf | for (i=0; i<audio_count; i++) | 9.8.11.1 | |
| Full_Srvc_Audio | 8 | uimsbf | for (i=0; i<audio_count; i++) | 9.8.11.1 |
insert_audio_provisioning()
9.8.12| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| audio_count | 8 | uimsbf | 9.8.12.1 | ||
| channel_mode | 8 | uimsbf | for (i=0; i<audio_count; i++) | 9.8.12.1 | |
| Codec_index | 8 | uimsbf | for (i=0; i<audio_count; i++) | 9.8.12.1 |
insert_alternate_break_duration_data()
9.8.13| Field | Bits | Type | Constraint | Condition | Clause |
|---|---|---|---|---|---|
| alternate_break_duration_data | 32 | uimsbf | 9.8.13.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 |