

# SCTE-35 and SCTE-104 message processing in Elemental Live
SCTE-35 and SCTE-104 message processingRevisions to SCTE-35 section

The SCTE-35 section has been revised to fix some errors. In particular, references to RTSP and HDS outputs have been removed because these output types are no longer supported. Also, screenshots have been removed.

You can use Elemental Live to manipulate the SCTE-35 messages in a TS input and to manipulate the SCTE-104 messages in an HD-SDI input. You can also use Elemental Live to remove or include the cueing information conveyed by SCTE messages in the output streams (video, audio, closed captioning, data) and any associated manifests.

You set up SCTE message processing instructions in the Elemental Live event. This guide describes how to perform this set up.

Note that Elemental Live does not support processing of manifests that are present in the input. The information in these manifests is not ingested by Elemental Live and is not included in the output or the output manifest.

**About this guide**  
SCTE messages might convey DPI cueing information for ad avails and for other non-ad-avail messages such as programs and chapters.

This guide covers both Event Signaling and Management (ESAM) and non-ESAM processing of messages.

**Assumptions**  
You should be familiar with the SCTE-35 and SCTE-104 standards and optionally with the SCTE-67 standards and how the input you encode implements these standards. You should be familiar with profiles and with managing Elemental Live events. To use the REST API features, you should be familiar with interacting with Elemental Live through the API.

**Topics**
+ [

# Eligible messages and streams
](eligible-messages-and-streams.md)
+ [

# Getting ready: Setting the ad avail mode
](getting-ready-setting-the-ad-avail-mode.md)
+ [

# Manifest decoration
](manifest-decoration.md)
+ [

# Ad avail blanking and blackout
](ad-avail-blanking-and-blackout.md)
+ [

# Passthrough or removal of SCTE messages
](pass-through-or-removal.md)
+ [

# SCTE-35 message insertion into currently running events
](scte-35-message-insertion.md)
+ [

# POIS conditioning
](pois-conditioning.md)
+ [

# Setting up using the REST API
](setting-up-via-the-rest-api.md)
+ [

# Example manifests for Apple HLS
](example-manifests-hls.md)

# Eligible messages and streams
Eligible messages in input sources

There is an update to the section on the sources and input types that are supported for SCTE-35 and SCTE-104 messages. The table is now up to date with version 2.23.2.

Elemental Live can extract SCTE-35 messages and SCTE-104 messages from input sources. 

The following table specifies the sources (and their corresponding input types) that Elemental Live supports for each message type.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/eligible-messages-and-streams.html)

**Note**  
SCTE-104 messages are converted to SCTE-35 messages early in the processing, so this guide uses “SCTE-35 messages” to refer to both SCTE-35 messages and SCTE-104 messages.

# SCTE-35 and SCTE-104 message processing options
Processing options

## The options


The processing possibilities for SCTE messages include the following.

**Automatically convert SCTE-104 messages**  
SCTE-104 messages in the input are automatically converted to SCTE-35 messages during processing of the input. No setup is required for this processing. 

**Line up SCTE Messages to use blanking and blackout of output content**  
The “cue out” and “cue in” instructions in SCTE-35 messages line up with specific content in the video, audio, and closed captions streams. You can set up to blank out this content in the output.
+ The content for ad avails is blanked out using the Ad avail *blanking* feature.
+ The content for other messages is blanked out using the *blackout* feature.

Your desired behavior must be set up in the event or profile.

**SCTE-35 passthrough**  
You can include SCTE-35 messages in the output data stream in any TS output. Your desired behavior must be set up in the event or profile. 

**Manifest decoration**  
You can set up SCTE messages with manifest decoration with these options: 
+ HLS outputs can be set up so that their manifests include instructions that correspond to the original SCTE-35 message content. 
+ MS Smooth outputs can be set up to include these instructions in the sparse track.
+ RTMP outputs can be set up to include these instructions in the data stream (because RTMP outputs do not have manifests).

**Conditioning by a POIS**  
Optionally, SCTE-35 messages (including those converted from SCTE-104) can be diverted to a POIS server for ESAM conditioning. This conditioning is in addition to all the other processing (manifest decoration, blanking and blackout, and passthrough). 

POIS and ESAM conditioning are described in [POIS conditioning](pois-conditioning.md). 

**Insert SCTE-35 messages into content during an event**  
The Elemental Live REST API includes commands to insert SCTE-35 messages into the content while the Elemental Live event is running.

You can insert using the Elemental Live REST API. Elemental Live makes no distinction between these messages and those that were in the original input. So, for example, if manifest decoration is enabled and you insert a message during encoding, that new message is represented in the manifest. 

## Default behavior of SCTE-35 and SCTE-104 messages


The default handling of SCTE-35 and SCTE-104 messages in Elemental Live includes the following:
+ No manifest decoration: You do not convert any SCTE-35 messages to event information in any output manifests or data streams.
+ No passthrough: You do not pass through SCTE-35 or SCTE-104 messages in any data stream outputs. 
+ No blanking: You do not blank out video content for any events: you leave the content as is.

If you desire the default behavior as described , you have the information you need for processing SCTE messages and do not need to read the remainder of this guide.

## About timecode configuration and timers


The event or profile includes a timecode configuration field that identifies the source for timecode stamps to be inserted in the output. The source for these stamps might be a timecode embedded in the input or might be a source external to the input (for example, the system clock or a specified time). The Timecode Config field is just after the Inputs section on the event page of the web interface. 

Before starting the transcode, the transcoder gets the timecode from the source.

After the initial sampling, Elemental Live calculates the timecode of every frame and attaches it to the output. The timecode stops advancing if there is no output. So, for example, if the input fails at 10:55:03:009, the timecode at that point is 10:55:03:009. If the input restarts 3 seconds later, the timecode of the next frame might be 10:55:03:012. The timecode will *not* be 10:55:**06**:009.

Given the importance of accurate times with SCTE-35 messages, ensure that the **Network Time Protocol (NTP)** is configured on the node. 

# Scope of processing depending on outputs


The following table summarizes which options apply to which kind of output. Following the table are details for each output type.


| Output | Passthrough in TS outputs | Manifest decoration | Blanking | 
| --- | --- | --- | --- | 
| Archive outputs with MPEG-2 as the container |  Include all the original SCTE-35 messages.  Convert any SCTE-104 messages to SCTE-35 messages (of the same message type) and include in the TS output.  | Not applicable | Applicable | 
| Archive outputs with other containers | Not applicable | Not applicable | Applicable | 
| HLS |  Include all the original SCTE-35 messages.  Convert any SCTE-104 messages to SCTE-35 messages (of the same message type) and include in the TS output. Note that, with HLS, you either implement both manifest decoration and passthrough or you implement neither.  | Decorate the HLS manifest with one or more of the following types of ad markers:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/scope-of-processing-depending-on-outputs.html) | Applicable | 
| DASH | Not applicable | Not applicable | Applicable | 
| MS Smooth | Not applicable | Include information about the SCTE-35 event in the sparse track. | Applicable | 
| SMPTE 2110 |  |  |  | 
| RTMP | Not applicable | Include one or more of the following types of ad markers in the RTMP datastream:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/scope-of-processing-depending-on-outputs.html) | Applicable | 
| UDP/TS |  Include all the original SCTE-35 messages.  Convert any SCTE-104 messages to SCTE-35 messages (of the same message type) and include in the TS output.  | Not applicable | Applicable | 

**Topics**
+ [

# Archive output with MPEG-2 container
](archive-output-with-mpeg-2-container.md)
+ [

# Archive output with other containers
](archive-output-with-other-containers.md)
+ [

# Apple HLS output
](apple-hls-output.md)
+ [

# DASH output
](dash-output.md)
+ [

# MS Smooth output
](ms-smooth-output.md)
+ [

# Adobe RTMP output
](adobe-rtmp-output.md)
+ [

# SMPTE 2110 output
](s35-scope-s2110.md)
+ [

# UDP/TS output
](udp-ts-output.md)

