@castlabs/prestoplay 6.9.0 → 6.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/cjs/cl.adobe.js +3 -3
  3. package/cjs/cl.airplay.js +3 -3
  4. package/cjs/cl.broadpeak.js +6 -6
  5. package/cjs/cl.cast.js +112 -111
  6. package/cjs/cl.conviva.js +33 -33
  7. package/cjs/cl.core.js +467 -432
  8. package/cjs/cl.crypto.js +9 -9
  9. package/cjs/cl.dash.js +72 -72
  10. package/cjs/cl.externs.js +143 -45
  11. package/cjs/cl.freewheel.js +24 -24
  12. package/cjs/cl.hls.js +78 -73
  13. package/cjs/cl.hlssmpte.js +6 -6
  14. package/cjs/cl.htmlcue.js +29 -31
  15. package/cjs/cl.ima.js +24 -24
  16. package/cjs/cl.mse.js +276 -275
  17. package/cjs/cl.muxdata.js +14 -15
  18. package/cjs/cl.onboard.js +3 -3
  19. package/cjs/cl.persistent.js +14 -14
  20. package/cjs/cl.playlist.js +6 -6
  21. package/cjs/cl.smooth.js +71 -71
  22. package/cjs/cl.thumbnails.js +24 -24
  23. package/cjs/cl.tizen.js +71 -71
  24. package/cjs/cl.ttml.js +29 -27
  25. package/cjs/cl.verimatrix.js +5 -5
  26. package/cjs/cl.vimond.js +13 -13
  27. package/cjs/cl.vr.js +19 -19
  28. package/cjs/cl.vtt.js +14 -14
  29. package/cjs/cl.youbora.js +20 -20
  30. package/cl.adobe.js +3 -3
  31. package/cl.airplay.js +3 -3
  32. package/cl.broadpeak.js +5 -5
  33. package/cl.cast.js +88 -88
  34. package/cl.conviva.js +27 -27
  35. package/cl.core.js +396 -365
  36. package/cl.crypto.js +9 -9
  37. package/cl.dash.js +68 -67
  38. package/cl.externs.js +139 -45
  39. package/cl.freewheel.js +19 -19
  40. package/cl.hls.js +64 -61
  41. package/cl.hlssmpte.js +5 -5
  42. package/cl.htmlcue.js +26 -25
  43. package/cl.ima.js +17 -17
  44. package/cl.mse.js +240 -242
  45. package/cl.muxdata.js +12 -12
  46. package/cl.onboard.js +4 -4
  47. package/cl.persistent.js +11 -11
  48. package/cl.playlist.js +5 -5
  49. package/cl.smooth.js +59 -58
  50. package/cl.thumbnails.js +17 -17
  51. package/cl.tizen.js +57 -57
  52. package/cl.ttml.js +22 -22
  53. package/cl.verimatrix.js +4 -4
  54. package/cl.vimond.js +8 -8
  55. package/cl.vr.js +14 -14
  56. package/cl.vtt.js +12 -12
  57. package/cl.youbora.js +15 -15
  58. package/clpp.styles.css +15 -0
  59. package/package.json +1 -1
  60. package/typings.d.ts +249 -21
