shaka-player 3.2.2 → 3.3.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 (188) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +1 -1
  3. package/.github/ISSUE_TEMPLATE/question.md +1 -1
  4. package/.github/workflows/build_and_test.yaml +73 -0
  5. package/.github/workflows/release.yaml +53 -0
  6. package/AUTHORS +6 -5
  7. package/CHANGELOG.md +314 -1
  8. package/CONTRIBUTORS +4 -2
  9. package/build/checkversion.py +1 -1
  10. package/build/conformance.textproto +183 -169
  11. package/build/test.py +6 -0
  12. package/build/types/core +3 -0
  13. package/build/types/offline +1 -0
  14. package/build/types/polyfill +1 -0
  15. package/build/types/ui +2 -0
  16. package/demo/common/assets.js +18 -0
  17. package/demo/common/message_ids.js +13 -1
  18. package/demo/config.js +31 -1
  19. package/demo/index.html +1 -1
  20. package/demo/locales/en.json +12 -0
  21. package/demo/locales/source.json +48 -0
  22. package/dist/controls.css +26 -2
  23. package/dist/controls.css.map +1 -1
  24. package/dist/demo.compiled.debug.js +19 -16
  25. package/dist/demo.compiled.debug.map +3 -3
  26. package/dist/demo.compiled.js +19 -16
  27. package/dist/demo.compiled.map +3 -3
  28. package/dist/deps.js +21 -14
  29. package/dist/locales.js +31 -29
  30. package/dist/receiver.compiled.debug.js +11 -9
  31. package/dist/receiver.compiled.debug.map +3 -3
  32. package/dist/receiver.compiled.js +11 -9
  33. package/dist/receiver.compiled.map +3 -3
  34. package/dist/shaka-player.compiled.d.ts +232 -18
  35. package/dist/shaka-player.compiled.debug.d.ts +232 -18
  36. package/dist/shaka-player.compiled.debug.externs.js +293 -17
  37. package/dist/shaka-player.compiled.debug.js +481 -422
  38. package/dist/shaka-player.compiled.debug.map +4 -4
  39. package/dist/shaka-player.compiled.externs.js +293 -17
  40. package/dist/shaka-player.compiled.js +846 -817
  41. package/dist/shaka-player.compiled.map +4 -4
  42. package/dist/shaka-player.ui.d.ts +250 -30
  43. package/dist/shaka-player.ui.debug.d.ts +250 -30
  44. package/dist/shaka-player.ui.debug.externs.js +322 -28
  45. package/dist/shaka-player.ui.debug.js +630 -553
  46. package/dist/shaka-player.ui.debug.map +4 -4
  47. package/dist/shaka-player.ui.externs.js +322 -28
  48. package/dist/shaka-player.ui.js +1048 -1006
  49. package/dist/shaka-player.ui.map +4 -4
  50. package/docs/design/bg-fetch-after.gv +29 -0
  51. package/docs/design/bg-fetch-after.gv.png +0 -0
  52. package/docs/design/bg-fetch-before.gv +18 -0
  53. package/docs/design/bg-fetch-before.gv.png +0 -0
  54. package/docs/design/bg-fetch.md +134 -0
  55. package/docs/tutorials/blob-url.md +15 -0
  56. package/docs/tutorials/index.json +1 -0
  57. package/docs/tutorials/ui-customization.md +66 -0
  58. package/docs/tutorials/ui.md +5 -5
  59. package/externs/cmcd.js +186 -0
  60. package/externs/ima.js +3 -0
  61. package/externs/shaka/ads.js +5 -0
  62. package/externs/shaka/manifest.js +12 -1
  63. package/externs/shaka/manifest_parser.js +10 -1
  64. package/externs/shaka/net.js +20 -4
  65. package/externs/shaka/offline.js +31 -2
  66. package/externs/shaka/player.js +138 -5
  67. package/externs/shaka/text.js +24 -0
  68. package/externs/webcrypto.js +18 -0
  69. package/karma.conf.js +19 -15
  70. package/lib/abr/ewma.js +14 -0
  71. package/lib/abr/ewma_bandwidth_estimator.js +16 -2
  72. package/lib/abr/simple_abr_manager.js +6 -0
  73. package/lib/ads/ad_manager.js +1 -0
  74. package/lib/ads/client_side_ad.js +8 -0
  75. package/lib/ads/client_side_ad_manager.js +8 -4
  76. package/lib/ads/server_side_ad.js +7 -0
  77. package/lib/cast/cast_proxy.js +3 -0
  78. package/lib/cast/cast_receiver.js +3 -0
  79. package/lib/cast/cast_utils.js +1 -0
  80. package/lib/dash/dash_parser.js +79 -33
  81. package/lib/dash/segment_base.js +25 -1
  82. package/lib/dash/segment_list.js +18 -9
  83. package/lib/dash/segment_template.js +23 -10
  84. package/lib/hls/hls_parser.js +116 -23
  85. package/lib/hls/manifest_text_parser.js +1 -0
  86. package/lib/media/quality_observer.js +274 -0
  87. package/lib/media/region_observer.js +39 -33
  88. package/lib/media/region_timeline.js +17 -19
  89. package/lib/media/segment_index.js +8 -1
  90. package/lib/media/segment_reference.js +37 -4
  91. package/lib/media/streaming_engine.js +47 -6
  92. package/lib/net/http_fetch_plugin.js +31 -11
  93. package/lib/net/http_plugin_utils.js +1 -0
  94. package/lib/net/http_xhr_plugin.js +40 -14
  95. package/lib/net/networking_engine.js +85 -18
  96. package/lib/offline/download_info.js +68 -0
  97. package/lib/offline/download_manager.js +13 -5
  98. package/lib/offline/indexeddb/base_storage_cell.js +35 -0
  99. package/lib/offline/indexeddb/storage_mechanism.js +1 -1
  100. package/lib/offline/indexeddb/v5_storage_cell.js +5 -0
  101. package/lib/offline/storage.js +401 -293
  102. package/lib/offline/stored_content_utils.js +2 -0
  103. package/lib/player.js +254 -27
  104. package/lib/polyfill/media_capabilities.js +30 -15
  105. package/lib/polyfill/random_uuid.js +52 -0
  106. package/lib/text/cue.js +18 -0
  107. package/lib/text/ttml_text_parser.js +109 -60
  108. package/lib/text/ui_text_displayer.js +19 -13
  109. package/lib/util/cmcd_manager.js +672 -0
  110. package/lib/util/error.js +6 -0
  111. package/lib/util/fake_event_target.js +21 -1
  112. package/lib/util/language_utils.js +12 -0
  113. package/lib/util/mutex.js +52 -0
  114. package/lib/util/periods.js +98 -64
  115. package/lib/util/player_configuration.js +18 -0
  116. package/lib/util/stream_utils.js +86 -10
  117. package/lib/util/xml_utils.js +19 -0
  118. package/package.json +3 -6
  119. package/shaka-player.uncompiled.js +3 -0
  120. package/test/dash/dash_parser_content_protection_unit.js +2 -0
  121. package/test/dash/dash_parser_live_unit.js +144 -1
  122. package/test/dash/dash_parser_manifest_unit.js +37 -2
  123. package/test/dash/dash_parser_segment_base_unit.js +2 -0
  124. package/test/dash/dash_parser_segment_list_unit.js +2 -1
  125. package/test/dash/dash_parser_segment_template_unit.js +2 -1
  126. package/test/hls/hls_live_unit.js +2 -0
  127. package/test/hls/hls_parser_unit.js +76 -0
  128. package/test/media/drm_engine_unit.js +3 -3
  129. package/test/media/quality_observer_unit.js +142 -0
  130. package/test/media/region_observer_unit.js +40 -5
  131. package/test/media/region_timeline_unit.js +40 -22
  132. package/test/media/segment_reference_unit.js +16 -1
  133. package/test/media/streaming_engine_integration.js +4 -2
  134. package/test/media/streaming_engine_unit.js +147 -0
  135. package/test/net/http_plugin_unit.js +20 -15
  136. package/test/offline/storage_integration.js +108 -4
  137. package/test/player_integration.js +140 -8
  138. package/test/player_src_equals_integration.js +41 -8
  139. package/test/player_unit.js +19 -9
  140. package/test/test/assets/chapters.vtt +2 -2
  141. package/test/test/assets/chapters2.vtt +10 -0
  142. package/test/test/util/dash_parser_util.js +4 -0
  143. package/test/test/util/fake_ad.js +7 -0
  144. package/test/test/util/fake_drm_engine.js +9 -2
  145. package/test/test/util/manifest_generator.js +3 -2
  146. package/test/test/util/test_scheme.js +14 -1
  147. package/test/test/util/ttml_utils.js +81 -0
  148. package/test/test/util/util.js +10 -7
  149. package/test/text/mp4_ttml_parser_unit.js +11 -18
  150. package/test/text/ttml_text_parser_unit.js +544 -228
  151. package/test/ui/text_displayer_layout_unit.js +8 -7
  152. package/test/ui/ui_unit.js +250 -0
  153. package/test/util/cmcd_manager_unit.js +291 -0
  154. package/test/util/stream_utils_unit.js +36 -30
  155. package/third_party/closure-uri/uri.js +21 -0
  156. package/ui/airplay_button.js +1 -0
  157. package/ui/audio_language_selection.js +7 -0
  158. package/ui/cast_button.js +1 -0
  159. package/ui/context_menu.js +109 -0
  160. package/ui/controls.js +44 -7
  161. package/ui/controls.less +1 -0
  162. package/ui/enums.js +4 -0
  163. package/ui/externs/ui.js +28 -1
  164. package/ui/fast_forward_button.js +14 -5
  165. package/ui/fullscreen_button.js +1 -0
  166. package/ui/less/buttons.less +0 -4
  167. package/ui/less/containers.less +74 -0
  168. package/ui/less/overflow_menu.less +0 -10
  169. package/ui/less/tooltip.less +97 -0
  170. package/ui/locales/en.json +1 -0
  171. package/ui/locales/source.json +4 -0
  172. package/ui/localization.js +12 -36
  173. package/ui/loop_button.js +5 -0
  174. package/ui/mute_button.js +2 -1
  175. package/ui/overflow_menu.js +5 -25
  176. package/ui/pip_button.js +5 -0
  177. package/ui/play_button.js +2 -2
  178. package/ui/playback_rate_selection.js +8 -9
  179. package/ui/resolution_selection.js +7 -0
  180. package/ui/rewind_button.js +15 -6
  181. package/ui/seek_bar.js +4 -2
  182. package/ui/settings_menu.js +36 -4
  183. package/ui/small_play_button.js +1 -0
  184. package/ui/statistics_button.js +253 -0
  185. package/ui/text_selection.js +12 -4
  186. package/ui/ui.js +30 -0
  187. package/ui/volume_bar.js +1 -1
  188. package/externs/media_capabilities.js +0 -16