# Archive output with MPEG-2 container


A transport stream (TS) in an MPEG-2 container supports passthrough of the SCTE-35 messages, but it does not support creation of a manifest. Therefore, usable options are:


| SCTE-35 passthrough | Insertion of SCTE-35 messages | Manifest decoration | Blanking and blackout | Effect | 
| --- | --- | --- | --- | --- | 
| Enabled | Yes or No | Not applicable | Yes or No | Turns on passthrough of SCTE-35 messages. In this case, you could also insert more SCTE-35 message if desired. You could also implement blanking and blackout. | 
| Disabled | No | Not applicable | No |  Turns off passthrough in order to remove SCTE-35 messages from the video stream. Do not insert extra messages: they simply get stripped out of the output. Do not implement blanking or blackout. Choose this option only if, in a downstream system, you do not want to replace video that was originally marked by cues.   | 

# Archive output with other containers


Other archive outputs do not support passthrough of the SCTE-35 messages or manifest decoration. Therefore, the only workable option is the default behavior:


| SCTE-35 passthrough | Insertion of SCTE-35 messages | Manifest decoration | Blanking and blackout | Effect | 
| --- | --- | --- | --- | --- | 
| Not applicable | No | Not applicable | No | Removes SCTE-35 messages from the output. The manifest is not decorated. Do not implement blanking or blackout because, without SCTE-35 messages in the video stream and without manifest decoration, it is impossible to find these blanks and blackouts programmatically. | 

# Apple HLS output


Apple HLS output supports both passthrough of the SCTE-35 messages and manifest decoration. In fact, with HLS outputs, passthrough and manifest decoration are either both enabled or both disabled. Therefore, workable options are: 


| SCTE-35 passthrough | Insertion of SCTE-35 messages | Manifest decoration | Blanking and blackout | Effect | 
| --- | --- | --- | --- | --- | 
| Enabled | Yes or No | Enabled | Yes or No | Turns on passthrough of SCTE-35 messages and manifest decoration. In this case, you could also insert more SCTE-35 message if desired. You could also implement blanking and blackout. | 
| Disabled | No | Disabled | No |  Turns off passthrough in order to remove SCTE-35 messages from the video stream. Turns off manifest decoration. Do not insert extra messages: they simply get stripped from the output. Do not implement blanking or blackout.  Choose this option only if, in a downstream system, you do not want to replace video that was originally marked by cues.   | 

# DASH output


DASH ISO output does not support passthrough of the SCTE-35 messages or manifest decoration. Therefore, the only workable option is the default behavior:


| SCTE-35 passthrough | Insertion of SCTE-35 messages | Manifest decoration | Blanking and blackout | Effect | 
| --- | --- | --- | --- | --- | 
| Not applicable | No | Not applicable | No |  Removes SCTE-35 messages from the output. The manifest is not decorated. Do not implement blanking or blackout because, without SCTE-35 messages in the video stream and without manifest decoration, it is impossible to find these blanks and blackouts programmatically.  | 

# MS Smooth output


MSS output does not support passthrough of the SCTE-35 messages but does support instructions in the sparse track. Therefore, the workable options are:


| SCTE-35 passthrough | Insertion of SCTE-35 messages | Manifest decoration | Blanking and blackout | Effect | 
| --- | --- | --- | --- | --- | 
| Not applicable | Yes or No | Enabled | Yes or No | Removes SCTE-35 messages from the video stream. But instructions are included in the sparse track. You could insert extra messages: although they are not included in the video stream of the output, they are represented by instructions in the sparse track. You could also implement blanking and blackout. | 
| Not applicable | No | Disabled | No | Removes SCTE-35 messages from the output. The sparse track does not include instructions. Do not implement blanking or blackout because, without SCTE-35 messages in the video stream and, without data in the sparse track, it is impossible to find these blanks and blackouts programmatically. | 

# Adobe RTMP output


Adobe RTMP output does not support passthrough of the SCTE-35 messages but does support manifest decoration. Therefore, the workable options are:


| SCTE-35 passthrough | Insertion of SCTE-35 messages | Manifest decoration | Blanking and blackout | Effect | 
| --- | --- | --- | --- | --- | 
| Not applicable | Yes or No | Enabled | Yes or No | Removes SCTE-35 messages from the video stream. But instructions are included in the manifest. You could insert extra messages: although they are not included in the video stream of the output, they are represented by instructions in the manifest. You could also implement blanking and blackout. | 
| Not applicable | No | Disabled | No | Removes SCTE-35 messages from the output. The manifest is not decorated. Do not implement blanking or blackout because, without SCTE-35 messages in the video stream and without manifest decoration, it is impossible to find these blanks and blackouts programmatically. | 

# SMPTE 2110 output


SMPTE 2110 output supports passthrough of the SCTE-35 messages. Therefore, workable options are:


| SCTE-35 passthrough | Insertion of SCTE-35 messages | Manifest decoration | Blanking and blackout | Effect | 
| --- | --- | --- | --- | --- | 
| Enabled | Yes or No | Not applicable | Yes or No | Turns on passthrough of SCTE-35 messages. In this case, you could also insert more SCTE-35 messages if desired. Elemental Live converts all these SCTE-35 messages to SCTE-104 messages in the ancillary data stream in the output.You could also implement blanking and blackout. | 
| Disabled | No | Not applicable | No |  Doesn't include SCTE-104 messages in the output. Do not insert extra messages: they are simply get stripped out of the output. Do not implement blanking or blackout. Choose this option only if, in a downstream system, you do not want to replace video that was originally marked by cues.   | 

# UDP/TS output


UDP/TS output supports passthrough of the SCTE-35 messages, but it does not support creation of a manifest. Therefore, workable options are:


| SCTE-35 passthrough | Insertion of SCTE-35 messages | Manifest decoration | Blanking and blackout | Effect | 
| --- | --- | --- | --- | --- | 
| Enabled | Yes or No | Not applicable | Yes or No | Turns on passthrough of SCTE-35 messages. In this case, you could also insert more SCTE-35 message if desired. You could also implement blanking and blackout. | 
| Disabled | No | Not applicable | No |  Turns off passthrough in order to remove SCTE-35 messages from the video stream. Do not insert extra messages: they are simply get stripped out of the output. Do not implement blanking or blackout. Choose this option only if, in a downstream system, you do not want to replace video that was originally marked by cues.   | 

# Blanking and passthrough and manifest decoration


It is important to understand that the logic for blanking ad content works on the video content associated with the “ad avail event” while the logic for passthrough and manifest decoration works on the actual SCTE-35 message.

So you can blank ad avails and not pass through SCTE-35 messages or not blank ad avails and not pass through SCTE-35 messages and decorate the manifest or any combination: the actions are independent.

The only exception to this rule is for HLS outputs: manifest decoration and passthrough are either both enabled or both disabled.

# Getting ready: Setting the ad avail mode
Set ad avail mode

Read this section if you want to support any of the following features:
+ Manifest decoration for all outputs. 
+ Ad avail blanking for all outputs. (Note that this section does not apply to the blackout feature.) 

If you have several outputs and you want to do manifest decoration or ad avail blanking on some of the outputs and not on others, you have to set up two different profiles or events.

**Note**  
You do not have to read this section if you *are* doing Blackout image insertion but you are not doing ad avail blanking or manifest decoration.

**Set the ad avail mode**

You must set the Ad Avail mode. The Ad Avail mode applies to all outputs: it cannot be set uniquely for individual outputs. To set up the Ad Avail Mode, do the following.

1. In the Profile or Event screen, click Ad Avail Controls (in the Input section towards the top of the screen):