package/cl.vtt.js CHANGED
@@ -1,12 +1,12 @@
1
- import {clpp} from "./cl.core.js";let g={};const _ = clpp._;var f=function(window){'use strict';var iq=" The setting will be ignored.",jq="VTT parser encountered an invalid VTT setting: ",kq="application/x-subrip",lq="text/srt",mq='text/vtt; codecs\x3d"vtt"',nq='text/vtt; codecs\x3d"wvtt"',oq=function(a){return a.a==a.f.length?null:(a=_.ah(a,/[^ \t\n]*/gm))?a[0]:null},pq=function(a){_.ah(a,/[ \t]+/gm)},qq=function(a){let b="";for(a=a.split(/\n/);3<a.length;){for(var c=3;c<a.length;++c)a[2]+=`\n${a[c]}`;a.splice(3,a.length-3)}if(3!==a.length)return"";c=0;!a[0].match(/\d+:\d+:\d+/)&&
2
- a[1].match(/\d+:\d+:\d+/)&&(b+=`${a[0].match(/\w+/)}\n`,++c);if(a[c].match(/\d+:\d+:\d+/)){const d=a[1].match(/(\d+):(\d+):(\d+)(?:,(\d+))?\s*--?>\s*(\d+):(\d+):(\d+)(?:,(\d+))?/);if(d)b+=`${d[1]}:${d[2]}:${d[3]}.${d[4]} --> `,b+=`${d[5]}:${d[6]}:${d[7]}.${d[8]}\n`,++c;else return""}else return"";a[c]&&(b+=`${a[c]}\n\n`);return b},rq=function(a){a=_.ah(a,/(?:(\d{1,}):)?(\d{2}):(\d{2})\.(\d{2,3})/g);if(null==a)return null;const b=Number(a[2]),c=Number(a[3]);return 59<b||59<c?null:Number(a[4])/1E3+
3
- c+60*b+3600*(Number(a[1])||0)},tq=function(a,b,c){let d;if(d=/^align:(start|middle|center|end|left|right)$/.exec(b))b=d[1],"middle"==b?a.textAlign=_.mo:a.textAlign=_.so[b.toUpperCase()];else if(d=/^vertical:(lr|rl)$/.exec(b))a.writingMode="lr"==d[1]?_.Ee:_.Fe;else if(d=/^size:([\d.]+)%$/.exec(b))a.size=Number(d[1]);else if(d=/^position:([\d.]+)%(?:,(line-left|line-right|center|start|end))?$/.exec(b))a.position=Number(d[1]),d[2]&&(b=d[2],a.positionAlign=b==_.ld||b==_.ie?_.ld:b==_.md||b==_.Wc?_.md:
4
- _.sc);else if(d=/^region:(.*)$/.exec(b)){if(b=sq(c,d[1]))a.region=b}else{a:{if(c=/^line:([\d.]+)%(?:,(start|end|center))?$/.exec(b))a.lineInterpretation=1,a.line=Number(c[1]),c[2]&&(a.lineAlign=_.to[c[2].toUpperCase()]);else if(c=/^line:(-?\d+)(?:,(start|end|center))?$/.exec(b))a.lineInterpretation=_.oo,a.line=Number(c[1]),c[2]&&(a.lineAlign=_.to[c[2].toUpperCase()]);else{a=!1;break a}a=!0}return a}return!0},sq=function(a,b){a=a.filter(c=>c.id==b);return a.length?a[0]:(_.D("VTT parser could not find a region with id: ",
5
- b," The region will be ignored."),null)},vq=function(a,b,c){let d,e,f;(new _.Lj).L("payl",_.Gj(g=>{d=_.Eg(g)})).L("iden",_.Gj(g=>{e=_.Eg(g)})).L("sttg",_.Gj(g=>{f=_.Eg(g)})).parse(a);return d?uq(d,e,f,b,c):null},uq=function(a,b,c,d,e){a=new _.ro(d,e,a);b&&(a.id=b);if(c)for(b=new _.bh(c),c=oq(b);c;)tq(a,c,[])||_.D(jq,c,iq),pq(b),c=oq(b);return a},wq=class{a(a){a=_.Eg(a);a=a.replace(/\r+/g,"");a=a.replace(/^\s+|\s+$/g,"");a=a.replace(/<[a-zA-Z\\/][^>]*>/g,"");a=a.split("\n\n");let b="";if(0<a.length){b+=
6
- "WEBVTT\n\n";for(const c of a)b+=qq(c)}return _.Ig(b)}},xq=class{create(){return new wq}probe(a,b){return(a===lq||a===kq)&&b===_.se}};var yq=class{constructor(a){this.a=a}parseInit(){}parseMedia(a,b){a=_.Eg(a);a=a.replace(/\r\n|\r(?=[^\n]|$)/gm,"\n");var c=a.split(/\n{2,}/m);if(!/^WEBVTT($|[ \t\n])/m.test(c[0]))throw new _.H(_.G,2,2E3);a=b.periodStart;if(c[0].includes("X-TIMESTAMP-MAP")){var d=c[0].match(/LOCAL:((?:(\d{1,}):)?(\d{2}):(\d{2})\.(\d{3}))/m),e=c[0].match(/MPEGTS:(\d+)/m);if(d&&e){a=rq(new _.bh(d[1]));if(null==a)throw new _.H(_.G,2,2E3);e=Number(e[1]);for(d=b.segmentStart;95443.7176888889<=d;)d-=95443.7176888889,e+=
7
- 8589934592;a=b.periodStart+e/9E4-a}}else this.a.streaming.relativeTextTimestamp&&null!==b.segmentStart&&(a=b.segmentStart);b=[];for(var f of c)if(/^region/.test(f.toLowerCase())){e=new _.bh(f.replace(/\n/g," "));d=new _.wo;oq(e);pq(e);for(var g=oq(e);g;){a:{var h;var k=d;var l=g;if(h=/^id:(.*)$/.exec(l))k.id=h[1];else if(h=/^width:(\d{1,2}|100)%$/.exec(l))k.width=Number(h[1]);else if(h=/^lines:(\d+)$/.exec(l))k.height=Number(h[1]),k.heightUnits=2;else if(h=/^regionanchor:(\d{1,2}|100)%,(\d{1,2}|100)%$/.exec(l))k.regionAnchorX=
8
- Number(h[1]),k.regionAnchorY=Number(h[2]);else if(h=/^viewportanchor:(\d{1,2}|100)%,(\d{1,2}|100)%$/.exec(l))k.viewportAnchorX=Number(h[1]),k.viewportAnchorY=Number(h[2]);else if(/^scroll:up$/.exec(l))k.scroll="up";else{k=!1;break a}k=!0}k||_.D("VTT parser encountered an invalid VTTRegion setting: ",g,iq);pq(e);g=oq(e)}e=d;b.push(e)}f=[];for(var m of c)if(/^style/.test(m.toLowerCase())){e=m.replace(/^style/i,"").replace(/\n/g," ");d=/[^{}]+{[^{}]*}/g;do(g=d.exec(e))&&f.push(g[0]);while(g)}m=[];for(const n of c)if(n.includes("--\x3e")){a:{l=
9
- n.split("\n");h=a;c=b;if(1==l.length&&!l[0]||/^NOTE($|[ \t])/.test(l[0])||"STYLE"==l[0]){c=null;break a}e=null;l[0].includes("--\x3e")||(e=l[0],l.splice(0,1));d=new _.bh(l[0]);g=rq(d);const q=_.ah(d,/[ \t]+--\x3e[ \t]+/g);k=rq(d);if(null==g||null==q||null==k)throw new _.H(_.G,2,2001);g+=h;k+=h;l=l.slice(1).join("\n").trim();g=new _.ro(g,k,l,_.Oe);e&&(g.id=e);pq(d);for(k=oq(d);k;)tq(g,k,c)||_.D(jq,k,iq),pq(d),k=oq(d);null!=e&&(g.id=e);c=g}c&&m.push(c)}return{cues:m,styles:f}}};var zq=class extends yq{parseMedia(a,b){return super.parseMedia((new wq).a(a),b)}};var Aq=class{constructor(){this.a=null;this.f=new _.O("clpp.vtt.mp4")}parseInit(a){let b=!1;(new _.Lj).L(_.wd,_.Ej).L(_.ve,_.Ej).L(_.rd,_.Ej).Z("mdhd",c=>{0==c.version?(c.reader.skip(4),c.reader.skip(4),this.a=_.N(c.reader),c.reader.skip(4)):(c.reader.skip(8),c.reader.skip(8),this.a=_.N(c.reader),c.reader.skip(8));c.reader.skip(4)}).L(_.vd,_.Ej).L(_.le,_.Ej).Z(_.ne,_.Fj).L("wvtt",()=>{b=!0}).parse(a);if(!this.a)throw new _.H(_.G,2,2008);if(!b)throw new _.H(_.G,2,2008);}parseMedia(a,b){if(!this.a)throw this.f.error("No init segment for MP4+VTT!"),
10
- new _.H(_.G,2,2008);let c=0,d=[],e;const f=[];let g=!1,h=!1,k=!1,l=null;(new _.Lj).L("moof",_.Ej).L("traf",_.Ej).Z("tfdt",q=>{g=!0;c=0==q.version?_.N(q.reader):_.Aj(q.reader)}).Z("tfhd",q=>{var t=q.flags;q=q.reader;q.skip(4);t&1&&q.skip(8);t&2&&q.skip(4);l=t&8?_.N(q):null}).Z("trun",q=>{h=!0;{var t=q.version,u=q.flags;q=q.reader;const x=_.N(q);u&1&&q.skip(4);u&4&&q.skip(4);const A=[];for(let E=0;E<x;E++){const B={duration:null,sampleSize:null,fe:null};u&256&&(B.duration=_.N(q));u&512&&(B.sampleSize=
11
- _.N(q));u&1024&&q.skip(4);u&2048&&(B.fe=0==t?_.N(q):_.yj(q));A.push(B)}d=A}}).L(_.qd,_.Gj(q=>{k=!0;e=q})).parse(a);if(!k&&!g&&!h)throw new _.H(_.G,2,2008);a=c;var m=new DataView(e.buffer,e.byteOffset,e.byteLength);m=new _.qk(m,!1);for(const q of d){const t=q.duration||l,u=q.fe?c+q.fe:a;a=u+(t||0);let x=0;do{const A=_.N(m);x+=A;var n=_.N(m);n=_.Dj(n);let E=null;"vttc"==n?8<A&&(E=_.Bj(m,A-8)):("vtte"!=n&&this.f.error("Unknown box "+n+"! Skipping!"),m.skip(A-8));t?E&&f.push(vq(E,b.periodStart+u/this.a,
12
- b.periodStart+a/this.a)):this.f.error("WVTT sample duration unknown, and no default found!")}while(q.sampleSize&&x<q.sampleSize)}return{cues:f.filter(_.bg),styles:[]}}};_.z("clpp.vtt.VttComponent",class extends _.zp{constructor(){super();this.h=new xq}f(){_.Xn[_.se]=yq;_.Xn[mq]=yq;_.Xn[nq]=yq;_.Xn[_.Vb]=Aq;_.Xn[lq]=zq;_.Xn[kq]=zq;_.Rh.push(this.h)}a(){_.Yn(_.se);_.Yn(mq);_.Yn(nq);_.Yn(_.Vb);_.Yn(lq);_.Yn(kq);_.Th(this.h)}id(){return _.qe}});};f.call(g, window);
1
+ import {clpp} from "./cl.core.js";let g={};const _ = clpp._;var f=function(window){'use strict';var Ar=" The setting will be ignored.",Br="VTT parser encountered an invalid VTT setting: ",Cr="application/x-subrip",Dr="text/srt",Er='text/vtt; codecs\x3d"vtt"',Fr='text/vtt; codecs\x3d"wvtt"',Gr=function(a){return a.a==a.f.length?null:(a=_.Bh(a,/[^ \t\n]*/gm))?a[0]:null},Hr=function(a){_.Bh(a,/[ \t]+/gm)},Ir=function(a){let b="";for(a=a.split(/\n/);3<a.length;){for(var c=3;c<a.length;++c)a[2]+=`\n${a[c]}`;a.splice(3,a.length-3)}if(3!==a.length)return"";c=0;!a[0].match(/\d+:\d+:\d+/)&&
2
+ a[1].match(/\d+:\d+:\d+/)&&(b+=`${a[0].match(/\w+/)}\n`,++c);if(a[c].match(/\d+:\d+:\d+/)){const d=a[1].match(/(\d+):(\d+):(\d+)(?:,(\d+))?\s*--?>\s*(\d+):(\d+):(\d+)(?:,(\d+))?/);if(d)b+=`${d[1]}:${d[2]}:${d[3]}.${d[4]} --> `,b+=`${d[5]}:${d[6]}:${d[7]}.${d[8]}\n`,++c;else return""}else return"";a[c]&&(b+=`${a[c]}\n\n`);return b},Jr=function(a){a=_.Bh(a,/(?:(\d{1,}):)?(\d{2}):(\d{2})\.(\d{2,3})/g);if(null==a)return null;const b=Number(a[2]),c=Number(a[3]);return 59<b||59<c?null:Number(a[4])/1E3+
3
+ c+60*b+3600*(Number(a[1])||0)},Lr=function(a,b,c){let d;if(d=/^align:(start|middle|center|end|left|right)$/.exec(b))b=d[1],"middle"==b?a.textAlign=_.yp:a.textAlign=_.Ep[b.toUpperCase()];else if(d=/^vertical:(lr|rl)$/.exec(b))a.writingMode="lr"==d[1]?_.cf:_.df;else if(d=/^size:([\d.]+)%$/.exec(b))a.size=Number(d[1]);else if(d=/^position:([\d.]+)%(?:,(line-left|line-right|center|start|end))?$/.exec(b))a.position=Number(d[1]),d[2]&&(b=d[2],a.positionAlign=b==_.yd||b==_.Fe?_.yd:b==_.zd||b==_.jd?_.zd:
4
+ _.zc);else if(d=/^region:(.*)$/.exec(b)){if(b=Kr(c,d[1]))a.region=b}else{a:{if(c=/^line:([\d.]+)%(?:,(start|end|center))?$/.exec(b))a.lineInterpretation=1,a.line=Number(c[1]),c[2]&&(a.lineAlign=_.Fp[c[2].toUpperCase()]);else if(c=/^line:(-?\d+)(?:,(start|end|center))?$/.exec(b))a.lineInterpretation=_.Ap,a.line=Number(c[1]),c[2]&&(a.lineAlign=_.Fp[c[2].toUpperCase()]);else{a=!1;break a}a=!0}return a}return!0},Kr=function(a,b){a=a.filter(c=>c.id==b);return a.length?a[0]:(_.C("VTT parser could not find a region with id: ",
5
+ b," The region will be ignored."),null)},Nr=function(a,b,c){let d,e,f;(new _.tk).L("payl",_.ok(g=>{d=_.gh(g)})).L("iden",_.ok(g=>{e=_.gh(g)})).L("sttg",_.ok(g=>{f=_.gh(g)})).parse(a);return d?Mr(d,e,f,b,c):null},Mr=function(a,b,c,d,e){a=new _.Dp(d,e,a,_.lf);b&&(a.id=b);if(c)for(b=new _.Ch(c),c=Gr(b);c;)Lr(a,c,[])||_.C(Br,c,Ar),Hr(b),c=Gr(b);return a},Or=class{a(a){a=_.gh(a);a=a.replace(/\r+/g,"");a=a.replace(/^\s+|\s+$/g,"");a=a.replace(/<[a-zA-Z\\/][^>]*>/g,"");a=a.split("\n\n");let b="";if(0<a.length){b+=
6
+ "WEBVTT\n\n";for(const c of a)b+=Ir(c)}return _.kh(b)}},Pr=class{create(){return new Or}probe(a,b){return(a===Dr||a===Cr)&&b===_.Qe}};var Qr=class{constructor(a){this.a=a}parseInit(){}parseMedia(a,b){a=_.gh(a);a=a.replace(/\r\n|\r(?=[^\n]|$)/gm,"\n");var c=a.split(/\n{2,}/m);if(!/^WEBVTT($|[ \t\n])/m.test(c[0]))throw new _.H(_.G,2,2E3);a=b.periodStart;if(c[0].includes("X-TIMESTAMP-MAP")){var d=c[0].match(/LOCAL:((?:(\d{1,}):)?(\d{2}):(\d{2})\.(\d{3}))/m),e=c[0].match(/MPEGTS:(\d+)/m);if(d&&e){a=Jr(new _.Ch(d[1]));if(null==a)throw new _.H(_.G,2,2E3);e=Number(e[1]);for(d=b.segmentStart;95443.7176888889<=d;)d-=95443.7176888889,e+=
7
+ 8589934592;a=b.periodStart+e/9E4-a}}else this.a.streaming.relativeTextTimestamp&&null!==b.segmentStart&&(a=b.segmentStart);b=[];for(var f of c)if(/^region/.test(f.toLowerCase())){e=new _.Ch(f.replace(/\n/g," "));d=new _.Ip;Gr(e);Hr(e);for(var g=Gr(e);g;){a:{var h;var k=d;var l=g;if(h=/^id:(.*)$/.exec(l))k.id=h[1];else if(h=/^width:(\d{1,2}|100)%$/.exec(l))k.width=Number(h[1]);else if(h=/^lines:(\d+)$/.exec(l))k.height=Number(h[1]),k.heightUnits=2;else if(h=/^regionanchor:(\d{1,2}|100)%,(\d{1,2}|100)%$/.exec(l))k.regionAnchorX=
8
+ Number(h[1]),k.regionAnchorY=Number(h[2]);else if(h=/^viewportanchor:(\d{1,2}|100)%,(\d{1,2}|100)%$/.exec(l))k.viewportAnchorX=Number(h[1]),k.viewportAnchorY=Number(h[2]);else if(/^scroll:up$/.exec(l))k.scroll="up";else{k=!1;break a}k=!0}k||_.C("VTT parser encountered an invalid VTTRegion setting: ",g,Ar);Hr(e);g=Gr(e)}e=d;b.push(e)}f=[];for(var m of c)if(/^style/.test(m.toLowerCase())){e=m.replace(/^style/i,"").replace(/\n/g," ");d=/[^{}]+{[^{}]*}/g;do(g=d.exec(e))&&f.push(g[0]);while(g)}m=[];for(const n of c)if(n.includes("--\x3e")){a:{l=
9
+ n.split("\n");h=a;c=b;if(1==l.length&&!l[0]||/^NOTE($|[ \t])/.test(l[0])||"STYLE"==l[0]){c=null;break a}e=null;l[0].includes("--\x3e")||(e=l[0],l.splice(0,1));d=new _.Ch(l[0]);g=Jr(d);const q=_.Bh(d,/[ \t]+--\x3e[ \t]+/g);k=Jr(d);if(null==g||null==q||null==k)throw new _.H(_.G,2,2001);g+=h;k+=h;l=l.slice(1).join("\n").trim();g=new _.Dp(g,k,l,_.lf);e&&(g.id=e);Hr(d);for(k=Gr(d);k;)Lr(g,k,c)||_.C(Br,k,Ar),Hr(d),k=Gr(d);null!=e&&(g.id=e);c=g}c&&m.push(c)}return{cues:m,styles:f}}};var Rr=class extends Qr{parseMedia(a,b){return super.parseMedia((new Or).a(a),b)}};var Sr=class{constructor(){this.a=null;this.h=new _.R("clpp.vtt.mp4")}parseInit(a){let b=!1;(new _.tk).L(_.Jd,_.mk).L(_.Te,_.mk).L(_.Ed,_.mk).Z("mdhd",c=>{0==c.version?(c.reader.skip(4),c.reader.skip(4),this.a=_.P(c.reader),c.reader.skip(4)):(c.reader.skip(8),c.reader.skip(8),this.a=_.P(c.reader),c.reader.skip(8));c.reader.skip(4)}).L(_.Id,_.mk).L(_.Ie,_.mk).Z(_.Ke,_.nk).L("wvtt",()=>{b=!0}).parse(a);if(!this.a)throw new _.H(_.G,2,2008);if(!b)throw new _.H(_.G,2,2008);}parseMedia(a,b){if(!this.a)throw this.h.error("No init segment for MP4+VTT!"),
10
+ new _.H(_.G,2,2008);let c=0,d=[],e;const f=[];let g=!1,h=!1,k=!1,l=null;(new _.tk).L("moof",_.mk).L("traf",_.mk).Z("tfdt",q=>{g=!0;c=0==q.version?_.P(q.reader):_.hk(q.reader)}).Z("tfhd",q=>{var u=q.flags;q=q.reader;q.skip(4);u&1&&q.skip(8);u&2&&q.skip(4);l=u&8?_.P(q):null}).Z("trun",q=>{h=!0;{var u=q.version,v=q.flags;q=q.reader;const y=_.P(q);v&1&&q.skip(4);v&4&&q.skip(4);const A=[];for(let D=0;D<y;D++){const E={duration:null,sampleSize:null,oe:null};v&256&&(E.duration=_.P(q));v&512&&(E.sampleSize=
11
+ _.P(q));v&1024&&q.skip(4);v&2048&&(E.oe=0==u?_.P(q):_.gk(q));A.push(E)}d=A}}).L(_.Dd,_.ok(q=>{k=!0;e=q})).parse(a);if(!k&&!g&&!h)throw new _.H(_.G,2,2008);a=c;var m=new DataView(e.buffer,e.byteOffset,e.byteLength);m=new _.gl(m,!1);for(const q of d){const u=q.duration||l,v=q.oe?c+q.oe:a;a=v+(u||0);let y=0;do{const A=_.P(m);y+=A;var n=_.P(m);n=_.lk(n);let D=null;"vttc"==n?8<A&&(D=_.jk(m,A-8)):("vtte"!=n&&this.h.error("Unknown box "+n+"! Skipping!"),m.skip(A-8));u?D&&f.push(Nr(D,b.periodStart+v/this.a,
12
+ b.periodStart+a/this.a)):this.h.error("WVTT sample duration unknown, and no default found!")}while(q.sampleSize&&y<q.sampleSize)}return{cues:f.filter(_.Cg),styles:[]}}};_.z("clpp.vtt.VttComponent",class extends _.Pq{constructor(){super();this.j=new Pr}f(){_.jp[_.Qe]=Qr;_.jp[Er]=Qr;_.jp[Fr]=Qr;_.jp[_.cc]=Sr;_.jp[Dr]=Rr;_.jp[Cr]=Rr;_.si.push(this.j)}a(){_.kp(_.Qe);_.kp(Er);_.kp(Fr);_.kp(_.cc);_.kp(Dr);_.kp(Cr);_.ui(this.j)}id(){return"subtitles-vtt"}});};f.call(g, window);
package/cl.youbora.js CHANGED
@@ -1,15 +1,15 @@
1
- import {clpp} from "./cl.core.js";let g={};const _ = clpp._;var f=function(window){'use strict';var aq="clpp.npaw.YouboraPlugin",bq="content.isLive",cq=function(a,b){if(b.namespace()===_.yc)return a.f.info("Youbora does not report when casting."),!1;const c=b.getConfiguration().youbora;if(!_.of(c))return a.f.warn("Youbora plugin is loaded but not configured. Will do nothing."),!1;if(!c.accountCode)return a.f.warn("accountCode key is missing in Youbora config"),b.onError(new _.H(1,9,9101)),!1;if(_.C(window.youbora))return a.f.warn("Youbora SDK not found."),b.onError(new _.H(1,9,
2
- 9100)),!1;"6.8.49"!==youbora.VERSION&&(a.f.warn("Youbora SDK version is not supported. The supported version is 6.8.49, found "+`version ${youbora.VERSION}. Some or all features of YouboraPlugin `+"may not work correctly."),b.onError(new _.H(1,9,9102)));return!0},dq=a=>(a=a.getConfiguration().youbora)&&a.errorFilter?a.errorFilter:b=>({code:`${b.code}`,message:b.message,severity:b.severity}),eq=(a,b,c,d)=>{b=dq(b)(a);if(!b)return c.debug("Error not sent to Youbora",a.code,a.message),null;a=10003===
3
- a.code?"ad error":_.Yc;b.severity===_.G?(d.fireFatalError(b.code,b.message,b.metadata),c.debug(`Reporting "fatal ${a}" to Youbora`,b.code,b)):(d.fireError(b.code,b.message,b.metadata),c.debug(`Reporting "${a}" to Youbora`,b.code,b));return b};var fq=a=>{class b extends youbora.Adapter{constructor(c){super(c);this.l=c;this.a=new _.jo;this.f=new _.O("clpp.npaw.YouboraAdapter");this.h=this.w=!1;this.registerListeners()}getPlayhead(){return this.getIsLive()?-1:this.l.getPosition()}getDuration(){return this.l.getDuration()}getRendition(){let c,d,e;var f=this.l.getTrackManager();f&&(f=f.ia())&&(c=f.width,d=f.height,e=f.bandwidth);c&&d&&e||(f=this.m(),c=c||f.width,d=d||f.height,e=e||f.streamBandwidth);return youbora.Util.buildRenditionString(c,
4
- d,e)}getIsLive(){return this.l.isLive()}getResource(){const c=this.l.getLoadedSource();return c&&c.url}getBitrate(){return this.m().streamBandwidth}getThroughput(){return this.m().estimatedBandwidth}getPlayrate(){return this.l.getPlaybackRate()}getFramesPerSecond(){var c=this.l.getTrackManager();return c&&(c=c.Ia())?c.frameRate:null}getPlayerName(){return _.ma}getVersion(){return"6.9.0-castlabsadapter-js"}getPlayerVersion(){return _.da}registerListeners(){this.l&&this.a&&(this.f.debug("registering listeners"),
5
- youbora.Util.logAllEvents(this.l),this.a.on(this.l,_.je,this.I.bind(this)),this.a.on(this.l,_.Yc,this.F.bind(this)),this.a.on(this.l,_.Ce,this.H.bind(this)),this.a.on(this.l,_.Be,this.G.bind(this)),this.a.on(this.l,_.Lb,this.B.bind(this)),this.a.on(this.l,_.oc,this.C.bind(this)))}unregisterListeners(){this.f.debug(_.nb);_.Mf(this.a)}dispose(){super.dispose()}m(){return this.l.getStats()||_.rl()}o(){return!!this.l.getConfiguration().autoplay}I(c){c=c.detail;this.j("state change",c);if(c)switch(c.currentState){case _.Fl:this.o()&&
6
- this.g();break;case _.Hl:this.g();this.A();this.fireResume();this.fireBufferEnd();break;case _.Gl:this.o()&&this.g();this.A();this.fireBufferEnd();this.firePause();break;case _.El:this.fireBufferEnd();this.fireStop();break;case _.wl:this.fireBufferEnd();this.w&&this.plugin.getAdsAdapter()?this.firePause():this.fireStop();break;case _.zl:this.fireBufferBegin();break;default:this.f.debug("Unhandled state",c)}}g(){this.plugin.isInitiated||(this.h=!1,this.fireInit())}A(){var c=this.l.getDrmInfo();c&&
7
- (c=c.keySystem,(c=c.startsWith(_.Ic)?"Widevine":c.startsWith(_.Gc)?"FairPlay":c.match(/^com\.(microsoft|chromecast)\.playready/)?"PlayReady":c.startsWith(_.Jd)?"ClearKey":c.startsWith(_.Fc)?"Primetime":c)&&this.plugin.setOptions({"content.drm":c}));this.fireJoin()}F(c){!(c=c.detail)||this.h||10003===c.code&&this.plugin.getAdsAdapter()||(c=eq(c,this.l,this.f,this))&&c.severity===_.G&&(this.h=!0)}H(){this.j(_.ee);this.l.isEnded()||(this.g(),this.fireSeekBegin())}G(){this.j(_.de);this.fireSeekEnd()}B(c){this.f.debug("adsTimeline",
8
- c);c=c.adsTimeline;this.w=!!c&&c.hb()}C(c){this.f.debug("Casting",c);this.fireCasted()}j(c,...d){this.f.debug(`Reporting "${c}" event to Youbora`,...d)}}return new b(a)};var gq=a=>{class b extends youbora.Adapter{constructor(c){super(c);this.l=c;this.j=this.a=null;this.f=new _.jo;this.h=new _.O("clpp.npaw.YouboraAdsAdapter");this.registerListeners();this.m=!1}getDuration(){return this.a&&this.a.getDuration()}getRendition(){let c=null;this.a&&(c=youbora.Util.buildRenditionString(this.a.sb(),this.a.rb(),this.a.gb()));return c}getBitrate(){return this.a&&this.a.gb()}getPlayhead(){const c=this.l.getAdsManager();return c&&c.getPosition()}getResource(){return this.a&&this.a.getMediaUrl()}getTitle(){return this.a&&
9
- this.a.getTitle()}getProvider(){return this.a&&this.a.getAdvertiserName()}getCreativeId(){return this.a&&this.a.getCreativeId()}getPosition(){const c=youbora.Constants.AdPosition;let d=null;if(this.a)switch(this.a.Sa()){case 0:d=c.Preroll;break;case 2:d=c.Postroll;break;case 1:d=c.Midroll}this.h.debug("Ad position",d);return d}getIsSkippable(){return this.a&&-1!==this.a.getSkipTimeOffset()}getAudioEnabled(){const c=this.l.getAdsManager();return c&&0<c.getVolume()}getExpectedBreaks(){return this.j&&
10
- this.j.getCuePoints().length}getGivenBreaks(){return this.getExpectedBreaks()}getExpectedAds(){return this.a&&this.a.ub()}getGivenAds(){return this.getExpectedAds()}getBreaksTime(){return this.j&&this.j.getCuePoints().map(c=>-1===c?this.l.getDuration():c)}getIsFullscreen(){return this.l.getSurface().isFullscreen()}getIsVisible(){var c=this.l.getSurface().getContainer();c=youbora.Util.calculateAdViewability(c);this.h.debug("is container visible",c);return c}getPlayerName(){return _.ma}getVersion(){return"6.9.0-castlabsadsadapter-js"}getPlayerVersion(){return _.da}registerListeners(){this.l&&
11
- this.f&&(this.f.on(this.l,_.Lb,this.N.bind(this)),this.f.on(this.l,_.Hb,this.M.bind(this)),this.f.on(this.l,_.Db,this.I.bind(this)),this.f.on(this.l,_.Fb,this.J.bind(this)),this.f.on(this.l,_.yb,this.G.bind(this)),this.f.on(this.l,_.zb,this.o.bind(this,1)),this.f.on(this.l,_.Cb,this.o.bind(this,2)),this.f.on(this.l,_.Jb,this.o.bind(this,3)),this.f.on(this.l,_.xb,this.F.bind(this)),this.f.on(this.l,_.Gb,this.K.bind(this)),this.f.on(this.l,_.Yc,this.H.bind(this)),this.f.on(this.l,_.ub,this.A.bind(this)),
12
- this.f.on(this.l,_.vb,this.B.bind(this)),this.f.on(this.l,_.wb,this.C.bind(this)),this.f.on(this.l,_.Eb,this.w.bind(this)))}unregisterListeners(){_.Mf(this.f)}dispose(){super.dispose()}N(c){this.h.debug("ad timeline changed",c);this.j=c.adsTimeline}M(c){this.a=c.ad;this.g("ad start",this.a);this.fireStart();this.fireJoin()}G(){this.g("ad ended");this.fireStop()}I(){this.g("ad pause");this.w();this.firePause()}J(){this.g("ad resume");this.w();this.fireResume()}C(){this.m=!0;this.g("ad buffering started");
13
- this.fireBufferBegin()}w(){this.m&&(this.g("ad buffering ended"),this.m=!1,this.fireBufferEnd())}o(c){this.g("ad quartile",c);this.fireQuartile(c)}F(){this.g("ad clicked");const c=this.a&&this.a.Hb();this.h.debug("ad click through url: ",c);this.fireClick(c)}K(){this.g("ad skipped");this.fireSkip()}A(c){this.a=c.ad;this.g("ad break start",this.a);this.fireBreakStart()}B(){this.g("ad break stop");this.fireBreakStop();if(this.getPosition()===youbora.Constants.AdPosition.Postroll){const c=this.plugin.getAdapter();
14
- c&&c.fireStop()}}H(c){(c=c.detail)&&10003===c.code&&eq(c,this.l,this.h,this)}g(c,...d){this.h.debug(`Reporting "${c}" event to Youbora`,...d)}}return new b(a)};var hq=class extends _.$p{constructor(){super();this.a=null;this.f=new _.O(aq);this.l=null}be(a){this.a&&(this.a.removeAdsAdapter(),this.a.removeAdapter());if(this.a=a)this.a.setAdapter(fq(this.l)),this.a.setAdsAdapter(gq(this.l))}getAdapter(){return this.a&&this.a.getAdapter()}getAdsAdapter(){return this.a&&this.a.getAdsAdapter()}onPlayerCreated(a){this.l=a;cq(this,a)&&(a=a.getConfiguration().youbora,this.be(new youbora.Plugin(a)))}onContentWillLoad(a,b){if(cq(this,a)){a=a.getConfiguration();var c=
15
- a.youbora;void 0===c[bq]&&(c[bq]=b.isLive);void 0===c["content.title"]&&(c["content.title"]=b.name);void 0===c.viewerId&&(c.viewerId=a.viewerId);this.a||this.be(new youbora.Plugin(c));this.a.setOptions(c)}}onPlayerWillRelease(){}onPlayerWillDestroy(){}id(){return"youbora"}};_.z(aq,hq);hq.prototype.getAdsAdapter=hq.prototype.getAdsAdapter;hq.prototype.getAdapter=hq.prototype.getAdapter;hq.prototype.setYouboraPlugin=hq.prototype.be;hq.Id="youbora";_.Hm(new class{create(){return new hq}});};f.call(g, window);
1
+ import {clpp} from "./cl.core.js";let g={};const _ = clpp._;var f=function(window){'use strict';var sr="clpp.npaw.YouboraPlugin",tr="content.isLive",ur=function(a,b){if(b.namespace()===_.Gc)return a.h.info("Youbora does not report when casting."),!1;const c=b.getConfiguration().youbora;if(!_.Mf(c))return a.h.warn("Youbora plugin is loaded but not configured. Will do nothing."),!1;if(!c.accountCode)return a.h.warn("accountCode key is missing in Youbora config"),b.onError(new _.H(1,9,9101)),!1;if(_.B(window.youbora))return a.h.warn("Youbora SDK not found."),b.onError(new _.H(1,9,
2
+ 9100)),!1;"6.8.49"!==youbora.VERSION&&(a.h.warn("Youbora SDK version is not supported. The supported version is 6.8.49, found "+`version ${youbora.VERSION}. Some or all features of YouboraPlugin `+"may not work correctly."),b.onError(new _.H(1,9,9102)));return!0},vr=a=>(a=a.getConfiguration().youbora)&&a.errorFilter?a.errorFilter:b=>({code:`${b.code}`,message:b.message,severity:b.severity}),wr=(a,b,c,d)=>{b=vr(b)(a);if(!b)return c.debug("Error not sent to Youbora",a.code,a.message),null;a=10003===
3
+ a.code?"ad error":_.ld;b.severity===_.G?(d.fireFatalError(b.code,b.message,b.metadata),c.debug(`Reporting "fatal ${a}" to Youbora`,b.code,b)):(d.fireError(b.code,b.message,b.metadata),c.debug(`Reporting "${a}" to Youbora`,b.code,b));return b};var xr=a=>{class b extends youbora.Adapter{constructor(c){super(c);this.m=c;this.a=new _.vp;this.h=new _.R("clpp.npaw.YouboraAdapter");this.g=this.w=!1;this.registerListeners()}getPlayhead(){return this.getIsLive()?-1:this.m.getPosition()}getDuration(){return this.m.getDuration()}getRendition(){let c,d,e;var f=this.m.getTrackManager();f&&(f=f.ia())&&(c=f.width,d=f.height,e=f.bandwidth);c&&d&&e||(f=this.l(),c=c||f.width,d=d||f.height,e=e||f.streamBandwidth);return youbora.Util.buildRenditionString(c,
4
+ d,e)}getIsLive(){return this.m.isLive()}getResource(){const c=this.m.getLoadedSource();return c&&c.url}getBitrate(){return this.l().streamBandwidth}getThroughput(){return this.l().estimatedBandwidth}getPlayrate(){return this.m.getPlaybackRate()}getFramesPerSecond(){var c=this.m.getTrackManager();return c&&(c=c.Ka())?c.frameRate:null}getPlayerName(){return _.na}getVersion(){return"6.11.0-castlabsadapter-js"}getPlayerVersion(){return _.da}registerListeners(){this.m&&this.a&&(this.h.debug("registering listeners"),
5
+ youbora.Util.logAllEvents(this.m),this.a.on(this.m,_.Ge,this.I.bind(this)),this.a.on(this.m,_.ld,this.F.bind(this)),this.a.on(this.m,_.af,this.H.bind(this)),this.a.on(this.m,_.$e,this.G.bind(this)),this.a.on(this.m,_.Vb,this.B.bind(this)),this.a.on(this.m,_.vc,this.C.bind(this)))}unregisterListeners(){this.h.debug(_.vb);_.jg(this.a)}dispose(){super.dispose()}l(){return this.m.getStats()||_.nm()}o(){return!!this.m.getConfiguration().autoplay}I(c){c=c.detail;this.j("state change",c);if(c)switch(c.currentState){case _.Bm:this.o()&&
6
+ this.f();break;case _.Dm:this.f();this.A();this.fireResume();this.fireBufferEnd();break;case _.Cm:this.o()&&this.f();this.A();this.fireBufferEnd();this.firePause();break;case _.Am:this.fireBufferEnd();this.fireStop();break;case _.sm:this.fireBufferEnd();this.w&&this.plugin.getAdsAdapter()?this.firePause():this.fireStop();break;case _.vm:this.fireBufferBegin();break;default:this.h.debug("Unhandled state",c)}}f(){this.plugin.isInitiated||(this.g=!1,this.fireInit())}A(){var c=this.m.getDrmInfo();c&&
7
+ (c=c.keySystem,(c=c.startsWith(_.Sc)?"Widevine":c.startsWith(_.Pc)?"FairPlay":c.match(/^com\.(microsoft|chromecast)\.playready/)?"PlayReady":c.startsWith(_.Zd)?"ClearKey":c.startsWith(_.Oc)?"Primetime":c)&&this.plugin.setOptions({"content.drm":c}));this.fireJoin()}F(c){!(c=c.detail)||this.g||10003===c.code&&this.plugin.getAdsAdapter()||(c=wr(c,this.m,this.h,this))&&c.severity===_.G&&(this.g=!0)}H(){this.j(_.Be);this.m.isEnded()||(this.f(),this.fireSeekBegin())}G(){this.j(_.Ae);this.fireSeekEnd()}B(c){this.h.debug("adsTimeline",
8
+ c);c=c.adsTimeline;this.w=!!c&&c.hb()}C(c){this.h.debug("Casting",c);this.fireCasted()}j(c,...d){this.h.debug(`Reporting "${c}" event to Youbora`,...d)}}return new b(a)};var yr=a=>{class b extends youbora.Adapter{constructor(c){super(c);this.m=c;this.j=this.a=null;this.f=new _.vp;this.h=new _.R("clpp.npaw.YouboraAdsAdapter");this.registerListeners();this.l=!1}getDuration(){return this.a&&this.a.getDuration()}getRendition(){let c=null;this.a&&(c=youbora.Util.buildRenditionString(this.a.sb(),this.a.rb(),this.a.gb()));return c}getBitrate(){return this.a&&this.a.gb()}getPlayhead(){const c=this.m.getAdsManager();return c&&c.getPosition()}getResource(){return this.a&&this.a.getMediaUrl()}getTitle(){return this.a&&
9
+ this.a.getTitle()}getProvider(){return this.a&&this.a.getAdvertiserName()}getCreativeId(){return this.a&&this.a.getCreativeId()}getPosition(){const c=youbora.Constants.AdPosition;let d=null;if(this.a)switch(this.a.Ta()){case 0:d=c.Preroll;break;case 2:d=c.Postroll;break;case 1:d=c.Midroll}this.h.debug("Ad position",d);return d}getIsSkippable(){return this.a&&-1!==this.a.getSkipTimeOffset()}getAudioEnabled(){const c=this.m.getAdsManager();return c&&0<c.getVolume()}getExpectedBreaks(){return this.j&&
10
+ this.j.getCuePoints().length}getGivenBreaks(){return this.getExpectedBreaks()}getExpectedAds(){return this.a&&this.a.ub()}getGivenAds(){return this.getExpectedAds()}getBreaksTime(){return this.j&&this.j.getCuePoints().map(c=>-1===c?this.m.getDuration():c)}getIsFullscreen(){return this.m.getSurface().isFullscreen()}getIsVisible(){var c=this.m.getSurface().getContainer();c=youbora.Util.calculateAdViewability(c);this.h.debug("is container visible",c);return c}getPlayerName(){return _.na}getVersion(){return"6.11.0-castlabsadsadapter-js"}getPlayerVersion(){return _.da}registerListeners(){this.m&&
11
+ this.f&&(this.f.on(this.m,_.Vb,this.N.bind(this)),this.f.on(this.m,_.Pb,this.M.bind(this)),this.f.on(this.m,_.Lb,this.I.bind(this)),this.f.on(this.m,_.Nb,this.J.bind(this)),this.f.on(this.m,_.Gb,this.G.bind(this)),this.f.on(this.m,_.Hb,this.o.bind(this,1)),this.f.on(this.m,_.Kb,this.o.bind(this,2)),this.f.on(this.m,_.Rb,this.o.bind(this,3)),this.f.on(this.m,_.Fb,this.F.bind(this)),this.f.on(this.m,_.Ob,this.K.bind(this)),this.f.on(this.m,_.ld,this.H.bind(this)),this.f.on(this.m,_.Cb,this.A.bind(this)),
12
+ this.f.on(this.m,_.Db,this.B.bind(this)),this.f.on(this.m,_.Eb,this.C.bind(this)),this.f.on(this.m,_.Mb,this.w.bind(this)))}unregisterListeners(){_.jg(this.f)}dispose(){super.dispose()}N(c){this.h.debug("ad timeline changed",c);this.j=c.adsTimeline}M(c){this.a=c.ad;this.g("ad start",this.a);this.fireStart();this.fireJoin()}G(){this.g("ad ended");this.fireStop()}I(){this.g("ad pause");this.w();this.firePause()}J(){this.g("ad resume");this.w();this.fireResume()}C(){this.l=!0;this.g("ad buffering started");
13
+ this.fireBufferBegin()}w(){this.l&&(this.g("ad buffering ended"),this.l=!1,this.fireBufferEnd())}o(c){this.g("ad quartile",c);this.fireQuartile(c)}F(){this.g("ad clicked");const c=this.a&&this.a.Ib();this.h.debug("ad click through url: ",c);this.fireClick(c)}K(){this.g("ad skipped");this.fireSkip()}A(c){this.a=c.ad;this.g("ad break start",this.a);this.fireBreakStart()}B(){this.g("ad break stop");this.fireBreakStop();if(this.getPosition()===youbora.Constants.AdPosition.Postroll){const c=this.plugin.getAdapter();
14
+ c&&c.fireStop()}}H(c){(c=c.detail)&&10003===c.code&&wr(c,this.m,this.h,this)}g(c,...d){this.h.debug(`Reporting "${c}" event to Youbora`,...d)}}return new b(a)};var zr=class extends _.rr{constructor(){super();this.a=null;this.h=new _.R(sr);this.m=null}ke(a){this.a&&(this.a.removeAdsAdapter(),this.a.removeAdapter());if(this.a=a)this.a.setAdapter(xr(this.m)),this.a.setAdsAdapter(yr(this.m))}getAdapter(){return this.a&&this.a.getAdapter()}getAdsAdapter(){return this.a&&this.a.getAdsAdapter()}onPlayerCreated(a){this.m=a;ur(this,a)&&(a=a.getConfiguration().youbora,this.ke(new youbora.Plugin(a)))}onContentWillLoad(a,b){if(ur(this,a)){a=a.getConfiguration();var c=
15
+ a.youbora;void 0===c[tr]&&(c[tr]=b.isLive);void 0===c["content.title"]&&(c["content.title"]=b.name);void 0===c.viewerId&&(c.viewerId=a.viewerId);this.a||this.ke(new youbora.Plugin(c));this.a.setOptions(c)}}onPlayerWillRelease(){}onPlayerWillDestroy(){}id(){return"youbora"}};_.z(sr,zr);zr.prototype.getAdsAdapter=zr.prototype.getAdsAdapter;zr.prototype.getAdapter=zr.prototype.getAdapter;zr.prototype.setYouboraPlugin=zr.prototype.ke;zr.Id="youbora";_.En(new class{create(){return new zr}});};f.call(g, window);
package/clpp.styles.css CHANGED
@@ -145,3 +145,18 @@
145
145
  .clpp-text-container .bg_black {
146
146
  background-color: rgba(0, 0, 0, 1);
147
147
  }
