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.