1. In **Ad Avail Trigger**, choose the desired mode from the drop-down menu. This mode identifies which of all possible “ad avail” events are treated as “ad avails.” This distinction comes into play in manifest decoration and ad avail blanking. For more information, see [Manifest decoration](manifest-decoration.md) and [Ad avail blanking and blackout](ad-avail-blanking-and-blackout.md). 

   Typically, you select the mode to match the type ID that you already know the input is using to indicate “ad avail” events. 
   + **Splice Insert Mode **. Select this mode if the input uses splice inserts to indicate ad avails. The input might also contain messages for other events such as chapters or programs.
   + **Time Signal with APOS Mode**. Select this mode if the input contains time signals of segmentation type placement opportunity. The input might also contain messages for other events such as chapters or programs. 

The following table specifies how a message (containing a specific combination of message type and segmentation type) is treated depending on the mode that is specified. Each message is treated as either an ad avail, a non-ad avail, or as “other.” 

Read across the first three columns to identify a combination of mode, the message type and the segmentation type. Then in the last three columns, identify how Elemental Live handles that combination.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/getting-ready-setting-the-ad-avail-mode.html)

# Manifest decoration


You can choose to interpret SCTE-35 messages from the original input and insert corresponding instructions into the output manifest for the following outputs:
+ HLS
+ MS Smooth (the instructions are inserted in the sparse track).
+ RTMP (the instructions are inserted into the data stream, given that RTMP does not support manifests).

## How SCTE-35 events are handled in manifests


Based on your criteria for creating the event, you can insert the following information into the manifest.


| Type of instruction | When inserted | 
| --- | --- | 
| Base-64 | Information about all SCTE-35 messages in the output is incorporated into the manifest; the entire SCTE-35 message is added in base-64 format. | 
| Cue-out, Cue-in | SCTE-35 messages that are ad avails (see [Getting ready: Setting the ad avail mode](getting-ready-setting-the-ad-avail-mode.md)) result in the insertion of “cue-out, cue-in” instructions. | 
| Blackout |  Only applies to the SCTE-35 Enhanced ad marker style (for HLS output; see below). SCTE-35 messages that are *not *ad avails result in the insertion of “blackout start/end” instructions, assuming that blackout is enabled ([Ad avail blanking and blackout](ad-avail-blanking-and-blackout.md)). If blackout is not enabled, these instructions are not inserted.  | 

**Splice insert mode**  
This table describes which of the three types of instructions from the table in the start of this section are inserted for each message type and segmentation type.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/manifest-decoration.html)

**Time signal APOS mode**  
This table describes which of the three types of instructions from the table in the start of this section are inserted for each message type/segmentation type. Note that many segmentation types are completely ignored: they do not get included in the manifest.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/manifest-decoration.html)

## Procedure to enable manifest decoration


**Apple HLS**  
Enable manifest decoration at the output group level, which means that the manifests for all outputs in that group include instructions based on the SCTE-35 content. 

In the Apple HLS output group section, open the **Advanced** section and complete the following fields: 
+ **Ad Markers**: Click to select a marker type. You can select more than one type.

See [Example manifests for Apple HLS](example-manifests-hls.md) for information about the different of markers. 

The manifest for each output includes a separate set of tags for each type that you select. 

**MS Smooth**  
With MS Smooth, if you enable manifest decoration, you actually insert instructions in the sparse track.

Enable manifest decoration at the output group level, which means that the sparse tracks for all outputs in that group include instructions based on the SCTE-35 content.

In the MS Smooth output group section, complete the following fields:
+ **Enable Sparse Track**: Click to select a marker type. You can select more than one type. 
+ **Acquisition Point ID**: Enter the address of the certificate, if encryption is enabled on the output.

**RTMP**  
With RTMP, if you enable manifest decoration, you insert instructions in the data stream as RTMP does not support manifests. 

Enable manifest decoration at the output group level, which means that the manifests for all outputs in that group include instructions based on the SCTE-35 content.

In the RTMP output group section, complete the following fields: 
+ **Ad Markers**: Click to select a marker type. You can select more than one type.

The data stream includes a separate set of tags for each type that you select. 

# Ad avail blanking and blackout


You can turn on one or both of the following features to blank out the content associated with a SCTE-35 event:
+ “**Blackout**”: Blank out the content for other types of SCTE-35 messages such as chapters and programs.
+ “**Ad avail blanking**”: Blank out the content for a SCTE-35 message that is considered an “ad avail” (according to the mode, [Getting ready: Setting the ad avail mode](getting-ready-setting-the-ad-avail-mode.md)).

In both features, the handling is one of the following.
+ Replace the video content associated with the event with an image you specify or with a black image.
+ Remove the audio associated with the event.
+ Remove the closed captions associated with the event.

**Topics**
+ [

# Blanking is global
](blanking-is-global.md)
+ [

# Scope of blackout of SCTE-35 messages
](scope-of-blackout.md)
+ [

# Scope of ad avail blanking of SCTE-35 messages
](scope-of-ad-avail-blanking.md)
+ [

# Procedure to enable ad avail blanking
](procedure-to-enable-ad-avail-blanking.md)
+ [

# Procedure to enable blackout
](procedure-to-enable-blackout.md)

# Blanking is global


Both Ad avail blanking and Blackout apply to all outputs. You cannot choose to blank out for some outputs and not blank out for others: it is an all-or-nothing decision. 

**Compare Blanking to Manifest Decoration and Passthrough**  
Manifest decoration and passthrough have a smaller scope than blanking : they apply only to outputs that support these features. 

Take important note of this fact, because if you do *not* do passthrough and do *not* do manifest decoration in a given output (because these are not supported or because you choose not to) but you do implement blanking, there are no “markers” for where the blanked content occurs.

To identify where this blanking is occurring. look for the IDR I-frames that identify where the SCTE-35 message used to be.

# Scope of blackout of SCTE-35 messages


All SCTE-35 messages that are “Other type” are blanked out as follows:


| SCTE-35 segmentation type | Blanking | 
| --- | --- | 
| Programs | Always | 
| Chapters | Always | 
| Unscheduled events | Always | 
| Network  | See below. | 

**How Network End Blackout Differs from Other Events**  
Network end blackout is different from the other events that trigger a blackout because: 
+ With Network, blanking starts when the "Network End" instruction is encountered and ends when the "Network Start" instruction is encountered.
+ With other events, blanking starts when the “event start” instruction is encountered and ends when the “event end” instruction is encountered.

# Scope of ad avail blanking of SCTE-35 messages


For Ad avail blanking (but not for Blackout), the ad avail mode you set controls which SCTE-35 events result in blanking of the content. 

**Using Splice Insert Mode**  
This table describes which message type/segmentation type combination is blanked by Ad avail blanking when the Ad Avail mode ([Getting ready: Setting the ad avail mode](getting-ready-setting-the-ad-avail-mode.md)) is **Splice Insert mode**. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/scope-of-ad-avail-blanking.html)

**Using Time Signal APOS Mode**  
This table describes which message type/segmentation type combination is blanked out by Ad avail blanking when the Ad Avail mode ([Getting ready: Setting the ad avail mode](getting-ready-setting-the-ad-avail-mode.md)) is **Timesignal with APOS mode**. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/scope-of-ad-avail-blanking.html)

**Ad avail blanking and restriction flags: restrictions in the input**  
SCTE-35 messages of type **time\$1signal** always contain segmentation descriptors. 

SCTE-35 messages of type **splice\$1insert **may or may not include segmentation descriptors.

If the input has SCTE-35 messages that *do* include segmentation descriptors, these segmentation descriptors always include two types of flags. These flags provide additional information as guidance for blanking in specific situations:
+ **web\$1delivery\$1allowed\$1flag**. 
  + "True" means that there is no restriction on including the ad avail event’s content in a stream intended for web delivery: you do not need to blank out content in streams intended for web delivery. 
  + "False" means there is a restriction: you should blank out the content . 
