Oc SP Esam Api C01 161021
Oc SP Esam Api C01 161021
Dear Reader:
CableLabs officially closed our Real-time Event Signaling and Management API
specification, OC-SP-ESAM-API-C01-161021.
The Society of Cable Telecommunications Engineers (SCTE ISBE) has since updated
and standardized this specification and related files. They are available here:
http://www.scte.org/SCTE/Standards/SCTE_Standards_Page_3.aspx.
Scroll down that page to:
ANSI/SCTE 250 – Real-time Event Signaling and Management API
The standard is available for download there with the related schema zip file link directly
below the document link.
Questions or issues with those posted files can be sent to: contact SCTE standards
Note: For historical purposes only, this closed specification's content begins on the
following page.
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
OpenCable™ Specifications
Alternate Content
OC-SP-ESAM-API-C01-161021
CLOSED
Notice
2 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
DISCLAIMER
10/21/16 CableLabs 3
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
Trademarks
CableLabs® is a registered trademark of Cable Television Laboratories, Inc. Other CableLabs
marks are listed at http://www.cablelabs.com/certqual/trademarks. All other marks are the
property of their respective owners.
4 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
Contents
1 SCOPE................................................................................................................................... 10
1.1 Introduction and Purpose ................................................................................................. 10
1.2 Requirements ................................................................................................................... 13
2 REFERENCES ..................................................................................................................... 15
2.1 Normative References ..................................................................................................... 15
2.2 Informative References.................................................................................................... 16
2.3 Reference Acquisition ..................................................................................................... 16
3 TERMS AND DEFINITIONS............................................................................................. 17
4 ABBREVIATIONS AND ACRONYMS ............................................................................ 18
5 MESSAGE TRANSPORT RECOMMENDED PRACTICE........................................... 19
5.1 Time Synchronization...................................................................................................... 19
6 COMMON CONVENTIONS ............................................................................................. 20
6.1 StatusCode ....................................................................................................................... 20
6.1.1 StatusCode Semantics ............................................................................................... 20
6.2 Date and Time Format (UTCZulu) .................................................................................. 22
6.3 Duration Format (ISODuration) ...................................................................................... 23
6.4 Base64 Binary Format ..................................................................................................... 23
7 COMMON API .................................................................................................................... 24
7.1 Common API Messages .................................................................................................. 24
7.1.1 Control Messages...................................................................................................... 24
7.1.2 General Processing Messages .................................................................................. 52
7.2 Common API Types ........................................................................................................ 73
7.2.1 Address ...................................................................................................................... 73
7.2.2 BatchInfo ................................................................................................................... 76
7.2.3 CallOut...................................................................................................................... 77
7.2.4 SPSCallOuts.............................................................................................................. 79
8 SIGNAL CONFIRMATION AND CONDITIONING API ............................................. 82
8.1 Signal Confirmation Use Cases ....................................................................................... 82
8.1.1 SpliceInsert to Signal Ads ......................................................................................... 82
8.1.2 TimeSignal with SegmentationDescriptor to Signal an Ad....................................... 82
8.1.3 TimeSignal with SegmentationDescriptor to signal a Blackout ............................... 82
8.1.4 Normalize Signal Format.......................................................................................... 83
8.1.5 Out-of-Band Notification of Blackout ....................................................................... 83
8.1.6 Regions Defined Using Signal Metadata .................................................................. 83
8.2 Signal Confirmation and Conditioning API Messages.................................................... 83
8.2.1 SignalProcessingEvent ............................................................................................. 83
8.2.2 SignalProcessingNotification ................................................................................... 89
9 MANIFEST CONFIRMATION AND CONDITIONING API ..................................... 111
10/21/16 CableLabs 5
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
Figures
Figure 1 - Sample Control System Implementation ..................................................................... 10
Figure 2 - Example of Real-time IP Video Application ............................................................... 12
Figure 3 - Example of File-based IP Video Application (transcoder initiated) ............................ 12
Figure 4 - Example of File-based IP Video Application (POIS Initiated) .................................... 13
Figure 5 - StatusCode XML Schema ............................................................................................ 20
Figure 6 - Summary of Control Interfaces .................................................................................... 25
Figure 7 - SASRegistrationRequest XML Schema ...................................................................... 27
Figure 8 - SASRegistrationResponse XML Schema .................................................................... 32
Figure 9 - SPSRegistrationRequest XML Schema ....................................................................... 36
Figure 10 - SPSRegistrationResponse XML Schema................................................................... 39
Figure 11 - SASDeregistrationRequest XML Schema ................................................................. 41
Figure 12 - SASDeregistrationResponse XML Schema............................................................... 43
Figure 13 - SPSDeregistrationRequest XML Schema .................................................................. 45
6 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 7
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
Tables
Table 1 - StatusCode Semantic Attributes .................................................................................... 20
Table 2 - StatusCode Semantics Elements.................................................................................... 21
Table 3 - classCode Attribute Values ........................................................................................... 21
Table 4 - detailCode Attribute Values .......................................................................................... 21
Table 5 - SASRegistrationRequest Attributes .............................................................................. 27
Table 6 - SASRegistrationRequest Elements ............................................................................... 28
Table 7 - Message Values ............................................................................................................. 28
Table 8 - AttributeName Values ................................................................................................... 29
Table 9 - SASRegistrationResponse Elements and Attributes ..................................................... 32
Table 10 - SPSRegistrationRequest Elements and Attributes ...................................................... 36
Table 11 - SPSRegistrationResponse Elements and Attributes .................................................... 39
Table 12 - SASDeregistrationRequest Elements and Attributes .................................................. 41
Table 13 - SASDeregistrationResponse Elements and Attributes ................................................ 43
Table 14 - SPSDeregistrationRequest Elements and Attributes ................................................... 45
Table 15 - SPSDeregistrationResponse Elements and Attributes................................................. 47
Table 16 - ServiceCheckRequest Elements and Attributes .......................................................... 49
Table 17 - ServiceStatusNotification Elements and Attributes .................................................... 51
Table 18 - ProcessStatusNotification Elements and Attributes .................................................... 56
Table 19 - ProcessStatusAcknowledgement Attributes ................................................................ 62
Table 20 - ProcessStatusRequest Attributes ................................................................................. 64
Table 21 - ProcessStatusResponse Attribute ................................................................................ 66
Table 22 - SignalStateRequest Attributes ..................................................................................... 70
Table 23 - UriProcessingRequest Attributes................................................................................. 73
Table 24 - Address ........................................................................................................................ 74
Table 25 - Address Formats .......................................................................................................... 74
Table 26 - BatchInfo ..................................................................................................................... 76
Table 27 - CableLabs content:MovieType Usage ........................................................................ 76
Table 28 - CallOut ........................................................................................................................ 78
Table 29 - SPSCallOuts ................................................................................................................ 79
Table 30 - Message Values ........................................................................................................... 80
Table 31 - AttributeName Values ................................................................................................. 80
Table 32 - AcquiredSignal Attributes ........................................................................................... 86
Table 33 - AcquiredSignal Elements ............................................................................................ 86
Table 34 - SignalProcessingNotification Attributes and Elements............................................... 95
Table 35 - ResponseSignal Attributes........................................................................................... 96
Table 36 - ResponseSignal Elements ............................................................................................ 97
8 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 9
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
1 SCOPE
1.1 Introduction and Purpose
This document details the interfaces between a Signal Acquisition System (SAS) and a Signal
Processing System (SPS) in order to support signal and manifest processing. The APIs support
system element controls, synchronous signal processing, asynchronous signal processing, and
processing of URI based content (ex. file reference).
The control interfaces support:
SAS registration/deregistration
SPS registration/deregistration
Service status check
Service status notification
Figure 1 shows a representative implementation that includes a signal acquisition system and a
signal processing system. The signal processing system is composed of a control element and a
redundant set of signal processing elements.
SAS Config
(out of scope)
6. Registration
3. Registration
Response
Response
10 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
1. An SAS registers (#1) with the SPS Control Element. The SAS registration message
includes the callouts (#2) and attributes.
2. The SPS responds to the registration (#3).
3. Once an SAS registers with the SPS, the SPS registers (#4) with the SPS. The SPS
registration message included the callouts (#5) and attributes. This particular
implementation includes 2 signal processing elements that the SAS would call when a
signal is received. Both of these signal processing elements are supplied in the list of
callouts. For a fully redundant implementation configuration, an SAS SHOULD call both
signal processing elements to make sure it receives a response.
4. The SAS responds to the registration (#6).
5. Assuming there is a service check callout specified in #2 or #5, the SAS and/or SPS
would periodically check in with the other end point.
Section 7.1.1 for further discussion of the control messages.
In addition to interfaces to support control of system elements, this document defines two
interfaces that are used either for signal processing and stream conditioning or for manifest
conditioning.
The first interface allows a Signal Acquisition System (e.g., encoder, transcoder, fragmenter,
etc.) to submit signals to a Signal Processing System and receive stream conditioning data and
directives (Section 8); while the second interface allows submission of a confirmed signal and
receipt of manifest manipulation instructions (Section 9) to a Signal Acquisition System. A given
implementation may be comprised of one or more Signal Acquisition Systems.
For example, a real-time transcoder acting as a signal acquisition system submits an SCTE 35
splice insert message to a Placement Opportunity Information System (POIS) acting as a Signal
Processing System. The POIS confirms the validity of the signal and returns information
allowing a transcoder to identify and update the start or end times of a signal region. The call
also may return relevant information such as signal region duration(s) that could be used for
conditioning the stream being encoded. The returned information may additionally include
auxiliary data to be inserted into the video stream for downstream systems, which could consume
the auxiliary data and process according to specific application requirements.
10/21/16 CableLabs 11
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
Furthermore, in an Adaptive Bitrate (ABR) packaging application, the ABR fragmenter also
submits the previously confirmed signal to the POIS. In return, manifest-specific conditioning
instructions could be provided, which the fragmenter inserts on behalf of the end-to-end system.
For URI based content, a transcoder can operate in one of two operational modes. In the first
mode, the transcoder calls the POIS to obtain the signal regions for content in a file. Figure 3
illustrates this model.
Example of URI based Video Application
Transcoder Initiated
File Based
Or
URI Origin CDN
Source
Reference
Conditioned
Content
Intermediate
File Based
Initiate
Control Point Transcoder Or Fragmeter
Process
URI
Destination
URI Request
Manifest Conf. and
With
Conditioning
Signal Processing Notification
SCTE 35
NPT
CableLabs 3.0
Metadata
W-Signal Metadata POIS Security
12 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
In the second mode, the transcoder is directed to process the file-based content based on
directives in the request. Figure 4 illustrates this model.
Example of URI based Video Application
POIS Initiated
File Based
Or
URI Origin CDN
Source
Reference
Conditioned
Content
Intermediate
File Based
Transcoder Or Fragmeter
URI
Destination
CableLabs 3.0
Metadata
W-Signal Metadata POIS Security
Initiate
Process
Control Point
To fully understand the ABR conditioning portions of this document, the reader is expected to be
familiar with and understand the different ABR delivery formats and their individual
terminology.
The Event Signaling and Management API supports both JSON and XML event and notification
message payload formats with the caller controlling the payload format using standard HTTP
semantics. This specification leverages the CableLabs Metadata 3.0 signaling schema.
1.2 Requirements
Throughout this document, the words that are used to define the significance of particular
requirements are capitalized. These words are:
"SHALL" This word means that the item is an absolute requirement of this
specification.
"SHALL This phrase means that the item is an absolute prohibition of this
NOT" specification.
"SHOULD" This word means that there may exist valid reasons in particular
circumstances to ignore this item, but the full implications should be
understood and the case carefully weighed before choosing a different
course.
10/21/16 CableLabs 13
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
"SHOULD This phrase means that there may exist valid reasons in particular
NOT" circumstances when the listed behavior is acceptable or even useful, but
the full implications should be understood and the case carefully weighed
before implementing any behavior described with this label.
"MAY" This word means that this item is truly optional. One vendor may choose
to include the item because a particular marketplace requires it or
because it enhances the product, for example; another vendor may omit
the same item.
14 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
2 REFERENCES
2.1 Normative References
In order to claim compliance with this specification, it is necessary to conform to the following
standards and other works as indicated, in addition to the other requirements of this specification.
Notwithstanding, intellectual property rights may be required to use or implement such
normative references.
All references are subject to revision, and parties to agreement based on this specification are
encouraged to investigate the possibility of applying the most recent editions of the documents
listed below.
10/21/16 CableLabs 15
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
• Cable Television Laboratories, Inc., 858 Coal Creek Circle, Louisville, CO 80027;
Phone +1-303-661-9100; Fax +1-303-661-9199; http://www.cablelabs.com
• Internet Engineering Task Force (IETF), Internet: http://www.ietf.org/
Note: Internet-Drafts are draft documents valid for a maximum of six months and may be
updated, replaced, or obsoleted by other documents at any time.
The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt.
Internet-Drafts may also be accessed at http://tools.ietf.org/html/
• SCTE, Society of Cable Telecommunications Engineers, Inc., 140 Philips Road, Exton, PA
19341 Phone: +1-800-542-5040, Fax: +1-610-363-5898, Internet: http://www.scte.org
• International Organization for Standardization, ISO Central Secretariat, Chemin de
Blandonnet 8, CP 401, 1214 Vernier, Geneva, Switzerland, www.iso.org
16 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 17
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
18 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
It is expected that time synchronization with multiple high accuracy sources will be maintained
by all components of the systems. Protocols such as NTP allow time synchronization in the sub-
millisecond on LANs and up to a few milliseconds on WANs.
10/21/16 CableLabs 19
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
6 COMMON CONVENTIONS
Note 1: Unless noted as optional, all attributes, elements, and objects are required.
Note 2: In all cases, unrecognized attributes, elements, and objects are to be ignored.
As a convention used throughout this API, a JSON array is identified using a plural name like
'spots' or 'segments'. The XML equivalent utilizes an XML element sequence with a singular
element tag that is capitalized., for example, 'Spot' or 'Segment'. In documentation situations
herein where duplicating the element name is redundant or confusing, the XML value is utilized
and the JSON equivalent is to be assumed by the reader.
6.1 StatusCode
The StatusCode object provides return status information to the caller and is returned for all
application-level errors. The StatusCode object MAY optionally be included in a response
payload to provide warning or informational details in addition to the typically expected payload.
The StatusCode element has the following XML schema:
20 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
Value Description
0 Success
1 Error
2 Warning
3 Information
10/21/16 CableLabs 21
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
<core:Note>applied:signalPointID="fro
m
ResponseSignal",signalProcessingIdent
ity="from
SignalProcessingNotification"</core:N
ote>
Object time values SHALL follow the [ISO 8601] extended time format of [hh]:[mm]:[ss] except
the StreamTime object values which are in their native time formats. The following list describes
the extended time formats:
[hh] — Zero-padded hour between 00 and 24 (where 24 is only used to notate midnight at the
end of a calendar day).
[mm] — Minute between 00 and 59.
[ss] — Second between 00 and 60 (where 60 is only used to notate an added leap second).
Decimal fractions MAY be added to the seconds component using a decimal point as a separator
between the time element and its fraction. The number of decimal places for the decimal fraction
SHALL be limited to three places for ISO 8601 times.
Combined date and time objects SHALL use the UTC format, and all times SHALL be provided
as zero UTC offset or Zulu times, referred to herein as UTCZulu. Thus, all combined date and
time objects SHALL be formatted as:
2001-12-17T11:12:42.123Z
22 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
Duration values, referred to as ISODuration herein, SHALL follow the [ISO 8601] format as
well and are represented by the format P[n]Y[n]M[n]DT[n]H[n]M[n]S. In these representations,
the [n] is replaced by the value for each of the date and time elements that follow the [n].
Leading zeroes MAY be included, if applicable. The capital letters P, Y, M, W, D, T, H, M, and S
are designators for each of the date and time elements and are not replaced.
The following list describes the date and time elements:
P — Duration designator placed at the start of the duration representation.
Y — Year designator that follows the value for the number of years.
M — Month designator that follows the value for the number of months.
W — Week designator that follows the value for the number of weeks.
D — Day designator that follows the value for the number of days.
T — Time designator that precedes the time components of the representation.
H — Hour designator that follows the value for the number of hours.
M — Minute designator that follows the value for the number of minutes.
S — Second designator that follows the value for the number of seconds.
For example, "P3Y6M4DT12H30M5S" represents a duration of three years, six months, four
days, twelve hours, thirty minutes, and five seconds. Date and time elements including their
designator MAY be omitted if their value is zero, and lower order elements MAY also be
omitted for reduced precision. For example, "P23DT23H" and "P4Y" are both acceptable
duration representations.
To resolve ambiguity, "P1M" is a one-month duration and "PT1M" is a one-minute duration
(note the time designator, T, that precedes the time value). Seconds MAY have a decimal
fraction specified with a period as "PT30.5S", which is an example of 30 and one-half seconds.
The duration value SHALL be formatted using the canonical form where each field does not
exceed the field's standard maximum value. The second and minute values SHALL be less than
60, and the hours field SHALL be less than 24. For example, 90-seconds is to be formatted as
PT1M30S and not as PT90S.
Binary contents SHALL be coded in Base64 format per section 6.8 of [RFC 4648] with W3C
recommendations.
10/21/16 CableLabs 23
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
7 COMMON API
The Common API is a set of messages used for both Signal Confirmation and Conditioning (see
Section 8) and Manifest Confirmation and Conditioning (see Section 9) to support synchronous
and asynchronous processing of signals and manifests. The Common APIs include control, URI
based content (ex. a VOD asset file), status information, and other common messages.
The Common API messages support both control (see section 7.1.1) and general purpose
processing (see section 7.1.2) messages exchanged between SAS and SPS system elements.
Signal (see section 8) and Manifest (see section 9) define additional processing messages.
24 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
SPSRegistrationRequest
(SPS Call outs, attributes w-token (opt)) After doing initial registration with an SAS, if
SPS attributes or callouts change, an SPS may
SPSRegistrationResponse resend an SPS RegistrationRequest to an SAS
Success or failure to update information.
SASDeregistrationRequest
SASDeregistrationResponse
SPSDeregistrationRequest
SPSDeregistrationResponse
In one workflow an SAS is configured with the SPS to register with. How an SAS is configured
is out of scope of this specification.
1. An SAS registers with an SPS. The message includes callouts and attributes. The SAS
may also pass a token that will be used on all subsequent messages exchanged between
an SAS and an SPS. Use of tokens is highly recommended as they serve to verify the
state of each end point.
The SPS response to a registration may include SPS registration information as described
in 2. If an implementation chooses to send SPS information in the SAS registration
response message as defined in 2 above, the service checks will be important to verify
proper setup of system elements.
2. Once an SAS registers the SPS can then register with the SAS if not already done in the
SAS registration response. The message includes callouts and attributes. The SPS may
also pass a token that will be used on all subsequent messages exchanged between an
SAS and an SPS. Use of tokens is highly recommended as they serve to verify the state of
each end point. The SPS Registration message can be resent to an SAS to update the
registration information.
10/21/16 CableLabs 25
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
3. On a periodic bases the end points can send service check messages to verify the
connection with a given end point. The service check can be done form the SAS to the
SPS and/or from the SPS to the SAS.
4. A service status notification is sent by an end point asynchronously if some specific
status event needs to be communicated.
5. The SAS or SPS can deregister to allow for orderly shutdown of the connection.
7.1.1.1 SASRegistrationRequest
The SASRegistrationRequest message is used to register an SAS with an SPS. In addition to
identity information about the SAS, specific call outs and attributes about the SAS are passed in
the message.
If the sasToken attribute is passed in the registration message, it SHALL be used on all
subsequent message exchanges that originate from an SAS to an SPS. If a given SAS, uniquely
identified by a given acquisitionPointIdentity, sends a new registration request with a new
sasToken prior to deregistering, the previous registration SHALL be canceled and any in process
activities will be considered terminated by the SAS. In the absence of specific language in this
specification, the specific disposition of any in process activities SHALL be considered out of
scope of this specification.
The SASRegistrationRequest MAY include information if one SAS system is registering as a
replacement for another SAS system.
The SPS is expected to respond with an SASRegistrationResponse. (See section 0)
26 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 27
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
28 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 29
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
</common:SASCallout>
<!-- *** ESAM manifest messages *** -->
<common:SASCallout message="ManifestConfirmConditionNotification">
<common:Address type="type2">Address2</common:Address>
</common:SASCallout>
<!-- *** ESAM signal messages *** -->
<common:SASCallout message="SignalProcessingNotification">
<common:Address type="type2">Address2</common:Address>
</common:SASCallout>
<!-- Call out for all messages go to same end point -->
<common:SASCallout message="All">
<common:Address type="type2">Address2</common:Address>
</common:SASCallout>
<!-- not all attributes apply in all cases -->
<common:SASAttribute
attributeName="ServiceCheckInterval">PT60S</common:SASAttribute>
<common:SASAttribute
attributeName="StreamIdentifier">urn:eidr:10.5239:ED6E-
0DBB</common:SASAttribute>
</common:SASAttribute>
</common:SASRegistrationRequest>
30 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
7.1.1.2 SASRegistrationResponse
The SASRegistrationResponse message is sent by the SPS in response to an
SASRegistrationRequest.
If an sasToken attribute is present in the registration message, the SPS SHALL return the value
in the response. The SPS SHALL retain the sasToken to verify the integrity of subsequent
messages from a given SAS identified by the acquisitionPointIdentity attribute.
The SPS SHALL validate the information passed in the registration message:
Invalid data (ex. unknown callout)
No callout can be supported (ex. incompatible address type)
If the registration cannot be successfully processed the StatusCode SHALL be populated in the
response message. The StatusCode MAY be populated if the registration message is successfully
processed.
The SPS MAY return SPS end point information in the response message in the
SPSEndPointInfo Element.
The following XML payload is passed:
10/21/16 CableLabs 31
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
32 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 33
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
<common:Address type="type4">Address4</common:Address>
<common:Address type="type5">Address5</common:Address>
</common:SPSCallout>
<common:SPSCallout message="SASDeregistrationNotification">
<common:Address type="type4">Address4</common:Address>
<common:Address type="type5">Address5</common:Address>
</common:SPSCallout>
<common:SPSCallout message="ServiceCheckRequest">
<common:Address type="type0">Address0</common:Address>
</common:SPSCallout>
<common:SPSCallout message="ServiceStatusNotification">
<common:Address type="type2">Address2</common:Address>
</common:SPSCallout>
<common:SPSCallout message="SignalStateRequest">
<common:Address type="type2">Address2</common:Address>
</common:SPSCallout>
<common:SPSAttribute
attributeName="ServiceCheckInterval">PT5S</common:SPSAttribute>
</common:SPSCallouts>
<common:SPSCallouts spsEndPointName="SPSEndPoint1">
<common:SPSCallout message="ServiceCheckRequest">
<common:Address type="type0">Address0</common:Address>
</common:SPSCallout>
<!-- *** ESAM signal messages *** -->
<common:SPSCallout message="SignalProcessingEvent">
<common:Address type="type0">Address0</common:Address>
<common:Address type="type1">Address1</common:Address>
</common:SPSCallout>
<!-- SignalProcessNotification applicable to batch processing -
provide NPT feedback -->
<common:SPSCallout message="SignalProcessNotification">
<common:Address type="type0">Address0</common:Address>
<common:Address type="type1">Address1</common:Address>
</common:SPSCallout>
<!-- *** ESAM manifest messages *** -->
<common:SPSCallout message="ManifestConfirmConditionEvent">
<common:Address type="type0">Address0</common:Address>
<common:Address type="type1">Address1</common:Address>
</common:SPSCallout>
<common:SPSAttribute
attributeName="ServiceCheckInterval">PT0.005S</common:SPSAttribute>
</common:SPSCallouts>
<common:SPSCallouts spsEndPointName="SPSEndPoint2">
<common:SPSCallout message="ServiceCheckRequest">
<common:Address type="type0">Address0</common:Address>
</common:SPSCallout>
<common:SPSCallout message="SignalProcessingEvent">
<common:Address type="type4">Address4</common:Address>
<common:Address type="type5">Address5</common:Address>
</common:SPSCallout>
<common:SPSCallout message="ManifestConfirmConditionEvent">
<common:Address type="type0">Address0</common:Address>
<common:Address type="type1">Address1</common:Address>
</common:SPSCallout>
<common:SPSAttribute
attributeName="ServiceCheckInterval">PT60S</common:SPSAttribute>
<common:SPSAttribute
34 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
attributeName="SPNTimeOut">PT0.005S</common:SPSAttribute>
</common:SPSCallouts>
</common:SPSEndPointInfo>
</common:SASRegistrationResponse>
7.1.1.3 SPSRegistrationRequest
The SPSRegistrationRequest message is used by the SPS to register with an SAS that has
previously registered with the SPS. In addition to identity information about the SPS, specific
call outs and attributes about the SPS are passed in the response message.
If the SAS passed an sasToken attribute in the registration message, the SPS SHALL return the
value in the response. The SPS SHALL retain the sasToken to verify the integrity of subsequent
messages from a given SAS identified by the acquisitionPointIdentity attribute.
If the spsToken attribute is passed in the response message, it SHALL be used on all subsequent
message exchanges that originate from an SPS to an SAS.
The following XML payload is passed:
10/21/16 CableLabs 35
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
36 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 37
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
<common:SPSCallouts spsEndPointName="SPSEndPoint1">
<common:SPSCallout message="ServiceCheckRequest">
<common:Address type="type0">Address0</common:Address>
</common:SPSCallout>
<!-- *** ESAM signal messages *** -->
<common:SPSCallout message="SignalProcessingEvent">
<common:Address type="type0">Address0</common:Address>
<common:Address type="type1">Address1</common:Address>
</common:SPSCallout>
<!-- SignalProcessNotification applicable to batch processing -
provide NPT feedback -->
<common:SPSCallout message="SignalProcessNotification">
<common:Address type="type0">Address0</common:Address>
<common:Address type="type1">Address1</common:Address>
</common:SPSCallout>
<!-- *** ESAM manifest messages *** -->
<common:SPSCallout message="ManifestConfirmConditionEvent">
<common:Address type="type0">Address0</common:Address>
<common:Address type="type1">Address1</common:Address>
</common:SPSCallout>
<common:SPSAttribute
attributeName="ServiceCheckInterval">PT0.005S</common:SPSAttribute>
</common:SPSCallouts>
<common:SPSCallouts spsEndPointName="SPSEndPoint2">
<common:SPSCallout message="ServiceCheckRequest">
<common:Address type="type0">Address0</common:Address>
</common:SPSCallout>
<common:SPSCallout message="SignalProcessingEvent">
<common:Address type="type4">Address4</common:Address>
<common:Address type="type5">Address5</common:Address>
</common:SPSCallout>
<common:SPSCallout message="ManifestConfirmConditionEvent">
<common:Address type="type0">Address0</common:Address>
<common:Address type="type1">Address1</common:Address>
</common:SPSCallout>
<common:SPSAttribute
attributeName="ServiceCheckInterval">PT60S</common:SPSAttribute>
<common:SPSAttribute
attributeName="SPNTimeOut">PT0.005S</common:SPSAttribute>
</common:SPSCallouts>
</common:SPSRegistrationRequest>
7.1.1.4 SPSRegistrationResponse
The SPSRegistrationResponse message is sent by the SAS in response to an
SPSRegistrationRequest.
If an spsToken attribute is present in the registration message, the SAS SHALL return the value
in the response. The SAS SHALL retain the spsToken to verify the integrity of subsequent
messages from a given SPS identified by the signalProcessingIdentity attribute.
The SAS SHALL validate the information passed in the registration message:
Invalid data (ex. unknown callout)
No callout can be supported (ex. incompatible address type)
38 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
If the registration cannot be successfully processed the StatusCode SHALL be populated in the
response message. The StatusCode MAY be populated if the registration message is successfully
processed. See section 6.1.
The following XML payload is passed:
10/21/16 CableLabs 39
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
7.1.1.5 SASDeregistrationRequest
The SASDeregistrationRequest message used by the SAS to deregister from an SPS that was
previously registered with. If a token was passed on the initial registration message, the same
token SHALL be passed in the deregistration message.
40 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 41
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
7.1.1.6 SASDeregistrationResponse
The SASDeregistrationResponse message is sent by the SPS in response to an
SASDeregistrationRequest.
If an sasToken attribute is present in the deregistration message, the SPS SHALL return the value
in the response.
The deregistration message SHALL be accepted and acknowledged as successful based on the
acquisitionPointIdentity. If the token passed in the deregistration message does not match the
token retained by the SPS, the deregistration SHALL still be accepted. The SPS MAY pass a
detailCode of 7 in the response to indicate the mismatch. See section 6.1.
42 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 43
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
7.1.1.7 SPSDeregistrationRequest
The SPSDeregistrationRequest message used by the SPS to deregister from an SAS that was
previously registered with.
44 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 45
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
7.1.1.8 SPSDeregistrationResponse
The SPSDeregistrationResponse message is sent by the SAS in response to an
SPSDeregistrationRequest.
If an spsToken attribute is present in the deregistration message, the SAS SHALL return the
value in the response.
The deregistration message SHALL be accepted and acknowledged as successful based on the
signalProcessingIdentity. If the token passed in the deregistration message does not match the
token retained by the SAS, the deregistration SHALL still be accepted. The SAS MAY pass a
detailCode of 7 in the response to indicate the mismatch.
46 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 47
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
7.1.1.9 ServiceCheckRequest
The ServiceCheckRequest message is sent by the SAS to an SPS or an SPS to an SAS to verify
the status of the end point. A ServiceStatusNotification message SHALL be received as a
response. (See section 7.1.1.10)
48 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 49
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
7.1.1.10 ServiceStatusNotification
A ServiceStatusNotification is sent in response to a ServiceCheckRequest message. See section
7.1.1.9.
A ServiceStatusNotification MAY be sent asynchronously from an SAS to an SPS or from an
SPS to an SAS to report a change in status.
50 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 51
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
52 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
The following illustrates the message exchanges between the an SPS (ex. POIS) and an SAS (ex.
Transcoder) to initiate (SignalProcessingNotification (see section 8.2.2)), and monitor (process
status messages) a batch process.
Signal Processing System Initiated Request
10/21/16 CableLabs 53
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
7.1.2.1 ProcessStatusNotification
The ProcessStatusNotification message is used to send status information about a process from
an SAS to an SPS. This includes a UriProcessingRequest identified by a batchId or processing
related to a signal, acquisitionSignalID or signalPointID.
If the Signal Processing System does not recognize or support the specified attribute/element or
its semantics, the Signal Processing System is to ignore the data.
The following XML payload is returned:
54 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 55
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
56 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 57
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
>/DBwAAAAAAAAAP/wBQb/AAAAAABaAlhDVUVJAAAAAn//AABSZcANRAoMFHeL5eP2AAAAAAAACgwU
d4vl4/YAAAAAAAAJJlNJR05BTDpMeTlFTUd4S1IwaEZaVXRwTUhkQ1VWWm5SVUZuWnowNgEB1Dao2
g==</scte35:Binary>
</signal:ResponseSignal>
<!-- Advertising In Point 1 - at 60 seconds -->
<signal:ResponseSignal action="create"
acquisitionPointIdentity="SignalAcquisitionSystem1"
acquisitionSignalID="3hH7oSJgRp2EkNv8SmyzTA=="
signalPointID="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz1">
<sig:UTCPoint utcPoint="2016-02-08T22:36:16Z"/>
<scte35:Binary signalType="SpliceInfoSection"
>/DBrAAAAAAAAAP/wBQb/AAAAAABVAlNDVUVJAAAAAn+/DUQKDBR3i+Xj9gAAAAAAAAoMFHeL5eP2
AAAAAAAACSZTSUdOQUw6THk5RU1HeEtSMGhGWlV0cE1IZENVVlpuUlVGblp6MTcBA6QTOe8=</sct
e35:Binary>
</signal:ResponseSignal>
<!-- Advertising In Point 1 - at 90 seconds -->
<signal:ResponseSignal action="create"
acquisitionPointIdentity="SignalAcquisitionSystem1"
acquisitionSignalID="50KmsPriRDWT19pxV24ZLg=="
signalPointID="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz2">
<sig:UTCPoint utcPoint="2016-02-08T22:36:46Z"/>
<scte35:Binary signalType="SpliceInfoSection"
58 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
>/DBrAAAAAAAAAP/wBQb/AAAAAABVAlNDVUVJAAAAAn+/DUQKDBR3i+Xj9gAAAAAAAAoMFHeL5eP2
AAAAAAAACSZTSUdOQUw6THk5RU1HeEtSMGhGWlV0cE1IZENVVlpuUlVGblp6MjcCA7aP1FI=</sct
e35:Binary>
</signal:ResponseSignal>
<!-- Advertising In Point 1 - at 120 seconds -->
<signal:ResponseSignal action="create"
acquisitionPointIdentity="SignalAcquisitionSystem1"
acquisitionSignalID="pZ2qXPBIRTapVdildVlD6A=="
signalPointID="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz3">
<sig:UTCPoint utcPoint="2016-02-08T22:37:16Z"/>
<scte35:Binary signalType="SpliceInfoSection"
>/DBrAAAAAAAAAP/wBQb/AAAAAABVAlNDVUVJAAAAAn+/DUQKDBR3i+Xj9gAAAAAAAAoMFHeL5eP2
AAAAAAAACSZTSUdOQUw6THk5RU1HeEtSMGhGWlV0cE1IZENVVlpuUlVGblp6MzcDA7j7jzk=</sct
e35:Binary>
</signal:ResponseSignal>
<!-- Condition all content with 15 sec segments with 2 second fragments -
->
<signal:ConditioningInfo
acquisitionSignalIDRef="oZOhF8NVSwmwDF0XSv5bRg==">
<signal:Segment fragmentDuration="PT2S">PT15.0S</signal:Segment>
</signal:ConditioningInfo>
<signal:ConditioningInfo
acquisitionSignalIDRef="3hH7oSJgRp2EkNv8SmyzTA==">
<signal:Segment fragmentDuration="PT2S">PT15.0S</signal:Segment>
</signal:ConditioningInfo>
<signal:ConditioningInfo
acquisitionSignalIDRef="50KmsPriRDWT19pxV24ZLg==">
<signal:Segment fragmentDuration="PT2S">PT15.0S</signal:Segment>
</signal:ConditioningInfo>
<signal:ConditioningInfo
acquisitionSignalIDRef="pZ2qXPBIRTapVdildVlD6A==">
<signal:Segment fragmentDuration="PT2S">PT15.0S</signal:Segment>
</signal:ConditioningInfo>
</signal:SignalProcessingNotification>
In the following message, the SPS "SignalProcessingSystem1" is notified that all its signals were
applied.
<common:ProcessStatusNotification
acquisitionPointIdentity="SignalAcquisitionSystem1"
spsToken="8064CCC0-D36B-41F6-9D09-9B6D6FB1729C" sasToken="9A8E383B-2D1F-
4A73-9888-8647411B926A">
<!-- confirm out point -->
<common:MultiSignalNotification
acquisitionSignalID="oZOhF8NVSwmwDF0XSv5bRg=="
signalPointID="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz0">
<common:StatusCode classCode="0"/>
</common:MultiSignalNotification>
<!-- confirm in point 1 -->
<common:MultiSignalNotification
acquisitionSignalID="3hH7oSJgRp2EkNv8SmyzTA=="
signalPointID="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz1">
<common:StatusCode classCode="0"/>
</common:MultiSignalNotification>
10/21/16 CableLabs 59
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
In the following message, the SPS "SignalProcessingSystem2" is notified that none of its signals
were applied. The notification also provides the SPS identity and signal point identity that was
actually applied. The acquisition signal identity and signal point identifies passed in the
MultiSignalNotification elements are from SPS “SignalProcessingSystem2”. The signal point
identity and SPS identity passed in the Notes element are from the SPS data actually applied.
<common:ProcessStatusNotification
acquisitionPointIdentity="SignalAcquisitionSystem1"
spsToken="8064CCC0-D36B-41F6-9D09-9B6D6FB1729C" sasToken="9A8E383B-2D1F-
4A73-9888-8647411B926A">
<!-- out point indication -->
<common:MultiSignalNotification
acquisitionSignalID="LQx/snmJRDmjXqVOcWgVeA=="
signalPointID="nW6ZAN/JToa1EBo93EdnUg==">
<common:StatusCode classCode="0" detailCode="10">
<core:Note>applied:signalPointID="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz0",signalProc
essingIdentity="SignalProcessingSystem1"</core:Note>
</common:StatusCode>
</common:MultiSignalNotification>
<!-- in point 1 indication -->
<common:MultiSignalNotification
acquisitionSignalID="TjfbeQ7XTtqbIgs/HS9EXA=="
signalPointID="mbs3BwEIRj+auhIpqIr/HQ==">
<common:StatusCode classCode="0" detailCode="10">
<core:Note>applied:signalPointID="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz1",signalProc
essingIdentity="SignalProcessingSystem1"</core:Note>
</common:StatusCode>
</common:MultiSignalNotification>
<!-- in point 2 indication -->
<common:MultiSignalNotification
acquisitionSignalID="Qsk5Ki5HSDuZtNuUd431xg=="
signalPointID="2VL0dZ+0QIOdUej7WAEhYg==">
<common:StatusCode classCode="0" detailCode="10">
<core:Note>applied:signalPointID="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz2",signalProc
essingIdentity="SignalProcessingSystem1"</core:Note>
</common:StatusCode>
</common:MultiSignalNotification>
<!-- in point 3 indication -->
<common:MultiSignalNotification
acquisitionSignalID="bwnnSzRvSciG7oBBZlDH3w=="
60 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
signalPointID="rahNYTfYTDiIAJWj4KiV+A==">
<common:StatusCode classCode="0" detailCode="10">
<core:Note>applied:signalPointID="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz3",signalProc
essingIdentity="SignalProcessingSystem1"</core:Note>
</common:StatusCode>
</common:MultiSignalNotification>
</common:ProcessStatusNotification>
7.1.2.2 ProcessStatusAcknowledgement
The ProcessStatusAcknowledgement message sent from the SPS to the SAS is used to
acknowledge a ProcessStatusNotification (see Section 7.1.1.1) message.
If the signal processing system does not recognize or support the specified attribute/element or
its semantics, the signal processing system is to ignore the data.
The following XML payload is returned:
10/21/16 CableLabs 61
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
62 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
The acquisitionSignalID and batchId values, if present, SHALL be returned as passed in the
ProcessStatusNotification message. StatusCode information MAY also be returned. See Section
6.1 for more information on StatusCode.
7.1.2.3 ProcessStatusRequest
The ProcessStatusRequest message is sent from an SPS to an SAS to obtain status on a process.
A ProcessStatusResponse (see Section7.1.2.4) SHALL be sent in response to a
ProcessStatusRequest message. This includes a UriProcessingRequest identified by a batchId or
processing related to an acquisitionSignalID.
If the signal acquisition system does not recognize or support the specified attribute/element or
its semantics, the signal acquisition system SHALL ignore the data.
The following XML payload is returned:
10/21/16 CableLabs 63
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
64 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
7.1.2.4 ProcessStatusResponse
The ProcessStatusResponse message is sent from the SAS to the SPS in response to a
ProcessStatusRequest message (see Section 7.1.2.3). This includes an UriProcessingRequest
identified by a batchId or processing related to an acquisitionSignalID.
If the signal processing system does not recognize or support the specified attribute/element or
its semantics, the signal processing system is to ignore the data.
The following XML payload is returned:
10/21/16 CableLabs 65
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
66 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
The acquisitionSignalID and batchId values, if present, SHALL be returned as passed in the
ProcessStatusRequest message.
StatusCode information SHALL also be returned. See Section 6.1 for more information on
StatusCode. The classCode attribute SHALL be compliant with Table 3 in Section 6.1.1. The
values returned SHALL be compliant with the following:
• Return 0 (Success) upon successful completion of a batch operation.
• Return 1 (Error) upon unsuccessful complete of a batch operation. A detailCode value
from Table 4 in Section 6.1.1 SHOULD also be returned.
• Return 3 (Information) if the batch operation has not yet completed.
One or more Note Elements SHOULD also be supplied to provide additional details.
See Section 7.1.2.2.2 for addition examples of the usage of the StatusCode Element.
10/21/16 CableLabs 67
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
</common:ProcessStatusResponse>
7.1.2.5 SignalStateRequest
The SignalStateRequest message sent from an SAS to an SPS is used to obtain conditioning
information for an asset (ex. a Linear Stream). An applicable use case would be to handle
failover of an SAS (ex. transcoder processing a linear stream). When the new SAS comes on
line, it would reach out to the SPS to determine the state of processing (ex. Active signals in a
linear stream that indicate whether the stream is in a blackout or not). The SPS is expected to
send the appropriate notification message in response (Ex. a SignalProcessingNotification with
all known SCTE 35 segments and related information. See section 8.2.2 and the example in
section 8.2.2.2.8.).
The following XML payload is passed in the SignalStateRequest message:
68 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 69
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
70 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
acquisitionPointIdentity="mso.com/ProcessingPt"
spsToken="8064CCC0-D36B-41F6-9D09-9B6D6FB1729C" sasToken="9A8E383B-2D1F-
4A73-9888-8647411B926A"
startDateTime="2016-03-01T18:13:51.0"/>
7.1.2.6 UriProcessingRequest
The UriProcessingRequest message is used to obtain conditioning information for URI based
content. See Section 8.2.2 for a sample SignalProcessingNotification message returned in
response to a UriProcessingRequest.
If the Signal Processing System does not recognize or support the specified attribute/element or
its semantics, the Signal Processing System is to ignore the data.
The following XML payload is returned:
10/21/16 CableLabs 71
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
72 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
7.2.1 Address
The Address element contains endpoint information. The XML value interpretation MAY be
specified using the optional @type attribute.
10/21/16 CableLabs 73
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
Table 24 - Address
74 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 75
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
<Address type="HTTPS">https://25.35.45.55:80/ESAM</Address>
<Address type="HTTPS">https:// [2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443/ESAM</Address>
7.2.2 BatchInfo
For URI based processing, the BatchInfo element identifies the batch, and optionally identifies
the content source and one or more content destinations. The following table calls out specific
treatment of the attributes and elements that are part of the BatchInfo element.
The batchId attribute SHALL be specified. The batchId uniquely identifies the request and
SHALL be passed on all subsequent ESAM messages specific to the batch.
BatchInfo references the CableLabs Metadata 3.0 MovieType for the source and destination
elements (see [CONTENT 3.0]). The SourceURL SHALL be specified when using the
MovieType when specifying source or destination content.
Table 26 - BatchInfo
Table 27 provides usage detail of the CableLabs 3.0 content:MovieType element. In addition to
the attributes and elements listed in Table 27, an implementation MAY choose to use other
attributes and elements. Specific usage of those attributes and elements is out of scope of this
specification.
Table 27 - CableLabs content:MovieType Usage
76 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
7.2.3 CallOut
The Callout element specifies a logical service’s message reception endpoints. The endpoints
MAY be specified as a single collective aggregation, on a per message type basis via the
@message attribute, or as a combination of the two techniques.
A single message exchange endpoint MAY be defined to handle all logical service messaging. If
a single endpoint is handling all messaging, there SHALL be only one Callout element present in
the defining specification announcement message and the Callout element’s @message attribute
SHALL NOT be used. The Callout element omitting the @message attribute is referred to as the
default endpoint.
If independent endpoints are desired, the Callout element’s @message attribute SHALL be used
and each Callout element SHALL contain a message name as specified by the defining logical
service.
If independent message exchange endpoints are desired for only a subset of endpoints, the
default endpoint MAY be used in conjunction with one or more additional Callout elements. All
message endpoints not specifically referenced by a @message attribute SHALL be available
through the default endpoint. This behavior allows a logical service to provide specific, message
10/21/16 CableLabs 77
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
exchange endpoints for one or more Callout endpoints while utilizing a single, general purpose
endpoint for all other messaging. If this description technique is used, there SHALL only be a
single Callout element omitting the @message attribute for the callout sequence as detailed by
the individual specifications (i.e., there SHALL be a maximum of one default endpoint for the
applicable callout sequence).
If no default endpoint is supplied and only a subset of the endpoints are provided in the message,
the unlisted endpoints SHALL be discovered by a different, unspecified mechanism which is
outside the scope of this specification.
Within the Callout element, the logical service MAY provide one or more Address elements. The
Address element describes a specific endpoint. If multiple Address elements are specified, the
Address elements SHALL be listed in preferred order of usage. The peer shall reject the Callout
element if no Address elements match the end points capability.
Table 28 - CallOut
78 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
7.2.4 SPSCallOuts
The SPSCallOuts element defines an SPS end point. The element includes a name for the end
point, the callouts for that end point (see 7.2.3) and attributes about the end point.
Table 29 - SPSCallOuts
10/21/16 CableLabs 79
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
80 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 81
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
The following use cases are meant as a guideline for defining the schemas for the event and
notification elements and are not intended to be an exhaustive representation of the system
usage. The schemas are designed with extensibility features that are intended to support yet-to-
be-defined signaling models and formats.
82 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
transcoder of the condition points within the stream and includes a directive to repeat the signal
for a set amount of time using the SignalProcessingNotification message.
8.2.1 SignalProcessingEvent
This element is a wrapper for the AcquiredSignal element described below in the following
sections. The wrapper is used to contain multiple signals within one event message.
The content of AcquiredSignal, generally an SCTE 35 descriptor, can be either fully parsed or
sent as binary payload. This is expressed as a choice in the AcquiredSignal element so that
intermediary systems that are not interested in the content of the event can forward it as a pass-
through element using the Binary data type.
The following XML payload is submitted to the endpoint URI:
10/21/16 CableLabs 83
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
84 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 85
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
86 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
The transcoder forwards a parsed SCTE 35 splice insert marker to the SPS using the following
syntax.
<signal:SignalProcessingEvent
<!-- acquisitionSignalID -->
<!-- GUID: 4A6A94EE-62FA-11E1-B1CA-882F4824019B -->
<signal:AcquiredSignal spsToken="spsToken1" sasToken="sasToken1"
acquisitionPointIdentity="ESPN_East_Acquisition_Point_1"
acquisitionSignalID="4A6A94EE-62FA11E1B1CA882F4824019B"
acquisitionTime="2012-09-18T10:14:26Z">
<sig:UTCPoint utcPoint="2012-09-18T10:14:34Z"/>
<scte35:SpliceInfoSection>
<scte35:SpliceInsert spliceEventId="344568691"
outOfNetworkIndicator="true"
uniqueProgramId="55355">
<scte35:Program>
<scte35:SpliceTime ptsTime="4452723280"/>
</scte35:Program>
<scte35:BreakDuration autoReturn="false" duration="60"/>
</scte35:SpliceInsert>
</scte35:SpliceInfoSection>
</signal:AcquiredSignal>
</signal:SignalProcessingEvent>
10/21/16 CableLabs 87
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
88 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
>31302e353234302f444137332d333744442d313145372d393339342d444536442d55</scte35
:SegmentationUpid>
</scte35:SegmentationDescriptor>
</scte35:SpliceInfoSection>
</signal:AcquiredSignal>
</signal:SignalProcessingEvent>
8.2.2 SignalProcessingNotification
Similar to the event message structure, the notification message is also a wrapper for the SCTE
35 AcquiredSignal type. The notification message contains multiple acquired signals and
condition points.
The SignalProcessingNotification element is used for both synchronous and asynchronous
processing. For synchronous processing, the SignalProcessingNotification is sent in response to
a SignalProcessingEvent. For asynchronous processing, the SignalProcessingNotification is sent
in response to a UriProcessingRequest for specific content (see Section 7.1.2.6) or as a request to
a processing element to initiate processing of specified content.
The notification message must explicitly define any updates to signals using the ResponseSignal
element with the associated action element. The SAS SHALL NOT be required to compose or
infer a new or modified signal based on any other information (e.g., SignalPointID). Therefore,
the SignalPointID must be explicitly provided as part of a new or updated signal in the
notification message if it is expected to be retrieved downstream by another device. Proprietary
means SHALL NOT be devised to circumvent this requirement.
10/21/16 CableLabs 89
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
If the SAS does not recognize or support the returned attribute/element or its semantics, the SAS
shall ignore the data.
ProcessStatusNotification messages SHOULD be sent by an SAS in response to all actions
defined in the SignalProcessingNotification message whether sent synchronously or
asynchronously. See section 7.1.2.1.
The following XML payload is returned:
90 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 91
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
92 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 93
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
94 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 95
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
96 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
For synchronous processing, the UTCPoint Element SHALL be present and specify the UTC
position for the signal to create. For asynchronous processing, the NPTPoint Element SHALL be
present and specify the NPT offset per [CEP 3.0] for the signal position.
If the action is create and the ResponseSignal contains an SCTE 35, the Signal Acquisition
System SHOULD insert the new SCTE 35 no less than four (4) seconds prior to the indicated
UTCPoint splice time per SCTE 35 practice.
10/21/16 CableLabs 97
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
98 CableLabs 10/21/16
Event Signaling and Management API OC-SP-ESAM-API-C01-161021
10/21/16 CableLabs 99
OC-SP-ESAM-API-C01-161021 OpenCable™ Specifications
xmlns:scte35="http://www.scte.org/schemas/35/2016"
xmlns:common="urn:cablelabs:iptvservices:esam:xsd:common:1"
xmlns:signal="urn:cablelabs:iptvservices:esam:xsd:signal:1"
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
>31302e353234302f444137332d333744442d313145372d393339342d444536442d55</scte35
:SegmentationUpid>
</scte35:SegmentationDescriptor>
</scte35:SpliceInfoSection>
</signal:ResponseSignal>
<!-- Insert repeating program identification signals -->
<!-- GUID: 11b98ada-7cc0-4152-bc5c-1d2ab2909210 -->
<signal:ResponseSignal
acquisitionPointIdentity="ESPN_East_Acquisition_Point_1" action="create"
acquisitionSignalID="11b98ada7cc04152bc5c1d2ab2909210"
signalPointID="11b98ada-7cc0-4152-bc5c-1d2ab2909210">
<sig:UTCPoint utcPoint="2012-09-18T10:00:05Z"/>
<scte35:SpliceInfoSection>
<!-- Time Signal Command -->
<scte35:TimeSignal>
<scte35:SpliceTime/>
</scte35:TimeSignal>
>31302e353234302f444137332d333744442d313145372d393339342d444536442d55</scte35
:SegmentationUpid>
</scte35:SegmentationDescriptor>
</scte35:SpliceInfoSection>
<!-- Insert the signal every 5 seconds for the scheduled 2 hour
duration of the program -->
<signal:EventSchedule interval="PT5S">
<signal:StartUTC utcPoint="2012-09-18T10:00:05Z"/>
<signal:StopUTC utcPoint="2012-09-18T12:00:00Z"/>
</signal:EventSchedule>
</signal:ResponseSignal>
</signal:SignalProcessingNotification>
>31302e353234302f444137332d333744442d313145372d393339342d444536442d55</scte35
:SegmentationUpid>
</scte35:SegmentationDescriptor>
</scte35:SpliceInfoSection>
</signal:ResponseSignal>
<!-- Condition the next 90 seconds of contents with 15 second segments
with 2 second fragments per segment -->
<!-- Each segment will have 7 two second fragments followed by a 1 one
second fragment -->
<!-- This pattern will be repeated until the overall duration of 90
seconds is reached -->
<signal:ConditioningInfo duration="PT1M30S">
<signal:Segment fragmentDuration="PT2S">PT15S</signal:Segment>
</signal:ConditioningInfo>
</signal:SignalProcessingNotification>
system receiving the signal resulting from the updated ResponseSignal knows that the content
identification has ended based on explicit signaling.
<signal:SignalProcessingNotification
acquisitionPointIdentity="ESPN_East_Acquisition_Point_1"
spsToken="spsToken1"
sasToken="sasToken1">
<!-- Cancel previously inserted repeating program identification signals
by replacing the previously sent ResponseSignal -->
<!-- GUID: 11b98ada-7cc0-4152-bc5c-1d2ab2909210 -->
<signal:ResponseSignal action="replace"
acquisitionPointIdentity="ESPN_East_Acquisition_Point_1"
acquisitionSignalID="11b98ada7cc04152bc5c1d2ab2909210">
<sig:UTCPoint utcPoint="2012-09-18T10:00:05Z"/>
<scte35:SpliceInfoSection>
<!-- Time Signal Command -->
<scte35:TimeSignal>
<scte35:SpliceTime/>
</scte35:TimeSignal>
<!-- Segmentation descriptor -->
<!-- segmentTypeID of 1 is Content Identification -->
<scte35:SegmentationDescriptor segmentationTypeId="1"
segmentationEventId="99790150"
segmentationEventCancelIndicator="true" segmentNum="0"
segmentsExpected="0">
<!-- upidType of 10 is an EIDR -->
<!-- UPID is hex encoding of 10.5240/DA73-37DD-11E7-9394-
DE6D-U -->
<scte35:SegmentationUpid segmentationUpidType="10"
segmentationUpidFormat="hexbinary"
>31302e353234302f444137332d333744442d313145372d393339342d444536442d55</scte35
:SegmentationUpid>
</scte35:SegmentationDescriptor>
</scte35:SpliceInfoSection>
</signal:ResponseSignal>
</signal:SignalProcessingNotification>
Other alternatives that could be applied are to send a segmentation type id of "Program End"
(0x11) or "Program Breakaway" (0x13). See [SCTE 35] and [SCTE 67] for additional program
centric use cases.
uriId="provider.com/Asset/UNVA2001081701004002">
<content:SourceUrl>The_Titanic.mpg</content:SourceUrl>
</common:Source>
<!-- Destination data can also be applied -->
</common:BatchInfo>
<!-- start of first region of interest - starts at BOS (NPT 0) -->
<signal:ResponseSignal action="create"
acquisitionPointIdentity="mso.com/VODProcessingPt/1"
acquisitionSignalID="s/AhUqctQje0RpuvHAuvNQ=="
signalPointID="OjwgkQp4RwmdJc2u46vrmw==">
<sig:NPTPoint nptPoint="BOS"/>
<scte35:SpliceInfoSection>
<!-- Time Signal Command -->
<scte35:TimeSignal>
<scte35:SpliceTime/>
</scte35:TimeSignal>
<!-- Segmentation descriptor -->
<!-- segmentTypeID of 52 is Provider PO Start -->
<scte35:SegmentationDescriptor segmentationTypeId="52"
segmentNum="0"
segmentsExpected="0">
<!-- upidType of 9 is a CableLabs ADI ID -->
<!-- UPID is hex encoding of SIGNAL:OjwgkQp4RwmdJc2u46vrmw==
-->
<scte35:SegmentationUpid segmentationUpidType="9"
segmentationUpidFormat="hexbinary"
>5349474E414C3A4F6A77676B51703452776D644A633275343676726D773D3D</scte35:Segme
ntationUpid>
</scte35:SegmentationDescriptor>
</scte35:SpliceInfoSection>
</signal:ResponseSignal>
<!-- end of first region of interest - ends at BOS (NPT 0) -->
<signal:ResponseSignal action="create"
acquisitionPointIdentity="mso.com/VODProcessingPt/1"
acquisitionSignalID="UR01sqCVSgydxKhzbQizyQ=="
signalPointID="mLSVqLc5RqKJGVAZ1LevaQ==">
<sig:NPTPoint nptPoint="BOS"/>
<scte35:SpliceInfoSection>
<!-- Time Signal Command -->
<scte35:TimeSignal>
<scte35:SpliceTime/>
</scte35:TimeSignal>
<!-- Segmentation descriptor -->
<!-- segmentTypeID of 53 is Provider PO END -->
<scte35:SegmentationDescriptor segmentationTypeId="53"
segmentNum="0"
segmentsExpected="0">
<!-- upidType of 9 is a CableLabs ADI ID -->
<!-- UPID is hex encoding of SIGNAL:mLSVqLc5RqKJGVAZ1LevaQ==
-->
<scte35:SegmentationUpid segmentationUpidType="9"
segmentationUpidFormat="hexbinary"
>5349474E414C3A6D4C5356714C633552714B4A4756415A314C657661513D3D</scte35:Segme
ntationUpid>
</scte35:SegmentationDescriptor>
</scte35:SpliceInfoSection>
</signal:ResponseSignal>
<!-- start of second region of interest - starts at NPT 732.537-->
<signal:ResponseSignal action="create"
acquisitionPointIdentity="mso.com/VODProcessingPt/1"
acquisitionSignalID="4CFXb/7CRl6Q/8j6LyA8fw=="
signalPointID="Y8o0D3zpTxS0LT1ew+wuiw==">
<sig:NPTPoint nptPoint="732.537"/>
<scte35:SpliceInfoSection>
<!-- Time Signal Command -->
<scte35:TimeSignal>
<scte35:SpliceTime/>
</scte35:TimeSignal>
<!-- Segmentation descriptor -->
<!-- segmentTypeID of 52 is Provider PO Start -->
<scte35:SegmentationDescriptor segmentationTypeId="52"
segmentNum="0"
segmentsExpected="0">
<!-- upidType of 9 is a CableLabs ADI ID -->
<!-- UPID is hex encoding of SIGNAL:Y8o0D3zpTxS0LT1ew+wuiw==
-->
<scte35:SegmentationUpid segmentationUpidType="9"
segmentationUpidFormat="hexbinary"
>5349474E414C3A59386F3044337A70547853304C543165772B777569773D3D</scte35:Segme
ntationUpid>
</scte35:SegmentationDescriptor>
</scte35:SpliceInfoSection>
</signal:ResponseSignal>
<!-- end of second region of interest - ends at 792.537 -->
<signal:ResponseSignal action="create"
acquisitionPointIdentity="mso.com/VODProcessingPt/1"
acquisitionSignalID="gIho/mMRTFefPKEOkDdP9w=="
signalPointID="6Wiqv1cCQumJctagOKS+ug==">
<sig:NPTPoint nptPoint="792.537"/>
<scte35:SpliceInfoSection>
<!-- Time Signal Command -->
<scte35:TimeSignal>
<scte35:SpliceTime/>
</scte35:TimeSignal>
<!-- Segmentation descriptor -->
<!-- segmentTypeID of 53 is Provider PO END -->
<scte35:SegmentationDescriptor segmentationTypeId="53"
segmentNum="0"
segmentsExpected="0">
<!-- upidType of 9 is a CableLabs ADI ID -->
<!-- UPID is hex encoding of SIGNAL:6Wiqv1cCQumJctagOKS+ug==
-->
<scte35:SegmentationUpid segmentationUpidType="9"
segmentationUpidFormat="hexbinary"
>5349474E414C3A365769717631634351756D4A637461674F4B532B75673D3D</scte35:Segme
ntationUpid>
</scte35:SegmentationDescriptor>
</scte35:SpliceInfoSection>
</signal:ResponseSignal>
<!-- start of third region of interest - starts at EOS-->
<signal:ResponseSignal action="create"
acquisitionPointIdentity="mso.com/VODProcessingPt/1"
acquisitionSignalID="NKYoR2p7Sr6FTdCtXBcu4g=="
signalPointID="X1888YpLS/Sfma4CkVFOsg==">
<sig:NPTPoint nptPoint="EOS"/>
<scte35:SpliceInfoSection>
<!-- Time Signal Command -->
<scte35:TimeSignal>
<scte35:SpliceTime/>
</scte35:TimeSignal>
<!-- Segmentation descriptor -->
<!-- segmentTypeID of 52 is Provider PO Start -->
<scte35:SegmentationDescriptor segmentationTypeId="52"
segmentNum="0"
segmentsExpected="0">
<!-- upidType of 9 is a CableLabs ADI ID -->
<!-- UPID is hex encoding of SIGNAL:X1888YpLS/Sfma4CkVFOsg==
-->
<scte35:SegmentationUpid segmentationUpidType="9"
segmentationUpidFormat="hexbinary"
>5349474e414c3a583138383859704c532f53666d6134436b56464f73673d3d</scte35:Segme
ntationUpid>
</scte35:SegmentationDescriptor>
</scte35:SpliceInfoSection>
</signal:ResponseSignal>
<!-- end of third region of interest - ends at EOS -->
<signal:ResponseSignal action="create"
acquisitionPointIdentity="mso.com/VODProcessingPt/1"
acquisitionSignalID="E6M9VPzaQFaEsahVDX305Q=="
signalPointID="2SLZcr1+QfqsYpSo0osuZw==">
<sig:NPTPoint nptPoint="EOS"/>
<scte35:SpliceInfoSection>
<!-- Time Signal Command -->
<scte35:TimeSignal>
<scte35:SpliceTime/>
</scte35:TimeSignal>
<!-- Segmentation descriptor -->
<!-- segmentTypeID of 53 is Provider PO END -->
<scte35:SegmentationDescriptor segmentationTypeId="53"
segmentNum="0"
segmentsExpected="0">
<!-- upidType of 9 is a CableLabs ADI ID -->
<!-- UPID is hex encoding of SIGNAL:2SLZcr1+QfqsYpSo0osuZw==
-->
<scte35:SegmentationUpid segmentationUpidType="9"
segmentationUpidFormat="hexbinary"
>5349474e414c3a32534c5a6372312b516671735970536f306f73755a773d3d</scte35:Segme
ntationUpid>
</scte35:SegmentationDescriptor>
</scte35:SpliceInfoSection>
</signal:ResponseSignal>
<!-- Condition contents with 15 second segments with 2 second fragments
per segment -->
<!-- Each segment will have 7 two second fragments followed by a 1 one
second fragment -->
<!-- This pattern will be repeated until the overall duration is reached
or the next signal point is encountered. -->
<signal:ConditioningInfo
acquisitionSignalIDRef="s/AhUqctQje0RpuvHAuvNQ==" duration="PT0S">
<signal:Segment fragmentDuration="PT2S">PT15S</signal:Segment>
</signal:ConditioningInfo>
<signal:ConditioningInfo
acquisitionSignalIDRef="4CFXb/7CRl6Q/8j6LyA8fw==" duration="PT60S">
<signal:Segment fragmentDuration="PT2S">PT15S</signal:Segment>
</signal:ConditioningInfo>
<signal:ConditioningInfo
acquisitionSignalIDRef="NKYoR2p7Sr6FTdCtXBcu4g==" duration="PT0S">
<signal:Segment fragmentDuration="PT2S">PT15S</signal:Segment>
</signal:ConditioningInfo>
</signal:SignalProcessingNotification>
The following is representative of feedback from an SAS for a URI process that has completed.
Not all information from the initial request is included but the NPT values are updated.
<SignalProcessingNotification acquisitionPointIdentity="VOD
Processing_Point_1" spsToken="spsToken1" sasToken="sasToken1"
signalProcessingIdentity="VODSignalProcessingSystem1">
<!-- Batch information -->
<!-- TERSE DATA - MovieType allows lots of data about the asset -->
<common:BatchInfo batchId="27b777c1ee9941479677b56203953300">
<common:Source xsi:type="content:MovieType"
uriId="provider.com/Asset/UNVA2001081701004002">
<content:SourceUrl>The_Titanic.mpg</content:SourceUrl>
</common:Source>
<!-- Destination data can also be applied -->
</common:BatchInfo>
<!-- start of first region of interest - starts at BOS (NPT 0) -->
<ResponseSignal
acquisitionPointIdentity="mso.com/VODProcessingPt/1"
acquisitionSignalID="s/AhUqctQje0RpuvHAuvNQ=="
signalPointID="OjwgkQp4RwmdJc2u46vrmw=="
action="create">
<sig:NPTPoint nptPoint="BOS"/>
</ResponseSignal>
<!-- end of first region of interest - ends at BOS (NPT 0) -->
<ResponseSignal
acquisitionPointIdentity="mso.com/VODProcessingPt/1"
acquisitionSignalID="UR01sqCVSgydxKhzbQizyQ=="
signalPointID="mLSVqLc5RqKJGVAZ1LevaQ=="
action="create">
<sig:NPTPoint nptPoint="BOS"/>
</ResponseSignal>
<!-- start of second region of interest - starts at NPT 732.537-->
<ResponseSignal
acquisitionPointIdentity="mso.com/VODProcessingPt/1"
acquisitionSignalID="4CFXb/7CRl6Q/8j6LyA8fw=="
signalPointID="Y8o0D3zpTxS0LT1ew+wuiw=="
action="create">
<sig:NPTPoint nptPoint="732.622"/>
</ResponseSignal>
<!-- end of second region of interest - starts at NPT 792.537-->
<ResponseSignal
acquisitionPointIdentity="mso.com/VODProcessingPt/1"
acquisitionSignalID="gIho/mMRTFefPKEOkDdP9w=="
signalPointID="6Wiqv1cCQumJctagOKS+ug=="
action="create">
<sig:NPTPoint nptPoint="792.539"/>
</ResponseSignal>
<!-- start of third region of interest - starts at NPT 998.456-->
<ResponseSignal
acquisitionPointIdentity="mso.com/VODProcessingPt/1"
acquisitionSignalID="DAwH7EGuSsOVCEWfZWXmfA=="
signalPointID="xOUmk9UEQumkU/+OKvzW7g=="
action="create">
<sig:NPTPoint nptPoint="998.456"/>
</ResponseSignal>
<!-- end of third region of interest - starts at NPT EOS-->
<ResponseSignal
acquisitionPointIdentity="mso.com/VODProcessingPt/1"
acquisitionSignalID="QMNdRpfjQ6mwd0yhIeGaUw=="
signalPointID="/4jwRQSORLCdOvT+4d3MGg=="
action="create">
<sig:NPTPoint nptPoint="EOS"/>
</ResponseSignal>
</SignalProcessingNotification>
signalPointID="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz0">
<sig:UTCPoint utcPoint="2016-04-05T18:48:11Z"/>
<scte35:Binary signalType="SpliceInfoSection"
>/DDUAAAAAAAAAP/wBQb/AAAAAAC+AjpDVUVJAAAAAX+/DSsBATEJJlNJR05BTDpMeT
lFTUd4S1IwaEZaVXRwTUhkQ1VWWm5SVUZuWnowEQEBAj9DVUVJAAAAAn/XAAJAyEANKwEBMgkmU0l
HTkFMOkx5OUVNR3hLUjBoRlpVdHBNSGRDVVZablJVRm5aejEQAQECP0NVRUkAAAADf9cAAZv8wA0r
AQEyCSZTSUdOQUw6THk5RU1HeEtSMGhGWlV0cE1IZENVVlpuUlVGblp6MiABAVy6A/g=</scte35:
Binary>
</ResponseSignal>
<!-- The SCTE 35 binary includes: chapter end, provider placement
opportunity start, and provider advertisement start -->
<ResponseSignal action="create"
acquisitionPointIdentity="acquisitionPointIdentity0"
acquisitionSignalID="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz3"
signalPointID="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz3">
<sig:UTCPoint utcPoint="2016-04-05T18:53:11Z"/>
<scte35:Binary signalType="SpliceInfoSection"
>/DC1AAAAAAAAAP/wBQb/AAAAAACfAjpDVUVJAAAAA3+/DSsBATIJJlNJR05BTDpMeT
lFTUd4S1IwaEZaVXRwTUhkQ1VWWm5SVUZuWnozIQEBAjpDVUVJAAAABH//AACky4AJJlNJR05BTDp
MeTlFTUd4S1IwaEZaVXRwTUhkQ1VWWm5SVUZuWno0NAEBAiVDVUVJAAAABX//AABSZcANEQEBMgMM
Y21jYTExMTExMTExMAEB42I6tw==</scte35:Binary>
</ResponseSignal>
<!-- The SCTE 35 binary includes: provider advertisement end,
distributor placement Opportunity start, and provider advertisement start -->
<ResponseSignal action="create"
acquisitionPointIdentity="acquisitionPointIdentity0"
acquisitionSignalID="cmca11111111" signalPointID="cmca11111111">
<sig:UTCPoint utcPoint="2016-04-05T18:54:11Z"/>
<scte35:Binary signalType="SpliceInfoSection"
>/DCbAAAAAAAAAP/wBQb/AAAAAACFAiBDVUVJAAAABX+/DREBATIDDGNtY2ExMTExMT
ExMTEBAQI6Q1VFSQAAAAZ//wAAUmXACSZTSUdOQUw6THk5RU1HeEtSMGhGWlV0cE1IZENVVlpuUlV
Gblp6NjYBAQIlQ1VFSQAAAAd//wAAUmXADREBATIDDGNtY2ExMTExMTExMjABAaj9Cw0=</scte35
:Binary>
</ResponseSignal>
<ConditioningInfo
acquisitionSignalIDRef="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz0"/>
<ConditioningInfo
acquisitionSignalIDRef="Ly9EMGxKR0hFZUtpMHdCUVZnRUFnZz3"/>
<ConditioningInfo acquisitionSignalIDRef="cmca11111111"/>
</SignalProcessingNotification>
9.2.1 ManifestConfirmConditionEvent
The following XML payload is submitted to the endpoint URI:
<scte35:SpliceTime ptsTime="4452723280"/>
</scte35:TimeSignal>
<scte35:SegmentationDescriptor segmentationEventId="344568691"
segmentationDuration="60" segmentationTypeId="50"
segmentNum="0" segmentsExpected="0">
<scte35:SegmentationUpid segmentationUpidType="9"
segmentationUpidFormat="hexbinary">784B7944684C70786779455764446950596A78</sc
te35:SegmentationUpid>
</scte35:SegmentationDescriptor>
</scte35:SpliceInfoSection>
<sig:StreamTimes>
<sig:StreamTime timeType="PTS" timeValue="4452723280"/>
<sig:StreamTime timeType="HLS" timeValue="4452723280"/>
</sig:StreamTimes>
</manifest:AcquiredSignal>
</manifest:ManifestConfirmConditionEvent>
9.2.2 ManifestConfirmConditionNotification
The following response XML payload is returned:
Value Description
NETWORK_OUT The template will be applied if the SCTE 35 message
indicates a network out condition.
NETWORK_IN The template will be applied if the SCTE 35 message
indicates a network in condition.
ANY The template will be applied to all SCTE 35 messages.
PRIVATE: Custom type attribute.
Value Description
before The line is to be placed before the media segment's #EXTINF tag line.
within The line is to be placed in between the media segment's start #EXTINF
line and the media segment's ending URI line.
after The line is to be placed after the media segment's URI line.
SpliceDescriptors=0x786df876dffa87687,TimeFromSignal=${timeFromSignal}"/>
</manifest:SpanSegment>
<manifest:LastSegment>
<manifest:Tag adapt="true" value="#EXT-X-SPLICE-
SPAN:SpliceDescriptors=0x786df876dffa87687,TimeFromSignal=${timeFromSignal}"/
>
<manifest:Tag locality="after" value="#EXT-X-SPLICE-
RETURN:SpliceDescriptors=0x786df876dffa87687"/>
<manifest:Tag locality="after" value="#EXT-X-DISCONTINUITY"/>
</manifest:LastSegment>
</manifest:SegmentModify>
</manifest:ManifestResponse>
</manifest:ManifestConfirmConditionNotification>
The XML schema for signal processing and conditioning SHALL be the CableLabs MD
Signaling Schema version 3.0 ([CONTENT 3.0]). Originating systems SHALL use the
SignalProcessingEvent element to send events to the processing system, while processing
systems SHALL use the SignalProcessingNotification to represent the notification payload.
10.1.1 StreamTimes
The StreamTimes object SHALL carry one or more native stream time values. There SHALL be
at least one stream time entry when present.
The XML schema SHALL be a sequence of one or more of the following:
Value Description
DASH MPEG DASH
HLS Apple HTTP Live Streaming
NPT Normal Play Time
PTS MPEG-2 Transport Stream
HSS Microsoft HTTP Smooth Streaming (HSS)
HDS Adobe HTTP Dynamic Streaming
(HDS/Zeri)
SignalID CableLabs Metadata 3.0 Signal ID
private:* Add extensibility
Identifier Description
DASH Time in 90 KHz clock ticks. The MPEG PTS value.
HLS Time in 90 KHz clock ticks. The MPEG PTS value.
NPT TBD
PTS Time in 90 KHz clock ticks. The MPEG PTS value.
HSS Time in hundred nanosecond units.
HDS Time in seconds dot ('.') decimal fractional second.
SignalID Value passed as coded in the CableLabs metadata. The value
MAY be a GUID, base64 encoded GUID or other value.
private:* extensibility
The XML schema for content SHALL be the CableLabs MD Content Schema version 3.0
([CONTENT 3.0]). When dealing with URI sourced material (see Section 7.1.2.6), the
MovieType element SHALL be used to identify and describe the source and destination content.
In the following example, the content provider provides an in-band SCTE 35 mark signaling a
necessary change to alternate content for an upcoming time and duration, among other details.
Upon receiving the in-band signal, the transcoder sends a SignalProcessingEvent to the Signal
Processor (e.g., POIS). The Signal Processor responds with a synchronous
SignalProcessingNotification, which MAY include instructions to modify or replace the in-band
signal. The signal is sent downstream to the fragmenter, which sends a
ManifestConfirmConditionEvent to the Signal Processor, which responds with a synchronous
ManifestConfirmConditionNotification.
Signal Signal
Content Acquisition Signal Acquisition
Provider (Transcoder) Processor (Fragmenter)
MPEG2-TS
SCTE-35
Signal Processing Event
HTTP Post
Signal Processing Notification
HTTP Response
ABR Video
SCTE-35
Manifest Conf.
Cond. Event
Manifest Conf.
Cond. Notification
In the following example, the content provider notifies the content distributor of an upcoming
necessary change to alternate content along with the time and duration, among other details.
Prior to the specified time, the Signal Processor sends an asynchronous
SignalProcessingNotification to the transcoder. The transcoder inserts the appropriate signal
within the video. The signal is sent downstream to the fragmenter, which sends a
Signal Signal
Content Acquisition Signal Acquisition
Provider (Transcoder) Processor (Fragmenter)
Out-of-band signaling
ABR Video
SCTE-35
Manifest Conf.
Cond. Event
Manifest Conf.
Cond. Notification
In the following example, the content provider notifies the content distributor of an upcoming
necessary change to alternate content along with the time and duration, among other details. At
the specified time, the Signal Processor sends an asynchronous
ManifestConfirmConditionNotification to the fragmenter. After receiving the notification, the
fragmenter modifies the manifest or sparse track appropriately.
Signal Signal
Content Acquisition Signal Acquisition
Provider (Transcoder) Processor (Fragmenter)
Out-of-band signaling
MPEG2-TS
Manifest Conf.
Cond. Notification
ABR Video
Appendix I Acknowledgements
We wish to thank the participants contributing directly to this document:
Arris: Guy Cherry
Elemental Technologies: Jesse Rosenzweig
Envivio: Alex MacAulay
Comcast: Allen Broome, Tedd Dawson, Francesco Dorigo, Kevin Flanagan, and Walt Michel
Time Warner Cable: Chuck Hasek
CableLabs: David Agranoff, Don Burt, and Daryl Malas
Accepted
ECN Identifier Author Description
Date
ESAM-API-N- Michel 4/4/2013 Add support for batch processing (e.g., VOD
13.1821-2 Content) and element recovery
The following ECN was incorporated into version I03 of this specification:
Accepted
ECN Identifier Author Description
Date
The following ECNs were incorporated into version C01 of this specification:
Accepted
ECN Identifier Author Description
Date