148
+
149
+ .clpp-mc-playlist {
150
+ position: absolute;
151
+ }
152
+ .clpp-mc-playlist .clpp-mc-playlist-item {
153
+ position: absolute;
154
+ width: 100%;
155
+ height: 100%;
156
+ }
157
+ .clpp-mc-playlist .clpp-mc-playlist-item video {
158
+ z-index: 0;
159
+ }
160
+ .clpp-mc-playlist .clpp-mc-playlist-item video.clpp-visible {
161
+ z-index: 1;
162
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@castlabs/prestoplay",
3
3
  "description": "PRESTOplay Video Player",
4
- "version": "6.9.0",
4
+ "version": "6.11.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/castlabs/prestoplay-web.git"
package/typings.d.ts CHANGED
@@ -228,6 +228,13 @@ export namespace clpp {
228
228
  * seconds. This keeps us from changing too often and annoying the user.
229
229
  */
230
230
  switchInterval: number;
231
+ /**
232
+ * Defaults to false.
233
+ *
234
+ * Enables reading CMSD data in media requests.
235
+ * Only dynamic header estimatedThroughput is currently supported.
236
+ */
237
+ useCmsd: boolean;
231
238
  /**
232
239
  * By default ABR algorithm switches video quality as soon as he has enough
233
240
  * data to do it, initially ignoring `switchInterval` value. Set it to true
@@ -1346,6 +1353,12 @@ export namespace clpp {
1346
1353
  * generated
1347
1354
  */
1348
1355
  disableContainer: boolean;
1356
+ /**
1357
+ * If true, a performance patch will be applied on webOS 4,5,6 devices
1358
+ * in order to reduce startup time by setting
1359
+ * 'controls' attribute on the video element.
1360
+ */
1361
+ webOSStartupPatch: boolean;
1349
1362
  }
1350
1363
 
1351
1364
  /**
@@ -1976,7 +1989,7 @@ export namespace clpp {
1976
1989
  *
1977
1990
  * The minimum number of seconds of content that the Player must
1978
1991
  * buffer before it can begin playback or can continue playback after it has
1979
- * entered into a buffering state (i.e., after it has depleted one
1992
+ * entered into a buffering state (i.e., after it has depleted one or
1980
1993
  * more of its buffers).
1981
1994
  */
1982
1995
  rebufferingGoal: number;
@@ -2178,6 +2191,28 @@ export namespace clpp {
2178
2191
  value: string;
2179
2192
  }
2180
2193
 
2194
+ /**
2195
+ * Information about the wall-clock time of the player's timeline. It can be
2196
+ * used to display the wall-clock time of the playback of a live stream
2197
+ * in the UI.
2198
+ * This is only available for HLS playback via the MSE player.
2199
+ */
2200
+ export type TimelineOffset = {
2201
+ /**
2202
+ * The offset in seconds that can be added to timeline position and seek
2203
+ * range in order to get the wall-clock time for these values.
2204
+ */
2205
+ offsetDateTime: number;
2206
+ /**
2207
+ * The wall-clock time in seconds of the initial start of the seek range.
2208
+ * (Seek range changes during live playback as new segments become available
2209
+ * and old ones stop being available. This value refers to the seek range
2210
+ * at the very beginning of playback of the stream.) This value is taken
2211
+ * directly from the EXT-X-PROGRAM-DATE-TIME HLS tag.
2212
+ */
2213
+ seekRangeStartDateTime: number;
2214
+ }
2215
+
2181
2216
  /**
2182
2217
  * Conviva plugin configuration.
2183
2218
  */
@@ -2537,10 +2572,11 @@ export namespace clpp {
2537
2572
  export type WidevineDrmSystem = {
2538
2573
  /**
2539
2574
  * The EME audio robustness level. Please note that
2540
- * you do not need to specify this usually and the player will find
2575
+ * you usually do not need to specify this, the player will find
2541
2576
  * an appropriate value based on the current platform and browser.
2577
+ * You can also configure an array ordered by priority in descending order.
2542
2578
  */
2543
- audioRobustness: clpp.drm.WidevineRobustnessLevel|Array<null|clpp.drm.WidevineRobustnessLevel>;
2579
+ audioRobustness?: clpp.drm.WidevineRobustnessLevel|Array<(clpp.drm.WidevineRobustnessLevel|undefined)>;
2544
2580
  /**
2545
2581
  * Defaults to false.
2546
2582
  *
@@ -2582,10 +2618,11 @@ export namespace clpp {
2582
2618
  serverCertificate: Uint8Array|null;
2583
2619
  /**
2584
2620
  * The EME video robustness level. Please note that
2585
- * you do not need to specify this usually and the player will find
2621
+ * you usually do not need to specify this, the player will find
2586
2622
  * an appropriate value based on the current platform and browser.
2623
+ * You can also configure an array ordered by priority in descending order.
2587
2624
  */
2588
- videoRobustness: clpp.drm.WidevineRobustnessLevel|Array<null|clpp.drm.WidevineRobustnessLevel>;
2625
+ videoRobustness?: clpp.drm.WidevineRobustnessLevel|Array<(clpp.drm.WidevineRobustnessLevel|undefined)>;
2589
2626
  }
2590
2627
 
2591
2628
  /**
@@ -3186,6 +3223,12 @@ export namespace clpp {
3186
3223
  * Returns an array of timeline cues.
3187
3224
  */
3188
3225
  getTimelineCues(): Array<clpp.TimelineCue>;
3226
+ /**
3227
+ * Returns the timeline offset for live HLS streams when MSE Player is used.
3228
+ * The timeline offset is based on the value of the EXT-X-PROGRAM-DATE-TIME
3229
+ * tag.
3230
+ */
3231
+ getTimelineOffset(): clpp.TimelineOffset|null;
3189
3232
  /**
3190
3233
  * Returns track manager.
3191
3234
  */
@@ -3355,15 +3398,11 @@ export namespace clpp {
3355
3398
  */
3356
3399
  release(): Promise<void>;
3357
3400
  /**
3358
- * Removes a specified component from the player.
3359
- * Please note that this operation will only run if the player has been
3360
- * released or is in IDLE state.
3361
- *
3362
3401
  * @param component Component constructor
3363
3402
  *
3364
3403
  * @example
3365
3404
  *
3366
- * let player = new clpp.Player(...);
3405
+ * const player = new clpp.Player(...);
3367
3406
  * player.use(clpp.smooth.SmoothComponent);
3368
3407
  * player.load('https://example.com/smooth/Manifest');
3369
3408
  * ...
@@ -3477,19 +3516,13 @@ export namespace clpp {
3477
3516
  */
3478
3517
  setVolume(volume: number): void;
3479
3518
  /**
3480
- * Registers specified component to player.
3481
- * Please note that every component is automatically unregistered during
3482
- * player disposal, so desired components should be installed again.
3483
- *
3484
3519
  * @param component component constructor.
3485
3520
  *
3486
3521
  * @example
3487
3522
  *
3488
- * let player = new clpp.Player(...);
3523
+ * const player = new clpp.Player(...);
3489
3524
  * player.use(clpp.smooth.SmoothComponent);
3490
- * player.destroy();
3491
- * player = new clpp.Player(...);
3492
- * player.use(clpp.smooth.SmoothComponent); // need to add component again
3525
+ * // The player can now play Smooth Streaming content
3493
3526
  */
3494
3527
  use(component: Function): void;
3495
3528
  }
@@ -3728,12 +3761,21 @@ export namespace clpp {
3728
3761
  label: string|null;
3729
3762
  /**
3730
3763
  * The language associated with this track.
3764
+ * This value is normalized - language part is always lowercase
3765
+ * and translated to ISO-639-1 if possible.
3731
3766
  */
3732
3767
  language: string|null;
3733
3768
  /**
3734
3769
  * The MIME type of this track.
3735
3770
  */
3736
3771
  mimeType: string|null;
3772
+ /**
3773
+ * The original language manifest value associated with this track.
3774
+ * Language value of the track, as it is present in the manifest.
3775
+ * This is the exact value provided in the manifest;
3776
+ * for normalized value use `language` property.
3777
+ */
3778
+ originalLanguage: string|null;
3737
3779
  /**
3738
3780
  * Renditions of this track.
3739
3781
  */
@@ -4389,6 +4431,11 @@ export namespace clpp {
4389
4431
  * Encountered a feature of HLS which is not currently supported.
4390
4432
  */
4391
4433
  HLS_UNSUPPORTED_FEATURE = 4046,
4434
+ /**
4435
+ * The content of the media playlist is incompatible with new content
4436
+ * after an update.
4437
+ */
4438
+ HLS_INCOMPATIBLE_PLAYLIST_UPDATE = 4047,
4392
4439
  /**
4393
4440
  * The StreamingEngine called onChooseStreams() but the callback receiver
4394
4441
  * did not return the correct number or type of Streams.
@@ -5644,8 +5691,18 @@ export namespace clpp {
5644
5691
  }
5645
5692
 
5646
5693
  export class DrmEnvironment {
5694
+ /**
5695
+ * @param name DRM environment name
5696
+ */
5647
5697
  constructor(name: string);
5648
- setDrmSystem(systemName: clpp.drm.KeySystem, drmSystem: clpp.PlayreadyDrmSystem|clpp.FairplayDrmSystem|clpp.WidevineDrmSystem): void;
5698
+ /**
5699
+ * Set the default configuration for a given DRM system.
5700
+ *
5701
+ * @param identifier DRM system identifier
5702
+ * @param config DRM
5703
+ * system configuration
5704
+ */
5705
+ setDrmSystem(identifier: clpp.drm.KeySystem, config: clpp.PlayreadyDrmSystem|clpp.FairplayDrmSystem|clpp.WidevineDrmSystem): void;
5649
5706
  }
5650
5707
 
5651
5708
  export class HeaderDrm {
@@ -6675,6 +6732,175 @@ export namespace clpp {
6675
6732
  }
6676
6733
  }
6677
6734
 
6735
+ namespace plist {
6736
+ /**
6737
+ * A playlist item.
6738
+ * It consists of an asset/config, a player instances selected
6739
+ * to play this asset and the underlying video element to which the player is
6740
+ * attached.
6741
+ */
6742
+ export type Item = {
6743
+ /**
6744
+ * Source configuration.
6745
+ */
6746
+ config: clpp.PlayerConfiguration;
6747
+ /**
6748
+ * The index of the item in the playlist.
6749
+ */
6750
+ index: number;
6751
+ /**
6752
+ * A player instance.
6753
+ */
6754
+ player: clpp.Player|null;
6755
+ /**
6756
+ * A promise that resolves when the item is preloaded.
6757
+ */
6758
+ preloadPromise: Promise<void>;
6759
+ /**
6760
+ * The role of the item.
6761
+ */
6762
+ role: string;
6763
+ /**
6764
+ * The state of the item (e.g. 'preloading', 'preloaded', 'preload-failed').
6765
+ */
6766
+ state: string;
6767
+ /**
6768
+ * The video element attached to the player.
6769
+ */
6770
+ videoEl: HTMLVideoElement|null;
6771
+ }
6772
+
6773
+ /**
6774
+ * Playlist options.
6775
+ */
6776
+ export type Options = {
6777
+ /**
6778
+ * ID of the HTML element to be used as a container
6779
+ * for video elements created by this playlist
6780
+ */
6781
+ anchorId: string;
6782
+ /**
6783
+ * A custom callback to toggle the visibility of a video element. By default
6784
+ * this is done via z-index.
6785
+ */
6786
+ toggleVisible?: Function;
6787
+ /**
6788
+ * Transition method, can be "pause" or "keep-playing". In cause of "pause"
6789
+ * the current video will be paused when calling
6790
+ * {@link clpp.plist.McPlaylist.playNext} or
6791
+ * {@link clpp.plist.McPlaylist.playPrev}.
6792
+ */
6793
+ transition?: string;
6794
+ }
6795
+
6796
+ /**
6797
+ * Multi-controller playlist intended for fast live TV channel zapping.
6798
+ * It is based on an architecture which leverages multiple video elements
6799
+ * and multiple instances of {@link clpp.Player} to preload assets in order to
6800
+ * reduce zap time.
6801
+ * Known limitations:
6802
+ *
6803
+ * It does not support multi-period DASH or discontinuous HLS.
6804
+ * It does not support plugins (e.g. analytics).
6805
+ * `setItems()` can only be called once.
6806
+ * `setIndex()` can only be called once.
6807
+ * Only one next item and one previous item are preloaded and it is only
6808
+ * possible to go to the next / previous item, it is not possible to jump
6809
+ * to an arbitrary item.
6810
+ * It only works in auto-play mode (`autoplay: true` must be configured).
6811
+ *
6812
+ */
6813
+ export class McPlaylist {
6814
+ /**
6815
+ * Multi-controller playlist intended for fast live TV channel zapping.
6816
+ * It is based on an architecture which leverages multiple video elements
6817
+ * and multiple instances of {@link clpp.Player} to preload assets in order to
6818
+ * reduce zap time.
6819
+ * Known limitations:
6820
+ *
6821
+ * It does not support multi-period DASH or discontinuous HLS.
6822
+ * It does not support plugins (e.g. analytics).
6823
+ * `setItems()` can only be called once.
6824
+ * `setIndex()` can only be called once.
6825
+ * Only one next item and one previous item are preloaded and it is only
6826
+ * possible to go to the next / previous item, it is not possible to jump
6827
+ * to an arbitrary item.
6828
+ * It only works in auto-play mode (`autoplay: true` must be configured).
6829
+ *
6830
+ *
6831
+ * @param options configuration options of
6832
+ * the playlist
6833
+ */
6834
+ constructor(options: clpp.plist.Options);
6835
+ /**
6836
+ * Request that this object be destroyed, releasing all resources.
6837
+ * It also shuts down all active operations.
6838
+ * Returns a Promise which is resolved when destruction
6839
+ * is complete. This Promise should never be rejected.
6840
+ */
6841
+ destroy(): Promise<void>;
6842
+ /**
6843
+ * Returns the currently playing/loading item.
6844
+ */
6845
+ getCurrent(): clpp.plist.Item|null;
6846
+ /**
6847
+ * Returns the currently playing player.
6848
+ */
6849
+ getCurrentPlayer(): clpp.Player|null;
6850
+ /**
6851
+ * Returns the next (preloaded) item.
6852
+ */
6853
+ getNext(): clpp.plist.Item|null;
6854
+ /**
6855
+ * Returns all the currently preloading items.
6856
+ */
6857
+ getPreloading(): Array<clpp.plist.Item>;
6858
+ /**
6859
+ * Returns the previous (preloaded) item.
6860
+ */
6861
+ getPrev(): clpp.plist.Item|null;
6862
+ /**
6863
+ * Returns true if there is a next item to play.
6864
+ */
6865
+ hasNext(): boolean;
6866
+ /**
6867
+ * Returns true if there is a previous item to play.
6868
+ */
6869
+ hasPrev(): boolean;
6870
+ /**
6871
+ * Play the first item.
6872
+ * Make sure to set items via {@link clpp.plist.McPlaylist.setItems} and
6873
+ * select the index to start from via {@link clpp.plist.McPlaylist.setIndex}
6874
+ * before calling this method.
6875
+ * To switch to the next or previous item use methods
6876
+ * {@link clpp.plist.McPlaylist.playNext} and
6877
+ * {@link clpp.plist.McPlaylist.playPrev}.
6878
+ */
6879
+ playFirst(): Promise<void>;
6880
+ /**
6881
+ * Play the next item in the playlist.
6882
+ */
6883
+ playNext(): Promise<void>;
6884
+ /**
6885
+ * Play the previous item in the playlist.
6886
+ */
6887
+ playPrev(): Promise<void>;
6888
+ /**
6889
+ * Sets the index of the item to start with.
6890
+ *
6891
+ * @param index index of the current item to play
6892
+ */
6893
+ setIndex(index: number): void;
6894
+ /**
6895
+ * Sets playlist items to be played.
6896
+ *
6897
+ * @param configs source configs
6898
+ * of items in the playlist
6899
+ */
6900
+ setItems(configs: Array<clpp.PlayerConfiguration>): void;
6901
+ }
6902
+ }
6903
+
6678
6904
  namespace smooth {
6679
6905
  export class SmoothComponent {
6680
6906
 
@@ -7379,9 +7605,11 @@ export namespace clpp {
7379
7605
  * Creates a DataViewReader, which abstracts a DataView object.
7380
7606
  *
7381
7607
  * @param dataView The data view
7382
- * @param opt_littleEndian Read data as little endian
7608
+ * @param endian Endianness,
7609
+ * by default little endian. True for little endian, false
7610
+ * for big endian.
7383
7611
  */
7384
- constructor(dataView: DataView, opt_littleEndian?: boolean);
7612
+ constructor(dataView: DataView, endian?: boolean);
7385
7613
 
7386
7614
  }
7387
7615
  }