+ **no\$1regional\$1blackout\$1flag.** 
  + "True" means that there is no restriction on including the ad avail event’s video in a stream intended for regional markets: you do not need to blank out content in streams intended for regional markets. 
  + "False" means there is a restriction: you should blank out the content.

If neither flag is present (usually the case with **splice\$1inserts**), then both are considered to be false: blanking should occur.

If both flags are present (which is usually the case; it is unusual to have only one flag present), then a “false” for one flag takes precedence over a “true” for the other flag: blanking should occur.

Typically, in any given message in the input only one of these flags would ever be set to "false", so only one restriction would ever be in place. There would typically never be *both* a regional delivery restriction and a web delivery restriction. This is because, if content is considered restricted for regional delivery, then it would not also be considered restricted for web delivery (where the concept of a region does not relate).

To summarize, this table shows the blanking logic that applies to each ad avail event that is encountered:


|  | Content of corresponding SCTE-35 MessageWeb delivery allowed? | Content of corresponding SCTE-35 MessageRegional delivery allowed? | Result | Comment | 
| --- | --- | --- | --- | --- | 
| S1 | Flag is not present. | Flag is not present. | Blanking will occur. | This combination can occur only in a message type splice\$1insert (where the segmentation descriptor is optional). | 
| S2 | True | True | Blanking will not occur. |   | 
| S3 | True | False | Blanking will occur. |   | 
| S4 | False | True | Blanking will occur. |   | 

**Ad avail blanking and restriction flags: Elemental Live handling of restrictions**  
You can modify this default blanking behavior by instructing Elemental Live to ignore a restriction flag that is set to "false", so that blanking will not occur for this ad avail event. In other words, to use this logic: “Even if the message indicates to blank content because a regional blackout is in place, do not follow this instruction. Ignore the fact that a regional blackout is in place and do not blank content.”

You modify the behavior by setting one or the other of the **Ignore** flags to:
+ **Cleared**(default ). The logic as above applies: so continue to observe the restriction.
+ **Selected**. Ignore the restriction and do not blank video for the ad avail event.

**Warning**  
Never set both fields to **Ignore**\$1 

To summarize, the Ignore flags make a difference only to the scenarios in this table:


|  | Content of corresponding SCTE-35 MessageWeb delivery allowed? | Content of corresponding SCTE-35 MessageRegional delivery allowed? | Restriction field in Elemental Live | Result | 
| --- | --- | --- | --- | --- | 
| S3 | True | False | Ignore “regional delivery” restriction | Blanking will not occur. | 
| S4 | False | True | Ignore “web delivery” restriction | Blanking will not occur. | 

**Ad avail blanking and restriction flags: restriction flags with “splice insert”**  
If you selected Splice Insert as the Ad Avail mode, then you can assume that the SCTE-35 ad avail message not include the two restriction flags described above. Every SCTE-35 ad avail message should result in an ad avail. 

Therefore, if you know that input contains splice inserts (not time signals), you should leave both Elemental Live fields cleared.

# Procedure to enable ad avail blanking


**To enable ad avail blanking**

1. In the Profile or Event screen, click Advanced Avail Controls (in the Input section towards the top of the screen):

1. Select or clear the two restriction fields:
   + **Cleared** (default): Observe the restriction and blank the content for the ad avail event.
   + **Selected**: Ignore the restriction and do *not* blank the content for the ad avail event.

1. Go down to the Global Processors section and complete the following fields:
   + **Ad Avail Blanking**: Click to turn on. The **Blanking Image** field appears.
   + **Blanking Image**: Specify a `.bmp` or `.png` file to use for the blanking. If you leave this field blank, a plain black image is inserted.

# Procedure to enable blackout


**To enable blackout**

1. In the Profile or Event screen, go down to the Global Processors section and complete the following fields:
   + **Blackout Image Insertion**: Click to turn on. The Blanking Image field appears.
   + **Blanking Image**: Specify a `.bmp` or `.png` file to use for the blanking. If you leave this field empty, a plain black image is inserted.

1. If you want to enable network end blackout (in other words, blank content when network transmission has ended and remove blanking only when network transmission resumes), complete these fields:
   + **Enable Network End Blackout**: Selected.
   + **Network ID**: The** Entertainment Identifier Registry** (**EIDR**) **ID **of the network in the format 10.nnnn/xxxx-xxxx-xxxx-xxxx-xxxx-c (case- insensitive). Only network end events with this ID trigger blackout. 
   + **Network End Blackout Image**: Specify a `.bmp` or `.png` file to use for the blanking. If you leave this field blank, a plain black image is inserted.

# Passthrough or removal of SCTE messages


SCTE-35 messages from the input can be passed through (included) in the data stream for the following outputs.
+ Archive outputs with MPEG-2 as the container: You specify whether to pass through at the output level.
+ HLS: You specify whether to pass through at the output group level: passthrough or removal applies globally to all outputs in the output group.
+ UDP/TS: You specify whether to pass through at the output level: for each individual output in the output group.

SCTE-104 messages are handled for each output as follows:
+ If you choose to pass through the SCTE-35, then all SCTE-104 messages are converted to SCTE-35 messages (of the same message type) and included in the data stream.
+ If you choose to remove the SCTE-35 messages, the SCTE-104 messages are also removed.

**Topics**
+ [

# Archive procedure
](pass-through-or-removal-archive.md)
+ [

# Apple HLS passthrough procedure
](pass-through-or-removal-apple-hls.md)
+ [

# UDP/TS procedure
](pass-through-or-removal-udp-ts.md)

# Archive procedure


You enable or disable passthrough at the output level: only in outputs that have an MPEG-2 TS container.

1. In the Profile or Event screen, go to the Output Groups section at the bottom of the screen and display the tab for Archive Output Group. 

1. In the output that has the MPEG-2 TS container, open the PID Control section. Complete the following fields:
   + SCTE-35: Click to select.
   + SCTE-35 PID: Enter the ID of the PID where you want the SCTE-35 messages to go. 

**Result**  
All SCTE-35 messages from the input are included in the data stream of this output.

# Apple HLS passthrough procedure


Passthrough is enabled or disabled individually for each output, which means it can be applied differently for different outputs in the same group.

