shaka-player 4.1.1 → 4.1.2

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 +31 -31
  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 +140 -136
  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 +152 -148
  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 +884 -882
  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.1.2](https://github.com/shaka-project/shaka-player/compare/v4.1.1...v4.1.2) (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)) ([dc26ed2](https://github.com/shaka-project/shaka-player/commit/dc26ed2e0e4c994684712c38b3cde4fcdbe5a974))
9
+ * Debug buffer placement ([f554d5d](https://github.com/shaka-project/shaka-player/commit/f554d5d642c695ae28f1e5724fa025231323022a))
10
+ * Fix EOS set-top box being identified as Apple. ([#4310](https://github.com/shaka-project/shaka-player/issues/4310)) ([3f24916](https://github.com/shaka-project/shaka-player/commit/3f24916b108ebdd833b626ea6cdfbdb20b244767))
11
+ * Fix getVideoPlaybackQuality in WebOS 3 ([#4316](https://github.com/shaka-project/shaka-player/issues/4316)) ([0e741d9](https://github.com/shaka-project/shaka-player/commit/0e741d95282487a699b77a521e1acf31ada732a6))
12
+ * Fix MediaCapabilities polyfill on Playstation 4 ([#4320](https://github.com/shaka-project/shaka-player/issues/4320)) ([afa2a4b](https://github.com/shaka-project/shaka-player/commit/afa2a4b3f3358dc538cc164f6eb1969100c1d491))
13
+ * Fix segment index assertions with DAI ([2ef9270](https://github.com/shaka-project/shaka-player/commit/2ef9270a95dd0de5119dc5c6fe6cc18a59202c24))
14
+ * VTT Cue Parsing On PlayStation 4 ([#4340](https://github.com/shaka-project/shaka-player/issues/4340)) ([6784d88](https://github.com/shaka-project/shaka-player/commit/6784d88d2a5ee0f3763a50e6b0b74418c2f6af41)), closes [#4321](https://github.com/shaka-project/shaka-player/issues/4321)
15
+
3
16
  ## [4.1.1](https://github.com/shaka-project/shaka-player/compare/v4.1.0...v4.1.1) (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.FakeEvent', '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
+ RESOLUTION: 'RESOLUTION',
725
+ PAUSE: 'PAUSE',
726
+ UNMUTE: 'UNMUTE',
727
+ NOT_APPLICABLE: 'NOT_APPLICABLE',
728
+ UNRECOGNIZED_LANGUAGE: 'UNRECOGNIZED_LANGUAGE',
729
+ ON: 'ON',
730
+ AD_DURATION: 'AD_DURATION',
731
+ LANGUAGE: 'LANGUAGE',
732
+ ENTER_PICTURE_IN_PICTURE: 'ENTER_PICTURE_IN_PICTURE',
733
+ ENTER_LOOP_MODE: 'ENTER_LOOP_MODE',
734
+ SKIP_AD: 'SKIP_AD',
735
+ REPLAY: 'REPLAY',
736
+ MULTIPLE_LANGUAGES: 'MULTIPLE_LANGUAGES',
724
737
  MORE_SETTINGS: 'MORE_SETTINGS',
725
738
  CAST: 'CAST',
739
+ PLAY: 'PLAY',
740
+ STATISTICS: 'STATISTICS',
741
+ PICTURE_IN_PICTURE: 'PICTURE_IN_PICTURE',
742
+ AIRPLAY: 'AIRPLAY',
726
743
  LIVE: 'LIVE',
727
- FAST_FORWARD: 'FAST_FORWARD',
728
- SEEK: 'SEEK',
729
- CAPTIONS: 'CAPTIONS',
730
- REPLAY: 'REPLAY',
731
- EXIT_FULL_SCREEN: 'EXIT_FULL_SCREEN',
732
- FULL_SCREEN: 'FULL_SCREEN',
733
- UNDETERMINED_LANGUAGE: 'UNDETERMINED_LANGUAGE',
744
+ AD_TIME: 'AD_TIME',
745
+ SUBTITLE_FORCED: 'SUBTITLE_FORCED',
734
746
  AUTO_QUALITY: 'AUTO_QUALITY',
735
- PAUSE: 'PAUSE',
736
- STATISTICS: 'STATISTICS',
737
- PLAYBACK_RATE: 'PLAYBACK_RATE',
738
- NOT_APPLICABLE: 'NOT_APPLICABLE',
739
- AD_PROGRESS: 'AD_PROGRESS',
740
- RESOLUTION: 'RESOLUTION',
747
+ UNDETERMINED_LANGUAGE: 'UNDETERMINED_LANGUAGE',
748
+ EXIT_FULL_SCREEN: 'EXIT_FULL_SCREEN',
741
749
  EXIT_LOOP_MODE: 'EXIT_LOOP_MODE',
742
- LANGUAGE: 'LANGUAGE',
743
- BACK: 'BACK',
744
- SKIP_TO_LIVE: 'SKIP_TO_LIVE',
745
- SUBTITLE_FORCED: 'SUBTITLE_FORCED',
746
- AD_TIME: 'AD_TIME',
747
- OFF: 'OFF',
748
- PLAY: 'PLAY',
749
- LOOP: 'LOOP',
750
- ENTER_PICTURE_IN_PICTURE: 'ENTER_PICTURE_IN_PICTURE',
750
+ SEEK: 'SEEK',
751
751
  REWIND: 'REWIND',
752
- AD_DURATION: 'AD_DURATION',
753
- UNMUTE: 'UNMUTE',
754
- UNRECOGNIZED_LANGUAGE: 'UNRECOGNIZED_LANGUAGE',
755
- AIRPLAY: 'AIRPLAY',
756
- SKIP_AD: 'SKIP_AD',
757
752
  MUTE: 'MUTE',
753
+ FULL_SCREEN: 'FULL_SCREEN',
754
+ OFF: 'OFF',
758
755
  VOLUME: 'VOLUME',
759
- MULTIPLE_LANGUAGES: 'MULTIPLE_LANGUAGES',
760
- ON: 'ON',
761
- PICTURE_IN_PICTURE: 'PICTURE_IN_PICTURE',
762
- ENTER_LOOP_MODE: 'ENTER_LOOP_MODE',
756
+ FAST_FORWARD: 'FAST_FORWARD',
757
+ SKIP_TO_LIVE: 'SKIP_TO_LIVE',
758
+ AD_PROGRESS: 'AD_PROGRESS',
759
+ BACK: 'BACK',
763
760
  EXIT_PICTURE_IN_PICTURE: 'EXIT_PICTURE_IN_PICTURE',
761
+ LOOP: 'LOOP',
762
+ PLAYBACK_RATE: 'PLAYBACK_RATE',
763
+ CAPTIONS: 'CAPTIONS',
764
764
  QUALITY: 'QUALITY',
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
@@ -653,6 +653,43 @@ shaka.util.Error.Code = {
653
653
  'SS_AD_MANAGER_NOT_INITIALIZED': 10003,
654
654
  'CURRENT_DAI_REQUEST_NOT_FINISHED': 10004
655
655
  };
656
+ /**
657
+ * A timer allows a single function to be executed at a later time or at
658
+ * regular intervals.
659
+ * @final
660
+ */
661
+ shaka.util.Timer = class {
662
+ /**
663
+ * Create a new timer. A timer is committed to a single callback function.
664
+ * While there is no technical reason to do this, it is far easier to
665
+ * understand and use timers when they are connected to one functional idea.
666
+ * @param {function()} onTick
667
+ */
668
+ constructor(onTick) {}
669
+ /**
670
+ * Have the timer call |onTick| now.
671
+ * @return {!shaka.util.Timer}
672
+ */
673
+ tickNow() {}
674
+ /**
675
+ * Have the timer call |onTick| after |seconds| has elapsed unless |stop| is
676
+ * called first.
677
+ * @param {number} seconds
678
+ * @return {!shaka.util.Timer}
679
+ */
680
+ tickAfter(seconds) {}
681
+ /**
682
+ * Have the timer call |onTick| every |seconds| until |stop| is called.
683
+ * @param {number} seconds
684
+ * @return {!shaka.util.Timer}
685
+ */
686
+ tickEvery(seconds) {}
687
+ /**
688
+ * Stop the timer and clear the previous behaviour. The timer is still usable
689
+ * after calling |stop|.
690
+ */
691
+ stop() {}
692
+ };
656
693
  /**
657
694
  * @namespace shaka.util.StringUtils
658
695
  * @summary A set of string utility functions.
@@ -928,43 +965,6 @@ shaka.util.LanguageUtils = class {
928
965
  */
929
966
  static findClosestLocale(target, searchSpace) {}
930
967
  };
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
968
  /**
969
969
  * @summary
970
970
  * <p>
@@ -1835,6 +1835,17 @@ shaka.media.PresentationTimeline = class {
1835
1835
  * @param {!Array.<!shaka.media.SegmentReference>} references
1836
1836
  */
1837
1837
  notifySegments(references) {}
1838
+ /**
1839
+ * Lock the presentation timeline's start time. After this is called, no
1840
+ * further adjustments to presentationStartTime_ will be permitted.
1841
+ * This should be called after all Periods have been parsed, and all calls to
1842
+ * notifySegments() from the initial manifest parse have been made.
1843
+ * Without this, we can get assertion failures in SegmentIndex for certain
1844
+ * DAI content. If DAI adds ad segments to the manifest faster than
1845
+ * real-time, adjustments to presentationStartTime_ can cause availability
1846
+ * windows to jump around on updates.
1847
+ */
1848
+ lockStartTime() {}
1838
1849
  /**
1839
1850
  * Gives PresentationTimeline a Stream's minimum segment start time.
1840
1851
  * @param {number} startTime