shaka-player 4.4.3 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  2. package/.github/workflows/release-please.yaml +2 -27
  3. package/AUTHORS +2 -0
  4. package/CHANGELOG.md +156 -39
  5. package/CODE_OF_CONDUCT.md +1 -1
  6. package/CONTRIBUTORS +2 -0
  7. package/README.md +54 -42
  8. package/demo/asset_card.js +18 -21
  9. package/demo/cast_receiver/index.html +0 -1
  10. package/demo/close_button.js +0 -3
  11. package/demo/common/asset.js +33 -22
  12. package/demo/common/assets.js +249 -60
  13. package/demo/config.js +219 -253
  14. package/demo/custom.js +88 -133
  15. package/demo/front.js +7 -10
  16. package/demo/index.html +19 -22
  17. package/demo/input.js +6 -11
  18. package/demo/input_container.js +8 -9
  19. package/demo/main.js +62 -126
  20. package/demo/search.js +29 -34
  21. package/demo/service_worker.js +0 -3
  22. package/demo/tooltip.js +3 -5
  23. package/demo/visualizer.js +3 -5
  24. package/demo/visualizer_button.js +1 -20
  25. package/dist/controls.css +1 -1
  26. package/dist/controls.css.map +1 -1
  27. package/dist/demo.compiled.debug.js +211 -228
  28. package/dist/demo.compiled.debug.map +4 -4
  29. package/dist/demo.compiled.js +211 -228
  30. package/dist/demo.compiled.map +4 -4
  31. package/dist/deps.js +42 -37
  32. package/dist/locales.js +34 -30
  33. package/dist/receiver.compiled.debug.js +64 -77
  34. package/dist/receiver.compiled.debug.map +4 -4
  35. package/dist/receiver.compiled.js +64 -77
  36. package/dist/receiver.compiled.map +4 -4
  37. package/dist/shaka-player.compiled.d.ts +343 -151
  38. package/dist/shaka-player.compiled.debug.d.ts +343 -151
  39. package/dist/shaka-player.compiled.debug.externs.js +356 -117
  40. package/dist/shaka-player.compiled.debug.js +952 -811
  41. package/dist/shaka-player.compiled.debug.map +4 -4
  42. package/dist/shaka-player.compiled.externs.js +356 -117
  43. package/dist/shaka-player.compiled.js +1165 -1078
  44. package/dist/shaka-player.compiled.map +4 -4
  45. package/dist/shaka-player.ui.d.ts +359 -153
  46. package/dist/shaka-player.ui.debug.d.ts +359 -153
  47. package/dist/shaka-player.ui.debug.externs.js +382 -117
  48. package/dist/shaka-player.ui.debug.js +1084 -918
  49. package/dist/shaka-player.ui.debug.map +4 -4
  50. package/dist/shaka-player.ui.externs.js +382 -117
  51. package/dist/shaka-player.ui.js +1377 -1274
  52. package/dist/shaka-player.ui.map +4 -4
  53. package/docs/design/lcevc-integration.md +14 -14
  54. package/docs/tutorials/ad_monetization.md +54 -0
  55. package/docs/tutorials/basic-usage.md +2 -1
  56. package/docs/tutorials/errors.md +2 -1
  57. package/docs/tutorials/faq.md +27 -55
  58. package/docs/tutorials/index.json +2 -1
  59. package/docs/tutorials/lcevc.md +118 -0
  60. package/docs/tutorials/offline.md +10 -8
  61. package/docs/tutorials/plugins.md +5 -0
  62. package/docs/tutorials/ui-customization.md +17 -0
  63. package/docs/tutorials/ui.md +2 -1
  64. package/docs/tutorials/upgrade.md +3 -0
  65. package/externs/css_style_declaration.js +19 -0
  66. package/externs/lcevc.js +37 -13
  67. package/externs/managedmediasource.js +24 -0
  68. package/externs/media_remote.js +68 -0
  69. package/externs/mediatailor.js +193 -0
  70. package/externs/pictureinpicture.js +11 -0
  71. package/externs/shaka/abr_manager.js +6 -2
  72. package/externs/shaka/ads.js +27 -0
  73. package/externs/shaka/cea.js +7 -0
  74. package/externs/shaka/codecs.js +5 -3
  75. package/externs/shaka/manifest.js +31 -10
  76. package/externs/shaka/manifest_parser.js +24 -1
  77. package/externs/shaka/net.js +2 -2
  78. package/externs/shaka/offline.js +13 -2
  79. package/externs/shaka/player.js +65 -8
  80. package/externs/shaka/text.js +3 -1
  81. package/externs/shaka/transmuxer.js +1 -1
  82. package/karma.conf.js +7 -3
  83. package/lib/abr/simple_abr_manager.js +66 -9
  84. package/lib/ads/ad_manager.js +104 -50
  85. package/lib/ads/media_tailor_ad.js +297 -0
  86. package/lib/ads/media_tailor_ad_manager.js +839 -0
  87. package/lib/cast/cast_receiver.js +1 -1
  88. package/lib/cea/cea_decoder.js +28 -0
  89. package/lib/cea/dummy_caption_decoder.js +5 -0
  90. package/lib/cea/ts_cea_parser.js +15 -2
  91. package/lib/config/codec_switching_strategy.js +24 -0
  92. package/lib/dash/content_protection.js +120 -2
  93. package/lib/dash/dash_parser.js +322 -93
  94. package/lib/dash/mpd_utils.js +62 -37
  95. package/lib/dash/segment_base.js +17 -10
  96. package/lib/dash/segment_list.js +18 -9
  97. package/lib/dash/segment_template.js +122 -107
  98. package/lib/dependencies/all.js +8 -7
  99. package/lib/hls/hls_classes.js +28 -43
  100. package/lib/hls/hls_parser.js +798 -658
  101. package/lib/hls/hls_utils.js +64 -5
  102. package/lib/hls/manifest_text_parser.js +7 -11
  103. package/lib/lcevc/lcevc_dec.js +220 -0
  104. package/lib/media/adaptation_set.js +32 -14
  105. package/lib/media/adaptation_set_criteria.js +86 -16
  106. package/lib/media/closed_caption_parser.js +13 -0
  107. package/lib/media/content_workarounds.js +6 -0
  108. package/lib/media/drm_engine.js +8 -13
  109. package/lib/media/manifest_parser.js +8 -113
  110. package/lib/media/media_source_capabilities.js +10 -3
  111. package/lib/media/media_source_engine.js +286 -44
  112. package/lib/media/play_rate_controller.js +8 -38
  113. package/lib/media/presentation_timeline.js +7 -1
  114. package/lib/media/quality_observer.js +1 -1
  115. package/lib/media/segment_index.js +6 -6
  116. package/lib/media/segment_prefetch.js +92 -24
  117. package/lib/media/segment_reference.js +73 -7
  118. package/lib/media/segment_utils.js +343 -0
  119. package/lib/media/stall_detector.js +0 -3
  120. package/lib/media/streaming_engine.js +73 -38
  121. package/lib/mss/mss_parser.js +19 -2
  122. package/lib/net/networking_engine.js +67 -12
  123. package/lib/net/networking_utils.js +95 -0
  124. package/lib/offline/indexeddb/v1_storage_cell.js +3 -0
  125. package/lib/offline/indexeddb/v2_storage_cell.js +3 -0
  126. package/lib/offline/manifest_converter.js +3 -0
  127. package/lib/offline/offline_manifest_parser.js +10 -0
  128. package/lib/offline/storage.js +14 -7
  129. package/lib/player.js +1098 -1537
  130. package/lib/polyfill/mediasource.js +22 -1
  131. package/lib/text/cue.js +15 -0
  132. package/lib/text/mp4_ttml_parser.js +2 -2
  133. package/lib/text/srt_text_parser.js +2 -2
  134. package/lib/text/stub_text_displayer.js +51 -0
  135. package/lib/text/text_engine.js +3 -2
  136. package/lib/text/ttml_text_parser.js +45 -5
  137. package/lib/text/ui_text_displayer.js +8 -0
  138. package/lib/text/vtt_text_parser.js +40 -22
  139. package/lib/transmuxer/aac_transmuxer.js +1 -1
  140. package/lib/transmuxer/ac3_transmuxer.js +1 -1
  141. package/lib/transmuxer/ec3_transmuxer.js +1 -1
  142. package/lib/transmuxer/h264.js +5 -4
  143. package/lib/transmuxer/h265.js +863 -0
  144. package/lib/transmuxer/mp3_transmuxer.js +1 -1
  145. package/lib/transmuxer/mpeg_ts_transmuxer.js +4 -3
  146. package/lib/transmuxer/mss_transmuxer.js +1 -1
  147. package/lib/transmuxer/ts_transmuxer.js +187 -22
  148. package/lib/util/buffer_utils.js +26 -4
  149. package/lib/util/content_steering_manager.js +358 -0
  150. package/lib/util/error.js +30 -15
  151. package/lib/util/exp_golomb.js +30 -2
  152. package/lib/util/fairplay_utils.js +1 -1
  153. package/lib/util/fake_event.js +8 -1
  154. package/lib/util/id3_utils.js +50 -1
  155. package/lib/util/manifest_parser_utils.js +12 -8
  156. package/lib/util/mp4_generator.js +6 -8
  157. package/lib/util/mutex.js +59 -0
  158. package/lib/util/object_utils.js +1 -1
  159. package/lib/util/periods.js +156 -179
  160. package/lib/util/platform.js +44 -3
  161. package/lib/util/player_configuration.js +43 -6
  162. package/lib/util/state_history.js +6 -2
  163. package/lib/util/stream_utils.js +206 -283
  164. package/lib/util/ts_parser.js +335 -98
  165. package/lib/util/uint8array_utils.js +5 -1
  166. package/lib/util/xml_utils.js +5 -0
  167. package/maintained-branches.md +3 -2
  168. package/package.json +4 -6
  169. package/roadmap.md +25 -5
  170. package/shaka-player.uncompiled.js +2 -2
  171. package/support.html +0 -1
  172. package/test/abr/simple_abr_manager_unit.js +33 -33
  173. package/test/ads/ad_manager_unit.js +3 -2
  174. package/test/cast/cast_receiver_integration.js +50 -4
  175. package/test/cast/cast_utils_unit.js +2 -0
  176. package/test/cea/cea_decoder_unit.js +7 -0
  177. package/test/codec_switching/codec_switching_integration.js +182 -0
  178. package/test/dash/dash_parser_content_protection_unit.js +2 -0
  179. package/test/dash/dash_parser_integration.js +74 -0
  180. package/test/dash/dash_parser_live_unit.js +2 -19
  181. package/test/dash/dash_parser_manifest_unit.js +536 -2
  182. package/test/dash/dash_parser_segment_base_unit.js +2 -0
  183. package/test/dash/dash_parser_segment_list_unit.js +2 -0
  184. package/test/dash/dash_parser_segment_template_unit.js +2 -0
  185. package/test/dash/mpd_utils_unit.js +61 -30
  186. package/test/demo/demo_unit.js +0 -16
  187. package/test/hls/hls_live_unit.js +14 -3
  188. package/test/hls/hls_parser_unit.js +385 -33
  189. package/test/hls/manifest_text_parser_unit.js +32 -99
  190. package/test/media/adaptation_set_criteria_unit.js +284 -15
  191. package/test/media/adaptation_set_unit.js +2 -0
  192. package/test/media/content_workarounds_unit.js +1 -1
  193. package/test/media/drm_engine_unit.js +3 -3
  194. package/test/media/media_source_engine_unit.js +166 -2
  195. package/test/media/play_rate_controller_unit.js +0 -48
  196. package/test/media/segment_index_unit.js +5 -4
  197. package/test/media/segment_prefetch_unit.js +1 -1
  198. package/test/media/streaming_engine_unit.js +17 -17
  199. package/test/mss/mss_parser_unit.js +2 -0
  200. package/test/mss/mss_player_integration.js +3 -2
  201. package/test/net/networking_engine_unit.js +3 -3
  202. package/test/{media/manifest_parser_unit.js → net/networking_utils_unit.js} +2 -2
  203. package/test/offline/manifest_convert_unit.js +14 -0
  204. package/test/offline/offline_integration.js +2 -1
  205. package/test/offline/storage_integration.js +22 -13
  206. package/test/player_external.js +4 -2
  207. package/test/player_integration.js +15 -4
  208. package/test/player_load_graph_integration.js +47 -151
  209. package/test/player_src_equals_external.js +1 -0
  210. package/test/player_src_equals_integration.js +71 -4
  211. package/test/player_unit.js +182 -158
  212. package/test/test/assets/dash-aes-128/Fragments(video=0,format=mpd-time-csf) +0 -0
  213. package/test/test/assets/dash-aes-128/Fragments(video=20000000,format=mpd-time-csf) +0 -0
  214. package/test/test/assets/dash-aes-128/Fragments(video=40000000,format=mpd-time-csf) +0 -0
  215. package/test/test/assets/dash-aes-128/Fragments(video=60000000,format=mpd-time-csf) +0 -0
  216. package/test/test/assets/dash-aes-128/Fragments(video=i,format=mpd-time-csf) +0 -0
  217. package/test/test/assets/dash-aes-128/dash.mpd +18 -0
  218. package/test/test/assets/dash-aes-128/license +1 -0
  219. package/test/test/assets/dash-multi-codec/audio_en_2c_128k_aac.mp4 +0 -0
  220. package/test/test/assets/dash-multi-codec/audio_es_2c_64k_opus.webm +0 -0
  221. package/test/test/assets/dash-multi-codec/dash.mpd +32 -0
  222. package/test/test/assets/dash-multi-codec/video_144p_108k_h264.mp4 +0 -0
  223. package/test/test/assets/hls-ts-h265/0.ts +0 -0
  224. package/test/test/assets/hls-ts-h265/hevc.m3u8 +6 -0
  225. package/test/test/assets/hls-ts-h265/index.m3u8 +7 -0
  226. package/test/test/assets/hls-ts-muxed-aac-h265/0.ts +0 -0
  227. package/test/test/assets/hls-ts-muxed-aac-h265/1.ts +0 -0
  228. package/test/test/assets/hls-ts-muxed-aac-h265/media.m3u8 +9 -0
  229. package/test/test/assets/hls-ts-muxed-ac3-h264/media.m3u8 +24 -0
  230. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00000.ts +0 -0
  231. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00001.ts +0 -0
  232. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00002.ts +0 -0
  233. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00003.ts +0 -0
  234. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00004.ts +0 -0
  235. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00005.ts +0 -0
  236. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0000.ts +0 -0
  237. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0001.ts +0 -0
  238. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0002.ts +0 -0
  239. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0003.ts +0 -0
  240. package/test/test/assets/hls-ts-muxed-ec3-h264/prog_index.m3u8 +14 -0
  241. package/test/test/assets/hls-ts-muxed-mp3-h264/index.m3u8 +23 -0
  242. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-1-v1-a1.ts +0 -0
  243. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-2-v1-a1.ts +0 -0
  244. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-3-v1-a1.ts +0 -0
  245. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-4-v1-a1.ts +0 -0
  246. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-5-v1-a1.ts +0 -0
  247. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-6-v1-a1.ts +0 -0
  248. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-7-v1-a1.ts +0 -0
  249. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-8-v1-a1.ts +0 -0
  250. package/test/test/util/dash_parser_util.js +4 -0
  251. package/test/test/util/fake_ad_manager.js +20 -0
  252. package/test/test/util/fake_media_source_engine.js +13 -2
  253. package/test/test/util/fake_networking_engine.js +9 -1
  254. package/test/test/util/fake_segment_prefetch.js +3 -0
  255. package/test/test/util/manifest_generator.js +11 -3
  256. package/test/test/util/manifest_parser_util.js +14 -2
  257. package/test/test/util/mss_parser_util.js +4 -0
  258. package/test/test/util/offline_utils.js +2 -0
  259. package/test/test/util/simple_fakes.js +2 -2
  260. package/test/test/util/streaming_engine_util.js +10 -4
  261. package/test/test/util/test_scheme.js +6 -0
  262. package/test/test/util/ui_utils.js +4 -3
  263. package/test/text/mp4_ttml_parser_unit.js +4 -4
  264. package/test/text/srt_text_parser_unit.js +1 -1
  265. package/test/text/text_displayer_layout_unit.js +1 -1
  266. package/test/text/text_engine_unit.js +6 -0
  267. package/test/text/ttml_text_parser_unit.js +85 -2
  268. package/test/text/vtt_text_parser_unit.js +103 -31
  269. package/test/transmuxer/transmuxer_engine_integration.js +9 -0
  270. package/test/transmuxer/transmuxer_integration.js +150 -3
  271. package/test/ui/ad_ui_unit.js +2 -2
  272. package/test/ui/ui_customization_unit.js +17 -16
  273. package/test/ui/ui_integration.js +30 -20
  274. package/test/ui/ui_unit.js +28 -29
  275. package/test/util/buffer_utils_unit.js +1 -1
  276. package/test/util/content_steering_manager_unit.js +427 -0
  277. package/test/util/id3_utils_unit.js +52 -0
  278. package/test/util/stream_utils_unit.js +207 -169
  279. package/test/util/ts_parser_unit.js +3 -3
  280. package/third_party/closure-uri/uri.js +13 -1
  281. package/ui/audio_language_selection.js +9 -2
  282. package/ui/controls.js +125 -0
  283. package/ui/externs/ui.js +24 -2
  284. package/ui/language_utils.js +43 -8
  285. package/ui/less/range_elements.less +33 -0
  286. package/ui/locales/en.json +1 -0
  287. package/ui/locales/es-419.json +1 -0
  288. package/ui/locales/es.json +1 -0
  289. package/ui/locales/source.json +4 -0
  290. package/ui/localization.js +10 -0
  291. package/ui/pip_button.js +22 -120
  292. package/ui/remote_button.js +203 -0
  293. package/ui/resolution_selection.js +47 -10
  294. package/ui/seek_bar.js +296 -3
  295. package/ui/text_selection.js +2 -1
  296. package/ui/ui.js +11 -4
  297. package/demo/common/message_ids.js +0 -309
  298. package/demo/locales/en.json +0 -288
  299. package/demo/locales/source.json +0 -1146
  300. package/externs/mux.js +0 -69
  301. package/lib/lcevc/lcevc_dil.js +0 -152
  302. package/lib/routing/node.js +0 -23
  303. package/lib/routing/payload.js +0 -43
  304. package/lib/routing/walker.js +0 -587
  305. package/lib/transmuxer/muxjs_transmuxer.js +0 -242
  306. package/test/routing/walker_unit.js +0 -504
  307. package/test/transmuxer/muxjs_transmuxer_integration.js +0 -177
