Service configuration

Configure manifest conditioning

The following steps are required to configure Prisma for Manifest Conditioning:

  1. Input configuration: ESAM and streaming protocol settings. Depending on chosen protocols (DASH, HLS and HSS), manifest conditioning tab will dynamically appear.
  2. Event identification configuration: in this section, we configure the type of SCTE-35 to be filtered. SCTE-35 can be used to characterize placement opportunity in different ways: provider ad break start/end, distributor ad break start/end, program start/end etc. depending on the nature of the placement opportunity, the conditioning information will be managed differently.
  3. HLS/DASH/HSS conditioning configuration: based on input configuration, dedicated tab will appear, enabling manifest conditioning configuration for each and every event identification configured in previous section.

Prior to configuring all the above, you need to add a Manifest Conditioning service:

  1. Click Add service then select the Manifest Conditioning processing type.

  2. Give a distinct name to this service.

Configure input

Once a Manifest Conditioning service is created, the Input tab must be configured first.

ParameterDescription
VersionSelect 2013 or 2016 depending on the ESAM version supported. Auto allows Prisma to automatically detect the version from the request sent by the packager.
Note: For sake of consistency, we recommend setting either 2013 or 2016.
PluginSelect the manifest conditioning plugin to use.
- The Plugin section is only displayed if several plugins have been loaded, else default MediaKind plugin is used.
- Plugins are available from the Settings menu (see Manage Manifest Conditioning plugins).
Streaming protocolConfigure the way manifest will be conditioned on a per streaming formats basis.
Possible values: HLS (HTTP Live Streaming), DASH (MPEG-DASH), HSS (Smooth streaming). See HLS/DASH/HSS conditioning for more details.

Input tab configuration example with 3 streaming protocols selected Input tab configuration example with 3 streaming protocols selected

Configure event identification

Once the Input is configured properly, events to identify must be configured.

In case multiple segmentation descriptors (per time signal) are to be supported, one event identification shall be configured per segmentation descriptor.

Upon SCTE-35 detection, a packager will establish a communication with Prisma using ESAM (see request example earlier).

The SCTE-35 conveyed via ESAM may describe different types of placement opportunity, like for instance

  • Ad break start/end
  • Program start/end
  • Etc.

Resulting manifest conditioning must then be adapted based on the type of event, hence this event identification step.

  1. From the Event identification tab, click Add identification event.

    A pop window appears, providing option for pre-defined SCTE-35 event identification (template).

  2. Select a value (None value allows configuring filtering rules without any pre-configured value).

  3. Click Ok to validate.

    Once selected, a configuration panel allows configuring the event one wants to filter out.

  4. Configure filters: filters can be configured with logical expressions (AND/OR), leveraging any information from the ESAM request, including the SCTE-35 (interpreted by PRISMA so that any attribute can be used as filter attribute).

    Event identification: filtering rules Event identification: filtering rules

If the filtering rules are related to segmentation descriptors, it returns one response per descriptor. Otherwise, there will be one response only, even if several descriptors are present.

Once the events are configured, conditioning on a per streaming formats basis must be configured.

Manage variables

Prisma comes with a pre-configured set of variables that you can use to manage event filtering, as well as conditioning for HLS, DASH and HSS.

Display variables

To see the list of variables, follow these steps:

  1. Click the Variables tab.

    Predefined variables are displayed:

    Manifest Conditioning variables Manifest Conditioning variables

It is not possible to list all the possible variables. It is especially true when extracting a given value from an SCTE-35 segmentation descriptors: assuming that an SCTE-35 submitted by a packager contains multiple segmentation descriptors, you may want to use in your HLS or DASH conditioning the segmentation duration corresponding to the segmentation descriptor which type ID equals 0x10 (program start), and not the one corresponding to type ID = 0x01 (content identification).

  1. You can create a custom variable.

Create a variable

To extract a well-defined value (such as the segmentation duration of the segmentation descriptor which type ID = program start), you need to create a variable.

To create a variable, proceed as follows:

  1. Click the Add button located at the bottom left of the variables table.

  2. Enter and/or select the appropriate value for each parameter.

  3. Configure a Name for your newly created variable.

  4. Enter a Description providing information about the variable.

  5. Configure the Path: click to select the variable you want to extract:

    1. Under XPath, navigate in the SCTE-35 as follows: AcquiredSignal > SCTE35PointDescriptor > SegmentationDescriptor, and click on the [i] located at the same level as segmentationDescriptor

    2. Select segmentationTypeId and associate the value 16 (decimal, which equals 0x10 for program start per SCTE-35 standard).

    3. Click to validate.

    4. Select segmentationDuration.

    5. Leave Method set to None.

    6. Click Ok to validate.

    The path to retrieve the desired value is now configured. You need to finalize the configuration.

  6. Enter and/or select the appropriate value for each parameter:

    ParameterDescription
    TypeAssociate the most appropriate type for this value, here Number.
    GroupSCTE-35 variables are grouped following a certain order. Here, SegmentationDescriptor is appropriate so we can quickly locate our new variable when using it by looking at the SegmentationDescriptor section in the drop-down list
    Event filterShall be enabled in case the variable must be used for event identification.
    ResponseShall be enabled in case the variable must be used for conditioning.