1. If you have not already set up for manifest decoration, do so now; see [Procedure to enable manifest decoration](manifest-decoration.md#procedure-to-enable-decoration).

1. In the Profile or Event screen, go to the Output Groups section at the bottom of the screen and display the tab for **Apple HLS Output Group**. 

   1. In each output, open the PID Control section. You will note that the SCTE-35 field is automatically selected (because you set up for manifest decoration) and you cannot clear it . 

   1. Complete the following field:
      + SCTE-35 PID field: Enter the ID of the PID where you want the SCTE-35 messages to go. 

**Result**  
All SCTE-35 messages from the input are included in the data stream of the relevant output.

# UDP/TS procedure


Passthrough is enabled or disabled individually for each output, which means it can be applied differently for different outputs in the same group.

**To enable passthrough**

1. In the Profile or Event screen, go to the Output Groups section at the bottom of the screen and display the tab for UDP/TS Output Group. 

1. In the output where you want to pass through SCTE-35 messages, open the PID Control section. Complete the following fields:
   + SCTE-35: Click to select.
   + SCTE-35 PID: Enter the ID of the PID where you want the SCTE-35 messages to go. 

**Result**  
All SCTE-35 messages from the input are included in the data stream of the relevant output. 

# SCTE-35 message insertion into currently running events


You can use the Elemental Live REST API to insert SCTE-35 messages into an Elemental Live event that is currently running. The API supports insertion of a SCTE-35 message of type **splice\$1insert** or **time signal **([Working with time signals](working-with-time-signals.md)). 

**Topics**
+ [

# Working with splice inserts
](working-with-splice-inserts.md)
+ [

# Working with time signals
](working-with-time-signals.md)

# Working with splice inserts


Splice inserts inserted by the REST API are always of type “ad avail.”

You can:
+ Insert a SCTE-35 ad avail of type splice\$1insert. See [Insert a new splice insert message](insert-a-new-splice-insert-message.md).
+ Get the timecode of the content that is currently being processed. This data can be useful to determine the start time you need to enter in the command. See [Get current time](get-current-time.md).
+ Insert an end time in an ad avail. See [Insert an end time in an existing ad avail](insert-an-end-time-in-an-existing-ad-avail.md).
+ Cancel a SCTE-35 ad avail that is pending (the start time has not yet been reached). See [Cancel a pending ad avail](cancel-a-pending-ad-avail.md). 

**Effect of these commands**  
These commands modify the data stream as it is being encoded. 

Their precise effect on other parts of the content depends on how the event is set up, as described in earlier chapters of this guide. So it depends on the Ad Avail mode, whether manifest decoration is enabled, blanking and blackout are enabled, and whether passthrough is enabled. 

**Topics**
+ [

# Insert a new splice insert message
](insert-a-new-splice-insert-message.md)
+ [

# Get current time
](get-current-time.md)
+ [

# Insert an end time in an existing ad avail
](insert-an-end-time-in-an-existing-ad-avail.md)
+ [

# Cancel a pending ad avail
](cancel-a-pending-ad-avail.md)

# Insert a new splice insert message
Inserting splice inserts on the day the clocks change

This section now includes information about using the REST API to insert a splice insert, specifically on the day that the clocks change to or from Standard Time.

Inserts a SCTE-35 message of type splice\$1insert in the stream either immediately or at a specified time. The command always includes a start time. It can also include a duration (which implies an end time). 

The command does not support inclusion of a segmentation descriptor, which means that the message is always considered to be an “ad avail.”

**HTTP URL**

```
POST <IP address of Live node>/live_events/<ID of event>/cue_point
```

**Body of HTTP**

The XML body contains one cue\$1point elements containing the following tags:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/insert-a-new-splice-insert-message.html)

**Specifying time with "splice\$1time" tag**  
Use the splice\$1offset tag to specify the start time as a specific clock time, for example, at 10:20:33. The time you specify must match the timecode format in the event, as specified by the** Timecode Config Source** field in the event or profile. For example, if you specify 10:20:33 and the event uses system clock, the message is inserted at 10:20:33 UTC. If the event uses local time, the message is inserted at 10:20:33 for the time zone of the node. 

To verify the timecode format in the event, submit a GET live\$1events request and (in the response) read the value in the **timecodeconfig** tag.

Splice Time requires either knowing in advance to insert an ad avail at a given time, or obtaining the current time and inserting an offset so that the time is not missed. It is easier to use **Splice Time** when you know start times in advance. You can obtain the timecode of the content currently being encoded; see [Get current time](get-current-time.md).

**Specifying Time with "splice\$1offset" Tag**  
You can use the **splice\$1offset** tag to specify time as a number of milliseconds into the future from the moment at which the command is performed. This offset can be 0, which means to insert immediately. 

**Time of insertion of the message and time for the ad avail**  
The time the message is inserted and the start time for the ad avail are typically not identical. For example, you insert a message that says “insert an ad avail at 10:35:15:0”. The message is actually inserted in the content close to the moment that you enter the request. The downstream system won't act on the instruction (it won't insert the ad avail) until the specified time. 

So you can insert the message in advance of its targeted start time. In fact, it is a good idea to include some offset. But take care when calculating offset.
+ **Too little offset**: If you do not add enough offset, the specified time might have already passed. The ad avail might still be inserted in the video (at the current frame) but will be inserted too late for Elemental Live to act upon it. 

  For example, the command says “insert an ad avail at 10:35:15.0” but, if that time has passed, the message is inserted at 10:35:40.0 (for example). Elemental Live inserts the message if its request time is less than 1 hour after the targeted time. Otherwise, it discards the message. Note that the message is inserted in the content but it has a start time that has already passed.
+ **Too much offset**: The maximum offset is 6 hours. Within that range, the ad avail will be inserted at a timepoint (for example 10:35:20), and the command is “insert ad avail at 10:36:00.0, that is, in 40 seconds from now.”

**Splice offset and clock changes**

When you use splice offsets in a splice insert, you must restart the event whenever the clocks change to or from Standard Time. If you don’t restart the event, your splice inserts will permanently either be inserted at the wrong time or not be inserted at all.

These rules apply only if the event uses the local system clock, because this is the only type of clock that is affected by the clock change. 

If you don't plan for any splice inserts in the first few minutes after the clocks change, you can simply restart the event as soon as the clocks change in the region and time zone that the Elemental Live appliance is configured for. 

If your workflow does include plans for splice inserts just after the clocks change, follow these steps:
+ Determine the date and time that the clocks change,in the region and time zone that the Elemental Live appliance is configured for.
+ Identify all the splice insert commands that you plan to enter *before* the clocks change, and where the splice insert has an intended start time that is *after* the clocks change. For example, you plan to enter a command at 1:15 a.m. for a splice insert with a start time that is after the clocks change. Don't enter any of these commands.
+ As soon as the clocks change (so at approximately 2:00.01 a.m.), restart the event. Restart each event where the problem scenario applies.
+ After the event restarts, you can insert the splice insert commands that you previously didn’t enter. It's possible that the intended start time of one or more splice inserts has already passed. You might want to reschedule the start time for the splice inserts, or you might want to skip these splice inserts. 
+ You can then continue entering splice insert commands in the usual way.

**Response**

The body of the response is XML content consisting of one **response** element containing the following tags:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/insert-a-new-splice-insert-message.html)

A success response does not include the <errors> element. A failure response contains only the <event\$1id> and <errors> elements. 

**Example Message**  
The following shows an example message:  

```
<message>Inserted event [32] at event time[08:02:38], PTS[00:02:20.982]. Avail time[08:02:38 0f] PTS[08:02:38.023], duration[01:00:00.000]. Current NTP [15:18:05.712]</message>
```


| Data | Description | 
| --- | --- | 
| Inserted event [n] | The event ID for the ad avail request. | 
| event time |  The requested start time of the ad avail, as per the original request.  | 
| PTS (first occurrence) | The time at which the SCTE-35 message insertion request was received by Elemental Live, in a clock representation of the presentation timestamp (PTS). This PTS is a “timer”, not a clock time. | 
| Avail Time |  The requested start time of the ad avail, including the frame. This time is in the timecode specified in the event or profile. For more information, see [About timecode configuration and timers](processing-options.md#about-timecode-configuration-and-timers). This time is in the timecode specified in the event or profile. If the timecode configuration source is Clock time, Local time, and Specified time, this time is a “clock time.”  | 
| PTS (second occurrence) | The requested start time of the ad avail (with the frame converted to milliseconds). | 
| duration | The duration of the ad avail, if specified, in 24-hour format. | 
| Current NTP | The network time protocol (NTP) when the SCTE-35 message insertion request was received by Elemental Live. | 

## Splice insert examples


**Splice time**  
Insert a message into the event with the ID 3. Insert the message at 10 hours, 32 minutes, and 10 seconds, and give it a duration of 30 seconds. (The implied end time will be 10 hours ,32 minutes, and 40 seconds.) 

```
POST 10.4.136.95/live_events/3/cue_point
----------------------------------------
<cue_point>
<splice_time>	
<hours>10</hours>
<minutes>32</minutes>
	<seconds>10</seconds>
	<frames>0</frames>
</splice_time>
<duration>30</duration>
</cue_point>
```

The following shows a success response where splice\$1offset was used in the request. The SCTE-35 request has an ID of 8.

```
<response value="cue_point"> 
  <event_id>8</event_id>
  <splice_time>
    <hours>0</hours>
    <minutes>0</minutes>
    <seconds>0</seconds>
    <frames>0</frames>
  </splice_time>
  <splice_offset>8000</splice_offset>
  <message> Inserted at PTS[1234]. Avail time[00:00:05.000] PTS[2345], duration[30].  
  </message> 
</response>
```

The following shows a failure response:

```
<response value="cue_point">
  <event_id>8</event_id>
  <errors>
    <error>
      <code>1040</code>
      <message>Preroll time must be positive integer</message>
    </error>
  <errors>
</response>
```

**Splice offset**  
Insert a message into the event with the ID 3. Insert the message 8000 milliseconds from the moment the command is performed. The message has a duration of 30 seconds.

```
POST 10.4.136.95/live_events/3/cue_point
----------------------------------------
<cue_point>
<splice_offset>8000</splice_offset>
<duration>30</duration>
</cue_point>
```

# Get current time


You can obtain the timecode of the frame that is currently being processed in the specified event. Refer to the following tables.

**HTTP URL**

```
POST <IP address of Live node>/live_events/<ID of event>/cue_point
```

**Body of HTTP**

The XML body contains one `cue_point` element containing the following tag:


| Tag | Type | Value | 
| --- | --- | --- | 
| get\$1current\$1time | Integer | Always 1 | 

**Response**

The body of the response contains one **response** element containing the following tags:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/get-current-time.html)

