shaka-player 3.3.0 → 3.3.1

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 (53) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/build/conformance.textproto +183 -169
  3. package/dist/controls.css +1 -1
  4. package/dist/deps.js +1 -1
  5. package/dist/locales.js +30 -30
  6. package/dist/shaka-player.compiled.d.ts +25 -2
  7. package/dist/shaka-player.compiled.debug.d.ts +25 -2
  8. package/dist/shaka-player.compiled.debug.externs.js +22 -1
  9. package/dist/shaka-player.compiled.debug.js +226 -222
  10. package/dist/shaka-player.compiled.debug.map +3 -3
  11. package/dist/shaka-player.compiled.externs.js +22 -1
  12. package/dist/shaka-player.compiled.js +814 -812
  13. package/dist/shaka-player.compiled.map +4 -4
  14. package/dist/shaka-player.ui.d.ts +25 -2
  15. package/dist/shaka-player.ui.debug.d.ts +25 -2
  16. package/dist/shaka-player.ui.debug.externs.js +22 -1
  17. package/dist/shaka-player.ui.debug.js +244 -240
  18. package/dist/shaka-player.ui.debug.map +3 -3
  19. package/dist/shaka-player.ui.externs.js +22 -1
  20. package/dist/shaka-player.ui.js +995 -992
  21. package/dist/shaka-player.ui.map +4 -4
  22. package/externs/cmcd.js +186 -0
  23. package/externs/shaka/player.js +8 -0
  24. package/externs/shaka/text.js +10 -0
  25. package/lib/hls/hls_parser.js +30 -0
  26. package/lib/media/segment_index.js +2 -1
  27. package/lib/media/segment_reference.js +19 -1
  28. package/lib/media/streaming_engine.js +5 -2
  29. package/lib/player.js +23 -17
  30. package/lib/polyfill/media_capabilities.js +30 -15
  31. package/lib/text/cue.js +6 -0
  32. package/lib/text/ttml_text_parser.js +84 -58
  33. package/lib/text/ui_text_displayer.js +17 -11
  34. package/lib/util/cmcd_manager.js +47 -201
  35. package/lib/util/stream_utils.js +86 -10
  36. package/lib/util/xml_utils.js +19 -0
  37. package/package.json +2 -2
  38. package/test/media/drm_engine_unit.js +3 -3
  39. package/test/media/streaming_engine_integration.js +2 -1
  40. package/test/media/streaming_engine_unit.js +145 -0
  41. package/test/player_integration.js +41 -8
  42. package/test/player_src_equals_integration.js +41 -8
  43. package/test/player_unit.js +19 -9
  44. package/test/test/assets/chapters.vtt +2 -2
  45. package/test/test/assets/chapters2.vtt +10 -0
  46. package/test/test/util/ttml_utils.js +81 -0
  47. package/test/text/mp4_ttml_parser_unit.js +11 -18
  48. package/test/text/ttml_text_parser_unit.js +499 -230
  49. package/test/util/cmcd_manager_unit.js +29 -15
  50. package/test/util/stream_utils_unit.js +36 -30
  51. package/third_party/closure-uri/uri.js +21 -0
  52. package/ui/text_selection.js +1 -0
  53. package/externs/media_capabilities.js +0 -16