You can now use this variable for instance in the conditioning process as shown below, by associating a given key (here DURATION) with the value corresponding to the newly created variable:

HLS/DASH/HSS conditioning

Once the different events to identify are configured, you can configure the way manifest will be conditioned on a per streaming formats basis.

The conditioning processing is summarized in the table below.

ParameterDescription
HLSConfigurable tags identifying the first, intermediate and last chunk of the event. Those are usually tags such as.
Default tags used as part of PRISMA are: #EXT-X-CUE-OUT; #EXT-X-CUE-IN and #EXT-X-CUE-SPAN.
However, those tags are fully configure-able when using the “expert” mode, enabling any type of tags like: #EXT-X-SCTE35-OUT, or Apple defined tags such as EXT-X-DATERANGE to give an example.
For each of those tags, the user will be able to attach a list of attribute and value to enrich the placement opportunity signaling like the ID of the splice, the duration, elapsed time since the break started etc.
DASHThe conditioning information sent by Prisma is conveyed within an <EventStream> element. The value is configure-able (plain text, SCTE-35 XML encoded in base64 URL etc.)
HSSConditioning information sent by Prisma is embedded within a sparse track, as plain text, XML SCTE-35 in base64 URL, binary etc.)

HLS Manifest Conditioning

Follow these steps:

  1. Go to the HLS Conditioning tab.

  2. In the drop-down list, select the Event you want to see conditioning.

    In the example below, we have two different events:

    • one identifying a program start,
    • another one identifying an ad break.

    Needless to mention the conditioning information will be different for those two use cases.

  3. Once selected, you can select a Template that provides the flexibility to pre-configure your conditioning, which you can override as desired.

An Enable expert mode check box is available if you are comfortable enough with ESAM standard and conditioning process (XML-based configuration).

  1. Select the Splice Insert Out with segmentation descriptor template.

  2. Click Ok to validate. The HLS manifest conditioning configuration comes with a pre-defined set of tags in this case.

  3. To modify the attribute and value of any tag, click on the attribute, ID for instance: you can modify the attribute name or modify the associated value from a drop-down list as shown below.

    you can select a value from a list of predefined values, which meaning is described in the Variables tab.

Most of these field are derived from the SCTE-35 received as binary from the packager ESAM request. Additional fields such as acquisitionPointIdentify are ESAM defined attribute from the request.

  1. Validate the changes or add new conditions.

    A preview of the ESAM response from Prisma back to the packager is given underneath the manifest conditioning configuration:

This ESAM preview cannot be modified, in particular the tags used which in this case are hardcoded with the following values: #EXT-X-CUE-OUT, #EXT-X-CUE-IN, #EXT-X-CUE-SPAN.

  1. For a full control over the ESAM preview, you need to tick the Enable expert mode when adding conditioning for HLS. In this case, pre-defined tags are not defined, instead, you can modify everything within the ESAM preview window.

    Change the tag naming: In our example, we replaced #EXT-X-CUE-OUT with #EXT-X-AD-BREAK-OUT. You can also modify corresponding attribute and erase the value.

When erasing the value, if you start typing a letter, a drop-down list with a list of possible values will automatically appear.

DASH Manifest Conditioning

The same principles apply for DASH conditioning configuration.

  1. Go to the Dash Conditioning tab.

  2. Click Add conditioning.

  3. Configure the conditioning as shown below (use of Ad Break Start Detection event configured previously, with Splice Insert Out with segmentation descriptor template).

  4. Click Ok to validate.

    The following conditioning information is displayed:

    The following conditioning information is given for configuration:

    • Splice insert attributes: similar to HLS, user can define the attribute and the value from a drop-down list and see the result within the ESAM preview.
    • Segmentation descriptor attributes: segmentation descriptors from the SCTE-35 can be added in this section, and the result reflected within the ESAM preview.

By default, DASH conditioning will generate an XML structure from the SCTE-35 and encode it in base64 URL (see Stream Conditioning for Manifest samples). This encoded is indicated as part of the ESAM response using the <Base64Encoding> command attribute.

  1. You can completely customize the conditioning using the Expert mode. When adding conditioning in expert mode, the following will be displayed:

In this example, the <Base64Encoding> tag has been removed, which will result in XML being transmitted as part of the DASH manifest. XML is not mandatory, you can configure plain text, and associate a value.