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.

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.