shaka-player 4.1.1 → 4.2.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 (179) hide show
  1. package/.github/workflows/build-and-test.yaml +67 -15
  2. package/.github/workflows/compute-incremental-coverage.py +251 -0
  3. package/.github/workflows/report-incremental-coverage.yaml +39 -0
  4. package/.github/workflows/selenium-lab-tests.yaml +44 -1
  5. package/AUTHORS +1 -0
  6. package/CHANGELOG.md +36 -8
  7. package/CONTRIBUTORS +3 -0
  8. package/README.md +20 -6
  9. package/demo/common/assets.js +25 -0
  10. package/demo/common/message_ids.js +2 -0
  11. package/demo/config.js +5 -1
  12. package/demo/index.html +1 -3
  13. package/demo/locales/en.json +2 -0
  14. package/demo/locales/source.json +8 -0
  15. package/dist/controls.css +1 -1
  16. package/dist/demo.compiled.debug.js +25 -23
  17. package/dist/demo.compiled.debug.map +3 -3
  18. package/dist/demo.compiled.js +25 -23
  19. package/dist/demo.compiled.map +3 -3
  20. package/dist/deps.js +6 -5
  21. package/dist/locales.js +30 -30
  22. package/dist/receiver.compiled.debug.js +24 -22
  23. package/dist/receiver.compiled.debug.map +3 -3
  24. package/dist/receiver.compiled.js +24 -22
  25. package/dist/receiver.compiled.map +3 -3
  26. package/dist/shaka-player.compiled.d.ts +69 -5
  27. package/dist/shaka-player.compiled.debug.d.ts +69 -5
  28. package/dist/shaka-player.compiled.debug.externs.js +111 -42
  29. package/dist/shaka-player.compiled.debug.js +352 -301
  30. package/dist/shaka-player.compiled.debug.map +4 -4
  31. package/dist/shaka-player.compiled.externs.js +111 -42
  32. package/dist/shaka-player.compiled.js +823 -802
  33. package/dist/shaka-player.compiled.map +4 -4
  34. package/dist/shaka-player.ui.d.ts +69 -5
  35. package/dist/shaka-player.ui.debug.d.ts +69 -5
  36. package/dist/shaka-player.ui.debug.externs.js +111 -42
  37. package/dist/shaka-player.ui.debug.js +360 -310
  38. package/dist/shaka-player.ui.debug.map +4 -4
  39. package/dist/shaka-player.ui.externs.js +111 -42
  40. package/dist/shaka-player.ui.js +980 -957
  41. package/dist/shaka-player.ui.map +4 -4
  42. package/docs/tutorials/fairplay.md +149 -0
  43. package/docs/tutorials/ui.md +6 -6
  44. package/docs/tutorials/upgrade.md +1 -0
  45. package/docs/tutorials/welcome.md +6 -3
  46. package/externs/shaka/abr_manager.js +8 -0
  47. package/externs/shaka/manifest.js +43 -0
  48. package/externs/shaka/player.js +13 -2
  49. package/karma.conf.js +3 -11
  50. package/lib/abr/simple_abr_manager.js +72 -4
  51. package/lib/ads/client_side_ad_manager.js +1 -1
  52. package/lib/dash/dash_parser.js +5 -0
  53. package/lib/hls/hls_parser.js +123 -27
  54. package/lib/media/drm_engine.js +1 -3
  55. package/lib/media/media_source_engine.js +57 -24
  56. package/lib/media/presentation_timeline.js +24 -1
  57. package/lib/media/segment_index.js +8 -0
  58. package/lib/media/segment_reference.js +7 -1
  59. package/lib/media/streaming_engine.js +42 -6
  60. package/lib/media/time_ranges_utils.js +46 -0
  61. package/lib/net/networking_engine.js +1 -0
  62. package/lib/player.js +8 -6
  63. package/lib/polyfill/media_capabilities.js +9 -0
  64. package/lib/polyfill/patchedmediakeys_apple.js +729 -0
  65. package/lib/polyfill/videoplaybackquality.js +3 -1
  66. package/lib/text/cue.js +0 -5
  67. package/lib/text/simple_text_displayer.js +21 -9
  68. package/lib/text/ui_text_displayer.js +83 -19
  69. package/lib/text/vtt_text_parser.js +61 -4
  70. package/lib/util/buffer_utils.js +3 -0
  71. package/lib/util/error.js +21 -1
  72. package/lib/util/fairplay_utils.js +100 -2
  73. package/lib/util/object_utils.js +1 -0
  74. package/lib/util/platform.js +30 -1
  75. package/lib/util/player_configuration.js +3 -10
  76. package/lib/util/stream_utils.js +23 -3
  77. package/lib/util/string_utils.js +102 -13
  78. package/maintained-branches.md +15 -0
  79. package/package.json +3 -5
  80. package/shaka-player.uncompiled.js +1 -0
  81. package/test/hls/hls_parser_unit.js +49 -33
  82. package/test/media/drm_engine_integration.js +24 -8
  83. package/test/media/media_source_engine_integration.js +24 -10
  84. package/test/media/media_source_engine_unit.js +53 -38
  85. package/test/media/streaming_engine_unit.js +107 -32
  86. package/test/test/util/fake_media_source_engine.js +10 -9
  87. package/test/test/util/simple_fakes.js +4 -0
  88. package/test/test/util/streaming_engine_util.js +10 -2
  89. package/test/text/simple_text_displayer_unit.js +27 -0
  90. package/test/text/ui_text_displayer_unit.js +65 -0
  91. package/test/text/vtt_text_parser_unit.js +26 -0
  92. package/test/util/string_utils_unit.js +46 -8
  93. package/ui/text_selection.js +2 -2
  94. package/app-engine/README.md +0 -9
  95. package/app-engine/demo-version-index/README.md +0 -14
  96. package/app-engine/demo-version-index/app.yaml +0 -28
  97. package/app-engine/demo-version-index/generate.py +0 -164
  98. package/app-engine/demo-version-index/main.py +0 -11
  99. package/app-engine/demo-version-index/requirements.txt +0 -5
  100. package/app-engine/demo-version-index/templates/index.html +0 -114
  101. package/app-engine/shaka-player-demo/README.md +0 -18
  102. package/app-engine/shaka-player-demo/app.yaml +0 -61
  103. package/app-engine/shaka-player-demo/main.py +0 -95
  104. package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
  105. package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
  106. package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
  107. package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
  108. package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
  109. package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
  110. package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
  111. package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
  112. package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
  113. package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
  114. package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
  115. package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
  116. package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
  117. package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
  118. package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
  119. package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
  120. package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
  121. package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
  122. package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
  123. package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
  124. package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
  125. package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
  126. package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
  127. package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
  128. package/app-engine/shaka-player-demo/posters/sources.txt +0 -46
  129. package/app-engine/shaka-player-demo/posters/standard.png +0 -0
  130. package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
  131. package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
  132. package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
  133. package/app-engine/shaka-player-demo/posters.py +0 -110
  134. package/app-engine/shaka-player-demo/requirements.txt +0 -5
  135. package/app-engine/shaka-player-demo/time.txt +0 -1
  136. package/build/README.md +0 -127
  137. package/build/__init__.py +0 -0
  138. package/build/all.py +0 -150
  139. package/build/apps.py +0 -186
  140. package/build/build.py +0 -392
  141. package/build/check.py +0 -354
  142. package/build/checkversion.py +0 -84
  143. package/build/compiler.py +0 -513
  144. package/build/conformance.textproto +0 -335
  145. package/build/docker/Dockerfile +0 -20
  146. package/build/docker/docker-compose.yml +0 -10
  147. package/build/docs.py +0 -54
  148. package/build/eslint-plugin-shaka-rules/arg-comment-spacing.js +0 -72
  149. package/build/eslint-plugin-shaka-rules/index.js +0 -24
  150. package/build/eslint-plugin-shaka-rules/package.json +0 -7
  151. package/build/eslint-plugin-shaka-rules/private.js +0 -109
  152. package/build/gendeps.py +0 -71
  153. package/build/generateExterns.js +0 -867
  154. package/build/generateLocalizations.py +0 -262
  155. package/build/generateTsDefs.py +0 -137
  156. package/build/install-linux-prereqs.sh +0 -136
  157. package/build/license-header +0 -5
  158. package/build/misspellings.txt +0 -39
  159. package/build/pixelsChanged.js +0 -35
  160. package/build/shaka-lab.yaml +0 -161
  161. package/build/shakaBuildHelpers.py +0 -356
  162. package/build/stats.py +0 -816
  163. package/build/subprocessWindowsPatch.py +0 -103
  164. package/build/test.py +0 -541
  165. package/build/types/ads +0 -8
  166. package/build/types/cast +0 -6
  167. package/build/types/cea +0 -13
  168. package/build/types/complete +0 -9
  169. package/build/types/core +0 -108
  170. package/build/types/dash +0 -8
  171. package/build/types/hls +0 -9
  172. package/build/types/manifests +0 -5
  173. package/build/types/networking +0 -6
  174. package/build/types/offline +0 -22
  175. package/build/types/polyfill +0 -18
  176. package/build/types/text +0 -11
  177. package/build/types/ui +0 -39
  178. package/build/updateScreenshots.py +0 -85
  179. package/build/wrapper.template.js +0 -52