The response is provided in this format so that you could take the entire response, clean it up a bit (for example, changing the “tag” tag to “event\$1id”), and use it as the body of a request to insert a spliceinsert (see [Insert a new splice insert message](insert-a-new-splice-insert-message.md).

## Get current time example


The following shows a request for the current timecode in the event that has the ID 15:

```
POST 10.4.136.95/live_events/15/cue_point
-----------------------------------
<cue_point>
  <get_current_time>1</get_current_time>
</cue_point>
```

The following shows an example response for the request:

```
<?xml version="1.0" encoding="UTF-8"?>
<response>
  <tag>1</tag>
  <splice_time>
    <hours>0</hours>
    <minutes>0</minutes>
    <seconds>2</seconds>
    <frames>23</frames>
  </splice_time>
  <message>PTS[00:00:02.969]. Current NTP [16:21:23.573].</message>
  <splice_offset>0</splice_offset>
  <value>cue_point</value>
</response>
```

# Insert an end time in an existing ad avail


You can insert an end time in the following situations:
+ To add an end time to a message that has not yet started if an end time was not initially included.
+ To cut short an ad avail that is in progress. The command can be used in this way if no end time was initially included or if it was included but you want to end early.

**HTTP URL**

```
PUT <IP address of Live node>/live_events/<ID of event>/cue_point
```

**Body of HTTP**

The XML body contains one `cue_point` element containing the following tags:


| Tag | Sub-tag | Type | Value | 
| --- | --- | --- | --- | 
| event\$1id |   | integer | The event ID of the original POST cue\$1point (the request that did not include a duration). | 
| return\$1offset | integer |   | The number of milliseconds to wait before inserting the ad avail. | 

## Insert an End Time in an Existing Ad Avail Example


Insert an end time immediately into the event with the ID 4. The original SCTE-35 ad avail has an ID of 38.

```
PUT 10.4.136.96/live_events/4/cue_point
----------------------------------------
<cue_point> 
  <event_id>38</event_id>
  <return_offset>0</return_offset> 
</cue_point>
```

# Cancel a pending ad avail


If you inserted an ad avail the start time has not yet passed, you can cancel the insertion. No SCTE-35 message will be inserted.

**HTTP URL**

```
POST <IP address of Live node>/live_events/<ID of event>/cue_point
```

**Body of HTTP**

The XML body contains one `cue_point` element containing the following tag:


| Tag | Sub-tag | Type | Value | 
| --- | --- | --- | --- | 
| cancel\$1event\$1id |   | integer | The event ID of the original SCTE-35 request. | 

**Response**

The response includes a message that identifies the event ID of the original request.

## Cancel a Pending Ad Avail Example


The following shows a request to cancel the insertion of a pending ad avail in the event with the ID 4. The original SCTE-35 ad avail has an ID of 38:

```
POST 10.4.136.96/live_events/4/cue_point
----------------------------------------
<cue_point>
  <cancel_event_id>38</cancel_event_id> 
</cue_point>
```

The following shows an example response for the request:

```
<response>
  <tag>13</tag>
  <event_id>5</event_id>
  <message>Canceled eventID [5]</message>
  <value>cue_point</value>
</response>
```

# Working with time signals


Time signals inserted by the REST API can be one of the “ad avail” types, or some other type, depending on what you specify in the segmentation descriptor in the request.

**Effect of creating a time signal**  
Insertion of a time signal modifies the data stream as it is being encoded. 

The effect of time signals on other parts of the content depends on how the event is set up, as described in earlier chapters of this guide. So it depends on the Ad Avail mode, whether manifest decoration is enabled, blanking and blackout are enabled, and whether passthrough is enabled. 

## Insert a new time signal message


Inserts a SCTE-35 message of type time\$1signal in the stream either immediately or at a specified time. The command always includes a start time (in the time tag) and a duration (included in the segmentation descriptor). 

**HTTP URL**

```
POST <IP address of Live node>/live_events/<ID of event>/time_signal
```

**Body of HTTP**

The XML body contains one **time\$1signal** element containing the following tags:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/working-with-time-signals.html)

**Response**

The body of the response is XML content consisting of one **response** element containing the following tags:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/working-with-time-signals.html)

A success response does not include the <errors> element. A failure response contains only the <tag> and <errors> elements. 

**Example Message**  
The following shows an example message:  

```
<message>Inserted event [32] at event time[08:02:38], PTS[00:02:20.982]. Avail time[08:02:38 0f] PTS[08:02:38.023], duration[01:00:00.000]. Current NTP [15:18:05.712]</message>
```


| Data | Description | 
| --- | --- | 
| Inserted event [n] | The event ID for the ad avail request. | 
| event time |  The requested start time of the ad avail, as per the original request.  | 
| PTS (first occurrence) | The time at which the SCTE-35 message insertion request was received by Elemental Live, in a clock representation of the presentation timestamp (PTS). This PTS is a “timer”, not a clock time. | 
| Avail time |  The requested start time of the ad avail, including the frame. This time is in the timecode specified in the event or profile.  This time is in the timecode specified in the event or profile. If timecode configuration source is Clock time, Local time, and Specified time, this time is a “clock time.”  | 
| PTS (second occurrence) | The requested start time of the ad avail (with the frame converted to milliseconds). | 
| duration | The duration of the ad avail, if specified, in 24-hour format. | 
| Current NTP | The network time protocol (NTP) when the SCTE-35 message insertion request was received by Elemental Live. | 

## Insert a new time signal message example


The following shows a request to insert a SCTE-35 message immediately into the event that has ID 3. 

```
POST 10.4.136.95/live_events/3/time_signal
----------------------------------------
<time_signal>
  <time>
    <hours>0</hours>
    <minutes>0</minutes>
    <seconds>0</seconds>
    <frames>0</frames>
   </time>
  <descriptors>021B43554549000000027FBF030C54564E413130303030303031300000
  </descriptors>
 </time_signal>
```

The following shows an example success response for the request:

```
<response value="time_signal">
  <message> Inserted time signal at event time[1234], PTS[1234]. Signal time[1234] PTS[1234]. 
  </message> 
  <tag>1</tag> 
  <signal_time>
    <hours>0</hours>
    <minutes>0</minutes>
    <seconds>0</seconds>
  </signal_time> 
</response>
```

The following shows an example failure response for the request:

```
<response value="time_signal">
  <tag>1</tag> 
  <errors>
    <error>
     <code>1040</code>
     <message>Invalid time signal message</message>
    </error>
  </errors>
</response>
```