@@ -1128,7 +1128,7 @@ declare namespace shaka.media {
1128
1128
  */
1129
1129
  class SegmentReference {
1130
1130
  private noStructuralTyping_shaka_media_SegmentReference : any;
1131
- constructor (startTime : number , endTime : number , uris : ( ) => string [] , startByte : number , endByte : number | null , initSegmentReference : shaka.media.InitSegmentReference | null , timestampOffset : number , appendWindowStart : number , appendWindowEnd : number , partialReferences ? : shaka.media.SegmentReference [] , tilesLayout ? : string | null ) ;
1131
+ constructor (startTime : number , endTime : number , uris : ( ) => string [] , startByte : number , endByte : number | null , initSegmentReference : shaka.media.InitSegmentReference | null , timestampOffset : number , appendWindowStart : number , appendWindowEnd : number , partialReferences ? : shaka.media.SegmentReference [] , tilesLayout ? : string | null , tileDuration ? : number | null ) ;
1132
1132
  /**
1133
1133
  * Returns the offset from the start of the resource to the end of the
1134
1134
  * segment, inclusive. A value of null indicates that the segment extends to
@@ -1148,6 +1148,11 @@ declare namespace shaka.media {
1148
1148
  * Returns the segment's start time in seconds.
1149
1149
  */
1150
1150
  getStartTime ( ) : number ;
1151
+ /**
1152
+ * Returns the segment's explicit tile duration.
1153
+ * Only defined in image segments.
1154
+ */
1155
+ getTileDuration ( ) : number | null ;
1151
1156
  /**
1152
1157
  * Returns the segment's tiles layout. Only defined in image segments.
1153
1158
  */
@@ -1503,6 +1508,12 @@ declare namespace shaka.polyfill {
1503
1508
  * Install the polyfill if needed.
1504
1509
  */
1505
1510
  static install ( ) : any ;
1511
+ /**
1512
+ * A copy of the MediaCapabilities instance, to prevent Safari from
1513
+ * garbage-collecting the polyfilled method on it. We make it public and export
1514
+ * it to ensure that it is not stripped out by the compiler.
1515
+ */
1516
+ static originalMcap : any | null ;
1506
1517
  }
1507
1518
  }
1508
1519
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
@@ -1646,6 +1657,7 @@ declare namespace shaka.text {
1646
1657
  fontStyle : any ;
1647
1658
  fontWeight : any ;
1648
1659
  id : any ;
1660
+ isContainer : any ;
1649
1661
  letterSpacing : any ;
1650
1662
  line : any ;
1651
1663
  /**
@@ -3348,6 +3360,10 @@ declare namespace chrome.cast.SessionStatus {
3348
3360
  declare namespace chrome.cast {
3349
3361
  let isAvailable : boolean ;
3350
3362
  }
3363
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/cmcd.js
3364
+ declare namespace ಠ_ಠ.clutz {
3365
+ type CmcdData = { bl ? : number , br ? : number , bs ? : boolean , cid ? : string , d ? : number , dl ? : number , mtp ? : number , nor ? : string , nrr ? : string , ot ? : string , pr ? : number , rtp ? : number , sf ? : string , sid ? : string , st ? : string , su ? : boolean , tb ? : number , v ? : number } ;
3366
+ }
3351
3367
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/ima.js
3352
3368
  declare namespace google.ima.AdErrorEvent {
3353
3369
  enum Type {
@@ -4317,7 +4333,7 @@ declare namespace shaka.extern {
4317
4333
  }
4318
4334
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4319
4335
  declare namespace shaka.extern {
4320
- type Thumbnail = { duration : number , height : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
4336
+ type Thumbnail = { duration : number , height : number , imageHeight : number , imageWidth : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
4321
4337
  }
4322
4338
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4323
4339
  declare namespace shaka.extern {
@@ -4394,6 +4410,13 @@ declare namespace shaka.extern {
4394
4410
  * Id of the cue.
4395
4411
  */
4396
4412
  id : string ;
4413
+ /**
4414
+ * If true, this represents a container element that is "above" the main
4415
+ * cues. For example, the <body> and <div> tags that contain the <p> tags
4416
+ * in a TTML file. This controls the flow of the final cues; any nested cues
4417
+ * within an "isContainer" cue will be laid out as separate lines.
4418
+ */
4419
+ isContainer : boolean ;
4397
4420
  /**
4398
4421
  * Text letter spacing as a CSS letter-spacing value.
4399
4422
  */
@@ -1128,7 +1128,7 @@ declare namespace shaka.media {
1128
1128
  */
1129
1129
  class SegmentReference {
1130
1130
  private noStructuralTyping_shaka_media_SegmentReference : any;
1131
- constructor (startTime : number , endTime : number , uris : ( ) => string [] , startByte : number , endByte : number | null , initSegmentReference : shaka.media.InitSegmentReference | null , timestampOffset : number , appendWindowStart : number , appendWindowEnd : number , partialReferences ? : shaka.media.SegmentReference [] , tilesLayout ? : string | null ) ;
1131
+ constructor (startTime : number , endTime : number , uris : ( ) => string [] , startByte : number , endByte : number | null , initSegmentReference : shaka.media.InitSegmentReference | null , timestampOffset : number , appendWindowStart : number , appendWindowEnd : number , partialReferences ? : shaka.media.SegmentReference [] , tilesLayout ? : string | null , tileDuration ? : number | null ) ;
1132
1132
  /**
1133
1133
  * Returns the offset from the start of the resource to the end of the
1134
1134
  * segment, inclusive. A value of null indicates that the segment extends to
@@ -1148,6 +1148,11 @@ declare namespace shaka.media {
1148
1148
  * Returns the segment's start time in seconds.
1149
1149
  */
1150
1150
  getStartTime ( ) : number ;
1151
+ /**
1152
+ * Returns the segment's explicit tile duration.
1153
+ * Only defined in image segments.
1154
+ */
1155
+ getTileDuration ( ) : number | null ;
1151
1156
  /**
1152
1157
  * Returns the segment's tiles layout. Only defined in image segments.
1153
1158
  */
@@ -1503,6 +1508,12 @@ declare namespace shaka.polyfill {
1503
1508
  * Install the polyfill if needed.
1504
1509
  */
1505
1510
  static install ( ) : any ;
1511
+ /**
1512
+ * A copy of the MediaCapabilities instance, to prevent Safari from
1513
+ * garbage-collecting the polyfilled method on it. We make it public and export
1514
+ * it to ensure that it is not stripped out by the compiler.
1515
+ */
1516
+ static originalMcap : any | null ;
1506
1517
  }
1507
1518
  }
1508
1519
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
@@ -1646,6 +1657,7 @@ declare namespace shaka.text {
1646
1657
  fontStyle : any ;
1647
1658
  fontWeight : any ;
1648
1659
  id : any ;
1660
+ isContainer : any ;
1649
1661
  letterSpacing : any ;
1650
1662
  line : any ;
1651
1663
  /**
@@ -3348,6 +3360,10 @@ declare namespace chrome.cast.SessionStatus {
3348
3360
  declare namespace chrome.cast {
3349
3361
  let isAvailable : boolean ;
3350
3362
  }
3363
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/cmcd.js
3364
+ declare namespace ಠ_ಠ.clutz {
3365
+ type CmcdData = { bl ? : number , br ? : number , bs ? : boolean , cid ? : string , d ? : number , dl ? : number , mtp ? : number , nor ? : string , nrr ? : string , ot ? : string , pr ? : number , rtp ? : number , sf ? : string , sid ? : string , st ? : string , su ? : boolean , tb ? : number , v ? : number } ;
3366
+ }
3351
3367
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/ima.js
3352
3368
  declare namespace google.ima.AdErrorEvent {
3353
3369
  enum Type {
@@ -4317,7 +4333,7 @@ declare namespace shaka.extern {
4317
4333
  }
4318
4334
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4319
4335
  declare namespace shaka.extern {
4320
- type Thumbnail = { duration : number , height : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
4336
+ type Thumbnail = { duration : number , height : number , imageHeight : number , imageWidth : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
4321
4337
  }
4322
4338
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4323
4339
  declare namespace shaka.extern {
@@ -4394,6 +4410,13 @@ declare namespace shaka.extern {
4394
4410
  * Id of the cue.
4395
4411
  */
4396
4412
  id : string ;
4413
+ /**
4414
+ * If true, this represents a container element that is "above" the main
4415
+ * cues. For example, the <body> and <div> tags that contain the <p> tags
4416
+ * in a TTML file. This controls the flow of the final cues; any nested cues
4417
+ * within an "isContainer" cue will be laid out as separate lines.
4418
+ */
4419
+ isContainer : boolean ;
4397
4420
  /**
4398
4421
  * Text letter spacing as a CSS letter-spacing value.
4399
4422
  */
@@ -695,6 +695,10 @@ shaka.text.Cue.prototype.id;
695
695
  * @override
696
696
  */
697
697
  shaka.text.Cue.prototype.nestedCues;
698
+ /**
699
+ * @override
700
+ */
701
+ shaka.text.Cue.prototype.isContainer;
698
702
  /**
699
703
  * @override
700
704
  */
@@ -1821,8 +1825,12 @@ shaka.media.SegmentReference = class {
1821
1825
  * The value is a grid-item-dimension consisting of two positive decimal
1822
1826
  * integers in the format: column-x-row ('4x3'). It describes the
1823
1827
  * arrangement of Images in a Grid. The minimum valid LAYOUT is '1x1'.
1828
+ * @param {?number=} tileDuration
1829
+ * The explicit duration of an individual tile within the tiles grid.
1830
+ * If not provided, the duration should be automatically calculated based on
1831
+ * the duration of the reference.
1824
1832
  */
1825
- constructor(startTime, endTime, uris, startByte, endByte, initSegmentReference, timestampOffset, appendWindowStart, appendWindowEnd, partialReferences, tilesLayout) {}
1833
+ constructor(startTime, endTime, uris, startByte, endByte, initSegmentReference, timestampOffset, appendWindowStart, appendWindowEnd, partialReferences, tilesLayout, tileDuration) {}
1826
1834
  /**
1827
1835
  * Creates and returns the URIs of the resource containing the segment.
1828
1836
  * @return {!Array.<string>}
@@ -1856,6 +1864,12 @@ shaka.media.SegmentReference = class {
1856
1864
  * @return {?string}
1857
1865
  */
1858
1866
  getTilesLayout() {}
1867
+ /**
1868
+ * Returns the segment's explicit tile duration.
1869
+ * Only defined in image segments.
1870
+ * @return {?number}
1871
+ */
1872
+ getTileDuration() {}
1859
1873
  };
1860
1874
  /**
1861
1875
  * PresentationTimeline.
@@ -3826,6 +3840,13 @@ shaka.polyfill.MediaCapabilities = class {
3826
3840
  */
3827
3841
  static install() {}
3828
3842
  };
3843
+ /**
3844
+ * A copy of the MediaCapabilities instance, to prevent Safari from
3845
+ * garbage-collecting the polyfilled method on it. We make it public and export
3846
+ * it to ensure that it is not stripped out by the compiler.
3847
+ * @type {MediaCapabilities}
3848
+ */
3849
+ shaka.polyfill.MediaCapabilities.originalMcap;
3829
3850
  /**
3830
3851
  * @summary A polyfill to patch MSE bugs.
3831
3852
  */