@@ -464,6 +464,7 @@ declare namespace shaka.abr {
464
464
  init (switchCallback : any ) : any ;
465
465
  playbackRateChanged (rate : any ) : any ;
466
466
  segmentDownloaded (deltaTimeMs : any , numBytes : any ) : any ;
467
+ setMediaElement (mediaElement : any ) : any ;
467
468
  setVariants (variants : any ) : any ;
468
469
  stop ( ) : any ;
469
470
  }
@@ -923,6 +924,17 @@ declare namespace shaka.media {
923
924
  getSegmentAvailabilityStart ( ) : number ;
924
925
  isInProgress ( ) : boolean ;
925
926
  isLive ( ) : boolean ;
927
+ /**
928
+ * Lock the presentation timeline's start time. After this is called, no
929
+ * further adjustments to presentationStartTime_ will be permitted.
930
+ * This should be called after all Periods have been parsed, and all calls to
931
+ * notifySegments() from the initial manifest parse have been made.
932
+ * Without this, we can get assertion failures in SegmentIndex for certain
933
+ * DAI content. If DAI adds ad segments to the manifest faster than
934
+ * real-time, adjustments to presentationStartTime_ can cause availability
935
+ * windows to jump around on updates.
936
+ */
937
+ lockStartTime ( ) : any ;
926
938
  /**
927
939
  * Gives PresentationTimeline a Stream's maximum segment duration so it can
928
940
  * size and position the segment availability window. This function should be
@@ -1091,6 +1103,7 @@ declare namespace shaka.media {
1091
1103
  */
1092
1104
  constructor (segmentIndex : shaka.media.SegmentIndex | null , index : number , partialSegmentIndex : number ) ;
1093
1105
  current ( ) : shaka.media.SegmentReference | null ;
1106
+ currentPosition ( ) : number ;
1094
1107
  next ( ) : any ;
1095
1108
  }