@@ -395,6 +395,13 @@ declare namespace shaka {
395
395
  * <code>detach</code>, or <code>unload</code>.
396
396
  */
397
397
  unload (initializeMediaSource ? : boolean ) : Promise < any > ;
398
+ /**
399
+ * Provides a way to update the stream start position during the media loading
400
+ * process. Can for example be called from the <code>manifestparsed</code>
401
+ * event handler to update the start position based on information in the
402
+ * manifest.
403
+ */
404
+ updateStartTime (startTime : number ) : any ;
398
405
  /**
399
406
  * Return whether the browser provides basic support. If this returns false,
400
407
  * Shaka Player cannot be used at all. In this case, do not construct a
@@ -628,6 +635,7 @@ declare namespace shaka.ads {
628
635
  getSequenceLength ( ) : any ;
629
636
  getTimeUntilSkippable ( ) : any ;
630
637
  getVolume ( ) : any ;
638
+ isLinear ( ) : any ;
631
639
  isMuted ( ) : any ;
632
640
  isPaused ( ) : any ;
633
641
  isSkippable ( ) : any ;
@@ -653,6 +661,7 @@ declare namespace shaka.ads {
653
661
  getSequenceLength ( ) : any ;
654
662
  getTimeUntilSkippable ( ) : any ;
655
663
  getVolume ( ) : any ;
664
+ isLinear ( ) : any ;
656
665
  isMuted ( ) : any ;
657
666
  isPaused ( ) : any ;
658
667
  isSkippable ( ) : any ;
@@ -816,7 +825,7 @@ declare namespace shaka.media {
816
825
  */
817
826
  class InitSegmentReference {
818
827
  private noStructuralTyping_shaka_media_InitSegmentReference : any;
819
- constructor (uris : ( ) => string [] , startByte : number , endByte : number | null ) ;
828
+ constructor (uris : ( ) => string [] , startByte : number , endByte : number | null , mediaQuality ? : null | shaka.extern.MediaQualityInfo ) ;
820
829
  /**
821
830
  * Returns the offset from the start of the resource to the end of the
822
831
  * segment, inclusive. A value of null indicates that the segment extends
@@ -1119,7 +1128,7 @@ declare namespace shaka.media {
1119
1128
  */
1120
1129
  class SegmentReference {
1121
1130
  private noStructuralTyping_shaka_media_SegmentReference : any;
1122
- constructor (startTime : number , endTime : number , uris : ( ) => string [] , startByte : number , endByte : number | null , initSegmentReference : shaka.media.InitSegmentReference | null , timestampOffset : number , appendWindowStart : number , appendWindowEnd : number , partialReferences ? : shaka.media.SegmentReference [] , tilesLayout ? : string | null ) ;
1131
+ constructor (startTime : number , endTime : number , uris : ( ) => string [] , startByte : number , endByte : number | null , initSegmentReference : shaka.media.InitSegmentReference | null , timestampOffset : number , appendWindowStart : number , appendWindowEnd : number , partialReferences ? : shaka.media.SegmentReference [] , tilesLayout ? : string | null , tileDuration ? : number | null ) ;
1123
1132
  /**
1124
1133
  * Returns the offset from the start of the resource to the end of the
1125
1134
  * segment, inclusive. A value of null indicates that the segment extends to
@@ -1139,6 +1148,11 @@ declare namespace shaka.media {
1139
1148
  * Returns the segment's start time in seconds.
1140
1149
  */
1141
1150
  getStartTime ( ) : number ;
1151
+ /**
1152
+ * Returns the segment's explicit tile duration.
1153
+ * Only defined in image segments.
1154
+ */
1155
+ getTileDuration ( ) : number | null ;
1142
1156
  /**
1143
1157
  * Returns the segment's tiles layout. Only defined in image segments.
1144
1158
  */
@@ -1166,14 +1180,14 @@ declare namespace shaka.net {
1166
1180
  * logic as Shaka when determining support.
1167
1181
  */
1168
1182
  static isSupported ( ) : boolean ;
1169
- static parse (uri : string , request : shaka.extern.Request , requestType : shaka.net.NetworkingEngine.RequestType , progressUpdated : shaka.extern.ProgressUpdated ) : shaka.extern.IAbortableOperation < any > ;
1183
+ static parse (uri : string , request : shaka.extern.Request , requestType : shaka.net.NetworkingEngine.RequestType , progressUpdated : shaka.extern.ProgressUpdated , headersReceived : shaka.extern.HeadersReceived ) : shaka.extern.IAbortableOperation < any > ;
1170
1184
  }
1171
1185
  }
1172
1186
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1173
1187
  declare namespace shaka.net {
1174
1188
  class HttpXHRPlugin {
1175
1189
  private noStructuralTyping_shaka_net_HttpXHRPlugin : any;
1176
- static parse (uri : string , request : shaka.extern.Request , requestType : shaka.net.NetworkingEngine.RequestType , progressUpdated : shaka.extern.ProgressUpdated ) : shaka.extern.IAbortableOperation < any > ;
1190
+ static parse (uri : string , request : shaka.extern.Request , requestType : shaka.net.NetworkingEngine.RequestType , progressUpdated : shaka.extern.ProgressUpdated , headersReceived : shaka.extern.HeadersReceived ) : shaka.extern.IAbortableOperation < any > ;
1177
1191
  }
1178
1192
  }
1179
1193
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
@@ -1190,7 +1204,7 @@ declare namespace shaka.net {
1190
1204
  * handle the actual request. A plugin is registered using registerScheme.
1191
1205
  * Each scheme has at most one plugin to handle the request.
1192
1206
  */
1193
- constructor (onProgressUpdated ? : (a : number , b : number ) => any ) ;
1207
+ constructor (onProgressUpdated ? : (a : number , b : number ) => any , onHeadersReceived ? : shaka.net.NetworkingEngine.OnHeadersReceived , onDownloadFailed ? : shaka.net.NetworkingEngine.OnDownloadFailed ) ;
1194
1208
  /**
1195
1209
  * Clears all request filters.
1196
1210
  */
@@ -1259,6 +1273,14 @@ declare namespace shaka.net.NetworkingEngine {
1259
1273
  }
1260
1274
  }
1261
1275
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1276
+ declare namespace shaka.net.NetworkingEngine {
1277
+ type OnDownloadFailed = (a : shaka.extern.Request , b : shaka.util.Error | null , c : number , d : boolean ) => any ;
1278
+ }
1279
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1280
+ declare namespace shaka.net.NetworkingEngine {
1281
+ type OnHeadersReceived = (a : { [ key: string ]: string } , b : shaka.extern.Request , c : shaka.net.NetworkingEngine.RequestType ) => any ;
1282
+ }
1283
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1262
1284
  declare namespace shaka.net.NetworkingEngine {
1263
1285
  /**
1264
1286
  * A pending network request. This can track the current progress of the
@@ -1486,6 +1508,12 @@ declare namespace shaka.polyfill {
1486
1508
  * Install the polyfill if needed.
1487
1509
  */
1488
1510
  static install ( ) : any ;
1511
+ /**
1512
+ * A copy of the MediaCapabilities instance, to prevent Safari from
1513
+ * garbage-collecting the polyfilled method on it. We make it public and export
1514
+ * it to ensure that it is not stripped out by the compiler.
1515
+ */
1516
+ static originalMcap : any | null ;
1489
1517
  }
1490
1518
  }
1491
1519
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
@@ -1559,6 +1587,16 @@ declare namespace shaka.polyfill {
1559
1587
  }
1560
1588
  }