@@ -225,7 +225,6 @@ shaka.util.Error.Code = {
225
225
  'TEXT_ONLY_WEBVTT_SRC_EQUALS': 2013,
226
226
  'MISSING_TEXT_PLUGIN': 2014,
227
227
  'CHAPTERS_TRACK_FAILED': 2015,
228
- 'CANNOT_ADD_EXTERNAL_THUMBNAILS_TO_SRC_EQUALS': 2016,
229
228
  'UNSUPPORTED_EXTERNAL_THUMBNAILS_URI': 2017,
230
229
  'BUFFER_READ_OUT_OF_BOUNDS': 3000,
231
230
  'JS_INTEGER_OVERFLOW': 3001,
@@ -282,11 +281,13 @@ shaka.util.Error.Code = {
282
281
  'HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED': 4040,
283
282
  'HLS_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED': 4041,
284
283
  'NO_WEB_CRYPTO_API': 4042,
285
- 'HLS_AES_128_INVALID_IV_LENGTH': 4043,
286
- 'HLS_AES_128_INVALID_KEY_LENGTH': 4044,
287
284
  'CANNOT_ADD_EXTERNAL_THUMBNAILS_TO_LIVE_STREAM': 4045,
288
285
  'MSS_INVALID_XML': 4046,
289
286
  'MSS_LIVE_CONTENT_NOT_SUPPORTED': 4047,
287
+ 'AES_128_INVALID_IV_LENGTH': 4048,
288
+ 'AES_128_INVALID_KEY_LENGTH': 4049,
289
+ 'DASH_CONFLICTING_AES_128': 4050,
290
+ 'DASH_UNSUPPORTED_AES_128': 4051,
290
291
  'STREAMING_ENGINE_STARTUP_INVALID_STATE': 5006,
291
292
  'NO_RECOGNIZED_KEY_SYSTEMS': 6000,
292
293
  'REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE': 6001,
@@ -337,7 +338,8 @@ shaka.util.Error.Code = {
337
338
  'CS_AD_MANAGER_NOT_INITIALIZED': 10001,
338
339
  'SS_IMA_SDK_MISSING': 10002,
339
340
  'SS_AD_MANAGER_NOT_INITIALIZED': 10003,
340
- 'CURRENT_DAI_REQUEST_NOT_FINISHED': 10004
341
+ 'CURRENT_DAI_REQUEST_NOT_FINISHED': 10004,
342
+ 'MT_AD_MANAGER_NOT_INITIALIZED': 10005
341
343
  };
342
344
  /**
343
345
  * @summary A set of language utility functions.
@@ -545,6 +547,11 @@ shaka.ui.Localization = class extends shaka.util.FakeEventTarget {
545
547
  * @return {string}
546
548
  */
547
549
  resolve(id) {}
550
+ /**
551
+ * The locales currently used. An empty set means "no preference".
552
+ * @return {!Set.<string>}
553
+ */
554
+ getCurrentLocales() {}
548
555
  };
549
556
  /**
550
557
  * An enum for how the localization system should resolve conflicts between old
@@ -620,6 +627,18 @@ shaka.util.BufferUtils = class {
620
627
  * @return {!Uint8Array}
621
628
  */
622
629
  static toUint8(data, offset, length) {}
630
+ /**
631
+ * Creates a new Uint16Array view on the same buffer. This clamps the values
632
+ * to be within the same view (i.e. you can't use this to move past the end
633
+ * of the view, even if the underlying buffer is larger). However, you can
634
+ * pass a negative offset to access the data before the view.
635
+ * @param {BufferSource} data
636
+ * @param {number=} offset The offset from the beginning of this data's view
637
+ * to start the new view at.
638
+ * @param {number=} length The byte length of the new view.
639
+ * @return {!Uint16Array}
640
+ */
641
+ static toUint16(data, offset, length) {}
623
642
  /**
624
643
  * Creates a DataView over the given buffer.
625
644
  * @see toUint8
@@ -848,6 +867,11 @@ shaka.text.Cue.prototype.linePadding;
848
867
  * @type {number}
849
868
  */
850
869
  shaka.text.Cue.prototype.opacity;
870
+ /**
871
+ * Text combine upright as a CSS text-combine-upright value.
872
+ * @type {string}
873
+ */
874
+ shaka.text.Cue.prototype.textCombineUpright;
851
875
  /**
852
876
  * Text decoration. A combination of underline, overline
853
877
  * and line through. Empty array means no decoration.
@@ -900,6 +924,12 @@ shaka.text.Cue.prototype.isContainer;
900
924
  * @type {boolean}
901
925
  */
902
926
  shaka.text.Cue.prototype.lineBreak;
927
+ /**
928
+ * Used to indicate the type of ruby tag that should be used when rendering
929
+ * the cue. Valid values: ruby, rp, rt.
930
+ * @type {?string}
931
+ */
932
+ shaka.text.Cue.prototype.rubyTag;
903
933
  /**
904
934
  * The number of horizontal and vertical cells into which the Root Container
905
935
  * Region area is divided.
@@ -1291,9 +1321,11 @@ shaka.abr.SimpleAbrManager = class {
1291
1321
  */
1292
1322
  init(switchCallback) {}
1293
1323
  /**
1324
+ * @param {boolean=} preferFastSwitching
1325
+ * @return {shaka.extern.Variant}
1294
1326
  * @override
1295
1327
  */
1296
- chooseVariant() {}
1328
+ chooseVariant(preferFastSwitching) {}
1297
1329
  /**
1298
1330
  * @override
1299
1331
  */
@@ -1305,7 +1337,7 @@ shaka.abr.SimpleAbrManager = class {
1305
1337
  /**
1306
1338
  * @override
1307
1339
  */
1308
- segmentDownloaded(deltaTimeMs, numBytes) {}
1340
+ segmentDownloaded(deltaTimeMs, numBytes, allowSwitch) {}
1309
1341
  /**
1310
1342
  * @override
1311
1343
  */
@@ -1336,6 +1368,13 @@ shaka.config.AutoShowText = {
1336
1368
  'IF_PREFERRED_TEXT_LANGUAGE': 2,
1337
1369
  'IF_SUBTITLES_MAY_BE_NEEDED': 3
1338
1370
  };
1371
+ /**
1372
+ * @enum {string}
1373
+ */
1374
+ shaka.config.CodecSwitchingStrategy = {
1375
+ RELOAD: 'reload',
1376
+ SMOOTH: 'smooth'
1377
+ };
1339
1378
  /**
1340
1379
  * A utility to wrap abortable operations. Note that these are not cancelable.
1341
1380
  * Cancelation implies undoing what has been done so far, whereas aborting only
@@ -1430,17 +1469,20 @@ shaka.util.AbortableOperation.prototype.promise;
1430
1469
  */
1431
1470
  shaka.net.NetworkingEngine = class extends shaka.util.FakeEventTarget {
1432
1471
  /**
1433
- * @param {function(number, number)=} onProgressUpdated Called when a progress
1434
- * event is triggered. Passed the duration, in milliseconds, that the
1435
- * request took, and the number of bytes transferred.
1472
+ * @param {function(number, number, boolean)=} onProgressUpdated Called when
1473
+ * a progress event is triggered. Passed the duration, in milliseconds,
1474
+ * that the request took, the number of bytes transferred, and the boolean
1475
+ * of whether the switching is allowed.
1436
1476
  * @param {shaka.net.NetworkingEngine.OnHeadersReceived=} onHeadersReceived
1437
1477
  * Called when the headers are received for a download.
1438
1478
  * @param {shaka.net.NetworkingEngine.OnDownloadFailed=} onDownloadFailed
1439
1479
  * Called when a download fails, for any reason.
1440
1480
  * @param {shaka.net.NetworkingEngine.OnRequest=} onRequest
1441
1481
  * Called when a request is made
1482
+ * @param {shaka.net.NetworkingEngine.OnRetry=} onRetry
1483
+ * Called when a request retry is made
1442
1484
  */
1443
- constructor(onProgressUpdated, onHeadersReceived, onDownloadFailed, onRequest) {}
1485
+ constructor(onProgressUpdated, onHeadersReceived, onDownloadFailed, onRequest, onRetry) {}
1444
1486
  /**
1445
1487
  * @param {boolean} forceHTTPS
1446
1488
  */
@@ -1568,7 +1610,9 @@ shaka.net.NetworkingEngine.RequestType = {
1568
1610
  'APP': 3,
1569
1611
  'TIMING': 4,
1570
1612
  'SERVER_CERTIFICATE': 5,
1571
- 'KEY': 6
1613
+ 'KEY': 6,
1614
+ 'ADS': 7,
1615
+ 'CONTENT_STEERING': 8
1572
1616
  };
1573
1617
  /**
1574
1618
  * A more advanced form of the RequestType structure, meant to describe
@@ -1627,6 +1671,17 @@ shaka.net.NetworkingEngine.OnDownloadFailed;
1627
1671
  * A callback function called on every request
1628
1672
  */
1629
1673
  shaka.net.NetworkingEngine.OnRequest;
1674
+ /**
1675
+ * @typedef {function(
1676
+ * !shaka.net.NetworkingEngine.RequestType,
1677
+ * (shaka.extern.RequestContext|undefined),
1678
+ * string,
1679
+ * string)}
1680
+ * @description
1681
+ * A callback function called on every request retry. The first string is the
1682
+ * new URI and the second string is the old URI.
1683
+ */
1684
+ shaka.net.NetworkingEngine.OnRetry;
1630
1685
  /**
1631
1686
  * @summary
1632
1687
  * An EventManager maintains a collection of "event
@@ -2000,7 +2055,7 @@ shaka.media.InitSegmentReference = class {
2000
2055
  * the quality of the media associated with this init segment.
2001
2056
  * @param {(null|number)=} timescale
2002
2057
  * @param {(null|BufferSource)=} segmentData
2003
- * @param {?shaka.extern.HlsAes128Key=} aes128Key
2058
+ * @param {?shaka.extern.aes128Key=} aes128Key
2004
2059
  * The segment's AES-128-CBC full segment encryption key and iv.
2005
2060
  */
2006
2061
  constructor(uris, startByte, endByte, mediaQuality, timescale, segmentData, aes128Key) {}
@@ -2076,10 +2131,12 @@ shaka.media.SegmentReference = class {
2076
2131
  * @param {shaka.media.SegmentReference.Status=} status
2077
2132
  * The segment status is used to indicate that a segment does not exist or is
2078
2133
  * not available.
2079
- * @param {?shaka.extern.HlsAes128Key=} hlsAes128Key
2134
+ * @param {?shaka.extern.aes128Key=} aes128Key
2080
2135
  * The segment's AES-128-CBC full segment encryption key and iv.
2136
+ * @param {boolean=} allPartialSegments
2137
+ * Indicate if the segment has all partial segments
2081
2138
  */
2082
- constructor(startTime, endTime, uris, startByte, endByte, initSegmentReference, timestampOffset, appendWindowStart, appendWindowEnd, partialReferences, tilesLayout, tileDuration, syncTime, status, hlsAes128Key) {}
2139
+ constructor(startTime, endTime, uris, startByte, endByte, initSegmentReference, timestampOffset, appendWindowStart, appendWindowEnd, partialReferences, tilesLayout, tileDuration, syncTime, status, aes128Key, allPartialSegments) {}
2083
2140
  /**
2084
2141
  * Creates and returns the URIs of the resource containing the segment.
2085
2142
  * @return {!Array.<string>}
@@ -2146,6 +2203,24 @@ shaka.media.SegmentReference = class {
2146
2203
  * @return {boolean}
2147
2204
  */
2148
2205
  isIndependent() {}
2206
+ /**
2207
+ * Mark the reference as partial.
2208
+ */
2209
+ markAsPartial() {}
2210
+ /**
2211
+ * Returns true if the segment is partial.
2212
+ * @return {boolean}
2213
+ */
2214
+ isPartial() {}
2215
+ /**
2216
+ * Mark the reference as being the last part of the full segment
2217
+ */
2218
+ markAsLastPartial() {}
2219
+ /**
2220
+ * Returns true if reference as being the last part of the full segment.
2221
+ * @return {boolean}
2222
+ */
2223
+ isLastPartial() {}
2149
2224
  /**
2150
2225
  * Mark the reference as byterange optimization.
2151
2226
  * The "byterange optimization" means that it is playable using MP4 low
@@ -2235,8 +2310,9 @@ shaka.util.Id3Utils = class {
2235
2310
  shaka.util.ExpGolomb = class {
2236
2311
  /**
2237
2312
  * @param {!Uint8Array} data
2313
+ * @param {boolean=} convertEbsp2rbsp
2238
2314
  */
2239
- constructor(data) {}
2315
+ constructor(data, convertEbsp2rbsp) {}
2240
2316
  };
2241
2317
  /**
2242
2318
  * @see https://en.wikipedia.org/wiki/MPEG_transport_stream
@@ -2263,6 +2339,15 @@ shaka.util.TsParser = class {
2263
2339
  * @return {!Array.<shaka.extern.VideoNalu>}
2264
2340
  */
2265
2341
  parseAvcNalus(pes, nextPes) {}
2342
+ /**
2343
+ * Parse AVC and HVC Nalus
2344
+ * The code is based on hls.js
2345
+ * Credit to https://github.com/video-dev/hls.js/blob/master/src/demux/tsdemuxer.ts
2346
+ * @param {shaka.extern.MPEG_PES} pes
2347
+ * @param {?shaka.extern.VideoNalu=} lastNalu
2348
+ * @return {!Array.<shaka.extern.VideoNalu>}
2349
+ */
2350
+ parseNalus(pes, lastNalu) {}
2266
2351
  /**
2267
2352
  * Return the ID3 metadata
2268
2353
  * @return {!Array.<shaka.extern.ID3Metadata>}
@@ -2275,14 +2360,16 @@ shaka.util.TsParser = class {
2275
2360
  getAudioData() {}
2276
2361
  /**
2277
2362
  * Return the audio data
2363
+ * @param {boolean=} naluProcessing
2278
2364
  * @return {!Array.<shaka.extern.MPEG_PES>}
2279
2365
  */
2280
- getVideoData() {}
2366
+ getVideoData(naluProcessing) {}
2281
2367
  /**
2282
2368
  * Return the start time for the audio and video
2283
- * @return {{audio: ?number, video: ?number}}
2369
+ * @param {string} contentType
2370
+ * @return {?number}
2284
2371
  */
2285
- getStartTime() {}
2372
+ getStartTime(contentType) {}
2286
2373
  /**
2287
2374
  * Return the audio and video codecs
2288
2375
  * @return {{audio: ?string, video: ?string}}
@@ -2322,23 +2409,23 @@ shaka.util.TsParser = class {
2322
2409
  shaka.util.TsParser.Timescale;
2323
2410
  /**
2324
2411
  * @summary
2325
- * lcevcDil - (MPEG-5 Part 2 LCEVC - Decoder Integration Layer) provides
2412
+ * lcevcDec - (MPEG-5 Part 2 LCEVC - Decoder) provides
2326
2413
  * all the operations related to the enhancement and rendering
2327
2414
  * of LCEVC enabled streams and on to a canvas.
2328
2415
  * @implements {shaka.util.IReleasable}
2329
2416
  */
2330
- shaka.lcevc.Dil = class {
2417
+ shaka.lcevc.Dec = class {
2331
2418
  /**
2332
2419
  * @param {HTMLVideoElement} media The video element that will be attached to
2333
- * LCEVC Dil for input.
2420
+ * LCEVC Decoder for input.
2334
2421
  * @param {HTMLCanvasElement} canvas The canvas element that will be attached
2335
- * to LCEVC Dil to render the enhanced frames.
2336
- * @param {shaka.extern.LcevcConfiguration} dilConfig The LCEVC DIL
2337
- * config object to initialize the LCEVC DIL.
2422
+ * to LCEVC Decoder to render the enhanced frames.
2423
+ * @param {shaka.extern.LcevcConfiguration} lcevcConfig LCEVC configuration
2424
+ * object to initialize the LCEVC Decoder.
2338
2425
  */
2339
- constructor(media, canvas, dilConfig) {}
2426
+ constructor(media, canvas, lcevcConfig) {}
2340
2427
  /**
2341
- * Close LCEVC Dil.
2428
+ * Close LCEVC Decoder.
2342
2429
  * @override
2343
2430
  */
2344
2431
  release() {}
@@ -2534,7 +2621,9 @@ shaka.media.PresentationTimeline = class {
2534
2621
  * @typedef {{
2535
2622
  * start: number,
2536
2623
  * unscaledStart: number,
2537
- * end: number
2624
+ * end: number,
2625
+ * partialSegments: number,
2626
+ * segmentPosition: number
2538
2627
  * }}
2539
2628
  * @description
2540
2629
  * Defines a time range of a media segment. Times are in seconds.
@@ -2544,6 +2633,10 @@ shaka.media.PresentationTimeline = class {
2544
2633
  * The start time of the range in representation timescale units.
2545
2634
  * @property {number} end
2546
2635
  * The end time (exclusive) of the range.
2636
+ * @property {number} partialSegments
2637
+ * The number of partial segments
2638
+ * @property {number} segmentPosition
2639
+ * The segment position of the timeline entry as it appears in the manifest
2547
2640
  */
2548
2641
  shaka.media.PresentationTimeline.TimeRange;
2549
2642
  /**
@@ -2763,6 +2856,32 @@ shaka.text.SimpleTextDisplayer = class {
2763
2856
  */
2764
2857
  setTextVisibility(on) {}
2765
2858
  };
2859
+ /**
2860
+ * A stub text displayer plugin that does nothing
2861
+ * @implements {shaka.extern.TextDisplayer}
2862
+ */
2863
+ shaka.text.StubTextDisplayer = class {
2864
+ /**
2865
+ * @override
2866
+ */
2867
+ remove(start, end) {}
2868
+ /**
2869
+ * @override
2870
+ */
2871
+ append(cues) {}
2872
+ /**
2873
+ * @override
2874
+ */
2875
+ destroy() {}
2876
+ /**
2877
+ * @override
2878
+ */
2879
+ isTextVisible() {}
2880
+ /**
2881
+ * @override
2882
+ */
2883
+ setTextVisibility(on) {}
2884
+ };
2766
2885
  /** */
2767
2886
  shaka.util.Dom = class {
2768
2887
  /**
@@ -3010,16 +3129,9 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
3010
3129
  */
3011
3130
  static probeSupport(promptsOkay) {}
3012
3131
  /**
3013
- * Tell the player to use <code>mediaElement</code> for all <code>load</code>
3014
- * requests until <code>detach</code> or <code>destroy</code> are called.
3015
- * <p>
3016
- * Calling <code>attach</code> with <code>initializedMediaSource=true</code>
3017
- * will tell the player to take the initial load step and initialize media
3018
- * source.
3019
- * <p>
3020
- * Calls to <code>attach</code> will interrupt any in-progress calls to
3021
- * <code>load</code> but cannot interrupt calls to <code>attach</code>,
3022
- * <code>detach</code>, or <code>unload</code>.
3132
+ * Attaches the player to a media element.
3133
+ * If the player was already attached to a media element, first detaches from
3134
+ * that media element.
3023
3135
  * @param {!HTMLMediaElement} mediaElement
3024
3136
  * @param {boolean=} initializeMediaSource
3025
3137
  * @return {!Promise}
@@ -3032,39 +3144,20 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
3032
3144
  */
3033
3145
  attachCanvas(canvas) {}
3034
3146
  /**
3035
- * Tell the player to stop using its current media element. If the player is:
3036
- * <ul>
3037
- * <li>detached, this will do nothing,
3038
- * <li>attached, this will release the media element,
3039
- * <li>loading, this will abort loading, unload, and release the media
3040
- * element,
3041
- * <li>playing content, this will stop playback, unload, and release the
3042
- * media element.
3043
- * </ul>
3044
- * <p>
3045
- * Calls to <code>detach</code> will interrupt any in-progress calls to
3046
- * <code>load</code> but cannot interrupt calls to <code>attach</code>,
3047
- * <code>detach</code>, or <code>unload</code>.
3147
+ * Detach the player from the current media element. Leaves the player in a
3148
+ * state where it cannot play media, until it has been attached to something
3149
+ * else.
3150
+ * @param {boolean=} keepAdManager
3048
3151
  * @return {!Promise}
3049
3152
  */
3050
- detach() {}
3153
+ detach(keepAdManager) {}
3051
3154
  /**
3052
- * Tell the player to either return to:
3053
- * <ul>
3054
- * <li>detached (when it does not have a media element),
3055
- * <li>attached (when it has a media element and
3056
- * <code>initializedMediaSource=false</code>)
3057
- * <li>media source initialized (when it has a media element and
3058
- * <code>initializedMediaSource=true</code>)
3059
- * </ul>
3060
- * <p>
3061
- * Calls to <code>unload</code> will interrupt any in-progress calls to
3062
- * <code>load</code> but cannot interrupt calls to <code>attach</code>,
3063
- * <code>detach</code>, or <code>unload</code>.
3155
+ * Unloads the currently playing stream, if any.
3064
3156
  * @param {boolean=} initializeMediaSource
3157
+ * @param {boolean=} keepAdManager
3065
3158
  * @return {!Promise}
3066
3159
  */
3067
- unload(initializeMediaSource) {}
3160
+ unload(initializeMediaSource, keepAdManager) {}
3068
3161
  /**
3069
3162
  * Provides a way to update the stream start position during the media loading
3070
3163
  * process. Can for example be called from the <code>manifestparsed</code>
@@ -3074,22 +3167,21 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
3074
3167
  */
3075
3168
  updateStartTime(startTime) {}
3076
3169
  /**
3077
- * Tell the player to load the content at <code>assetUri</code> and start
3078
- * playback at <code>startTime</code>. Before calling <code>load</code>,
3079
- * a call to <code>attach</code> must have succeeded.
3080
- * <p>
3081
- * Calls to <code>load</code> will interrupt any in-progress calls to
3082
- * <code>load</code> but cannot interrupt calls to <code>attach</code>,
3083
- * <code>detach</code>, or <code>unload</code>.
3170
+ * Loads a new stream.
3171
+ * If another stream was already playing, first unloads that stream.
3084
3172
  * @param {string} assetUri
3085
3173
  * @param {?number=} startTime
3086
3174
  * When <code>startTime</code> is <code>null</code> or
3087
3175
  * <code>undefined</code>, playback will start at the default start time (0
3088
3176
  * for VOD and liveEdge for LIVE).
3089
- * @param {string=} mimeType
3177
+ * @param {?string=} mimeType
3090
3178
  * @return {!Promise}
3091
3179
  */
3092
3180
  load(assetUri, startTime, mimeType) {}
3181
+ /**
3182
+ * Releases all of the mutexes of the player. Meant for use by the tests.
3183
+ */
3184
+ releaseAllMutexes() {}
3093
3185
  /**
3094
3186
  * Changes configuration settings on the Player. This checks the names of
3095
3187
  * keys and the types of values to avoid coding errors. If there are errors,
@@ -3188,7 +3280,8 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
3188
3280
  isAudioOnly() {}
3189
3281
  /**
3190
3282
  * Get the range of time (in seconds) that seeking is allowed. If the player
3191
- * has not loaded content, this will return a range from 0 to 0.
3283
+ * has not loaded content and the manifest is HLS, this will return a range
3284
+ * from 0 to 0.
3192
3285
  * @return {{start: number, end: number}}
3193
3286
  */
3194
3287
  seekRange() {}
@@ -3286,6 +3379,13 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
3286
3379
  * @return {!Array.<shaka.extern.Track>}
3287
3380
  */
3288
3381
  getImageTracks() {}
3382
+ /**
3383
+ * Returns Thumbnail objects for each thumbnail for a given image track ID.
3384
+ * If the player has not loaded content, this will return a null.
3385
+ * @param {number} trackId
3386
+ * @return {!Promise.<?Array<!shaka.extern.Thumbnail>>}
3387
+ */
3388
+ getAllThumbnails(trackId) {}
3289
3389
  /**
3290
3390
  * Return a Thumbnail object from a image track Id and time.
3291
3391
  * If the player has not loaded content, this will return a null.
@@ -3667,6 +3767,138 @@ shaka.ads.ClientSideAd = class {
3667
3767
  */
3668
3768
  release() {}
3669
3769
  };
3770
+ /**
3771
+ * @implements {shaka.extern.IAd}
3772
+ */
3773
+ shaka.ads.MediaTailorAd = class {
3774
+ /**
3775
+ * @param {mediaTailor.Ad} mediaTailorAd
3776
+ * @param {number} adPosition
3777
+ * @param {number} totalAds
3778
+ * @param {HTMLMediaElement} video
3779
+ */
3780
+ constructor(mediaTailorAd, adPosition, totalAds, isLinear, video) {}
3781
+ /**
3782
+ * @override
3783
+ */
3784
+ getDuration() {}
3785
+ /**
3786
+ * @override
3787
+ */
3788
+ getMinSuggestedDuration() {}
3789
+ /**
3790
+ * @override
3791
+ */
3792
+ getRemainingTime() {}
3793
+ /**
3794
+ * @override
3795
+ */
3796
+ isPaused() {}
3797
+ /**
3798
+ * @override
3799
+ */
3800
+ isSkippable() {}
3801
+ /**
3802
+ * @override
3803
+ */
3804
+ getTimeUntilSkippable() {}
3805
+ /**
3806
+ * @override
3807
+ */
3808
+ canSkipNow() {}
3809
+ /**
3810
+ * @override
3811
+ */
3812
+ skip() {}
3813
+ /**
3814
+ * @override
3815
+ */
3816
+ pause() {}
3817
+ /**
3818
+ * @override
3819
+ */
3820
+ play() {}
3821
+ /**
3822
+ * @override
3823
+ */
3824
+ getVolume() {}
3825
+ /**
3826
+ * @override
3827
+ */
3828
+ setVolume(volume) {}
3829
+ /**
3830
+ * @override
3831
+ */
3832
+ isMuted() {}
3833
+ /**
3834
+ * @override
3835
+ */
3836
+ isLinear() {}
3837
+ /**
3838
+ * @override
3839
+ */
3840
+ resize(width, height) {}
3841
+ /**
3842
+ * @override
3843
+ */
3844
+ setMuted(muted) {}
3845
+ /**
3846
+ * @override
3847
+ */
3848
+ getSequenceLength() {}
3849
+ /**
3850
+ * @override
3851
+ */
3852
+ getPositionInSequence() {}
3853
+ /**
3854
+ * @override
3855
+ */
3856
+ getTitle() {}
3857
+ /**
3858
+ * @override
3859
+ */
3860
+ getDescription() {}
3861
+ /**
3862
+ * @override
3863
+ */
3864
+ getVastMediaBitrate() {}
3865
+ /**
3866
+ * @override
3867
+ */
3868
+ getVastMediaHeight() {}
3869
+ /**
3870
+ * @override
3871
+ */
3872
+ getVastMediaWidth() {}
3873
+ /**
3874
+ * @override
3875
+ */
3876
+ getAdId() {}
3877
+ /**
3878
+ * @override
3879
+ */
3880
+ getCreativeAdId() {}
3881
+ /**
3882
+ * @override
3883
+ */
3884
+ getAdvertiserName() {}
3885
+ /**
3886
+ * @override
3887
+ */
3888
+ getMediaUrl() {}
3889
+ /**
3890
+ * @override
3891
+ */
3892
+ getTimeOffset() {}
3893
+ /**
3894
+ * @override
3895
+ */
3896
+ getPodIndex() {}
3897
+ /**
3898
+ * @override
3899
+ */
3900
+ release() {}
3901
+ };
3670
3902
  /**
3671
3903
  * @implements {shaka.extern.IAd}
3672
3904
  */
@@ -3833,6 +4065,18 @@ shaka.ads.AdManager = class extends shaka.util.FakeEventTarget {
3833
4065
  * @override
3834
4066
  */
3835
4067
  updateClientSideAdsRenderingSettings(adsRenderingSettings) {}
4068
+ /**
4069
+ * @override
4070
+ */
4071
+ initMediaTailor(adContainer, networkingEngine, video) {}
4072
+ /**
4073
+ * @param {string} url
4074
+ * @param {Object} adsParams
4075
+ * @param {string=} backupUrl
4076
+ * @return {!Promise.<string>}
4077
+ * @override
4078
+ */
4079
+ requestMediaTailorStream(url, adsParams, backupUrl) {}
3836
4080
  /**
3837
4081
  * @override
3838
4082
  */
@@ -3853,11 +4097,20 @@ shaka.ads.AdManager = class extends shaka.util.FakeEventTarget {
3853
4097
  * @override
3854
4098
  */
3855
4099
  getServerSideCuePoints() {}
4100
+ /**
4101
+ * @return {!Array.<!shaka.extern.AdCuePoint>}
4102
+ * @override
4103
+ */
4104
+ getCuePoints() {}
3856
4105
  /**
3857
4106
  * @return {shaka.extern.AdsStats}
3858
4107
  * @override
3859
4108
  */
3860
4109
  getStats() {}
4110
+ /**
4111
+ * @override
4112
+ */
4113
+ onManifestUpdated(isLive) {}
3861
4114
  /**
3862
4115
  * @override
3863
4116
  */
@@ -4257,6 +4510,14 @@ shaka.dash.DashParser = class {
4257
4510
  * @override
4258
4511
  */
4259
4512
  onExpirationUpdated(sessionId, expiration) {}
4513
+ /**
4514
+ * @override
4515
+ */
4516
+ onInitialVariantChosen(variant) {}
4517
+ /**
4518
+ * @override
4519
+ */
4520
+ banLocation(uri) {}
4260
4521
  };
4261
4522
  /**
4262
4523
  */
@@ -4326,6 +4587,14 @@ shaka.hls.HlsParser = class {
4326
4587
  * @override
4327
4588
  */
4328
4589
  onExpirationUpdated(sessionId, expiration) {}
4590
+ /**
4591
+ * @override
4592
+ */
4593
+ onInitialVariantChosen(variant) {}
4594
+ /**
4595
+ * @override
4596
+ */
4597
+ banLocation(uri) {}
4329
4598
  };
4330
4599
  /**
4331
4600
  * Creates a new MSS parser.
@@ -4354,6 +4623,14 @@ shaka.mss.MssParser = class {
4354
4623
  * @override
4355
4624
  */
4356
4625
  onExpirationUpdated(sessionId, expiration) {}
4626
+ /**
4627
+ * @override
4628
+ */
4629
+ onInitialVariantChosen(variant) {}
4630
+ /**
4631
+ * @override
4632
+ */
4633
+ banLocation(uri) {}
4357
4634
  };
4358
4635
  /**
4359
4636
  * @summary A networking plugin to handle http and https URIs via the Fetch API.
@@ -4826,7 +5103,7 @@ shaka.text.TtmlTextParser = class {
4826
5103
  /**
4827
5104
  * @override
4828
5105
  */
4829
- parseMedia(data, time) {}
5106
+ parseMedia(data, time, uri) {}
4830
5107
  };
4831
5108
  /**
4832
5109
  * @implements {shaka.extern.TextParser}
@@ -4849,7 +5126,7 @@ shaka.text.Mp4TtmlParser = class {
4849
5126
  /**
4850
5127
  * @override
4851
5128
  */
4852
- parseMedia(data, time) {}
5129
+ parseMedia(data, time, uri) {}
4853
5130
  };
4854
5131
  /**
4855
5132
  * @implements {shaka.extern.TextParser}
@@ -4939,7 +5216,7 @@ shaka.text.SrtTextParser = class {
4939
5216
  /**
4940
5217
  * @override
4941
5218
  */
4942
- parseMedia(data, time) {}
5219
+ parseMedia(data, time, uri) {}
4943
5220
  /**
4944
5221
  * Convert a SRT format to WebVTT
4945
5222
  * @param {string} data
@@ -4997,7 +5274,7 @@ shaka.transmuxer.AacTransmuxer = class {
4997
5274
  /**
4998
5275
  * @override
4999
5276
  */
5000
- getOrginalMimeType() {}
5277
+ getOriginalMimeType() {}
5001
5278
  /**
5002
5279
  * @override
5003
5280
  */
@@ -5030,7 +5307,7 @@ shaka.transmuxer.Ac3Transmuxer = class {
5030
5307
  /**
5031
5308
  * @override
5032
5309
  */
5033
- getOrginalMimeType() {}
5310
+ getOriginalMimeType() {}
5034
5311
  /**
5035
5312
  * @override
5036
5313
  */
@@ -5063,7 +5340,7 @@ shaka.transmuxer.Ec3Transmuxer = class {
5063
5340
  /**
5064
5341
  * @override
5065
5342
  */
5066
- getOrginalMimeType() {}
5343
+ getOriginalMimeType() {}
5067
5344
  /**
5068
5345
  * @override
5069
5346
  */
@@ -5096,7 +5373,7 @@ shaka.transmuxer.Mp3Transmuxer = class {
5096
5373
  /**
5097
5374
  * @override
5098
5375
  */
5099
- getOrginalMimeType() {}
5376
+ getOriginalMimeType() {}
5100
5377
  /**
5101
5378
  * @override
5102
5379
  */
@@ -5129,11 +5406,11 @@ shaka.transmuxer.MpegTsTransmuxer = class {
5129
5406
  /**
5130
5407
  * @override
5131
5408
  */
5132
- getOrginalMimeType() {}
5409
+ getOriginalMimeType() {}
5133
5410
  /**
5134
5411
  * @override
5135
5412
  */
5136
- transmux(data) {}
5413
+ transmux(data, stream, reference, duration, contentType) {}
5137
5414
  };
5138
5415
  /**
5139
5416
  * @implements {shaka.extern.Transmuxer}
@@ -5162,45 +5439,12 @@ shaka.transmuxer.MssTransmuxer = class {
5162
5439
  /**
5163
5440
  * @override
5164
5441
  */
5165
- getOrginalMimeType() {}
5442
+ getOriginalMimeType() {}
5166
5443
  /**
5167
5444
  * @override
5168
5445
  */
5169
5446
  transmux(data, stream, reference) {}
5170
5447
  };
5171
- /**
5172
- * @implements {shaka.extern.Transmuxer}
5173
- */
5174
- shaka.transmuxer.MuxjsTransmuxer = class {
5175
- /**
5176
- * @param {string} mimeType
5177
- */
5178
- constructor(mimeType) {}
5179
- /**
5180
- * @override
5181
- */
5182
- destroy() {}
5183
- /**
5184
- * Check if the mime type and the content type is supported.
5185
- * @param {string} mimeType
5186
- * @param {string=} contentType
5187
- * @return {boolean}
5188
- * @override
5189
- */
5190
- isSupported(mimeType, contentType) {}
5191
- /**
5192
- * @override
5193
- */
5194
- convertCodecs(contentType, mimeType) {}
5195
- /**
5196
- * @override
5197
- */
5198
- getOrginalMimeType() {}
5199
- /**
5200
- * @override
5201
- */
5202
- transmux(data) {}
5203
- };
5204
5448
  /**
5205
5449
  * @implements {shaka.extern.Transmuxer}
5206
5450
  */
@@ -5228,7 +5472,7 @@ shaka.transmuxer.TsTransmuxer = class {
5228
5472
  /**
5229
5473
  * @override
5230
5474
  */
5231
- getOrginalMimeType() {}
5475
+ getOriginalMimeType() {}
5232
5476
  /**
5233
5477
  * @override
5234
5478
  */
@@ -5548,6 +5792,16 @@ shaka.ui.Controls = class extends shaka.util.FakeEventTarget {
5548
5792
  isFullScreenEnabled() {}
5549
5793
  /** */
5550
5794
  toggleFullScreen() {}
5795
+ /**
5796
+ * @return {boolean}
5797
+ */
5798
+ isPiPAllowed() {}
5799
+ /**
5800
+ * @return {boolean}
5801
+ */
5802
+ isPiPEnabled() {}
5803
+ /** */
5804
+ togglePiP() {}
5551
5805
  /** */
5552
5806
  showAdUI() {}
5553
5807
  /** */
@@ -5756,6 +6010,17 @@ shaka.ui.PresentationTimeTracker = class extends shaka.ui.Element {
5756
6010
  */
5757
6011
  constructor(parent, controls) {}
5758
6012
  };
6013
+ /**
6014
+ * @extends {shaka.ui.Element}
6015
+ * @final
6016
+ */
6017
+ shaka.ui.RemoteButton = class extends shaka.ui.Element {
6018
+ /**
6019
+ * @param {!HTMLElement} parent
6020
+ * @param {!shaka.ui.Controls} controls
6021
+ */
6022
+ constructor(parent, controls) {}
6023
+ };
5759
6024
  /**
5760
6025
  * @extends {shaka.ui.SettingsMenu}
5761
6026
  * @final