ESAM request and response example

ESAM request and response example

Upon reception of SCTE-35 trigger, the packager will send an ESAM request to Prisma for retrieving manifest conditioning info. The ESAM endpoint configured at the packager level shall respect the following syntax:

http://[prisma.controller.ip]:[prisma.controller.port]/api/esam/manifestConditionings/[service_name]

Example:

http://10.65.176.108:8080/api/esam/manifestConditionings/CBS

A request example is given below, with the SCTE-35 splice_info section conveyed as binary data encoded in base64:

ESAM Request (Packager -> Prisma)

<ManifestConfirmConditionEvent
    xmlns="http://www.cablelabs.com/namespaces/metadata/xsd/confirmation/2"
    xmlns:sig="http://www.cablelabs.com/namespaces/metadata/xsd/signaling/2">
    <AcquiredSignal acquisitionPointIdentity="Service1" acquisitionSignalID="925a5ae0-3789-4bc1-935b-2c266bd3d187">
        <sig:UTCPoint utcPoint="2016-03-31T15:24:37.830Z"/>
        <sig:BinaryData signalType="SCTE35">/DAlAAAAAAAAAP/wFQUAAATSf+/+A9jQnv4AKTLgHmEDAAAAAAAAAA==</sig:BinaryData>
        <sig:StreamTimes>
            <sig:StreamTime timeType="HLS" timeValue="2490455040"/>
            <sig:StreamTime timeType="HSS" timeValue="2490455041"/>
            <sig:StreamTime timeType="DASH" timeValue="2490455042"/>
        </sig:StreamTimes>
    </AcquiredSignal>
</ManifestConfirmConditionEvent>
 

Prisma will be able to leverage all the fields from the request, as well as decode the splice_info section to retrieve all SCTE-35 attributes such as splice command type (splice_insert, time_signal etc.), segmentation descriptors etc. In this example, conditioning information is expected for all three formats: DASH, HLS and HSS.

ESAM Response (Prisma -> Packager)

<ManifestConfirmConditionNotification>
    <ManifestResponse acquisitionPointIdentity="Service1" acquisitionSignalID="925a5ae0-3789-4bc1-935b-2c266bd3d187" 
    signalPointID="" duration="PT30S" dataPassThrough="false">
        <SegmentModify>
            <FirstSegment>
                <Tag locality="before" value="#EXT-X-CUE-OUT:ID=1234,UNIQUEPROGRAMID=7777,AVAILNUM=3,DURATION=PT30S"/>
            </FirstSegment>
            <SpanSegment>
                <Tag adapt="true" value="#EXT-X-CUE-SPAN:ID=1234,UNIQUEPROGRAMID=7777,AVAILNUM=3,TIMEFROMSIGNAL=${
                timeFromSignal},DURATION=PT30S"/>
            </SpanSegment>
            <LastSegment>
                <Tag adapt="true" value="#EXT-X-CUE-SPAN:ID=1234,UNIQUEPROGRAMID=7777,AVAILNUM=3,TIMEFROMSIGNAL=${
                timeFromSignal},DURATION=PT30S"/>
                <Tag locality="after" value="#EXT-X-CUE-IN:ID=1234,UNIQUEPROGRAMID=7777,AVAILNUM=3,DURATION=PT30S"/>
            </LastSegment>
        </SegmentModify>
    </ManifestResponse>
    <ManifestResponse acquisitionPointIdentity="Service1" acquisitionSignalID="925a5ae0-3789-4bc1-935b-2c266bd3d187" 
    signalPointID="" duration="PT30S" dataPassThrough="false">
        <SparseTrack trackName="admarker">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+PFNpZ25hbEdyb3VwPjxTaW
        duYWxQb2ludCBzaWduYWxQb2ludElkPSIiPjxTQ1RFMzVQb2ludERlc2NyaXB0b3IgYnJlYWtEdXJhdGlvbj0iUFQzMFMiIHNjdGUz
        NVBvaW50PSIyNDkwNDU1MDQxIj48U3BsaWNlSW5mbyBzcGxpY2VDb21tYW5kVHlwZT0iNSI+PFNwbGljZUluc2VydEluZm8gc3Bsa
        WNlRXZlbnRJZD0iMTIzNCIgb3V0T2ZOZXR3b3JrSW5kaWNhdG9yPSIxIiB1bmlxdWVQcm9ncmFtSWQ9Ijc3NzciIGF2YWlsTnVtPSI
        zIiBkdXJhdGlvbj0iUFQzMFMiLz48L1NwbGljZUluZm8+PC9TQ1RFMzVQb2ludERlc2NyaXB0b3I+PC9TaWduYWxQb2ludD48L1NpZ
        25hbEdyb3VwPg==</SparseTrack>
    </ManifestResponse>
    <ManifestResponse acquisitionPointIdentity="Service1" acquisitionSignalID="925a5ae0-3789-4bc1-935b-
    2c266bd3d187" signalPointID="" duration="PT30S" dataPassThrough="false">PD94bWwgdmVyc2lvbj0iMS4wIi
    BlbmNvZGluZz0idXRmLTgiID8+PFNpZ25hbD48U3BsaWNlSW5mb1NlY3Rpb24gc2N0ZTM1UG9pbnQ9IjI0OTA0NTUwNDIiPjx
    TcGxpY2VJbnNlcnQgc3BsaWNlRXZlbnRJZD0iMTIzNCIgb3V0T2ZOZXR3b3JrSW5kaWNhdG9yPSIxIiB1bmlxdWVQcm9ncmFt
    SWQ9Ijc3NzciIGF2YWlsTnVtPSIzIj48QnJlYWtEdXJhdGlvbiBkdXJhdGlvbj0iUFQzMFMiLz48L1NwbGljZUluc2VydD48
    L1NwbGljZUluZm9TZWN0aW9uPjwvU2lnbmFsPg==</ManifestResponse>
</ManifestConfirmConditionNotification>
 

As illustrated above, the response given by Prisma provides conditioning information for HLS, DASH and HSS. The packager will then decorate the manifest with the given information.

Note: Prisma allows support for multiple segmentation descriptors. Each segmentation descriptor must be identified as an event, and related conditioning properly configured. This means when a packager conveys a SCTE-35 with multiple segmentation descriptors, assuming two descriptors match, two distinct responses will be sent back to the packager.