1096
1109
  }
@@ -1102,7 +1115,7 @@ declare namespace shaka.media {
1102
1115
  */
1103
1116
  class SegmentReference {
1104
1117
  private noStructuralTyping_shaka_media_SegmentReference : any;
1105
- 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 , syncTime ? : number | null , status ? : shaka.media.SegmentReference.Status ) ;
1118
+ 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 , syncTime ? : number | null , status ? : shaka.media.SegmentReference.Status , hlsAes128Key ? : shaka.extern.HlsAes128Key | null ) ;
1106
1119
  /**
1107
1120
  * Returns the offset from the start of the resource to the end of the
1108
1121
  * segment, inclusive. A value of null indicates that the segment extends to
@@ -1321,6 +1334,7 @@ declare namespace shaka.net.NetworkingEngine {
1321
1334
  */
1322
1335
  enum RequestType {
1323
1336
  APP = 3.0 ,
1337
+ KEY = 6.0 ,
1324
1338
  LICENSE = 2.0 ,
1325
1339
  MANIFEST = 0.0 ,
1326
1340
  SEGMENT = 1.0 ,
@@ -1521,6 +1535,16 @@ declare namespace shaka.polyfill {
1521
1535
  }
1522
1536
  }
1523
1537
  // Generated from /home/runner/work/shaka-player/shaka-player/dist/shaka-player.compiled.externs.js