# POIS conditioning


Elemental Live events can be configured to communicate with a POIS server. During processing of the input, each time a SCTE-35 message is encountered, Elemental Live sends the message contents to the server. The POIS responds with SCTE-35 content that might be identical to the original, slightly different from, or completely different from the original.

Elemental Live also supports handling of “out-of-band” SCTE-35 messages from the POIS – messages that are not a response to a message originally sent by Elemental Live. If such a message is received, Elemental Live accepts and processes it.

## POIS conditioning and other SCTE 35 features


This section describes how POIS conditioning interacts with other SCTE 35 features that you can set up. 

**Ad avail mode**  
When POIS conditioning is enabled, the ad avail mode is always set to *splice insert*. For information about how this value affects the behavior of manifest decoration and ad avail blanking see [Getting ready: Setting the ad avail mode](getting-ready-setting-the-ad-avail-mode.md). 

**SCTE-35 messages inserted by REST API**  
All these messages are sent to the POIS along with messages that are already in the input. 

**Manifest decoration**  
The effect of POIS conditioning on [manifest decoration](manifest-decoration.md) is as follows: 
+ **HLS Outputs** – A message received from the POIS might include instructions to decorate an HLS manifest (not other types of manifests). This information is used to decorate the HLS manifest.

  How Elemental Live processes the decoration information depends on how the event or event has been configured: 
  + If the event or event does not have manifest decoration enabled for HLS outputs, then the information is ignored.
  + If the event does have it enabled, then the decoration information is inserted in the manifest. 
  + The information is inserted into the manifest “as is.” The style of the information might not match the styles (ad marker styles) specified in the event. Elemental Live doesn't check for format inconsistencies between these instructions and the ad marker style.
+ **Other Outputs** – Decoration of other manifest types is according to the information in the SCTE-35 message and how the Elemental Live event is set up for manifest decoration and which ad avail mode is enabled. The POIS conditioning has no effect on these manifest types. 

**Blanking and blackout**  
The effect of POIS conditioning on blanking and blackout is as follows: 
+ **Extra Blackout Instructions** – A message received from the POIS might include explicit “blank the content corresponding to this SCTE-35 message” instructions for any SCTE-35 message. 
+ **Blanking Image** – A POIS response might include reference to a blanking .png or .bmp file. Elemental Live uses this file for any blanking/blackout if it can find the file at `/data/server/esam/` on the Elemental Live node. 

  If Elemental Live cannot find the file, it uses a black slate. 
+ **Restriction Flags** – In ESAM mode, the Override restriction flags in the Elemental Live event (**Ignore Web Delivery Allowed **flag and **Ignore No Regional Blackout** flag) are always cleared (not selected). See [Ad avail blanking and blackout](ad-avail-blanking-and-blackout.md). 
+ **Passthrough or Removal** – Without POIS conditoin, if passthrough is enabled in the Elemental Live event, then the rule is that all SCTE-35 message are passed through. 

  But when POIS conditioning is enabled, the POIS can override this rule: if the POIS instruction is to remove a given SCTE-35 message, then that message is removed and is not passed through, even though passthrough is enabled in Elemental Live. 

## Procedure to enable POIS conditioning


1. In the **Profile** or **Event **screen, select **Advanced Avail Controls** (in the Input section towards the top of the screen): 

1.  In **Ad Avail Trigger**, choose **ESAM**. More fields appear. 

1. Complete the fields as follows: 
   + Complete the first 6 fields to identify the endpoints on the POIS. 
   + For **Response Signal Preroll**, change the value as desired to set the distance (in milliseconds) between the time that the SCTE-35 message is inserted and the start time of that ad avail.

# Setting up using the REST API


This topic lists the parameters found on the Elemental Live event or profile and specifies the location of those parameters in the XML for an event or profile. This topic does not cover control of SCTE-35 message via the REST API at runtime; that information is in [SCTE-35 message insertion into currently running events](scte-35-message-insertion.md). 


**Set the Ad Avail Mode**  

| Field | XML Tag | 
| --- | --- | 
| Advanced Avail Controls > Ad Avail Trigger | ad\$1trigger | 


**Manifest Decoration**  

| Field | XML Tag | 
| --- | --- | 
| Output Group > Apple HLS > Advanced > Ad Markers | output\$1group/apple\$1live\$1group\$1settings/ad\$1markers | 
| Output Group > MS Smooth > Enable Sparse Track | output\$1group/ms\$1smooth\$1group\$1settings/enable\$1sparse\$1track | 
| Output Group > MS Smooth > Acquisition Point ID | output\$1group/ms\$1smooth\$1group\$1settings/acquisition\$1point\$1id | 
| Output Group > RTMP> Ad Markers | output\$1group/rtmp\$1group\$1settings/ad\$1markers | 


**Ad Avail Blanking and Blackout**  

| Field | XML Tag | 
| --- | --- | 
| Advanced Avail Controls > Ignore no\$1regional\$1blackout\$1flag | ignore\$1no\$1regional\$1blackout\$1flag | 
| Advanced Avail Controls > Ignore web\$1delivery\$1allowed\$1flag | ignore\$1web\$1delivery\$1allowed\$1flag | 
| Processors > Global Processors > Ad Avail Blanking > On/Off | avail\$1blanking/enabled/ | 
| Processors > Global Processors > Ad Avail Blanking > Browse | avail\$1blanking/avail\$1blanking\$1image/certificate\$1file | 
| Processors > Global Processors > Ad Avail Blanking > Browse | avail\$1blanking/avail\$1blanking\$1image/interface | 
| Processors > Global Processors > Ad Avail Blanking > Credentials icon > Password | avail\$1blanking/avail\$1blanking\$1image/password | 
| Processors > Global Processors > Ad Avail Blanking > Browse | avail\$1blanking/avail\$1blanking\$1image/uri | 
| Processors > Global Processors > Ad Avail Blanking > > Credentials icon > Username | avail\$1blanking/avail\$1blanking\$1image/username | 
| Processors > Global Processors > Blackout Image Insertion > On/Off | blackout\$1slate/enabled/ | 
| Processors > Global Processors > Blackout Image Insertion > Enable Network End Blackout > Network ID | blackout\$1slate/network\$1id | 
| Processors > Global Processors > Blackout Image Insertion > Browse | blackout\$1slate/blackout\$1slate\$1image/certificate\$1file | 
| Processors > Global Processors > Blackout Image Insertion > Browse | blackout\$1slate/blackout\$1slate\$1image/interface | 
| Processors > Global Processors > Blackout Image Insertion > Browse | blackout\$1slate/blackout\$1slate\$1image/password | 
| Processors > Global Processors > Blackout Image Insertion > Browse | blackout\$1slate/blackout\$1slate\$1image/uri | 
| Processors > Global Processors > Blackout Image Insertion > Browse | blackout\$1slate/blackout\$1slate\$1image/username | 
| Processors > Global Processors > Blackout Image Insertion > Enable Network End Blackout > Network End Blackout Image > Browse | blackout\$1slate/network\$1end\$1blackout\$1image/certificate\$1file | 
| Processors > Global Processors > Blackout Image Insertion > Enable Network End Blackout > Network End Blackout Image > Browse | blackout\$1slate/network\$1end\$1blackout\$1image/interface | 
| Processors > Global Processors > Blackout Image Insertion > Enable Network End Blackout > Network End Blackout Image > Credentials > Password | blackout\$1slate/network\$1end\$1blackout\$1image/password | 
| Processors > Global Processors > Blackout Image Insertion > Enable Network End Blackout > Network End Blackout Image > Browse | blackout\$1slate/network\$1end\$1blackout\$1image/uri | 
| Processors > Global Processors > Blackout Image Insertion > Enable Network End Blackout > Network End Blackout Image > Credentials > Username | blackout\$1slate/network\$1end\$1blackout\$1image/username | 


