/*! @name mpd-parser @version 0.22.1 @license Apache-2.0 */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@xmldom/xmldom")):"function"==typeof define&&define.amd?define(["exports","@xmldom/xmldom"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).mpdParser={},t.window)}(this,(function(t,e){"use strict";var n=function(t){return!!t&&"object"==typeof t},r=function t(){for(var e=arguments.length,r=new Array(e),i=0;ie.timeline?1:-1}));var e,n},T=function(t){var e,n,r=[];return e=t,n=function(t,e,n,i){r=r.concat(t.playlists||[])},I.forEach((function(t){for(var r in e.mediaGroups[t])for(var i in e.mediaGroups[t][r]){var a=e.mediaGroups[t][r][i];n(a,t,r,i)}})),r},D=function(t){var e=t.playlist,n=t.mediaSequence;e.mediaSequence=n,e.segments.forEach((function(t,n){t.number=e.mediaSequence+n}))},R=function(t){var e=t.oldManifest,n=t.newManifest,r=e.playlists.concat(T(e)),i=n.playlists.concat(T(n));return n.timelineStarts=E([e.timelineStarts,n.timelineStarts]),function(t){var e=t.oldPlaylists,n=t.newPlaylists,r=t.timelineStarts;n.forEach((function(t){t.discontinuitySequence=u(r,(function(e){return e.timeline===t.timeline}));var n=function(t,e){for(var n=0;nn.timeline||n.segments.length&&t.timeline>n.segments[n.segments.length-1].timeline)&&t.discontinuitySequence--);n.segments[a].discontinuity&&!i.discontinuity&&(i.discontinuity=!0,t.discontinuityStarts.unshift(0),t.discontinuitySequence--),D({playlist:t,mediaSequence:n.segments[a].number})}}))}({oldPlaylists:r,newPlaylists:i,timelineStarts:n.timelineStarts}),n},L=function(t){return t&&t.uri+"-"+(e=t.byterange,n="bigint"==typeof e.offset||"bigint"==typeof e.length?window.BigInt(e.offset)+window.BigInt(e.length)-window.BigInt(1):e.offset+e.length-1,e.offset+"-"+n);var e,n},P=function(t){return i(t.reduce((function(t,e){var n=e.attributes.id+(e.attributes.lang||"");if(t[n]){var r;if(e.segments)e.segments[0]&&(e.segments[0].discontinuity=!0),(r=t[n].segments).push.apply(r,e.segments);e.attributes.contentProtection&&(t[n].attributes.contentProtection=e.attributes.contentProtection)}else t[n]=e,t[n].attributes.timelineStarts=[];return t[n].attributes.timelineStarts.push({start:e.attributes.periodStart,timeline:e.attributes.periodStart}),t}),{})).map((function(t){var e,n;return t.discontinuityStarts=(e=t.segments||[],n="discontinuity",e.reduce((function(t,e,r){return e[n]&&t.push(r),t}),[])),t}))},N=function(t,e){var n=L(t.sidx),r=n&&e[n]&&e[n].sidx;return r&&U(t,r,t.sidx.resolvedUri),t},A=function(t,e){if(void 0===e&&(e={}),!Object.keys(e).length)return t;for(var n in t)t[n]=N(t[n],e);return t},O=function(t){var e,n=t.attributes,r=t.segments,i=t.sidx,a=t.discontinuityStarts,o={attributes:(e={NAME:n.id,AUDIO:"audio",SUBTITLES:"subs",RESOLUTION:{width:n.width,height:n.height},CODECS:n.codecs,BANDWIDTH:n.bandwidth},e["PROGRAM-ID"]=1,e),uri:"",endList:"static"===n.type,timeline:n.periodStart,resolvedUri:"",targetDuration:n.duration,discontinuityStarts:a,timelineStarts:n.timelineStarts,segments:r};return n.frameRate&&(o.attributes["FRAME-RATE"]=n.frameRate),n.contentProtection&&(o.contentProtection=n.contentProtection),i&&(o.sidx=i),o},x=function(t){var e=t.attributes;return"video/mp4"===e.mimeType||"video/webm"===e.mimeType||"video"===e.contentType},M=function(t){var e=t.attributes;return"audio/mp4"===e.mimeType||"audio/webm"===e.mimeType||"audio"===e.contentType},B=function(t){var e=t.attributes;return"text/vtt"===e.mimeType||"text"===e.contentType},q=function(t){return t?Object.keys(t).reduce((function(e,n){var r=t[n];return e.concat(r.playlists)}),[]):[]},C=function(t){var e,n=t.dashPlaylists,r=t.locations,i=t.sidxMapping,a=void 0===i?{}:i,o=t.previousManifest;if(!n.length)return{};var s=n[0].attributes,c=s.sourceDuration,d=s.type,l=s.suggestedPresentationDelay,m=s.minimumUpdatePeriod,f=P(n.filter(x)).map(O),p=P(n.filter(M)),g=P(n.filter(B)),h=n.map((function(t){return t.attributes.captionServices})).filter(Boolean),v={allowCache:!0,discontinuityStarts:[],segments:[],endList:!0,mediaGroups:(e={AUDIO:{},VIDEO:{}},e["CLOSED-CAPTIONS"]={},e.SUBTITLES={},e),uri:"",duration:c,playlists:A(f,a)};m>=0&&(v.minimumUpdatePeriod=1e3*m),r&&(v.locations=r),"dynamic"===d&&(v.suggestedPresentationDelay=l);var b,y,S=0===v.playlists.length,w=p.length?function(t,e,n){var r;void 0===e&&(e={}),void 0===n&&(n=!1);var i=t.reduce((function(t,i){var a=i.attributes.role&&i.attributes.role.value||"",o=i.attributes.lang||"",u=i.attributes.label||"main";if(o&&!i.attributes.label){var s=a?" ("+a+")":"";u=""+i.attributes.lang+s}t[u]||(t[u]={language:o,autoselect:!0,default:"main"===a,playlists:[],uri:""});var c=N(function(t,e){var n,r=t.attributes,i=t.segments,a=t.sidx,o=t.mediaSequence,u=t.discontinuitySequence,s=t.discontinuityStarts,c={attributes:(n={NAME:r.id,BANDWIDTH:r.bandwidth,CODECS:r.codecs},n["PROGRAM-ID"]=1,n),uri:"",endList:"static"===r.type,timeline:r.periodStart,resolvedUri:"",targetDuration:r.duration,discontinuitySequence:u,discontinuityStarts:s,timelineStarts:r.timelineStarts,mediaSequence:o,segments:i};return r.contentProtection&&(c.contentProtection=r.contentProtection),a&&(c.sidx=a),e&&(c.attributes.AUDIO="audio",c.attributes.SUBTITLES="subs"),c}(i,n),e);return t[u].playlists.push(c),void 0===r&&"main"===a&&((r=i).default=!0),t}),{});return r||(i[Object.keys(i)[0]].default=!0),i}(p,a,S):null,U=g.length?function(t,e){return void 0===e&&(e={}),t.reduce((function(t,n){var r=n.attributes.lang||"text";return t[r]||(t[r]={language:r,default:!1,autoselect:!1,playlists:[],uri:""}),t[r].playlists.push(N(function(t){var e,n=t.attributes,r=t.segments,i=t.mediaSequence,a=t.discontinuityStarts,o=t.discontinuitySequence;void 0===r&&(r=[{uri:n.baseUrl,timeline:n.periodStart,resolvedUri:n.baseUrl||"",duration:n.sourceDuration,number:0}],n.duration=n.sourceDuration);var u=((e={NAME:n.id,BANDWIDTH:n.bandwidth})["PROGRAM-ID"]=1,e);return n.codecs&&(u.CODECS=n.codecs),{attributes:u,uri:"",endList:"static"===n.type,timeline:n.periodStart,resolvedUri:n.baseUrl||"",targetDuration:n.duration,timelineStarts:n.timelineStarts,discontinuityStarts:a,discontinuitySequence:o,mediaSequence:i,segments:r}}(n),e)),t}),{})}(g,a):null,I=f.concat(q(w),q(U)),T=I.map((function(t){return t.timelineStarts}));return v.timelineStarts=E(T),b=I,y=v.timelineStarts,b.forEach((function(t){t.mediaSequence=0,t.discontinuitySequence=u(y,(function(e){return e.timeline===t.timeline})),t.segments&&t.segments.forEach((function(t,e){t.number=e}))})),w&&(v.mediaGroups.AUDIO.audio=w),U&&(v.mediaGroups.SUBTITLES.subs=U),h.length&&(v.mediaGroups["CLOSED-CAPTIONS"].cc=h.reduce((function(t,e){return e?(e.forEach((function(e){var n=e.channel,r=e.language;t[r]={autoselect:!1,default:!1,instreamId:n,language:r},e.hasOwnProperty("aspectRatio")&&(t[r].aspectRatio=e.aspectRatio),e.hasOwnProperty("easyReader")&&(t[r].easyReader=e.easyReader),e.hasOwnProperty("3D")&&(t[r]["3D"]=e["3D"])})),t):t}),{})),o?R({oldManifest:o,newManifest:v}):v},z=function(t,e,n){var r=t.NOW,i=t.clientOffset,a=t.availabilityStartTime,o=t.timescale,u=void 0===o?1:o,s=t.periodStart,c=void 0===s?0:s,d=t.minimumUpdatePeriod,l=(r+i)/1e3+(void 0===d?0:d)-(a+c);return Math.ceil((l*u-e)/n)},_=function(t,e){for(var n=t.type,r=t.minimumUpdatePeriod,i=void 0===r?0:r,a=t.media,o=void 0===a?"":a,u=t.sourceDuration,s=t.timescale,c=void 0===s?1:s,d=t.startNumber,l=void 0===d?1:d,m=t.periodStart,f=[],p=-1,g=0;gp&&(p=y);var S=void 0;if(b<0){var w=g+1;S=w===e.length?"dynamic"===n&&i>0&&o.indexOf("$Number$")>0?z(t,p,v):(u*c-p)/v:(e[w].t-p)/v}else S=b+1;for(var U=l+f.length+S,I=l+f.length;I=i?a:""+new Array(i-a.length+1).join("0")+a)}}(e))},j=function(t,e){var n={RepresentationID:t.id,Bandwidth:t.bandwidth||0},r=t.initialization,i=void 0===r?{sourceURL:"",range:""}:r,a=v({baseUrl:t.baseUrl,source:G(i.sourceURL,n),range:i.range}),o=function(t,e){return t.duration||e?t.duration?S(t):_(t,e):[{number:t.startNumber||1,duration:t.sourceDuration,time:0,timeline:t.periodStart}]}(t,e);return o.map((function(e){n.Number=e.number,n.Time=e.time;var r=G(t.media||"",n),i=t.timescale||1,o=t.presentationTimeOffset||0,u=t.periodStart+(e.time-o)/i;return{uri:r,timeline:e.timeline,duration:e.duration,resolvedUri:h(t.baseUrl||"",r),map:a,number:e.number,presentationTime:u}}))},k=function(t,e){var n=t.duration,r=t.segmentUrls,i=void 0===r?[]:r,a=t.periodStart;if(!n&&!e||n&&e)throw new Error(m);var o,u=i.map((function(e){return function(t,e){var n=t.baseUrl,r=t.initialization,i=void 0===r?{}:r,a=v({baseUrl:n,source:i.sourceURL,range:i.range}),o=v({baseUrl:n,source:e.media,range:e.mediaRange});return o.map=a,o}(t,e)}));return n&&(o=S(t)),e&&(o=_(t,e)),o.map((function(e,n){if(u[n]){var r=u[n],i=t.timescale||1,o=t.presentationTimeOffset||0;return r.timeline=e.timeline,r.duration=e.duration,r.number=e.number,r.presentationTime=a+(e.time-o)/i,r}})).filter((function(t){return t}))},$=function(t){var e,n,i=t.attributes,a=t.segmentInfo;a.template?(n=j,e=r(i,a.template)):a.base?(n=w,e=r(i,a.base)):a.list&&(n=k,e=r(i,a.list));var o={attributes:i};if(!n)return o;var u=n(e,a.segmentTimeline);if(e.duration){var s=e,c=s.duration,d=s.timescale,l=void 0===d?1:d;e.duration=c/l}else u.length?e.duration=u.reduce((function(t,e){return Math.max(t,Math.ceil(e.duration))}),0):e.duration=0;return o.attributes=e,o.segments=u,a.base&&e.indexRange&&(o.sidx=u[0],o.segments=[]),o},H=function(t){return t.map($)},W=function(t,e){return o(t.childNodes).filter((function(t){return t.tagName===e}))},V=function(t){return t.textContent.trim()},X=function(t){var e=/P(?:(\d*)Y)?(?:(\d*)M)?(?:(\d*)D)?(?:T(?:(\d*)H)?(?:(\d*)M)?(?:([\d.]*)S)?)?/.exec(t);if(!e)return 0;var n=e.slice(1),r=n[0],i=n[1],a=n[2],o=n[3],u=n[4],s=n[5];return 31536e3*parseFloat(r||0)+2592e3*parseFloat(i||0)+86400*parseFloat(a||0)+3600*parseFloat(o||0)+60*parseFloat(u||0)+parseFloat(s||0)},Y={mediaPresentationDuration:function(t){return X(t)},availabilityStartTime:function(t){return/^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test(e=t)&&(e+="Z"),Date.parse(e)/1e3;var e},minimumUpdatePeriod:function(t){return X(t)},suggestedPresentationDelay:function(t){return X(t)},type:function(t){return t},timeShiftBufferDepth:function(t){return X(t)},start:function(t){return X(t)},width:function(t){return parseInt(t,10)},height:function(t){return parseInt(t,10)},bandwidth:function(t){return parseInt(t,10)},frameRate:function(t){return function(t){return parseFloat(t.split("/").reduce((function(t,e){return t/e})))}(t)},startNumber:function(t){return parseInt(t,10)},timescale:function(t){return parseInt(t,10)},presentationTimeOffset:function(t){return parseInt(t,10)},duration:function(t){var e=parseInt(t,10);return isNaN(e)?X(t):e},d:function(t){return parseInt(t,10)},t:function(t){return parseInt(t,10)},r:function(t){return parseInt(t,10)},DEFAULT:function(t){return t}},Z=function(t){return t&&t.attributes?o(t.attributes).reduce((function(t,e){var n=Y[e.name]||Y.DEFAULT;return t[e.name]=n(e.value),t}),{}):{}};function K(t){for(var e,n=(e=t,window.atob?window.atob(e):Buffer.from(e,"base64").toString("binary")),r=new Uint8Array(n.length),i=0;i0)throw new Error(d);return r};t.VERSION="0.22.1",t.addSidxSegmentsToPlaylist=U,t.generateSidxKey=L,t.inheritAttributes=rt,t.parse=function(t,e){void 0===e&&(e={});var n=rt(it(t),e),r=H(n.representationInfo);return C({dashPlaylists:r,locations:n.locations,sidxMapping:e.sidxMapping,previousManifest:e.previousManifest})},t.parseUTCTiming=function(t){return function(t){var e=W(t,"UTCTiming")[0];if(!e)return null;var n=Z(e);switch(n.schemeIdUri){case"urn:mpeg:dash:utc:http-head:2014":case"urn:mpeg:dash:utc:http-head:2012":n.method="HEAD";break;case"urn:mpeg:dash:utc:http-xsdate:2014":case"urn:mpeg:dash:utc:http-iso:2014":case"urn:mpeg:dash:utc:http-xsdate:2012":case"urn:mpeg:dash:utc:http-iso:2012":n.method="GET";break;case"urn:mpeg:dash:utc:direct:2014":case"urn:mpeg:dash:utc:direct:2012":n.method="DIRECT",n.value=Date.parse(n.value);break;default:throw new Error(f)}return n}(it(t))},t.stringToMpdXml=it,t.toM3u8=C,t.toPlaylists=H,Object.defineProperty(t,"__esModule",{value:!0})}));