1538
+ declare namespace shaka.polyfill {
1539
+ class PatchedMediaKeysApple {
1540
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysApple : any;
1541
+ /**
1542
+ * Installs the polyfill if needed.
1543
+ */
1544
+ static install ( ) : any ;
1545
+ }
1546
+ }
1547
+ // Generated from /home/runner/work/shaka-player/shaka-player/dist/shaka-player.compiled.externs.js
1524
1548
  declare namespace shaka.polyfill {
1525
1549
  class PatchedMediaKeysNop {
1526
1550
  private noStructuralTyping_shaka_polyfill_PatchedMediaKeysNop : any;
@@ -1644,7 +1668,7 @@ declare namespace shaka.text {
1644
1668
  linePadding : any ;
1645
1669
  nestedCues : any ;
1646
1670
  opacity : any ;
1647
- payload : string ;
1671
+ payload : any ;
1648
1672
  position : any ;
1649
1673
  positionAlign : any ;
1650
1674
  region : any ;
@@ -2212,10 +2236,13 @@ declare namespace shaka.util.Error {
2212
2236
  FAILED_TO_CREATE_SESSION = 6005.0 ,
2213
2237
  FAILED_TO_GENERATE_LICENSE_REQUEST = 6006.0 ,
2214
2238
  HLS_AES_128_ENCRYPTION_NOT_SUPPORTED = 4034.0 ,
2239
+ HLS_AES_128_INVALID_IV_LENGTH = 4043.0 ,
2240
+ HLS_AES_128_INVALID_KEY_LENGTH = 4044.0 ,
2215
2241
  HLS_COULD_NOT_GUESS_CODECS = 4025.0 ,
2216
2242
  HLS_INTERNAL_SKIP_STREAM = 4035.0 ,
2217
2243
  HLS_INVALID_PLAYLIST_HIERARCHY = 4017.0 ,
2218
2244
  HLS_KEYFORMATS_NOT_SUPPORTED = 4026.0 ,
2245
+ HLS_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED = 4041.0 ,
2219
2246
  HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED = 4040.0 ,
2220
2247
  HLS_MULTIPLE_MEDIA_INIT_SECTIONS_FOUND = 4020.0 ,
2221
2248
  HLS_PLAYLIST_HEADER_MISSING = 4015.0 ,
@@ -2258,6 +2285,7 @@ declare namespace shaka.util.Error {
2258
2285
  NO_RECOGNIZED_KEY_SYSTEMS = 6000.0 ,
2259
2286
  NO_VARIANTS = 4036.0 ,
2260
2287
  NO_VIDEO_ELEMENT = 7002.0 ,
2288
+ NO_WEB_CRYPTO_API = 4042.0 ,
2261
2289
  OBJECT_DESTROYED = 7003.0 ,
2262
2290
  OFFLINE_SESSION_REMOVED = 6013.0 ,
2263
2291
  OPERATION_ABORTED = 7001.0 ,
@@ -2353,11 +2381,27 @@ declare namespace shaka.util {
2353
2381
  * Common FairPlay response transform for some DRMs providers.
2354
2382
  */
2355
2383
  static commonFairPlayResponse (type : shaka.net.NetworkingEngine.RequestType , response : shaka.extern.Response ) : any ;
2384
+ /**
2385
+ * Conax FairPlay request.
2386
+ */
2387
+ static conaxFairPlayRequest (type : shaka.net.NetworkingEngine.RequestType , request : shaka.extern.Request ) : any ;
2388
+ /**
2389
+ * Conax initDataTransform configuration.
2390
+ */
2391
+ static conaxInitDataTransform (initData : Uint8Array , initDataType : string , drmInfo : shaka.extern.DrmInfo | null ) : any ;
2356
2392
  /**
2357
2393
  * Using the default method, extract a content ID from the init data. This is
2358
2394
  * based on the FairPlay example documentation.
2359
2395
  */
2360
2396
  static defaultGetContentId (initData : ArrayBuffer | ArrayBufferView ) : string ;
2397
+ /**
2398
+ * EZDRM FairPlay request.
2399
+ */
2400
+ static ezdrmFairPlayRequest (type : shaka.net.NetworkingEngine.RequestType , request : shaka.extern.Request ) : any ;
2401
+ /**
2402
+ * EZDRM initDataTransform configuration.
2403
+ */
2404
+ static ezdrmInitDataTransform (initData : Uint8Array , initDataType : string , drmInfo : shaka.extern.DrmInfo | null ) : any ;
2361
2405
  /**
2362
2406
  * Transforms the init data buffer using the given data. The format is:
2363
2407
  * <pre>
@@ -2376,9 +2420,13 @@ declare namespace shaka.util {
2376
2420
  */
2377
2421
  static isFairPlaySupported ( ) : Promise < boolean > ;
2378
2422
  /**
2379
- * SPC FairPlay request.
2423
+ * Verimatrix FairPlay request.
2424
+ */
2425
+ static verimatrixFairPlayRequest (type : shaka.net.NetworkingEngine.RequestType , request : shaka.extern.Request ) : any ;
2426
+ /**
2427
+ * Verimatrix initDataTransform configuration.
2380
2428
  */
2381
- static spcFairPlayRequest (type : shaka.net.NetworkingEngine.RequestType , request : shaka.extern.Request ) : any ;
2429
+ static verimatrixInitDataTransform (initData : Uint8Array , initDataType : string , drmInfo : shaka.extern.DrmInfo | null ) : any ;
2382
2430
  }
2383
2431
  }
2384
2432
  // Generated from /home/runner/work/shaka-player/shaka-player/dist/shaka-player.compiled.externs.js
@@ -3287,6 +3335,10 @@ declare namespace shaka.extern {
3287
3335
  * @param numBytes The total number of bytes transferred.
3288
3336
  */
3289
3337
  segmentDownloaded (deltaTimeMs : number , numBytes : number ) : any ;
3338
+ /**
3339
+ * Set media element.
3340
+ */
3341
+ setMediaElement (mediaElement : HTMLMediaElement | null ) : any ;
3290
3342
  /**
3291
3343
  * Updates manager's variants collection.
3292
3344
  */
@@ -3422,6 +3474,18 @@ declare namespace shaka.extern {
3422
3474
  type DrmInfo = { audioRobustness : string , distinctiveIdentifierRequired : boolean , initData : shaka.extern.InitDataOverride [] | null , keyIds : Set < string > | null , keySystem : string , licenseServerUri : string , persistentStateRequired : boolean , serverCertificate : Uint8Array | null , serverCertificateUri : string , sessionType : string , videoRobustness : string } ;
3423
3475
  }
3424
3476
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest.js
3477
+ declare namespace shaka.extern {
3478
+ /**
3479
+ * A function that fetches the crypto keys for AES-128.
3480
+ * Returns a promise that resolves when the keys have been fetched.
3481
+ */
3482
+ type FetchCryptoKeysFunction = ( ) => Promise < any > ;
3483
+ }
3484
+ // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest.js
3485
+ declare namespace shaka.extern {
3486
+ type HlsAes128Key = { cryptoKey ? : webCrypto.CryptoKey | null , fetchKey ? : shaka.extern.CreateSegmentIndexFunction , firstMediaSequenceNumber : number , iv ? : Uint8Array , method : string } ;
3487
+ }
3488
+ // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest.js
3425
3489
  declare namespace shaka.extern {
3426
3490
  type InitDataOverride = { initData : Uint8Array , initDataType : string , keyId : string | null } ;
3427
3491
  }
@@ -3775,7 +3839,7 @@ declare namespace shaka.extern {
3775
3839
  }
3776
3840
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
3777
3841
  declare namespace shaka.extern {
3778
- type AbrConfiguration = { advanced : shaka.extern.AdvancedAbrConfiguration , bandwidthDowngradeTarget : number , bandwidthUpgradeTarget : number , defaultBandwidthEstimate : number , enabled : boolean , restrictions : shaka.extern.Restrictions , switchInterval : number , useNetworkInformation : boolean } ;
3842
+ type AbrConfiguration = { advanced : shaka.extern.AdvancedAbrConfiguration , bandwidthDowngradeTarget : number , bandwidthUpgradeTarget : number , defaultBandwidthEstimate : number , enabled : boolean , ignoreDevicePixelRatio : boolean , restrictToElementSize : boolean , restrictions : shaka.extern.Restrictions , switchInterval : number , useNetworkInformation : boolean } ;
3779
3843
  }
3780
3844
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
3781
3845
  declare namespace shaka.extern {
@@ -464,6 +464,7 @@ declare namespace shaka.abr {
464
464
  init (switchCallback : any ) : any ;
465
465
  playbackRateChanged (rate : any ) : any ;
466
466
  segmentDownloaded (deltaTimeMs : any , numBytes : any ) : any ;
467
+ setMediaElement (mediaElement : any ) : any ;
467
468
  setVariants (variants : any ) : any ;
468
469
  stop ( ) : any ;
469
470
  }
@@ -923,6 +924,17 @@ declare namespace shaka.media {
923
924
  getSegmentAvailabilityStart ( ) : number ;
924
925
  isInProgress ( ) : boolean ;
925
926
  isLive ( ) : boolean ;
927
+ /**
928
+ * Lock the presentation timeline's start time. After this is called, no
929
+ * further adjustments to presentationStartTime_ will be permitted.
930
+ * This should be called after all Periods have been parsed, and all calls to
931
+ * notifySegments() from the initial manifest parse have been made.
932
+ * Without this, we can get assertion failures in SegmentIndex for certain
933
+ * DAI content. If DAI adds ad segments to the manifest faster than
934
+ * real-time, adjustments to presentationStartTime_ can cause availability
935
+ * windows to jump around on updates.
936
+ */
937
+ lockStartTime ( ) : any ;
926
938
  /**
927
939
  * Gives PresentationTimeline a Stream's maximum segment duration so it can
928
940
  * size and position the segment availability window. This function should be
@@ -1091,6 +1103,7 @@ declare namespace shaka.media {
1091
1103
  */
1092
1104
  constructor (segmentIndex : shaka.media.SegmentIndex | null , index : number , partialSegmentIndex : number ) ;
1093
1105
  current ( ) : shaka.media.SegmentReference | null ;
1106
+ currentPosition ( ) : number ;
1094
1107
  next ( ) : any ;
1095
1108
  }
1096
1109
  }
@@ -1102,7 +1115,7 @@ declare namespace shaka.media {
1102
1115
  */
1103
1116
  class SegmentReference {
1104
1117
  private noStructuralTyping_shaka_media_SegmentReference : any;
1105
- 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 , syncTime ? : number | null , status ? : shaka.media.SegmentReference.Status ) ;
1118
+ 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 , syncTime ? : number | null , status ? : shaka.media.SegmentReference.Status , hlsAes128Key ? : shaka.extern.HlsAes128Key | null ) ;
1106
1119
  /**
1107
1120
  * Returns the offset from the start of the resource to the end of the
1108
1121
  * segment, inclusive. A value of null indicates that the segment extends to
@@ -1321,6 +1334,7 @@ declare namespace shaka.net.NetworkingEngine {
1321
1334
  */
1322
1335
  enum RequestType {
1323
1336
  APP = 3.0 ,
1337
+ KEY = 6.0 ,
1324
1338
  LICENSE = 2.0 ,
1325
1339
  MANIFEST = 0.0 ,
1326
1340
  SEGMENT = 1.0 ,
@@ -1521,6 +1535,16 @@ declare namespace shaka.polyfill {
1521
1535
  }
1522
1536
  }
1523
1537
  // Generated from /home/runner/work/shaka-player/shaka-player/dist/shaka-player.compiled.debug.externs.js
1538
+ declare namespace shaka.polyfill {
1539
+ class PatchedMediaKeysApple {
1540
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysApple : any;
1541
+ /**
1542
+ * Installs the polyfill if needed.
1543
+ */
1544
+ static install ( ) : any ;
1545
+ }
1546
+ }
1547
+ // Generated from /home/runner/work/shaka-player/shaka-player/dist/shaka-player.compiled.debug.externs.js
1524
1548
  declare namespace shaka.polyfill {
1525
1549
  class PatchedMediaKeysNop {
1526
1550
  private noStructuralTyping_shaka_polyfill_PatchedMediaKeysNop : any;
@@ -1644,7 +1668,7 @@ declare namespace shaka.text {
1644
1668
  linePadding : any ;
1645
1669
  nestedCues : any ;
1646
1670
  opacity : any ;
1647
- payload : string ;
1671
+ payload : any ;
1648
1672
  position : any ;
1649
1673
  positionAlign : any ;
1650
1674
  region : any ;
@@ -2212,10 +2236,13 @@ declare namespace shaka.util.Error {
2212
2236
  FAILED_TO_CREATE_SESSION = 6005.0 ,
2213
2237
  FAILED_TO_GENERATE_LICENSE_REQUEST = 6006.0 ,
2214
2238
  HLS_AES_128_ENCRYPTION_NOT_SUPPORTED = 4034.0 ,
2239
+ HLS_AES_128_INVALID_IV_LENGTH = 4043.0 ,
2240
+ HLS_AES_128_INVALID_KEY_LENGTH = 4044.0 ,
2215
2241
  HLS_COULD_NOT_GUESS_CODECS = 4025.0 ,
2216
2242
  HLS_INTERNAL_SKIP_STREAM = 4035.0 ,
2217
2243
  HLS_INVALID_PLAYLIST_HIERARCHY = 4017.0 ,
2218
2244
  HLS_KEYFORMATS_NOT_SUPPORTED = 4026.0 ,
2245
+ HLS_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED = 4041.0 ,
2219
2246
  HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED = 4040.0 ,
2220
2247
  HLS_MULTIPLE_MEDIA_INIT_SECTIONS_FOUND = 4020.0 ,
2221
2248
  HLS_PLAYLIST_HEADER_MISSING = 4015.0 ,
@@ -2258,6 +2285,7 @@ declare namespace shaka.util.Error {
2258
2285
  NO_RECOGNIZED_KEY_SYSTEMS = 6000.0 ,
2259
2286
  NO_VARIANTS = 4036.0 ,
2260
2287
  NO_VIDEO_ELEMENT = 7002.0 ,
2288
+ NO_WEB_CRYPTO_API = 4042.0 ,
2261
2289
  OBJECT_DESTROYED = 7003.0 ,
2262
2290
  OFFLINE_SESSION_REMOVED = 6013.0 ,
2263
2291
  OPERATION_ABORTED = 7001.0 ,
@@ -2353,11 +2381,27 @@ declare namespace shaka.util {
2353
2381
  * Common FairPlay response transform for some DRMs providers.
2354
2382
  */
2355
2383
  static commonFairPlayResponse (type : shaka.net.NetworkingEngine.RequestType , response : shaka.extern.Response ) : any ;
2384
+ /**
2385
+ * Conax FairPlay request.
2386
+ */
2387
+ static conaxFairPlayRequest (type : shaka.net.NetworkingEngine.RequestType , request : shaka.extern.Request ) : any ;
2388
+ /**
2389
+ * Conax initDataTransform configuration.
2390
+ */
2391
+ static conaxInitDataTransform (initData : Uint8Array , initDataType : string , drmInfo : shaka.extern.DrmInfo | null ) : any ;
2356
2392
  /**
2357
2393
  * Using the default method, extract a content ID from the init data. This is
2358
2394
  * based on the FairPlay example documentation.
2359
2395
  */
2360
2396
  static defaultGetContentId (initData : ArrayBuffer | ArrayBufferView ) : string ;
2397
+ /**
2398
+ * EZDRM FairPlay request.
2399
+ */
2400
+ static ezdrmFairPlayRequest (type : shaka.net.NetworkingEngine.RequestType , request : shaka.extern.Request ) : any ;
2401
+ /**
2402
+ * EZDRM initDataTransform configuration.
2403
+ */
2404
+ static ezdrmInitDataTransform (initData : Uint8Array , initDataType : string , drmInfo : shaka.extern.DrmInfo | null ) : any ;
2361
2405
  /**
2362
2406
  * Transforms the init data buffer using the given data. The format is:
2363
2407
  * <pre>
@@ -2376,9 +2420,13 @@ declare namespace shaka.util {
2376
2420
  */
2377
2421
  static isFairPlaySupported ( ) : Promise < boolean > ;
2378
2422
  /**
2379
- * SPC FairPlay request.
2423
+ * Verimatrix FairPlay request.
2424
+ */
2425
+ static verimatrixFairPlayRequest (type : shaka.net.NetworkingEngine.RequestType , request : shaka.extern.Request ) : any ;
2426
+ /**
2427
+ * Verimatrix initDataTransform configuration.
2380
2428
  */
2381
- static spcFairPlayRequest (type : shaka.net.NetworkingEngine.RequestType , request : shaka.extern.Request ) : any ;
2429
+ static verimatrixInitDataTransform (initData : Uint8Array , initDataType : string , drmInfo : shaka.extern.DrmInfo | null ) : any ;
2382
2430
  }
2383
2431
  }
2384
2432
  // Generated from /home/runner/work/shaka-player/shaka-player/dist/shaka-player.compiled.debug.externs.js
@@ -3287,6 +3335,10 @@ declare namespace shaka.extern {
3287
3335
  * @param numBytes The total number of bytes transferred.
3288
3336
  */
3289
3337
  segmentDownloaded (deltaTimeMs : number , numBytes : number ) : any ;
3338
+ /**
3339
+ * Set media element.
3340
+ */
3341
+ setMediaElement (mediaElement : HTMLMediaElement | null ) : any ;
3290
3342
  /**
3291
3343
  * Updates manager's variants collection.
3292
3344
  */
@@ -3422,6 +3474,18 @@ declare namespace shaka.extern {
3422
3474
  type DrmInfo = { audioRobustness : string , distinctiveIdentifierRequired : boolean , initData : shaka.extern.InitDataOverride [] | null , keyIds : Set < string > | null , keySystem : string , licenseServerUri : string , persistentStateRequired : boolean , serverCertificate : Uint8Array | null , serverCertificateUri : string , sessionType : string , videoRobustness : string } ;
3423
3475
  }
3424
3476
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest.js
3477
+ declare namespace shaka.extern {
3478
+ /**
3479
+ * A function that fetches the crypto keys for AES-128.
3480
+ * Returns a promise that resolves when the keys have been fetched.
3481
+ */
3482
+ type FetchCryptoKeysFunction = ( ) => Promise < any > ;
3483
+ }
3484
+ // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest.js
3485
+ declare namespace shaka.extern {
3486
+ type HlsAes128Key = { cryptoKey ? : webCrypto.CryptoKey | null , fetchKey ? : shaka.extern.CreateSegmentIndexFunction , firstMediaSequenceNumber : number , iv ? : Uint8Array , method : string } ;
3487
+ }
3488
+ // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest.js
3425
3489
  declare namespace shaka.extern {
3426
3490
  type InitDataOverride = { initData : Uint8Array , initDataType : string , keyId : string | null } ;
3427
3491
  }
@@ -3775,7 +3839,7 @@ declare namespace shaka.extern {
3775
3839
  }
3776
3840
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
3777
3841
  declare namespace shaka.extern {
3778
- type AbrConfiguration = { advanced : shaka.extern.AdvancedAbrConfiguration , bandwidthDowngradeTarget : number , bandwidthUpgradeTarget : number , defaultBandwidthEstimate : number , enabled : boolean , restrictions : shaka.extern.Restrictions , switchInterval : number , useNetworkInformation : boolean } ;
3842
+ type AbrConfiguration = { advanced : shaka.extern.AdvancedAbrConfiguration , bandwidthDowngradeTarget : number , bandwidthUpgradeTarget : number , defaultBandwidthEstimate : number , enabled : boolean , ignoreDevicePixelRatio : boolean , restrictToElementSize : boolean , restrictions : shaka.extern.Restrictions , switchInterval : number , useNetworkInformation : boolean } ;
3779
3843
  }
3780
3844
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
3781
3845
  declare namespace shaka.extern {
@@ -61,7 +61,6 @@ shaka.text.Cue.prototype.direction;
61
61
  shaka.text.Cue.prototype.endTime;
62
62
  /**
63
63
  * @override
64
- * @type {string}
65
64
  */
66
65
  shaka.text.Cue.prototype.payload;
67
66
  /**
@@ -386,6 +385,7 @@ shaka.util.BufferUtils = class {
386
385
  * @param {?BufferSource} arr1
387
386
  * @param {?BufferSource} arr2
388
387
  * @return {boolean}
388
+ * @suppress {strictMissingProperties}
389
389
  */
390
390
  static equal(arr1, arr2) {}
391
391
  /**
@@ -604,6 +604,10 @@ shaka.util.Error.Code = {
604
604
  'INCONSISTENT_DRM_ACROSS_PERIODS': 4038,
605
605
  'HLS_VARIABLE_NOT_FOUND': 4039,
606
606
  'HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED': 4040,
607
+ 'HLS_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED': 4041,
608
+ 'NO_WEB_CRYPTO_API': 4042,
609
+ 'HLS_AES_128_INVALID_IV_LENGTH': 4043,
610
+ 'HLS_AES_128_INVALID_KEY_LENGTH': 4044,
607
611
  'STREAMING_ENGINE_STARTUP_INVALID_STATE': 5006,
608
612
  'NO_RECOGNIZED_KEY_SYSTEMS': 6000,
609
613
  'REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE': 6001,
@@ -653,6 +657,43 @@ shaka.util.Error.Code = {
653
657
  'SS_AD_MANAGER_NOT_INITIALIZED': 10003,
654
658
  'CURRENT_DAI_REQUEST_NOT_FINISHED': 10004
655
659
  };
660
+ /**
661
+ * A timer allows a single function to be executed at a later time or at
662
+ * regular intervals.
663
+ * @final
664
+ */
665
+ shaka.util.Timer = class {
666
+ /**
667
+ * Create a new timer. A timer is committed to a single callback function.
668
+ * While there is no technical reason to do this, it is far easier to
669
+ * understand and use timers when they are connected to one functional idea.
670
+ * @param {function()} onTick
671
+ */
672
+ constructor(onTick) {}
673
+ /**
674
+ * Have the timer call |onTick| now.
675
+ * @return {!shaka.util.Timer}
676
+ */
677
+ tickNow() {}
678
+ /**
679
+ * Have the timer call |onTick| after |seconds| has elapsed unless |stop| is
680
+ * called first.
681
+ * @param {number} seconds
682
+ * @return {!shaka.util.Timer}
683
+ */
684
+ tickAfter(seconds) {}
685
+ /**
686
+ * Have the timer call |onTick| every |seconds| until |stop| is called.
687
+ * @param {number} seconds
688
+ * @return {!shaka.util.Timer}
689
+ */
690
+ tickEvery(seconds) {}
691
+ /**
692
+ * Stop the timer and clear the previous behaviour. The timer is still usable
693
+ * after calling |stop|.
694
+ */
695
+ stop() {}
696
+ };
656
697
  /**
657
698
  * @namespace shaka.util.StringUtils
658
699
  * @summary A set of string utility functions.
@@ -928,43 +969,6 @@ shaka.util.LanguageUtils = class {
928
969
  */
929
970
  static findClosestLocale(target, searchSpace) {}
930
971
  };
931
- /**
932
- * A timer allows a single function to be executed at a later time or at
933
- * regular intervals.
934
- * @final
935
- */
936
- shaka.util.Timer = class {
937
- /**
938
- * Create a new timer. A timer is committed to a single callback function.
939
- * While there is no technical reason to do this, it is far easier to
940
- * understand and use timers when they are connected to one functional idea.
941
- * @param {function()} onTick
942
- */
943
- constructor(onTick) {}
944
- /**
945
- * Have the timer call |onTick| now.
946
- * @return {!shaka.util.Timer}
947
- */
948
- tickNow() {}
949
- /**
950
- * Have the timer call |onTick| after |seconds| has elapsed unless |stop| is
951
- * called first.
952
- * @param {number} seconds
953
- * @return {!shaka.util.Timer}
954
- */
955
- tickAfter(seconds) {}
956
- /**
957
- * Have the timer call |onTick| every |seconds| until |stop| is called.
958
- * @param {number} seconds
959
- * @return {!shaka.util.Timer}
960
- */
961
- tickEvery(seconds) {}
962
- /**
963
- * Stop the timer and clear the previous behaviour. The timer is still usable
964
- * after calling |stop|.
965
- */
966
- stop() {}
967
- };
968
972
  /**
969
973
  * @summary
970
974
  * <p>
@@ -1023,6 +1027,10 @@ shaka.abr.SimpleAbrManager = class {
1023
1027
  * @override
1024
1028
  */
1025
1029
  playbackRateChanged(rate) {}
1030
+ /**
1031
+ * @override
1032
+ */
1033
+ setMediaElement(mediaElement) {}
1026
1034
  /**
1027
1035
  * @override
1028
1036
  */
@@ -1333,7 +1341,8 @@ shaka.net.NetworkingEngine.RequestType = {
1333
1341
  'LICENSE': 2,
1334
1342
  'APP': 3,
1335
1343
  'TIMING': 4,
1336
- 'SERVER_CERTIFICATE': 5
1344
+ 'SERVER_CERTIFICATE': 5,
1345
+ 'KEY': 6
1337
1346
  };
1338
1347
  /**
1339
1348
  * Priority level for network scheme plugins.
@@ -1702,8 +1711,10 @@ shaka.media.SegmentReference = class {
1702
1711
  * @param {shaka.media.SegmentReference.Status=} status
1703
1712
  * The segment status is used to indicate that a segment does not exist or is
1704
1713
  * not available.
1714
+ * @param {?shaka.extern.HlsAes128Key=} hlsAes128Key
1715
+ * The segment's AES-128-CBC full segment encryption key and iv.
1705
1716
  */
1706
- constructor(startTime, endTime, uris, startByte, endByte, initSegmentReference, timestampOffset, appendWindowStart, appendWindowEnd, partialReferences, tilesLayout, tileDuration, syncTime, status) {}
1717
+ constructor(startTime, endTime, uris, startByte, endByte, initSegmentReference, timestampOffset, appendWindowStart, appendWindowEnd, partialReferences, tilesLayout, tileDuration, syncTime, status, hlsAes128Key) {}
1707
1718
  /**
1708
1719
  * Creates and returns the URIs of the resource containing the segment.
1709
1720
  * @return {!Array.<string>}
@@ -1835,6 +1846,17 @@ shaka.media.PresentationTimeline = class {
1835
1846
  * @param {!Array.<!shaka.media.SegmentReference>} references
1836
1847
  */
1837
1848
  notifySegments(references) {}
1849
+ /**
1850
+ * Lock the presentation timeline's start time. After this is called, no
1851
+ * further adjustments to presentationStartTime_ will be permitted.
1852
+ * This should be called after all Periods have been parsed, and all calls to
1853
+ * notifySegments() from the initial manifest parse have been made.
1854
+ * Without this, we can get assertion failures in SegmentIndex for certain
1855
+ * DAI content. If DAI adds ad segments to the manifest faster than
1856
+ * real-time, adjustments to presentationStartTime_ can cause availability
1857
+ * windows to jump around on updates.
1858
+ */
1859
+ lockStartTime() {}
1838
1860
  /**
1839
1861
  * Gives PresentationTimeline a Stream's minimum segment start time.
1840
1862
  * @param {number} startTime
@@ -2039,6 +2061,10 @@ shaka.media.SegmentIterator = class {
2039
2061
  * @param {number} partialSegmentIndex
2040
2062
  */
2041
2063
  constructor(segmentIndex, index, partialSegmentIndex) {}
2064
+ /**
2065
+ * @return {number}
2066
+ */
2067
+ currentPosition() {}
2042
2068
  /**
2043
2069
  * @return {shaka.media.SegmentReference}
2044
2070
  */
@@ -3709,6 +3735,16 @@ shaka.polyfill.Orientation = class {
3709
3735
  */
3710
3736
  static install() {}
3711
3737
  };
3738
+ /**
3739
+ * @summary A polyfill to implement modern, standardized EME on top of Apple's
3740
+ * prefixed EME in Safari.
3741
+ */
3742
+ shaka.polyfill.PatchedMediaKeysApple = class {
3743
+ /**
3744
+ * Installs the polyfill if needed.
3745
+ */
3746
+ static install() {}
3747
+ };
3712
3748
  /**
3713
3749
  * @summary A polyfill to stub out
3714
3750
  * {@link https://bit.ly/EmeMar15 EME draft 12 March 2015} on browsers without
@@ -3988,11 +4024,44 @@ shaka.util.FairPlayUtils = class {
3988
4024
  */
3989
4025
  static initDataTransform(initData, contentId, cert) {}
3990
4026
  /**
3991
- * SPC FairPlay request.
4027
+ * Verimatrix initDataTransform configuration.
4028
+ * @param {!Uint8Array} initData
4029
+ * @param {string} initDataType
4030
+ * @param {?shaka.extern.DrmInfo} drmInfo
4031
+ */
4032
+ static verimatrixInitDataTransform(initData, initDataType, drmInfo) {}
4033
+ /**
4034
+ * EZDRM initDataTransform configuration.
4035
+ * @param {!Uint8Array} initData
4036
+ * @param {string} initDataType
4037
+ * @param {?shaka.extern.DrmInfo} drmInfo
4038
+ */
4039
+ static ezdrmInitDataTransform(initData, initDataType, drmInfo) {}
4040
+ /**
4041
+ * Conax initDataTransform configuration.
4042
+ * @param {!Uint8Array} initData
4043
+ * @param {string} initDataType
4044
+ * @param {?shaka.extern.DrmInfo} drmInfo
4045
+ */
4046
+ static conaxInitDataTransform(initData, initDataType, drmInfo) {}
4047
+ /**
4048
+ * Verimatrix FairPlay request.
4049
+ * @param {shaka.net.NetworkingEngine.RequestType} type
4050
+ * @param {shaka.extern.Request} request
4051
+ */
4052
+ static verimatrixFairPlayRequest(type, request) {}
4053
+ /**
4054
+ * EZDRM FairPlay request.
4055
+ * @param {shaka.net.NetworkingEngine.RequestType} type
4056
+ * @param {shaka.extern.Request} request
4057
+ */
4058
+ static ezdrmFairPlayRequest(type, request) {}
4059
+ /**
4060
+ * Conax FairPlay request.
3992
4061
  * @param {shaka.net.NetworkingEngine.RequestType} type
3993
4062
  * @param {shaka.extern.Request} request
3994
4063
  */
3995
- static spcFairPlayRequest(type, request) {}
4064
+ static conaxFairPlayRequest(type, request) {}
3996
4065
  /**
3997
4066
  * Common FairPlay response transform for some DRMs providers.
3998
4067
  * @param {shaka.net.NetworkingEngine.RequestType} type