shaka-player 4.0.3 → 4.0.4

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 (129) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/CONTRIBUTORS +2 -0
  3. package/README.md +20 -6
  4. package/demo/index.html +0 -2
  5. package/dist/controls.css +1 -1
  6. package/dist/deps.js +3 -3
  7. package/dist/locales.js +33 -33
  8. package/dist/shaka-player.compiled.d.ts +11 -0
  9. package/dist/shaka-player.compiled.debug.d.ts +11 -0
  10. package/dist/shaka-player.compiled.debug.externs.js +48 -37
  11. package/dist/shaka-player.compiled.debug.js +141 -137
  12. package/dist/shaka-player.compiled.debug.map +4 -4
  13. package/dist/shaka-player.compiled.externs.js +48 -37
  14. package/dist/shaka-player.compiled.js +774 -772
  15. package/dist/shaka-player.compiled.map +4 -4
  16. package/dist/shaka-player.ui.d.ts +11 -0
  17. package/dist/shaka-player.ui.debug.d.ts +11 -0
  18. package/dist/shaka-player.ui.debug.externs.js +48 -37
  19. package/dist/shaka-player.ui.debug.js +153 -149
  20. package/dist/shaka-player.ui.debug.map +4 -4
  21. package/dist/shaka-player.ui.externs.js +48 -37
  22. package/dist/shaka-player.ui.js +892 -890
  23. package/dist/shaka-player.ui.map +4 -4
  24. package/docs/tutorials/upgrade.md +1 -0
  25. package/docs/tutorials/welcome.md +6 -3
  26. package/lib/dash/dash_parser.js +5 -0
  27. package/lib/hls/hls_parser.js +6 -2
  28. package/lib/media/media_source_engine.js +57 -24
  29. package/lib/media/presentation_timeline.js +24 -1
  30. package/lib/media/streaming_engine.js +3 -4
  31. package/lib/media/time_ranges_utils.js +46 -0
  32. package/lib/player.js +1 -1
  33. package/lib/polyfill/media_capabilities.js +3 -0
  34. package/lib/polyfill/videoplaybackquality.js +3 -1
  35. package/lib/util/platform.js +19 -1
  36. package/lib/util/string_utils.js +56 -14
  37. package/maintained-branches.md +15 -0
  38. package/package.json +2 -4
  39. package/test/media/drm_engine_integration.js +24 -8
  40. package/test/media/media_source_engine_integration.js +24 -10
  41. package/test/media/media_source_engine_unit.js +53 -38
  42. package/test/media/streaming_engine_unit.js +28 -27
  43. package/test/test/util/fake_media_source_engine.js +10 -9
  44. package/app-engine/README.md +0 -9
  45. package/app-engine/demo-version-index/README.md +0 -14
  46. package/app-engine/demo-version-index/app.yaml +0 -28
  47. package/app-engine/demo-version-index/generate.py +0 -164
  48. package/app-engine/demo-version-index/main.py +0 -11
  49. package/app-engine/demo-version-index/requirements.txt +0 -5
  50. package/app-engine/demo-version-index/templates/index.html +0 -114
  51. package/app-engine/shaka-player-demo/README.md +0 -18
  52. package/app-engine/shaka-player-demo/app.yaml +0 -61
  53. package/app-engine/shaka-player-demo/main.py +0 -95
  54. package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
  55. package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
  56. package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
  57. package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
  58. package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
  59. package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
  60. package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
  61. package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
  62. package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
  63. package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
  64. package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
  65. package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
  66. package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
  67. package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
  68. package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
  69. package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
  70. package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
  71. package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
  72. package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
  73. package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
  74. package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
  75. package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
  76. package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
  77. package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
  78. package/app-engine/shaka-player-demo/posters/sources.txt +0 -46
  79. package/app-engine/shaka-player-demo/posters/standard.png +0 -0
  80. package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
  81. package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
  82. package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
  83. package/app-engine/shaka-player-demo/posters.py +0 -110
  84. package/app-engine/shaka-player-demo/requirements.txt +0 -5
  85. package/app-engine/shaka-player-demo/time.txt +0 -1
  86. package/build/README.md +0 -127
  87. package/build/__init__.py +0 -0
  88. package/build/all.py +0 -150
  89. package/build/apps.py +0 -186
  90. package/build/build.py +0 -392
  91. package/build/check.py +0 -354
  92. package/build/checkversion.py +0 -84
  93. package/build/compiler.py +0 -513
  94. package/build/conformance.textproto +0 -335
  95. package/build/docker/Dockerfile +0 -20
  96. package/build/docker/docker-compose.yml +0 -10
  97. package/build/docs.py +0 -54
  98. package/build/eslint-plugin-shaka-rules/arg-comment-spacing.js +0 -72
  99. package/build/eslint-plugin-shaka-rules/index.js +0 -24
  100. package/build/eslint-plugin-shaka-rules/package.json +0 -7
  101. package/build/eslint-plugin-shaka-rules/private.js +0 -109
  102. package/build/gendeps.py +0 -71
  103. package/build/generateExterns.js +0 -867
  104. package/build/generateLocalizations.py +0 -262
  105. package/build/generateTsDefs.py +0 -137
  106. package/build/install-linux-prereqs.sh +0 -136
  107. package/build/license-header +0 -5
  108. package/build/misspellings.txt +0 -39
  109. package/build/pixelsChanged.js +0 -35
  110. package/build/shaka-lab.yaml +0 -161
  111. package/build/shakaBuildHelpers.py +0 -356
  112. package/build/stats.py +0 -816
  113. package/build/subprocessWindowsPatch.py +0 -103
  114. package/build/test.py +0 -541
  115. package/build/types/ads +0 -8
  116. package/build/types/cast +0 -6
  117. package/build/types/cea +0 -13
  118. package/build/types/complete +0 -9
  119. package/build/types/core +0 -108
  120. package/build/types/dash +0 -8
  121. package/build/types/hls +0 -9
  122. package/build/types/manifests +0 -5
  123. package/build/types/networking +0 -6
  124. package/build/types/offline +0 -22
  125. package/build/types/polyfill +0 -18
  126. package/build/types/text +0 -11
  127. package/build/types/ui +0 -39
  128. package/build/updateScreenshots.py +0 -85
  129. package/build/wrapper.template.js +0 -52
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.0.4](https://github.com/shaka-project/shaka-player/compare/v4.0.3...v4.0.4) (2022-07-14)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * Add fallback to TextDecoder and TextEncoder ([#4324](https://github.com/shaka-project/shaka-player/issues/4324)) ([92f9190](https://github.com/shaka-project/shaka-player/commit/92f91904b08a09a56558d91818924287d35a4cb0))
9
+ * Debug buffer placement ([9f8520c](https://github.com/shaka-project/shaka-player/commit/9f8520c0e5c67a4404b03a7b96cbc3163db0844c))
10
+ * Fix EOS set-top box being identified as Apple. ([#4310](https://github.com/shaka-project/shaka-player/issues/4310)) ([1d642e5](https://github.com/shaka-project/shaka-player/commit/1d642e5fb101d985c05e68c7bcabab471ef122dd))
11
+ * Fix getVideoPlaybackQuality in WebOS 3 ([#4316](https://github.com/shaka-project/shaka-player/issues/4316)) ([a1af9dd](https://github.com/shaka-project/shaka-player/commit/a1af9dd5b9ebe6b671f5fe7daa97f713f66f8cfa))
12
+ * Fix MediaCapabilities polyfill on Playstation 4 ([#4320](https://github.com/shaka-project/shaka-player/issues/4320)) ([0f20944](https://github.com/shaka-project/shaka-player/commit/0f20944f34fef2dbb7dad62cdb3129729dfefcb5))
13
+ * Fix segment index assertions with DAI ([9a8bf42](https://github.com/shaka-project/shaka-player/commit/9a8bf42928e82818909e33b056644fd740636c94))
14
+ * VTT Cue Parsing On PlayStation 4 ([#4340](https://github.com/shaka-project/shaka-player/issues/4340)) ([37dc855](https://github.com/shaka-project/shaka-player/commit/37dc855d3613b8bb8a68c1f7da1ff2e76e948ed7)), closes [#4321](https://github.com/shaka-project/shaka-player/issues/4321)
15
+
3
16
  ## [4.0.3](https://github.com/shaka-project/shaka-player/compare/v4.0.2...v4.0.3) (2022-06-14)
4
17
 
5
18
 
package/CONTRIBUTORS CHANGED
@@ -24,6 +24,7 @@
24
24
 
25
25
  Aaron Vaage <vaage@google.com>
26
26
  Adrián Gómez Llorente <adgllorente@gmail.com>
27
+ Agajan Jumakuliyev <agajan.tm@gmail.com>
27
28
  Aidan Ridley <aidan.ridley@charter.com>
28
29
  Alex Jones <alexedwardjones@gmail.com>
29
30
  Alvaro Velad Galvan <alvaro.velad@mirada.tv>
@@ -54,6 +55,7 @@ Giorgio Gamberoni <giorgio.gamberoni@gmail.com>
54
55
  Giuseppe Samela <giuseppe.samela@gmail.com>
55
56
  Hichem Taoufik <hichem@code-it.fr>
56
57
  Itay Kinnrot <itay.kinnrot@kaltura.com>
58
+ Isaac Ramirez <isaac.ramirez.herrera@gmail.com>
57
59
  Jacob Trimble <modmaker@google.com>
58
60
  Jason Palmer <jason@jason-palmer.com>
59
61
  Jeffrey Swan <jeffdswan@gmail.com>
package/README.md CHANGED
@@ -24,6 +24,12 @@ For details on what's coming next, see our [development roadmap](roadmap.md).
24
24
  [offline storage and playback]: https://shaka-player-demo.appspot.com/docs/api/tutorial-offline.html
25
25
 
26
26
 
27
+ ## Maintained branches
28
+
29
+ See [maintained-branches.md](https://github.com/shaka-project/shaka-player/blob/main/maintained-branches.md)
30
+ for the up-to-date list of maintained branches of Shaka Player.
31
+
32
+
27
33
  ## Platform and browser support matrix
28
34
 
29
35
  |Browser |Windows |Mac |Linux |Android |iOS >= 13 |ChromeOS|Other|
@@ -39,6 +45,8 @@ For details on what's coming next, see our [development roadmap](roadmap.md).
39
45
  |Tizen TV³ | - | - | - | - | - | - |**Y**|
40
46
  |WebOS⁶ | - | - | - | - | - | - |**Y**|
41
47
  |Xbox One | - | - | - | - | - | - |**Y**|
48
+ |Playstation 4⁷| - | - | - | - | - | - |**Y**|
49
+ |Playstation 5⁷| - | - | - | - | - | - |**Y**|
42
50
 
43
51
  NOTES:
44
52
  - ¹: On macOS, only Safari 13+ is supported. On iOS, only iOS 13+ is
@@ -53,6 +61,8 @@ NOTES:
53
61
  us.
54
62
  - Official support for LG WebOS TV:
55
63
  https://github.com/shaka-project/shaka-player/issues/1330
64
+ - ⁷: These are expected to work, but are community-supported and untested by
65
+ us.
56
66
 
57
67
  We support iOS 13+ through Apple's native HLS player. We provide the same
58
68
  top-level API, but we just set the video's `src` element to the manifest/media.
@@ -119,7 +129,7 @@ HLS features supported:
119
129
  - Low-latency streaming with partial segments, preload hints, and delta updates
120
130
  - Discontinuity
121
131
  - ISO-BMFF / MP4 / CMAF support
122
- - MPEG-2 TS support (transmuxing provided by [mux.js][] v6.1.0+, must be
132
+ - MPEG-2 TS support (transmuxing provided by [mux.js][] v6.2.0+, must be
123
133
  separately included)
124
134
  - WebVTT and TTML
125
135
  - CEA-608/708 captions
@@ -149,6 +159,8 @@ HLS features **not** supported:
149
159
  |Tizen TV |**Y** |**Y** | - |untested⁵ |
150
160
  |WebOS⁷ |untested⁷ |untested⁷| - |untested⁷ |
151
161
  |Xbox One | - |**Y** | - | - |
162
+ |Playstation 4⁷| - |untested⁷| - |untested⁷ |
163
+ |Playstation 5⁷| - |untested⁷| - |untested⁷ |
152
164
 
153
165
  Other DRM systems should work out of the box if they are interoperable and
154
166
  compliant to the EME spec.
@@ -191,7 +203,7 @@ Shaka Player supports:
191
203
  SegmentTemplate@index
192
204
  - Not supported in HLS
193
205
  - MPEG-2 TS
194
- - With help from [mux.js][] v6.1.0+, can be played on any browser which
206
+ - With help from [mux.js][] v6.2.0+, can be played on any browser which
195
207
  supports MP4
196
208
  - Can find and parse timestamps to find segment start time in HLS
197
209
  - WebVTT
@@ -200,10 +212,10 @@ Shaka Player supports:
200
212
  - Supported in both XML form and embedded in MP4
201
213
  - CEA-608
202
214
  - Supported embedded in MP4
203
- - With help from [mux.js][] v6.1.0+, supported embedded in TS
215
+ - With help from [mux.js][] v6.2.0+, supported embedded in TS
204
216
  - CEA-708
205
217
  - Supported embedded in MP4
206
- - With help from [mux.js][] v6.1.0+, supported embedded in TS
218
+ - With help from [mux.js][] v6.2.0+, supported embedded in TS
207
219
  - SubRip (SRT)
208
220
  - UTF-8 encoding only
209
221
  - LyRiCs (LRC)
@@ -231,8 +243,10 @@ attributes.
231
243
  * [Hosted builds on jsDelivr](https://www.jsdelivr.com/package/npm/shaka-player)
232
244
  * [Development roadmap](roadmap.md)
233
245
  * [Announcement list](https://groups.google.com/forum/#!forum/shaka-player-users)
234
- ([join](docs/announcement-list-join-group.png) for release and survey
235
- announcements)
246
+ ([join](docs/announcement-list-join-group.png) for infrequent
247
+ announcements and surveys)
248
+ * Subscribe to releases by following
249
+ [instructions from this blog](https://www.jessesquires.com/blog/2020/07/30/github-tip-watching-releases/)
236
250
 
237
251
 
238
252
  ## FAQ ##
package/demo/index.html CHANGED
@@ -50,8 +50,6 @@
50
50
  <script defer src="../node_modules/tippy.js/umd/index.min.js"></script>
51
51
  <!-- Improved PWA capability on mobile Safari is enabled by loading pwacompat: -->
52
52
  <script defer src="../node_modules/pwacompat/pwacompat.min.js"></script>
53
- <!-- TextDecoder polyfill, required for legacy Edge. -->
54
- <script defer src="../node_modules/fastestsmallesttextencoderdecoder/EncoderDecoderTogether.min.js"></script>
55
53
 
56
54
  <!-- Include IMA SDK to enable client-side ad insertion: -->
57
55
  <script type="text/javascript" src="https://imasdk.googleapis.com/js/sdkloader/ima3.js"></script>
package/dist/controls.css CHANGED
@@ -51,4 +51,4 @@
51
51
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
52
52
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
53
53
  * SOFTWARE.
54
- */.shaka-tooltips-on{overflow:visible}.shaka-tooltips-on>[class*=shaka-tooltip]{position:relative}.shaka-tooltips-on>[class*=shaka-tooltip]:active:after,.shaka-tooltips-on>[class*=shaka-tooltip]:focus-visible:after,.shaka-tooltips-on>[class*=shaka-tooltip]:hover:after{content:attr(aria-label);font-family:Roboto-Regular,Roboto,sans-serif;line-height:calc(32px / 2);white-space:nowrap;font-size:13px;background:rgba(35 35 35 / 90%);color:#fff;border-radius:3px;padding:5px 10px;position:absolute;bottom:calc(32px + 5px);left:calc(32px / 2);-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}.shaka-tooltips-on>.shaka-tooltip-status:active:after,.shaka-tooltips-on>.shaka-tooltip-status:focus-visible:after,.shaka-tooltips-on>.shaka-tooltip-status:hover:after{content:attr(aria-label) " (" attr(shaka-status) ")"}.shaka-tooltips-on button:first-child:active:after,.shaka-tooltips-on button:first-child:focus-visible:after,.shaka-tooltips-on button:first-child:hover:after{left:0;-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);-o-transform:translateX(0);transform:translateX(0)}.shaka-tooltips-on button:last-child:active:after,.shaka-tooltips-on button:last-child:focus-visible:after,.shaka-tooltips-on button:last-child:hover:after{left:32px;-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);-ms-transform:translateX(-100%);-o-transform:translateX(-100%);transform:translateX(-100%)}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4mxP.ttf) format('truetype')}@font-face{font-family:'Material Icons Round';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialiconsround/v104/LDItaoyNOAY6Uewc665JcIzCKsKc_M9flwmM.otf) format('opentype')}.material-icons-round{font-family:'Material Icons Round';font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr}/*# sourceMappingURL=controls.css.map */
54
+ */.shaka-tooltips-on{overflow:visible}.shaka-tooltips-on>[class*=shaka-tooltip]{position:relative}.shaka-tooltips-on>[class*=shaka-tooltip]:active:after,.shaka-tooltips-on>[class*=shaka-tooltip]:focus-visible:after,.shaka-tooltips-on>[class*=shaka-tooltip]:hover:after{content:attr(aria-label);font-family:Roboto-Regular,Roboto,sans-serif;line-height:calc(32px / 2);white-space:nowrap;font-size:13px;background:rgba(35 35 35 / 90%);color:#fff;border-radius:3px;padding:5px 10px;position:absolute;bottom:calc(32px + 5px);left:calc(32px / 2);-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}.shaka-tooltips-on>.shaka-tooltip-status:active:after,.shaka-tooltips-on>.shaka-tooltip-status:focus-visible:after,.shaka-tooltips-on>.shaka-tooltip-status:hover:after{content:attr(aria-label) " (" attr(shaka-status) ")"}.shaka-tooltips-on button:first-child:active:after,.shaka-tooltips-on button:first-child:focus-visible:after,.shaka-tooltips-on button:first-child:hover:after{left:0;-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);-o-transform:translateX(0);transform:translateX(0)}.shaka-tooltips-on button:last-child:active:after,.shaka-tooltips-on button:last-child:focus-visible:after,.shaka-tooltips-on button:last-child:hover:after{left:32px;-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);-ms-transform:translateX(-100%);-o-transform:translateX(-100%);transform:translateX(-100%)}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4mxP.ttf) format('truetype')}@font-face{font-family:'Material Icons Round';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialiconsround/v105/LDItaoyNOAY6Uewc665JcIzCKsKc_M9flwmM.otf) format('opentype')}.material-icons-round{font-family:'Material Icons Round';font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr}/*# sourceMappingURL=controls.css.map */
package/dist/deps.js CHANGED
@@ -65,7 +65,7 @@ goog.addDependency('../../../../lib/media/content_workarounds.js', ['shaka.media
65
65
  goog.addDependency('../../../../lib/media/drm_engine.js', ['shaka.media.DrmEngine'], ['goog.asserts', 'shaka.log', 'shaka.media.Transmuxer', 'shaka.net.NetworkingEngine', 'shaka.util.BufferUtils', 'shaka.util.Destroyer', 'shaka.util.Error', 'shaka.util.EventManager', 'shaka.util.FakeEvent', 'shaka.util.IDestroyable', 'shaka.util.Iterables', 'shaka.util.Lazy', 'shaka.util.MapUtils', 'shaka.util.MimeUtils', 'shaka.util.Platform', 'shaka.util.PublicPromise', 'shaka.util.StreamUtils', 'shaka.util.StringUtils', 'shaka.util.Timer', 'shaka.util.Uint8ArrayUtils'], {'lang': 'es8'});
66
66
  goog.addDependency('../../../../lib/media/gap_jumping_controller.js', ['shaka.media.GapJumpingController'], ['shaka.log', 'shaka.media.PresentationTimeline', 'shaka.media.StallDetector', 'shaka.media.TimeRangesUtils', 'shaka.util.EventManager', 'shaka.util.IReleasable', 'shaka.util.Timer'], {'lang': 'es6'});
67
67
  goog.addDependency('../../../../lib/media/manifest_parser.js', ['shaka.media.ManifestParser'], ['goog.Uri', 'shaka.log', 'shaka.net.NetworkingEngine', 'shaka.util.Error', 'shaka.util.Platform'], {'lang': 'es8'});
68
- goog.addDependency('../../../../lib/media/media_source_engine.js', ['shaka.media.MediaSourceEngine'], ['goog.asserts', 'shaka.log', 'shaka.media.ContentWorkarounds', 'shaka.media.IClosedCaptionParser', 'shaka.media.TimeRangesUtils', 'shaka.media.Transmuxer', 'shaka.text.TextEngine', 'shaka.util.Destroyer', 'shaka.util.Error', 'shaka.util.EventManager', 'shaka.util.Functional', 'shaka.util.IDestroyable', 'shaka.util.ManifestParserUtils', 'shaka.util.MimeUtils', 'shaka.util.Platform', 'shaka.util.PublicPromise'], {'lang': 'es8'});
68
+ goog.addDependency('../../../../lib/media/media_source_engine.js', ['shaka.media.MediaSourceEngine'], ['goog.asserts', 'shaka.log', 'shaka.media.ContentWorkarounds', 'shaka.media.IClosedCaptionParser', 'shaka.media.SegmentReference', 'shaka.media.TimeRangesUtils', 'shaka.media.Transmuxer', 'shaka.text.TextEngine', 'shaka.util.Destroyer', 'shaka.util.Error', 'shaka.util.EventManager', 'shaka.util.Functional', 'shaka.util.IDestroyable', 'shaka.util.ManifestParserUtils', 'shaka.util.MimeUtils', 'shaka.util.Platform', 'shaka.util.PublicPromise'], {'lang': 'es8'});
69
69
  goog.addDependency('../../../../lib/media/mp4_segment_index_parser.js', ['shaka.media.Mp4SegmentIndexParser'], ['goog.asserts', 'shaka.log', 'shaka.media.InitSegmentReference', 'shaka.media.SegmentReference', 'shaka.util.Error', 'shaka.util.Mp4Parser'], {'lang': 'es6'});
70
70
  goog.addDependency('../../../../lib/media/play_rate_controller.js', ['shaka.media.PlayRateController'], ['goog.asserts', 'shaka.log', 'shaka.util.IReleasable', 'shaka.util.Timer'], {'lang': 'es6'});
71
71
  goog.addDependency('../../../../lib/media/playhead.js', ['shaka.media.MediaSourcePlayhead', 'shaka.media.Playhead', 'shaka.media.SrcEqualsPlayhead'], ['goog.asserts', 'shaka.log', 'shaka.media.GapJumpingController', 'shaka.media.StallDetector', 'shaka.media.StallDetector.MediaElementImplementation', 'shaka.media.TimeRangesUtils', 'shaka.media.VideoWrapper', 'shaka.util.EventManager', 'shaka.util.IReleasable', 'shaka.util.MediaReadyState', 'shaka.util.Timer'], {'lang': 'es6'});
@@ -123,7 +123,7 @@ goog.addDependency('../../../../lib/polyfill/random_uuid.js', ['shaka.polyfill.R
123
123
  goog.addDependency('../../../../lib/polyfill/storage_estimate.js', ['shaka.polyfill.StorageEstimate'], ['shaka.polyfill'], {'lang': 'es8'});
124
124
  goog.addDependency('../../../../lib/polyfill/symbol.js', ['shaka.polyfill.Symbol'], ['shaka.log', 'shaka.polyfill'], {'lang': 'es6'});
125
125
  goog.addDependency('../../../../lib/polyfill/video_play_promise.js', ['shaka.polyfill.VideoPlayPromise'], ['shaka.log', 'shaka.polyfill'], {'lang': 'es6'});
126
- goog.addDependency('../../../../lib/polyfill/videoplaybackquality.js', ['shaka.polyfill.VideoPlaybackQuality'], ['shaka.polyfill'], {'lang': 'es6'});
126
+ goog.addDependency('../../../../lib/polyfill/videoplaybackquality.js', ['shaka.polyfill.VideoPlaybackQuality'], ['shaka.polyfill', 'shaka.util.Platform'], {'lang': 'es6'});
127
127
  goog.addDependency('../../../../lib/polyfill/vttcue.js', ['shaka.polyfill.VTTCue'], ['shaka.log', 'shaka.polyfill'], {'lang': 'es6'});
128
128
  goog.addDependency('../../../../lib/routing/node.js', ['shaka.routing.Node'], []);
129
129
  goog.addDependency('../../../../lib/routing/payload.js', ['shaka.routing.Payload'], []);
@@ -180,7 +180,7 @@ goog.addDependency('../../../../lib/util/public_promise.js', ['shaka.util.Public
180
180
  goog.addDependency('../../../../lib/util/state_history.js', ['shaka.util.StateHistory'], ['goog.asserts', 'shaka.log'], {'lang': 'es6'});
181
181
  goog.addDependency('../../../../lib/util/stats.js', ['shaka.util.Stats'], ['shaka.util.StateHistory', 'shaka.util.SwitchHistory'], {'lang': 'es6'});
182
182
  goog.addDependency('../../../../lib/util/stream_utils.js', ['shaka.util.StreamUtils'], ['goog.asserts', 'shaka.log', 'shaka.text.TextEngine', 'shaka.util.Functional', 'shaka.util.LanguageUtils', 'shaka.util.ManifestParserUtils', 'shaka.util.MimeUtils', 'shaka.util.MultiMap', 'shaka.util.Platform'], {'lang': 'es8'});
183
- goog.addDependency('../../../../lib/util/string_utils.js', ['shaka.util.StringUtils'], ['goog.asserts', 'shaka.log', 'shaka.util.BufferUtils', 'shaka.util.Error', 'shaka.util.Lazy'], {'lang': 'es6'});
183
+ goog.addDependency('../../../../lib/util/string_utils.js', ['shaka.util.StringUtils'], ['goog.asserts', 'shaka.log', 'shaka.util.BufferUtils', 'shaka.util.Error', 'shaka.util.Lazy', 'shaka.util.Platform'], {'lang': 'es6'});
184
184
  goog.addDependency('../../../../lib/util/switch_history.js', ['shaka.util.SwitchHistory'], [], {'lang': 'es6'});
185
185
  goog.addDependency('../../../../lib/util/text_parser.js', ['shaka.util.TextParser'], ['goog.asserts'], {'lang': 'es6'});
186
186
  goog.addDependency('../../../../lib/util/timer.js', ['shaka.util.Timer'], ['shaka.util.DelayedTick'], {'lang': 'es6'});
package/dist/locales.js CHANGED
@@ -721,45 +721,45 @@ shaka.ui.Locales.addTo = function(localization) {
721
721
  * @const
722
722
  */
723
723
  shaka.ui.Locales.Ids = {
724
- BACK: 'BACK',
725
- FAST_FORWARD: 'FAST_FORWARD',
726
- QUALITY: 'QUALITY',
727
- CAST: 'CAST',
728
- PLAY: 'PLAY',
729
- ENTER_PICTURE_IN_PICTURE: 'ENTER_PICTURE_IN_PICTURE',
730
- OFF: 'OFF',
731
- RESOLUTION: 'RESOLUTION',
732
- UNMUTE: 'UNMUTE',
733
- AD_DURATION: 'AD_DURATION',
734
- STATISTICS: 'STATISTICS',
735
- CAPTIONS: 'CAPTIONS',
736
- UNDETERMINED_LANGUAGE: 'UNDETERMINED_LANGUAGE',
737
- REPLAY: 'REPLAY',
738
- FULL_SCREEN: 'FULL_SCREEN',
724
+ UNRECOGNIZED_LANGUAGE: 'UNRECOGNIZED_LANGUAGE',
725
+ PICTURE_IN_PICTURE: 'PICTURE_IN_PICTURE',
726
+ EXIT_LOOP_MODE: 'EXIT_LOOP_MODE',
727
+ LIVE: 'LIVE',
739
728
  EXIT_FULL_SCREEN: 'EXIT_FULL_SCREEN',
740
- SEEK: 'SEEK',
729
+ ENTER_PICTURE_IN_PICTURE: 'ENTER_PICTURE_IN_PICTURE',
741
730
  VOLUME: 'VOLUME',
742
- MULTIPLE_LANGUAGES: 'MULTIPLE_LANGUAGES',
743
- SKIP_TO_LIVE: 'SKIP_TO_LIVE',
744
- EXIT_LOOP_MODE: 'EXIT_LOOP_MODE',
745
- MUTE: 'MUTE',
731
+ SEEK: 'SEEK',
732
+ CAST: 'CAST',
733
+ MORE_SETTINGS: 'MORE_SETTINGS',
746
734
  LOOP: 'LOOP',
747
735
  ON: 'ON',
748
- REWIND: 'REWIND',
749
- PLAYBACK_RATE: 'PLAYBACK_RATE',
750
- ENTER_LOOP_MODE: 'ENTER_LOOP_MODE',
751
- PICTURE_IN_PICTURE: 'PICTURE_IN_PICTURE',
752
- AD_TIME: 'AD_TIME',
753
- AD_PROGRESS: 'AD_PROGRESS',
754
- AUTO_QUALITY: 'AUTO_QUALITY',
736
+ REPLAY: 'REPLAY',
737
+ SKIP_AD: 'SKIP_AD',
755
738
  AIRPLAY: 'AIRPLAY',
739
+ LANGUAGE: 'LANGUAGE',
740
+ NOT_APPLICABLE: 'NOT_APPLICABLE',
756
741
  SUBTITLE_FORCED: 'SUBTITLE_FORCED',
742
+ AD_TIME: 'AD_TIME',
743
+ REWIND: 'REWIND',
744
+ MUTE: 'MUTE',
745
+ AUTO_QUALITY: 'AUTO_QUALITY',
757
746
  PAUSE: 'PAUSE',
747
+ OFF: 'OFF',
748
+ PLAYBACK_RATE: 'PLAYBACK_RATE',
749
+ MULTIPLE_LANGUAGES: 'MULTIPLE_LANGUAGES',
750
+ PLAY: 'PLAY',
751
+ UNMUTE: 'UNMUTE',
752
+ STATISTICS: 'STATISTICS',
753
+ ENTER_LOOP_MODE: 'ENTER_LOOP_MODE',
754
+ CAPTIONS: 'CAPTIONS',
755
+ FAST_FORWARD: 'FAST_FORWARD',
758
756
  EXIT_PICTURE_IN_PICTURE: 'EXIT_PICTURE_IN_PICTURE',
759
- SKIP_AD: 'SKIP_AD',
760
- UNRECOGNIZED_LANGUAGE: 'UNRECOGNIZED_LANGUAGE',
761
- MORE_SETTINGS: 'MORE_SETTINGS',
762
- LANGUAGE: 'LANGUAGE',
763
- NOT_APPLICABLE: 'NOT_APPLICABLE',
764
- LIVE: 'LIVE',
757
+ FULL_SCREEN: 'FULL_SCREEN',
758
+ BACK: 'BACK',
759
+ RESOLUTION: 'RESOLUTION',
760
+ AD_DURATION: 'AD_DURATION',
761
+ AD_PROGRESS: 'AD_PROGRESS',
762
+ UNDETERMINED_LANGUAGE: 'UNDETERMINED_LANGUAGE',
763
+ QUALITY: 'QUALITY',
764
+ SKIP_TO_LIVE: 'SKIP_TO_LIVE',
765
765
  };
@@ -923,6 +923,17 @@ declare namespace shaka.media {
923
923
  getSegmentAvailabilityStart ( ) : number ;
924
924
  isInProgress ( ) : boolean ;
925
925
  isLive ( ) : boolean ;
926
+ /**
927
+ * Lock the presentation timeline's start time. After this is called, no
928
+ * further adjustments to presentationStartTime_ will be permitted.
929
+ * This should be called after all Periods have been parsed, and all calls to
930
+ * notifySegments() from the initial manifest parse have been made.
931
+ * Without this, we can get assertion failures in SegmentIndex for certain
932
+ * DAI content. If DAI adds ad segments to the manifest faster than
933
+ * real-time, adjustments to presentationStartTime_ can cause availability
934
+ * windows to jump around on updates.
935
+ */
936
+ lockStartTime ( ) : any ;
926
937
  /**
927
938
  * Gives PresentationTimeline a Stream's maximum segment duration so it can
928
939
  * size and position the segment availability window. This function should be
@@ -923,6 +923,17 @@ declare namespace shaka.media {
923
923
  getSegmentAvailabilityStart ( ) : number ;
924
924
  isInProgress ( ) : boolean ;
925
925
  isLive ( ) : boolean ;
926
+ /**
927
+ * Lock the presentation timeline's start time. After this is called, no
928
+ * further adjustments to presentationStartTime_ will be permitted.
929
+ * This should be called after all Periods have been parsed, and all calls to
930
+ * notifySegments() from the initial manifest parse have been made.
931
+ * Without this, we can get assertion failures in SegmentIndex for certain
932
+ * DAI content. If DAI adds ad segments to the manifest faster than
933
+ * real-time, adjustments to presentationStartTime_ can cause availability
934
+ * windows to jump around on updates.
935
+ */
936
+ lockStartTime ( ) : any ;
926
937
  /**
927
938
  * Gives PresentationTimeline a Stream's maximum segment duration so it can
928
939
  * size and position the segment availability window. This function should be
@@ -648,6 +648,43 @@ shaka.util.Error.Code = {
648
648
  'SS_AD_MANAGER_NOT_INITIALIZED': 10003,
649
649
  'CURRENT_DAI_REQUEST_NOT_FINISHED': 10004
650
650
  };
651
+ /**
652
+ * A timer allows a single function to be executed at a later time or at
653
+ * regular intervals.
654
+ * @final
655
+ */
656
+ shaka.util.Timer = class {
657
+ /**
658
+ * Create a new timer. A timer is committed to a single callback function.
659
+ * While there is no technical reason to do this, it is far easier to
660
+ * understand and use timers when they are connected to one functional idea.
661
+ * @param {function()} onTick
662
+ */
663
+ constructor(onTick) {}
664
+ /**
665
+ * Have the timer call |onTick| now.
666
+ * @return {!shaka.util.Timer}
667
+ */
668
+ tickNow() {}
669
+ /**
670
+ * Have the timer call |onTick| after |seconds| has elapsed unless |stop| is
671
+ * called first.
672
+ * @param {number} seconds
673
+ * @return {!shaka.util.Timer}
674
+ */
675
+ tickAfter(seconds) {}
676
+ /**
677
+ * Have the timer call |onTick| every |seconds| until |stop| is called.
678
+ * @param {number} seconds
679
+ * @return {!shaka.util.Timer}
680
+ */
681
+ tickEvery(seconds) {}
682
+ /**
683
+ * Stop the timer and clear the previous behaviour. The timer is still usable
684
+ * after calling |stop|.
685
+ */
686
+ stop() {}
687
+ };
651
688
  /**
652
689
  * @namespace shaka.util.StringUtils
653
690
  * @summary A set of string utility functions.
@@ -923,43 +960,6 @@ shaka.util.LanguageUtils = class {
923
960
  */
924
961
  static findClosestLocale(target, searchSpace) {}
925
962
  };
926
- /**
927
- * A timer allows a single function to be executed at a later time or at
928
- * regular intervals.
929
- * @final
930
- */
931
- shaka.util.Timer = class {
932
- /**
933
- * Create a new timer. A timer is committed to a single callback function.
934
- * While there is no technical reason to do this, it is far easier to
935
- * understand and use timers when they are connected to one functional idea.
936
- * @param {function()} onTick
937
- */
938
- constructor(onTick) {}
939
- /**
940
- * Have the timer call |onTick| now.
941
- * @return {!shaka.util.Timer}
942
- */
943
- tickNow() {}
944
- /**
945
- * Have the timer call |onTick| after |seconds| has elapsed unless |stop| is
946
- * called first.
947
- * @param {number} seconds
948
- * @return {!shaka.util.Timer}
949
- */
950
- tickAfter(seconds) {}
951
- /**
952
- * Have the timer call |onTick| every |seconds| until |stop| is called.
953
- * @param {number} seconds
954
- * @return {!shaka.util.Timer}
955
- */
956
- tickEvery(seconds) {}
957
- /**
958
- * Stop the timer and clear the previous behaviour. The timer is still usable
959
- * after calling |stop|.
960
- */
961
- stop() {}
962
- };
963
963
  /**
964
964
  * @summary
965
965
  * <p>
@@ -1830,6 +1830,17 @@ shaka.media.PresentationTimeline = class {
1830
1830
  * @param {!Array.<!shaka.media.SegmentReference>} references
1831
1831
  */
1832
1832
  notifySegments(references) {}
1833
+ /**
1834
+ * Lock the presentation timeline's start time. After this is called, no
1835
+ * further adjustments to presentationStartTime_ will be permitted.
1836
+ * This should be called after all Periods have been parsed, and all calls to
1837
+ * notifySegments() from the initial manifest parse have been made.
1838
+ * Without this, we can get assertion failures in SegmentIndex for certain
1839
+ * DAI content. If DAI adds ad segments to the manifest faster than
1840
+ * real-time, adjustments to presentationStartTime_ can cause availability
1841
+ * windows to jump around on updates.
1842
+ */
1843
+ lockStartTime() {}
1833
1844
  /**
1834
1845
  * Gives PresentationTimeline a Stream's minimum segment start time.
1835
1846
  * @param {number} startTime