1561
1589
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1590
+ declare namespace shaka.polyfill {
1591
+ class RandomUUID {
1592
+ private noStructuralTyping_shaka_polyfill_RandomUUID : any;
1593
+ /**
1594
+ * Install the polyfill if needed.
1595
+ */
1596
+ static install ( ) : any ;
1597
+ }
1598
+ }
1599
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1562
1600
  declare namespace shaka.polyfill {
1563
1601
  class StorageEstimate {
1564
1602
  private noStructuralTyping_shaka_polyfill_StorageEstimate : any;
@@ -1619,6 +1657,7 @@ declare namespace shaka.text {
1619
1657
  fontStyle : any ;
1620
1658
  fontWeight : any ;
1621
1659
  id : any ;
1660
+ isContainer : any ;
1622
1661
  letterSpacing : any ;
1623
1662
  line : any ;
1624
1663
  /**
@@ -1640,6 +1679,8 @@ declare namespace shaka.text {
1640
1679
  startTime : any ;
1641
1680
  textAlign : any ;
1642
1681
  textDecoration : any ;
1682
+ textStrokeColor : any ;
1683
+ textStrokeWidth : any ;
1643
1684
  wrapLine : any ;
1644
1685
  writingMode : any ;
1645
1686
  }
@@ -1989,6 +2030,14 @@ declare namespace shaka.ui {
1989
2030
  }
1990
2031
  }
1991
2032
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
2033
+ declare namespace shaka.ui {
2034
+ class ContextMenu extends shaka.ui.Element {
2035
+ private noStructuralTyping_shaka_ui_ContextMenu : any;
2036
+ constructor (parent : HTMLElement , controls : shaka.ui.Controls ) ;
2037
+ static registerElement (name : string , factory : shaka.extern.IUIElement.Factory ) : any ;
2038
+ }
2039
+ }
2040
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1992
2041
  declare namespace shaka.ui {
1993
2042
  /**
1994
2043
  * A container for custom video controls.
@@ -2087,17 +2136,9 @@ declare namespace shaka.ui {
2087
2136
  * If a string is not available, it will return the localized
2088
2137
  * form in the closest related locale.
2089
2138
  */
2090
- class Localization implements EventTarget {
2139
+ class Localization extends shaka.util.FakeEventTarget {
2091
2140
  private noStructuralTyping_shaka_ui_Localization : any;
2092
- /**
2093
- * Localization system provided by the shaka ui library.
2094
- * It can be used to store the various localized forms of
2095
- * strings that are expected to be displayed to the user.
2096
- * If a string is not available, it will return the localized
2097
- * form in the closest related locale.
2098
- */
2099
2141
  constructor (fallbackLocale : string ) ;
2100
- addEventListener (type : any , listener : any , options : any ) : any ;
2101
2142
  /**
2102
2143
  * Request the localization system to change which locale it serves. If any of
2103
2144
  * of the preferred locales cannot be found, the localization system will fire
@@ -2106,7 +2147,6 @@ declare namespace shaka.ui {
2106
2147
  * @param locales The locale codes for the requested locales in order of preference.
2107
2148
  */
2108
2149
  changeLocale (locales : Iterable < string > ) : any ;
2109
- dispatchEvent (event : any ) : any ;
2110
2150
  /**
2111
2151
  * Insert a set of localizations for a single locale. This will amend the
2112
2152
  * existing localizations for the given locale.
@@ -2115,7 +2155,7 @@ declare namespace shaka.ui {
2115
2155
  * @param conflictResolution The strategy used to resolve conflicts when the id of an existing entry matches the id of a new entry. Default to |USE_NEW|, where the new entry will replace the old entry.
2116
2156
  */
2117
2157
  insert (locale : string , localizations : Map < string , string > , conflictResolution ? : shaka.ui.Localization.ConflictResolution ) : shaka.ui.Localization ;
2118
- removeEventListener (type : any , listener : any , options : any ) : any ;
2158
+ release ( ) : any ;
2119
2159
  /**
2120
2160
  * Request the localized string under the given id. If there is no localized
2121
2161
  * version of the string, then the fallback localization will be given
@@ -2392,6 +2432,13 @@ declare namespace shaka.ui {
2392
2432
  }
2393
2433
  }
2394
2434
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
2435
+ declare namespace shaka.ui {
2436
+ class StatisticsButton extends shaka.ui.Element {
2437
+ private noStructuralTyping_shaka_ui_StatisticsButton : any;
2438
+ constructor (parent : HTMLElement , controls : shaka.ui.Controls ) ;
2439
+ }
2440
+ }
2441
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
2395
2442
  declare namespace shaka.ui {
2396
2443
  class TextSelection extends shaka.ui.SettingsMenu {
2397
2444
  private noStructuralTyping_shaka_ui_TextSelection : any;
@@ -2462,6 +2509,23 @@ declare namespace shaka.util {
2462
2509
  }
2463
2510
  }
2464
2511
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
2512
+ declare namespace shaka.util.CmcdManager {
2513
+ type ManifestInfo = { format : shaka.util.CmcdManager.StreamingFormat } ;
2514
+ }
2515
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
2516
+ declare namespace shaka.util.CmcdManager {
2517
+ type SegmentInfo = { bandwidth ? : number , codecs : string , duration : number , init : boolean , mimeType : string , type : string } ;
2518
+ }
2519
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
2520
+ declare namespace shaka.util.CmcdManager {
2521
+ enum StreamingFormat {
2522
+ DASH = 'd' ,
2523
+ HLS = 'h' ,
2524
+ OTHER = 'o' ,
2525
+ SMOOTH = 's' ,
2526
+ }
2527
+ }
2528
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
2465
2529
  declare namespace shaka.util {
2466
2530
  class ConfigUtils {
2467
2531
  private noStructuralTyping_shaka_util_ConfigUtils : any;
@@ -2666,6 +2730,7 @@ declare namespace shaka.util.Error {
2666
2730
  MEDIA_SOURCE_OPERATION_THREW = 3015.0 ,
2667
2731
  MISSING_STORAGE_CELL = 9013.0 ,
2668
2732
  MISSING_TEXT_PLUGIN = 2014.0 ,
2733
+ MODIFY_OPERATION_NOT_SUPPORTED = 9016.0 ,
2669
2734
  MP4_SIDX_INVALID_TIMESCALE = 3005.0 ,
2670
2735
  MP4_SIDX_TYPE_NOT_SUPPORTED = 3006.0 ,
2671
2736
  MP4_SIDX_WRONG_BOX_TYPE = 3004.0 ,
@@ -2795,7 +2860,7 @@ declare namespace shaka.util {
2795
2860
  }
2796
2861
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
2797
2862
  declare namespace shaka.util {
2798
- class FakeEventTarget implements EventTarget {
2863
+ class FakeEventTarget implements EventTarget , shaka.util.IReleasable {
2799
2864
  private noStructuralTyping_shaka_util_FakeEventTarget : any;
2800
2865
  /**
2801
2866
  * Add an event listener to this object.
@@ -2815,6 +2880,7 @@ declare namespace shaka.util {
2815
2880
  * @param listener The callback or listener object to invoke.
2816
2881
  */
2817
2882
  listenToAllEvents (listener : EventListener | null | ( (a : Event ) => any ) ) : any ;
2883
+ release ( ) : any ;
2818
2884
  /**
2819
2885
  * Remove an event listener from this object.
2820
2886
  * @param type The event type for which you wish to remove a listener.
@@ -2860,6 +2926,120 @@ declare namespace shaka.util {
2860
2926
  }
2861
2927
  }
2862
2928
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
2929
+ declare namespace shaka.util {
2930
+ class LanguageUtils {
2931
+ private noStructuralTyping_shaka_util_LanguageUtils : any;
2932
+ /**
2933
+ * Check if |locale1| and |locale2| are language-compatible.
2934
+ * Language compatible is when the language component of each locale matches.
2935
+ * This means that no matter what region they have (or don't have) as long as
2936
+ * the language components match, they are language-compatible.
2937
+ * Examples:
2938
+ * Locale A | Locale B | Language-Compatible
2939
+ * -----------------------------------------
2940
+ * en-US | en-US | true
2941
+ * en-US | en | true
2942
+ * en-US | en-CA | true
2943
+ * en-CA | fr-CA | false
2944
+ */
2945
+ static areLanguageCompatible (locale1 : string , locale2 : string ) : boolean ;
2946
+ /**
2947
+ * Check if |locale1| and |locale2| are locale-compatible.
2948
+ * Locale-compatible is defined as all components in each locale match. Since
2949
+ * we only respect the language and region components, we only check that
2950
+ * the language and region components match.
2951
+ * Examples:
2952
+ * Locale A | Locale B | Locale Compatible
2953
+ * ---------------------------------------
2954
+ * en-US | en-US | true
2955
+ * en | en-US | false
2956
+ * en-US | en-CA | false
2957
+ */
2958
+ static areLocaleCompatible (locale1 : string , locale2 : string ) : boolean ;
2959
+ /**
2960
+ * Check if two language codes are siblings. Language codes are siblings if
2961
+ * they share the same base language while neither one is the base language.
2962
+ * For example, "en-US" and "en-CA" are siblings but "en-US" and "en" are not
2963
+ * siblings.
2964
+ */
2965
+ static areSiblings (a : string , b : string ) : boolean ;
2966
+ /**
2967
+ * Find the locale in |searchSpace| that comes closest to |target|. If no
2968
+ * locale is found to be close to |target|, then |null| will be returned.
2969
+ */
2970
+ static findClosestLocale (target : string , searchSpace : Iterable < string > ) : string | null ;
2971
+ /**
2972
+ * Get the normalized base language for a language code.
2973
+ */
2974
+ static getBase (lang : string ) : string ;
2975
+ /**
2976
+ * Get the normalized language of the given text stream. Will return 'und' if
2977
+ * a language is not found on the text stream.
2978
+ * This should always be used to get the language from a text stream.
2979
+ */
2980
+ static getLocaleForText (stream : shaka.extern.Stream ) : string ;
2981
+ /**
2982
+ * Get the normalized locale for the given variant. This will look through
2983
+ * the variant to find the locale that represents the content in the variant.
2984
+ * This will return 'und' if no language can be found.
2985
+ * This should always be used to get the locale from a variant.
2986
+ */
2987
+ static getLocaleForVariant (variant : shaka.extern.Variant ) : string ;
2988
+ /**
2989
+ * Check if |possibleParent| is the parent locale of |possibleChild|. Because
2990
+ * we do not support dialects, the parent-child relationship is a lot simpler.
2991
+ * In a parent child relationship:
2992
+ * - The parent and child have the same language-component
2993
+ * - The parent has no region-component
2994
+ * - The child has a region-component
2995
+ * Example:
2996
+ * Locale A | Locale B | Is A The parent of B?
2997
+ * --------------------------------------------
2998
+ * en-US | en-US | no
2999
+ * en-US | en | no
3000
+ * en | en-US | yes
3001
+ * en | en | no
3002
+ * en | fr | no
3003
+ */
3004
+ static isParentOf (possibleParent : string , possibleChild : string ) : boolean ;
3005
+ /**
3006
+ * Check if |localeA| shares the same parent with |localeB|. Since we don't
3007
+ * support dialect, we will only look at language and region. For two locales
3008
+ * to be siblings:
3009
+ * - Both must have language-components
3010
+ * - Both must have region-components
3011
+ * - Both must have the same language-component
3012
+ * Example:
3013
+ * Locale A | Locale B | Siblings?
3014
+ * --------------------------------------------
3015
+ * en-US | en-US | yes
3016
+ * en-US | en-CA | yes
3017
+ * en-US | en | no
3018
+ * en | en-US | no
3019
+ * en | en | no
3020
+ * en | fr | no
3021
+ */
3022
+ static isSiblingOf (localeA : string , localeB : string ) : boolean ;
3023
+ /**
3024
+ * Normalize a locale. This will take a locale and canonicalize it to a state
3025
+ * that we are prepared to work with.
3026
+ * We only support with:
3027
+ * - language
3028
+ * - language-REGION
3029
+ * If given a dialect, we will discard it. We will convert any 3-character
3030
+ * codes to 2-character codes. We will force language codes to lowercase and
3031
+ * region codes to uppercase.
3032
+ */
3033
+ static normalize (locale : string ) : string ;
3034
+ /**
3035
+ * Compute a numerical relatedness for language codes. Language codes with a
3036
+ * higher relatedness are a better match. Unrelated language codes have a
3037
+ * relatedness score of 0.
3038
+ */
3039
+ static relatedness (target : string , candidate : string ) : number ;
3040
+ }
3041
+ }
3042
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
2863
3043
  declare namespace shaka.util {
2864
3044
  class Mp4Parser {
2865
3045
  private noStructuralTyping_shaka_util_Mp4Parser : any;
@@ -3172,6 +3352,10 @@ declare namespace chrome.cast.SessionStatus {
3172
3352
  declare namespace chrome.cast {
3173
3353
  let isAvailable : boolean ;
3174
3354
  }
3355
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/cmcd.js
3356
+ declare namespace ಠ_ಠ.clutz {
3357
+ type CmcdData = { bl ? : number , br ? : number , bs ? : boolean , cid ? : string , d ? : number , dl ? : number , mtp ? : number , nor ? : string , nrr ? : string , ot ? : string , pr ? : number , rtp ? : number , sf ? : string , sid ? : string , st ? : string , su ? : boolean , tb ? : number , v ? : number } ;
3358
+ }
3175
3359
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/ima.js
3176
3360
  declare namespace google.ima.AdErrorEvent {
3177
3361
  enum Type {
@@ -3624,6 +3808,7 @@ declare namespace shaka.extern {
3624
3808
  getSequenceLength ( ) : number ;
3625
3809
  getTimeUntilSkippable ( ) : number ;
3626
3810
  getVolume ( ) : number ;
3811
+ isLinear ( ) : boolean ;
3627
3812
  isMuted ( ) : boolean ;
3628
3813
  isPaused ( ) : boolean ;
3629
3814
  isSkippable ( ) : boolean ;
@@ -3704,7 +3889,7 @@ declare namespace shaka.extern {
3704
3889
  }
3705
3890
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/manifest.js
3706
3891
  declare namespace shaka.extern {
3707
- type Stream = { audioSamplingRate : number | null , bandwidth ? : number , channelsCount : number | null , closedCaptions : Map < string , string > | null , codecs : string , createSegmentIndex : shaka.extern.CreateSegmentIndexFunction , drmInfos : shaka.extern.DrmInfo [] , emsgSchemeIdUris : string [] | null , encrypted : boolean , forced : boolean , frameRate ? : number , hdr ? : string , height ? : number , id : number , keyIds : Set < string > , kind ? : string , label : string | null , language : string , mimeType : string , originalId : string | null , pixelAspectRatio ? : string , primary : boolean , roles : string [] , segmentIndex : shaka.media.SegmentIndex | null , spatialAudio : boolean , tilesLayout ? : string , trickModeVideo : any , type : string , width ? : number } ;
3892
+ type Stream = { audioSamplingRate : number | null , bandwidth ? : number , channelsCount : number | null , closeSegmentIndex ? : ( ) => any , closedCaptions : Map < string , string > | null , codecs : string , createSegmentIndex : shaka.extern.CreateSegmentIndexFunction , drmInfos : shaka.extern.DrmInfo [] , emsgSchemeIdUris : string [] | null , encrypted : boolean , forced : boolean , frameRate ? : number , hdr ? : string , height ? : number , id : number , keyIds : Set < string > , kind ? : string , label : string | null , language : string , matchedStreams ? : any [] , mimeType : string , originalId : string | null , pixelAspectRatio ? : string , primary : boolean , roles : string [] , segmentIndex : shaka.media.SegmentIndex | null , spatialAudio : boolean , tilesLayout ? : string , trickModeVideo : any , type : string , width ? : number } ;
3708
3893
  }
3709
3894
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/manifest.js
3710
3895
  declare namespace shaka.extern {
@@ -3783,13 +3968,17 @@ declare namespace shaka.extern.ManifestParser {
3783
3968
  }
3784
3969
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/manifest_parser.js
3785
3970
  declare namespace shaka.extern.ManifestParser {
3786
- type PlayerInterface = { enableLowLatencyMode : ( ) => any , filter : (a : shaka.extern.Manifest ) => Promise < any > , isAutoLowLatencyMode : ( ) => boolean , isLowLatencyMode : ( ) => boolean , makeTextStreamsForClosedCaptions : (a : shaka.extern.Manifest ) => any , networkingEngine : shaka.net.NetworkingEngine , onError : (a : shaka.util.Error ) => any , onEvent : shaka.util.EventManager.ListenerType , onTimelineRegionAdded : (a : shaka.extern.TimelineRegionInfo ) => any } ;
3971
+ type PlayerInterface = { enableLowLatencyMode : ( ) => any , filter : (a : shaka.extern.Manifest ) => Promise < any > , isAutoLowLatencyMode : ( ) => boolean , isLowLatencyMode : ( ) => boolean , makeTextStreamsForClosedCaptions : (a : shaka.extern.Manifest ) => any , modifyManifestRequest : (a : shaka.extern.Request , b : shaka.util.CmcdManager.ManifestInfo ) => any , modifySegmentRequest : (a : shaka.extern.Request , b : shaka.util.CmcdManager.SegmentInfo ) => any , networkingEngine : shaka.net.NetworkingEngine , onError : (a : shaka.util.Error ) => any , onEvent : shaka.util.EventManager.ListenerType , onTimelineRegionAdded : (a : shaka.extern.TimelineRegionInfo ) => any } ;
3787
3972
  }
3788
3973
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/mp4_parser.js
3789
3974
  declare namespace shaka.extern {
3790
3975
  type ParsedBox = { flags : number | null , has64BitSize : boolean , parser : shaka.util.Mp4Parser , partialOkay : boolean , reader : shaka.util.DataViewReader , size : number , start : number , version : number | null } ;
3791
3976
  }
3792
3977
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/net.js
3978
+ declare namespace shaka.extern {
3979
+ type HeadersReceived = (a : { [ key: string ]: string } ) => any ;
3980
+ }
3981
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/net.js
3793
3982
  declare namespace shaka.extern {
3794
3983
  type ProgressUpdated = (a : number , b : number , c : number ) => any ;
3795
3984
  }
@@ -3809,7 +3998,7 @@ declare namespace shaka.extern {
3809
3998
  }
3810
3999
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/net.js
3811
4000
  declare namespace shaka.extern {
3812
- type Response = { data : ArrayBuffer | ArrayBufferView , fromCache ? : boolean , headers : { [ key: string ]: string } , timeMs ? : number , uri : string } ;
4001
+ type Response = { data : ArrayBuffer | ArrayBufferView , fromCache ? : boolean , headers : { [ key: string ]: string } , status ? : number , timeMs ? : number , uri : string } ;
3813
4002
  }
3814
4003
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/net.js
3815
4004
  declare namespace shaka.extern {
@@ -3826,7 +4015,7 @@ declare namespace shaka.extern {
3826
4015
  }
3827
4016
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/net.js
3828
4017
  declare namespace shaka.extern {
3829
- type SchemePlugin = (a : string , b : shaka.extern.Request , c : shaka.net.NetworkingEngine.RequestType , d : shaka.extern.ProgressUpdated ) => shaka.extern.IAbortableOperation < shaka.extern.Response > ;
4018
+ type SchemePlugin = (a : string , b : shaka.extern.Request , c : shaka.net.NetworkingEngine.RequestType , d : shaka.extern.ProgressUpdated , e : shaka.extern.HeadersReceived ) => shaka.extern.IAbortableOperation < shaka.extern.Response > ;
3830
4019
  }
3831
4020
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/offline.js
3832
4021
  declare namespace shaka.extern {
@@ -3860,7 +4049,7 @@ declare namespace shaka.extern {
3860
4049
  }
3861
4050
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/offline.js
3862
4051
  declare namespace shaka.extern {
3863
- type ManifestDB = { appMetadata : object | null , creationTime : number , drmInfo : shaka.extern.DrmInfo | null , duration : number , expiration : number , originalManifestUri : string , sessionIds : string [] , size : number , streams : shaka.extern.StreamDB [] } ;
4052
+ type ManifestDB = { appMetadata : object | null , creationTime : number , drmInfo : shaka.extern.DrmInfo | null , duration : number , expiration : number , isIncomplete ? : boolean , originalManifestUri : string , sessionIds : string [] , size : number , streams : shaka.extern.StreamDB [] } ;
3864
4053
  }
3865
4054
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/offline.js
3866
4055
  declare namespace shaka.extern {
@@ -3868,7 +4057,7 @@ declare namespace shaka.extern {
3868
4057
  }
3869
4058
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/offline.js
3870
4059
  declare namespace shaka.extern {
3871
- type SegmentDB = { appendWindowEnd : number , appendWindowStart : number , dataKey : number , endTime : number , initSegmentKey : number | null , startTime : number , tilesLayout : string | null , timestampOffset : number } ;
4060
+ type SegmentDB = { appendWindowEnd : number , appendWindowStart : number , dataKey : number , endTime : number , initSegmentKey : number | null , pendingInitSegmentRefId ? : string , pendingSegmentRefId ? : string , startTime : number , tilesLayout : string | null , timestampOffset : number } ;
3872
4061
  }
3873
4062
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/offline.js
3874
4063
  declare namespace shaka.extern {
@@ -3938,6 +4127,10 @@ declare namespace shaka.extern {
3938
4127
  * @param onRemove A callback for when a segment is removed from the cell. The key of the segment will be passed to the callback.
3939
4128
  */
3940
4129
  removeSegments (keys : number [] , onRemove : (a : number ) => any ) : Promise < any > ;
4130
+ /**
4131
+ * Updates the given manifest, stored at the given key.
4132
+ */
4133
+ updateManifest (key : number , manifest : shaka.extern.ManifestDB ) : Promise < any > ;
3941
4134
  /**
3942
4135
  * Replace the expiration time of the manifest stored under |key| with
3943
4136
  * |newExpiration|. If no manifest is found under |key| then this should
@@ -3992,7 +4185,7 @@ declare namespace shaka.extern {
3992
4185
  }
3993
4186
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/offline.js
3994
4187
  declare namespace shaka.extern {
3995
- type StoredContent = { appMetadata : object | null , duration : number , expiration : number , offlineUri : string | null , originalManifestUri : string , size : number , tracks : shaka.extern.TrackList } ;
4188
+ type StoredContent = { appMetadata : object | null , duration : number , expiration : number , isIncomplete : boolean , offlineUri : string | null , originalManifestUri : string , size : number , tracks : shaka.extern.TrackList } ;
3996
4189
  }
3997
4190
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/offline.js
3998
4191
  declare namespace shaka.extern {
@@ -4040,7 +4233,11 @@ declare namespace shaka.extern {
4040
4233
  }
4041
4234
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4042
4235
  declare namespace shaka.extern {
4043
- type AbrConfiguration = { bandwidthDowngradeTarget : number , bandwidthUpgradeTarget : number , defaultBandwidthEstimate : number , enabled : boolean , restrictions : shaka.extern.Restrictions , switchInterval : number , useNetworkInformation : boolean } ;
4236
+ type AbrConfiguration = { advanced : shaka.extern.AdvancedAbrConfiguration , bandwidthDowngradeTarget : number , bandwidthUpgradeTarget : number , defaultBandwidthEstimate : number , enabled : boolean , restrictions : shaka.extern.Restrictions , switchInterval : number , useNetworkInformation : boolean } ;
4237
+ }
4238
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4239
+ declare namespace shaka.extern {
4240
+ type AdvancedAbrConfiguration = { fastHalfLife : number , minBytes : number , minTotalBytes : number , slowHalfLife : number } ;
4044
4241
  }
4045
4242
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4046
4243
  declare namespace shaka.extern {
@@ -4059,6 +4256,10 @@ declare namespace shaka.extern {
4059
4256
  type Chapter = { endTime : number , startTime : number , title : string } ;
4060
4257
  }
4061
4258
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4259
+ declare namespace shaka.extern {
4260
+ type CmcdConfiguration = { contentId : string , enabled : boolean , sessionId : string , useHeaders : boolean } ;
4261
+ }
4262
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4062
4263
  declare namespace shaka.extern {
4063
4264
  type DashManifestConfiguration = { autoCorrectDrift : boolean , clockSyncUri : string , disableXlinkProcessing : boolean , ignoreDrmInfo : boolean , ignoreEmptyAdaptationSet : boolean , ignoreMaxSegmentDuration : boolean , ignoreMinBufferTime : boolean , ignoreSuggestedPresentationDelay : boolean , initialSegmentLimit : number , keySystemsByURI : { [ key: string ]: string } , manifestPreprocessor : (a : Element ) => any , xlinkFailGracefully : boolean } ;
4064
4265
  }
@@ -4076,7 +4277,7 @@ declare namespace shaka.extern {
4076
4277
  }
4077
4278
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4078
4279
  declare namespace shaka.extern {
4079
- type HlsManifestConfiguration = { ignoreImageStreamFailures : boolean , ignoreTextStreamFailures : boolean , useFullSegmentsForStartTime : boolean } ;
4280
+ type HlsManifestConfiguration = { defaultAudioCodec : string , defaultVideoCodec : string , ignoreImageStreamFailures : boolean , ignoreTextStreamFailures : boolean , useFullSegmentsForStartTime : boolean } ;
4080
4281
  }
4081
4282
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4082
4283
  declare namespace shaka.extern {
@@ -4091,12 +4292,16 @@ declare namespace shaka.extern {
4091
4292
  type ManifestConfiguration = { availabilityWindowOverride : number , dash : shaka.extern.DashManifestConfiguration , defaultPresentationDelay : number , disableAudio : boolean , disableText : boolean , disableThumbnails : boolean , disableVideo : boolean , hls : shaka.extern.HlsManifestConfiguration , retryParameters : shaka.extern.RetryParameters } ;
4092
4293
  }
4093
4294
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4295
+ declare namespace shaka.extern {
4296
+ type MediaQualityInfo = { audioSamplingRate : number | null , bandwidth : number , channelsCount : number | null , codecs : string , contentType : string , frameRate : number | null , height : number | null , mimeType : string | null , pixelAspectRatio : string | null , width : number | null } ;
4297
+ }
4298
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4094
4299
  declare namespace shaka.extern {
4095
4300
  type OfflineConfiguration = { downloadSizeCallback : (a : number ) => Promise < boolean > , progressCallback : (a : shaka.extern.StoredContent , b : number ) => any , trackSelectionCallback : (a : shaka.extern.TrackList ) => Promise < shaka.extern.TrackList > , usePersistentLicense : boolean } ;
4096
4301
  }
4097
4302
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4098
4303
  declare namespace shaka.extern {
4099
- type PlayerConfiguration = { abr : shaka.extern.AbrConfiguration , abrFactory : shaka.extern.AbrManager.Factory , drm : shaka.extern.DrmConfiguration , manifest : shaka.extern.ManifestConfiguration , offline : shaka.extern.OfflineConfiguration , playRangeEnd : number , playRangeStart : number , preferForcedSubs : boolean , preferredAudioChannelCount : number , preferredAudioCodecs : string [] , preferredAudioLanguage : string , preferredDecodingAttributes : string [] , preferredTextLanguage : string , preferredTextRole : string , preferredVariantRole : string , preferredVideoCodecs : string [] , restrictions : shaka.extern.Restrictions , streaming : shaka.extern.StreamingConfiguration , textDisplayFactory : shaka.extern.TextDisplayer.Factory } ;
4304
+ type PlayerConfiguration = { abr : shaka.extern.AbrConfiguration , abrFactory : shaka.extern.AbrManager.Factory , cmcd : shaka.extern.CmcdConfiguration , drm : shaka.extern.DrmConfiguration , manifest : shaka.extern.ManifestConfiguration , offline : shaka.extern.OfflineConfiguration , playRangeEnd : number , playRangeStart : number , preferForcedSubs : boolean , preferredAudioChannelCount : number , preferredAudioCodecs : string [] , preferredAudioLanguage : string , preferredDecodingAttributes : string [] , preferredTextLanguage : string , preferredTextRole : string , preferredVariantRole : string , preferredVideoCodecs : string [] , restrictions : shaka.extern.Restrictions , streaming : shaka.extern.StreamingConfiguration , textDisplayFactory : shaka.extern.TextDisplayer.Factory } ;
4100
4305
  }
4101
4306
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4102
4307
  declare namespace shaka.extern {
@@ -4112,7 +4317,7 @@ declare namespace shaka.extern {
4112
4317
  }
4113
4318
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4114
4319
  declare namespace shaka.extern {
4115
- type StreamingConfiguration = { alwaysStreamText : boolean , autoLowLatencyMode : boolean , bufferBehind : number , bufferingGoal : number , durationBackoff : number , failureCallback : (a : shaka.util.Error ) => any , forceHTTPS : boolean , forceTransmuxTS : boolean , gapDetectionThreshold : number , ignoreTextStreamFailures : boolean , inaccurateManifestTolerance : number , jumpLargeGaps : boolean , lowLatencyMode : boolean , preferNativeHls : boolean , rebufferingGoal : number , retryParameters : shaka.extern.RetryParameters , safeSeekOffset : number , smallGapLimit : number , stallEnabled : boolean , stallSkip : number , stallThreshold : number , startAtSegmentBoundary : boolean , updateIntervalSeconds : number , useNativeHlsOnSafari : boolean } ;
4320
+ type StreamingConfiguration = { alwaysStreamText : boolean , autoLowLatencyMode : boolean , bufferBehind : number , bufferingGoal : number , dispatchAllEmsgBoxes : boolean , durationBackoff : number , failureCallback : (a : shaka.util.Error ) => any , forceHTTPS : boolean , forceTransmuxTS : boolean , gapDetectionThreshold : number , ignoreTextStreamFailures : boolean , inaccurateManifestTolerance : number , jumpLargeGaps : boolean , lowLatencyMode : boolean , observeQualityChanges : boolean , preferNativeHls : boolean , rebufferingGoal : number , retryParameters : shaka.extern.RetryParameters , safeSeekOffset : number , smallGapLimit : number , stallEnabled : boolean , stallSkip : number , stallThreshold : number , startAtSegmentBoundary : boolean , updateIntervalSeconds : number , useNativeHlsOnSafari : boolean } ;
4116
4321
  }
4117
4322
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4118
4323
  declare namespace shaka.extern {
@@ -4120,7 +4325,7 @@ declare namespace shaka.extern {
4120
4325
  }
4121
4326
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4122
4327
  declare namespace shaka.extern {
4123
- type Thumbnail = { duration : number , height : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
4328
+ type Thumbnail = { duration : number , height : number , imageHeight : number , imageWidth : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
4124
4329
  }
4125
4330
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
4126
4331
  declare namespace shaka.extern {
@@ -4197,6 +4402,13 @@ declare namespace shaka.extern {
4197
4402
  * Id of the cue.
4198
4403
  */
4199
4404
  id : string ;
4405
+ /**
4406
+ * If true, this represents a container element that is "above" the main
4407
+ * cues. For example, the <body> and <div> tags that contain the <p> tags
4408
+ * in a TTML file. This controls the flow of the final cues; any nested cues
4409
+ * within an "isContainer" cue will be laid out as separate lines.
4410
+ */
4411
+ isContainer : boolean ;
4200
4412
  /**
4201
4413
  * Text letter spacing as a CSS letter-spacing value.
4202
4414
  */
@@ -4285,6 +4497,14 @@ declare namespace shaka.extern {
4285
4497
  * and line through. Empty array means no decoration.
4286
4498
  */
4287
4499
  textDecoration : shaka.text.Cue.textDecoration [] ;
4500
+ /**
4501
+ * Text stroke color as a CSS color, e.g. "#FFFFFF" or "white".
4502
+ */
4503
+ textStrokeColor : string ;
4504
+ /**
4505
+ * Text stroke width as a CSS stroke-width value.
4506
+ */
4507
+ textStrokeWidth : string ;
4288
4508
  /**
4289
4509
  * Whether or not line wrapping should be applied to the cue.
4290
4510
  */
@@ -4567,7 +4787,7 @@ nameSpan : HTMLElement ;
4567
4787
  }
4568
4788
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/ui/externs/ui.js
4569
4789
  declare namespace shaka.extern {
4570
- type UIConfiguration = { addBigPlayButton : boolean , addSeekBar : boolean , castReceiverAppId : string , clearBufferOnQualityChange : boolean , controlPanelElements : string [] , doubleClickForFullscreen : boolean , enableFullscreenOnRotation : boolean , enableKeyboardPlaybackControls : boolean , fadeDelay : number , forceLandscapeOnFullscreen : boolean , overflowMenuButtons : string [] , seekBarColors : shaka.extern.UISeekBarColors , showUnbufferedStart : boolean , trackLabelFormat : shaka.ui.Overlay.TrackLabelFormat , volumeBarColors : shaka.extern.UIVolumeBarColors } ;
4790
+ type UIConfiguration = { addBigPlayButton : boolean , addSeekBar : boolean , castReceiverAppId : string , clearBufferOnQualityChange : boolean , contextMenuElements : string [] , controlPanelElements : string [] , customContextMenu : boolean , doubleClickForFullscreen : boolean , enableFullscreenOnRotation : boolean , enableKeyboardPlaybackControls : boolean , enableTooltips : boolean , fadeDelay : number , fastForwardRates : number [] , forceLandscapeOnFullscreen : boolean , overflowMenuButtons : string [] , playbackRates : number [] , rewindRates : number [] , seekBarColors : shaka.extern.UISeekBarColors , showUnbufferedStart : boolean , singleClickForPlayAndPause : boolean , statisticsList : string [] , trackLabelFormat : shaka.ui.Overlay.TrackLabelFormat , volumeBarColors : shaka.extern.UIVolumeBarColors } ;
4571
4791
  }
4572
4792
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/ui/externs/ui.js
4573
4793
  declare namespace shaka.extern {