**Passthrough or Removal**  

| Field | XML Tag | 
| --- | --- | 
| Archive Output Group > Output > MPEG-2 TS > PID Control > SCTE-35 | output\$1group/output/scte35\$1passthrough | 
| Archive Output Group > Output > MPEG-2 TS > PID Control > SCTE-35 PID | output\$1group/output/m2ts\$1settings/scte35\$1pid | 
| Apple HLS Output Group > Output > PID Control > SCTE-35 | output\$1group/output/scte35\$1passthrough | 
| Apple HLS Output Group > Output > PID Control > SCTE-35 PID | output\$1group/output/m3u8\$1settings/scte35\$1pid | 
| UDP/TS Output Group > Output > SCTE-35 | output\$1group/output/scte35\$1passthrough | 
| UDP/TS Output Group > Output > SCTE-35 PID | output\$1group/output/ts\$1settings/scte35\$1pid | 


**POIS conditioning**  

| Field | XML Tag | 
| --- | --- | 
| Advanced Avail Controls > Ad Avail Trigger > Acquisition Point Identifier | esam/acquisition\$1point\$1id/ | 
| Advanced Avail Controls > Ad Avail Trigger > Asset URI Identifier | esam/asset\$1uri\$1id/ | 
| Advanced Avail Controls > Ad Avail Trigger > Signal Conditioner Endpoint | esam/scc\$1uri/certificate\$1file | 
| Advanced Avail Controls > Ad Avail Trigger > Signal Conditioner Endpoint | esam/scc\$1uri/interface | 
| Advanced Avail Controls > Ad Avail Trigger > Signal Conditioner Endpoint | esam/scc\$1uri/password | 
| Advanced Avail Controls > Ad Avail Trigger > Signal Conditioner Endpoint | esam/scc\$1uri/uri | 
| Advanced Avail Controls > Ad Avail Trigger > Signal Conditioner Endpoint | esam/scc\$1uri/username | 
| Advanced Avail Controls > Ad Avail Trigger > Alternate Signal Conditioner Endpoint | esam/alternate\$1scc\$1uri/certificate\$1file | 
| Advanced Avail Controls > Ad Avail Trigger > Alternate Signal Conditioner Endpoint | esam/alternate\$1scc\$1uri/interface | 
| Advanced Avail Controls > Ad Avail Trigger > Alternate Signal Conditioner Endpoint | esam/alternate\$1scc\$1uri/password | 
| Advanced Avail Controls > Ad Avail Trigger > Alternate Signal Conditioner Endpoint | esam/alternate\$1scc\$1uri/uri | 
| Advanced Avail Controls > Ad Avail Trigger > Alternate Signal Conditioner Endpoint | esam/alternate\$1scc\$1uri/username | 
| Advanced Avail Controls > Ad Avail Trigger > Manifest Conditioner Endpoint | esam/mcc\$1uri/certificate\$1file | 
| Advanced Avail Controls > Ad Avail Trigger > Manifest Conditioner Endpoint | esam/mcc\$1uri/interface | 
| Advanced Avail Controls > Ad Avail Trigger > Manifest Conditioner Endpoint | esam/mcc\$1uri/password | 
| Advanced Avail Controls > Ad Avail Trigger > Manifest Conditioner Endpoint | esam/mcc\$1uri/uri | 
| Advanced Avail Controls > Ad Avail Trigger > Manifest Conditioner Endpoint | esam/mcc\$1uri/username | 
| Advanced Avail Controls > Ad Avail Trigger > Alternate Manifest Conditioner Endpoint | esam/alternate\$1mcc\$1uri/certificate\$1file | 
| Advanced Avail Controls > Ad Avail Trigger > Alternate Manifest Conditioner Endpoint | esam/alternate\$1mcc\$1uri/interface | 
| Advanced Avail Controls > Ad Avail Trigger > Alternate Manifest Conditioner Endpoint | esam/alternate\$1mcc\$1uri/password | 
| Advanced Avail Controls > Ad Avail Trigger > Alternate Manifest Conditioner Endpoint | esam/alternate\$1mcc\$1uri/uri | 
| Advanced Avail Controls > Ad Avail Trigger > Alternate Manifest Conditioner Endpoint | esam/alternate\$1mcc\$1uri/username | 
| Advanced Avail Controls > Ad Avail Trigger > Response Signal Preroll | esam/response\$1signal\$1preroll/ | 

# Example manifests for Apple HLS


This section lists example manifests for the Apple HLS manifest styles that AWS Elemental supports. 

## Example manifest for Adobe ad marker


 This does not insert any CUE-OUT CONT (continuation tags) to indicate to a player joining mid-break that there is a current avail. This does not insert a CUE-IN tag at the end of the avail. 

**Structure**


| Segment | Tag | Tag Count | 
| --- | --- | --- | 
| Segment in which the ad avail starts. | 1 CUE: DURATION tag  | 1 | 

**Tag contents**
+ CUE:DURATION containing:
  + duration: Duration in fractional seconds.
  + id: An identifier, unique among all ad avails CUE tags.
  + type: SpliceOut
  + time: The PTS time for the ad avail, in fractional seconds.

**Example**  
The following is the tag for an ad avail lasting 414.171 PTS.   

```
#EXT-X-CUE:DURATION="201.467",ID="0",TYPE="SpliceOut",TIME="414.171"
```

## Example manifest for AWS Elemental ad marker


**Structure**


| Segment | Tag | Tag Count | 
| --- | --- | --- | 
| Segment in which the ad avail starts | CUE-OUT | 1 | 
| Each succeeding segment | CUE-OUT-CONT  | 0-n | 
| Segment in which ad avail ends | CUE-IN | 1 | 

**Tag contents**
+ CUE-OUT contains Duration.
+ CUE-OUT-CONT contains Elapsed time and Duration.
+ CUE-IN has no content.

**Example**  

```
#EXT-X-CUE-OUT:30.000 
.
.
.
# EXT-X-CUE-OUT-CONT: 8.308/30 
.
.
.
# EXT-X-CUE-OUT-CONT: 20.391/30
.
.
.
# EXT-X-CUE-IN
```

## Example manifest for SCTE-35 enhanced ad marker


**Structure**


| Segment | Tag | Tag Count | 
| --- | --- | --- | 
| Segment in which the ad avail starts | OATCLS-SCTE35  | 1 | 
| Segment in which the ad avail starts | ASSET  | 1 | 
| Segment in which the ad avail starts | CUE-OUT  | 1 | 
| Each succeeding segment | CUE-OUT-CONT  | 0-n | 
| Segment in which ad avail ends | CUE-IN | 1 | 

**Tag contents**
+ OATCLS-SCTE35 containing the base-64-encoded raw bytes of the original SCTE-35 ad avail message.
+ ASSET containing the CAID or UPID as specified in the original SCTE35 message.
+ 1 CUE-OUT per ad avail. 
+ CUE-OUT-CONT containing:
  + The elapsed time of the avail.
  + The duration declared in the original SCTE35 message. 
  + SCTE35 containing the base-64-encoded raw bytes of the original SCTE-35 ad avail message.

    These lines repeat until the ad avail ends.
+ CUE-IN to indicate the end of the avail.

**Example**  

```
#EXT-OATCLS-SCTE35:/DA0AAAAAAAAAAAABQb+ADAQ6QAeAhxDVUVJQAAAO3/PAAEUrEoICAAAAAAg+2UBNAAANvrtoQ==  
#EXT-X-ASSET:CAID=0x0000000020FB6501  
#EXT-X-CUE-OUT:201.467
.
.
.
#EXT-X-CUE-OUT-CONT:ElapsedTime=5.939,Duration=201.467,SCTE35=/DA0AAAA+…AAg+2UBNAAANvrtoQ==
.
.
.
#EXT-X-CUE-IN
```