shaka-player 4.3.10 → 4.4.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 (316) hide show
  1. package/.github/workflows/release-please.yaml +7 -0
  2. package/AUTHORS +9 -0
  3. package/CHANGELOG.md +295 -200
  4. package/CONTRIBUTORS +8 -0
  5. package/LICENSE +32 -0
  6. package/README.md +63 -10
  7. package/demo/autoTemplate.txt +40 -5
  8. package/demo/close_button.js +11 -0
  9. package/demo/common/asset.js +13 -1
  10. package/demo/common/assets.js +53 -3
  11. package/demo/common/message_ids.js +25 -1
  12. package/demo/config.js +69 -10
  13. package/demo/customWarning.txt +2 -2
  14. package/demo/index.html +3 -1
  15. package/demo/locales/en.json +26 -2
  16. package/demo/locales/source.json +105 -9
  17. package/demo/main.js +52 -9
  18. package/demo/search.js +3 -1
  19. package/demo/service_worker.js +3 -0
  20. package/dist/controls.css +1 -1
  21. package/dist/controls.css.map +1 -1
  22. package/dist/demo.compiled.debug.js +124 -112
  23. package/dist/demo.compiled.debug.map +3 -3
  24. package/dist/demo.compiled.js +124 -112
  25. package/dist/demo.compiled.map +3 -3
  26. package/dist/deps.js +46 -28
  27. package/dist/locales.js +28 -28
  28. package/dist/receiver.compiled.debug.js +52 -46
  29. package/dist/receiver.compiled.debug.map +3 -3
  30. package/dist/receiver.compiled.js +52 -46
  31. package/dist/receiver.compiled.map +3 -3
  32. package/dist/shaka-player.compiled.d.ts +676 -391
  33. package/dist/shaka-player.compiled.debug.d.ts +676 -391
  34. package/dist/shaka-player.compiled.debug.externs.js +1188 -616
  35. package/dist/shaka-player.compiled.debug.js +1045 -700
  36. package/dist/shaka-player.compiled.debug.map +4 -4
  37. package/dist/shaka-player.compiled.externs.js +1188 -616
  38. package/dist/shaka-player.compiled.js +1094 -933
  39. package/dist/shaka-player.compiled.map +4 -4
  40. package/dist/shaka-player.ui.d.ts +677 -392
  41. package/dist/shaka-player.ui.debug.d.ts +677 -392
  42. package/dist/shaka-player.ui.debug.externs.js +1023 -451
  43. package/dist/shaka-player.ui.debug.js +1100 -739
  44. package/dist/shaka-player.ui.debug.map +4 -4
  45. package/dist/shaka-player.ui.externs.js +1023 -451
  46. package/dist/shaka-player.ui.js +1244 -1071
  47. package/dist/shaka-player.ui.map +4 -4
  48. package/docs/tutorials/ad_monetization.md +15 -1
  49. package/docs/tutorials/application-level-redirects.md +1 -1
  50. package/docs/tutorials/config.md +9 -5
  51. package/docs/tutorials/drm-config.md +61 -0
  52. package/docs/tutorials/fairplay.md +19 -4
  53. package/docs/tutorials/license-server-auth.md +4 -4
  54. package/docs/tutorials/license-wrapping.md +2 -2
  55. package/docs/tutorials/ui-customization.md +7 -3
  56. package/docs/tutorials/ui.md +7 -7
  57. package/docs/tutorials/upgrade.md +3 -0
  58. package/externs/ima.js +123 -2
  59. package/externs/isoboxer.js +217 -0
  60. package/externs/mediakeys.js +18 -0
  61. package/externs/mux.js +1 -105
  62. package/externs/pictureinpicture.js +48 -0
  63. package/externs/shaka/ads.js +61 -1
  64. package/externs/shaka/cea.js +110 -0
  65. package/externs/shaka/codecs.js +32 -0
  66. package/externs/shaka/manifest.js +101 -1
  67. package/externs/shaka/manifest_parser.js +0 -10
  68. package/externs/shaka/net.js +36 -7
  69. package/externs/shaka/offline.js +8 -1
  70. package/externs/shaka/player.js +220 -21
  71. package/externs/shaka/text.js +1 -382
  72. package/externs/shaka/transmuxer.js +59 -0
  73. package/karma.conf.js +13 -0
  74. package/lib/abr/simple_abr_manager.js +6 -3
  75. package/lib/ads/ad_manager.js +60 -2
  76. package/lib/ads/client_side_ad.js +86 -0
  77. package/lib/ads/client_side_ad_manager.js +79 -3
  78. package/lib/ads/server_side_ad.js +86 -0
  79. package/lib/ads/server_side_ad_manager.js +13 -0
  80. package/lib/cast/cast_utils.js +1 -0
  81. package/lib/cea/cea608_data_channel.js +24 -14
  82. package/lib/cea/cea608_memory.js +5 -2
  83. package/lib/cea/cea708_service.js +8 -9
  84. package/lib/cea/cea708_window.js +1 -2
  85. package/lib/cea/cea_decoder.js +23 -6
  86. package/lib/cea/cea_utils.js +25 -2
  87. package/lib/cea/dummy_caption_decoder.js +21 -0
  88. package/lib/cea/dummy_cea_parser.js +1 -3
  89. package/lib/cea/mp4_cea_parser.js +15 -10
  90. package/lib/cea/ts_cea_parser.js +69 -0
  91. package/lib/dash/content_protection.js +32 -2
  92. package/lib/dash/dash_parser.js +93 -31
  93. package/lib/dash/mpd_utils.js +6 -25
  94. package/lib/dash/segment_base.js +12 -14
  95. package/lib/dash/segment_list.js +10 -6
  96. package/lib/dash/segment_template.js +349 -32
  97. package/lib/dependencies/all.js +8 -0
  98. package/lib/hls/hls_classes.js +33 -8
  99. package/lib/hls/hls_parser.js +805 -191
  100. package/lib/hls/manifest_text_parser.js +4 -14
  101. package/lib/media/adaptation_set_criteria.js +43 -3
  102. package/lib/media/closed_caption_parser.js +74 -12
  103. package/lib/media/drm_engine.js +189 -49
  104. package/lib/media/gap_jumping_controller.js +1 -1
  105. package/lib/media/manifest_parser.js +34 -0
  106. package/lib/media/media_source_capabilities.js +10 -0
  107. package/lib/media/media_source_engine.js +475 -231
  108. package/lib/media/playhead.js +1 -1
  109. package/lib/media/presentation_timeline.js +62 -0
  110. package/lib/media/segment_index.js +50 -14
  111. package/lib/media/segment_prefetch.js +277 -0
  112. package/lib/media/segment_reference.js +70 -4
  113. package/lib/media/streaming_engine.js +258 -81
  114. package/lib/media/video_wrapper.js +15 -7
  115. package/lib/mss/content_protection.js +353 -0
  116. package/lib/mss/mss_parser.js +1081 -0
  117. package/lib/net/networking_engine.js +60 -10
  118. package/lib/offline/indexeddb/v1_storage_cell.js +1 -0
  119. package/lib/offline/indexeddb/v2_storage_cell.js +1 -0
  120. package/lib/offline/manifest_converter.js +6 -0
  121. package/lib/offline/storage.js +2 -4
  122. package/lib/player.js +309 -105
  123. package/lib/polyfill/media_capabilities.js +43 -3
  124. package/lib/polyfill/patchedmediakeys_apple.js +5 -0
  125. package/lib/polyfill/patchedmediakeys_nop.js +5 -0
  126. package/lib/polyfill/patchedmediakeys_webkit.js +5 -0
  127. package/lib/text/cue.js +208 -130
  128. package/lib/text/lrc_text_parser.js +2 -2
  129. package/lib/text/mp4_vtt_parser.js +2 -2
  130. package/lib/text/sbv_text_parser.js +1 -1
  131. package/lib/text/simple_text_displayer.js +2 -1
  132. package/lib/text/srt_text_parser.js +9 -1
  133. package/lib/text/ssa_text_parser.js +2 -2
  134. package/lib/text/text_engine.js +3 -21
  135. package/lib/text/text_utils.js +71 -20
  136. package/lib/text/ui_text_displayer.js +14 -14
  137. package/lib/text/vtt_text_parser.js +22 -14
  138. package/lib/transmuxer/aac_transmuxer.js +224 -0
  139. package/lib/transmuxer/ac3.js +142 -0
  140. package/lib/transmuxer/ac3_transmuxer.js +212 -0
  141. package/lib/transmuxer/adts.js +232 -0
  142. package/lib/transmuxer/ec3.js +103 -0
  143. package/lib/transmuxer/ec3_transmuxer.js +212 -0
  144. package/lib/transmuxer/h264.js +324 -0
  145. package/lib/transmuxer/mp3_transmuxer.js +204 -0
  146. package/lib/transmuxer/mpeg_audio.js +196 -0
  147. package/lib/transmuxer/mpeg_ts_transmuxer.js +182 -0
  148. package/lib/transmuxer/mss_transmuxer.js +389 -0
  149. package/lib/{media/transmuxer.js → transmuxer/muxjs_transmuxer.js} +34 -80
  150. package/lib/transmuxer/transmuxer_engine.js +161 -0
  151. package/lib/transmuxer/ts_transmuxer.js +738 -0
  152. package/lib/util/cmcd_manager.js +131 -71
  153. package/lib/util/error.js +62 -26
  154. package/lib/util/exp_golomb.js +220 -0
  155. package/lib/util/fairplay_utils.js +64 -13
  156. package/lib/util/id3_utils.js +56 -3
  157. package/lib/util/language_utils.js +11 -8
  158. package/lib/util/manifest_parser_utils.js +3 -0
  159. package/lib/util/mime_utils.js +44 -7
  160. package/lib/util/mp4_box_parsers.js +233 -5
  161. package/lib/util/mp4_generator.js +1381 -0
  162. package/lib/util/periods.js +40 -34
  163. package/lib/util/platform.js +17 -3
  164. package/lib/util/player_configuration.js +38 -1
  165. package/lib/util/stream_utils.js +138 -27
  166. package/lib/util/text_parser.js +1 -1
  167. package/lib/util/ts_parser.js +470 -47
  168. package/lib/util/xml_utils.js +16 -3
  169. package/maintained-branches.md +2 -2
  170. package/package.json +3 -1
  171. package/roadmap.md +21 -6
  172. package/shaka-player.uncompiled.js +18 -0
  173. package/test/abr/simple_abr_manager_unit.js +32 -4
  174. package/test/ads/ad_manager_unit.js +18 -2
  175. package/test/cast/cast_utils_unit.js +7 -2
  176. package/test/cea/cea608_memory_unit.js +24 -0
  177. package/test/cea/cea_decoder_unit.js +33 -0
  178. package/test/dash/dash_parser_content_protection_unit.js +93 -3
  179. package/test/dash/dash_parser_live_unit.js +56 -13
  180. package/test/dash/dash_parser_manifest_unit.js +70 -2
  181. package/test/dash/dash_parser_segment_base_unit.js +14 -9
  182. package/test/dash/dash_parser_segment_template_unit.js +286 -6
  183. package/test/demo/demo_unit.js +5 -1
  184. package/test/hls/hls_live_unit.js +188 -28
  185. package/test/hls/hls_parser_unit.js +250 -109
  186. package/test/hls/manifest_text_parser_unit.js +18 -13
  187. package/test/media/adaptation_set_criteria_unit.js +46 -14
  188. package/test/media/adaptation_set_unit.js +2 -0
  189. package/test/media/drm_engine_integration.js +11 -8
  190. package/test/media/drm_engine_unit.js +220 -7
  191. package/test/media/media_source_engine_integration.js +122 -38
  192. package/test/media/media_source_engine_unit.js +133 -153
  193. package/test/media/playhead_unit.js +3 -0
  194. package/test/media/presentation_timeline_unit.js +51 -0
  195. package/test/media/segment_index_unit.js +52 -0
  196. package/test/media/segment_prefetch_unit.js +243 -0
  197. package/test/media/streaming_engine_integration.js +9 -3
  198. package/test/media/streaming_engine_unit.js +440 -59
  199. package/test/mss/mss_parser_content_protection_unit.js +49 -0
  200. package/test/mss/mss_parser_unit.js +472 -0
  201. package/test/mss/mss_player_integration.js +123 -0
  202. package/test/offline/manifest_convert_unit.js +9 -0
  203. package/test/offline/storage_integration.js +6 -1
  204. package/test/player_unit.js +386 -133
  205. package/test/polyfill/media_capabilities_unit.js +18 -0
  206. package/test/test/assets/hls-raw-aac/fileSequence0.aac +0 -0
  207. package/test/test/assets/hls-raw-aac/fileSequence1.aac +0 -0
  208. package/test/test/assets/hls-raw-aac/fileSequence2.aac +0 -0
  209. package/test/test/assets/hls-raw-aac/fileSequence3.aac +0 -0
  210. package/test/test/assets/hls-raw-aac/manifest.m3u8 +4 -0
  211. package/test/test/assets/hls-raw-aac/stream.m4a.m3u8 +14 -0
  212. package/test/test/assets/hls-raw-ac3/fileSequence0.ac3 +0 -0
  213. package/test/test/assets/hls-raw-ac3/fileSequence1.ac3 +0 -0
  214. package/test/test/assets/hls-raw-ac3/fileSequence2.ac3 +0 -0
  215. package/test/test/assets/hls-raw-ac3/fileSequence3.ac3 +0 -0
  216. package/test/test/assets/hls-raw-ac3/fileSequence4.ac3 +0 -0
  217. package/test/test/assets/hls-raw-ac3/fileSequence5.ac3 +0 -0
  218. package/test/test/assets/hls-raw-ac3/fileSequence6.ac3 +0 -0
  219. package/test/test/assets/hls-raw-ac3/fileSequence7.ac3 +0 -0
  220. package/test/test/assets/hls-raw-ac3/prog_index.m3u8 +31 -0
  221. package/test/test/assets/hls-raw-ec3/fileSequence0.ec3 +0 -0
  222. package/test/test/assets/hls-raw-ec3/fileSequence1.ec3 +0 -0
  223. package/test/test/assets/hls-raw-ec3/fileSequence2.ec3 +0 -0
  224. package/test/test/assets/hls-raw-ec3/fileSequence3.ec3 +0 -0
  225. package/test/test/assets/hls-raw-ec3/fileSequence4.ec3 +0 -0
  226. package/test/test/assets/hls-raw-ec3/fileSequence5.ec3 +0 -0
  227. package/test/test/assets/hls-raw-ec3/fileSequence6.ec3 +0 -0
  228. package/test/test/assets/hls-raw-ec3/fileSequence7.ec3 +0 -0
  229. package/test/test/assets/hls-raw-ec3/prog_index.m3u8 +31 -0
  230. package/test/test/assets/hls-raw-mp3/chunklist_w905519204.m3u8 +13 -0
  231. package/test/test/assets/hls-raw-mp3/media_w905519204_0.mp3 +0 -0
  232. package/test/test/assets/hls-raw-mp3/media_w905519204_1.mp3 +0 -0
  233. package/test/test/assets/hls-raw-mp3/media_w905519204_2.mp3 +0 -0
  234. package/test/test/assets/hls-raw-mp3/media_w905519204_3.mp3 +0 -0
  235. package/test/test/assets/hls-raw-mp3/playlist.m3u8 +4 -0
  236. package/test/test/assets/hls-ts-aac/playlist.m3u8 +23 -0
  237. package/test/test/assets/hls-ts-aac/segment_0.ts +0 -0
  238. package/test/test/assets/hls-ts-aac/segment_1.ts +0 -0
  239. package/test/test/assets/hls-ts-aac/segment_2.ts +0 -0
  240. package/test/test/assets/hls-ts-aac/segment_3.ts +0 -0
  241. package/test/test/assets/hls-ts-aac/segment_4.ts +0 -0
  242. package/test/test/assets/hls-ts-aac/segment_5.ts +0 -0
  243. package/test/test/assets/hls-ts-aac/segment_6.ts +0 -0
  244. package/test/test/assets/hls-ts-aac/segment_7.ts +0 -0
  245. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0000.ts +0 -0
  246. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0001.ts +0 -0
  247. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0002.ts +0 -0
  248. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0003.ts +0 -0
  249. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0004.ts +0 -0
  250. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0005.ts +0 -0
  251. package/test/test/assets/hls-ts-ac3/prog_index.m3u8 +19 -0
  252. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0000.ts +0 -0
  253. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0001.ts +0 -0
  254. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0002.ts +0 -0
  255. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0003.ts +0 -0
  256. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0004.ts +0 -0
  257. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0005.ts +0 -0
  258. package/test/test/assets/hls-ts-ec3/prog_index.m3u8 +19 -0
  259. package/test/test/assets/hls-ts-h264/fileSequence0.ts +0 -0
  260. package/test/test/assets/hls-ts-h264/fileSequence1.ts +0 -0
  261. package/test/test/assets/hls-ts-h264/fileSequence2.ts +0 -0
  262. package/test/test/assets/hls-ts-h264/fileSequence3.ts +0 -0
  263. package/test/test/assets/hls-ts-h264/fileSequence4.ts +0 -0
  264. package/test/test/assets/hls-ts-h264/fileSequence5.ts +0 -0
  265. package/test/test/assets/hls-ts-h264/prog_index.m3u8 +25 -0
  266. package/test/test/assets/hls-ts-mp3/manifest.m3u8 +13 -0
  267. package/test/test/assets/hls-ts-mp3/media_w239891843_0.ts +0 -0
  268. package/test/test/assets/hls-ts-mp3/media_w239891843_1.ts +0 -0
  269. package/test/test/assets/hls-ts-mp3/media_w239891843_2.ts +0 -0
  270. package/test/test/assets/hls-ts-mp3/media_w239891843_3.ts +0 -0
  271. package/test/test/assets/hls-ts-muxed-aac-h264/chunk.m3u8 +17 -0
  272. package/test/test/assets/hls-ts-muxed-aac-h264/n_0_0_0.ts +0 -0
  273. package/test/test/assets/hls-ts-muxed-aac-h264/n_1_0_0.ts +0 -0
  274. package/test/test/assets/hls-ts-muxed-aac-h264/n_2_0_0.ts +0 -0
  275. package/test/test/assets/hls-ts-muxed-aac-h264/n_3_0_0.ts +0 -0
  276. package/test/test/assets/hls-ts-muxed-aac-h264/n_4_0_0.ts +0 -0
  277. package/test/test/assets/hls-ts-muxed-aac-h264/n_5_0_0.ts +0 -0
  278. package/test/test/assets/hls-ts-muxed-aac-h264/playlist.m3u8 +4 -0
  279. package/test/test/boot.js +7 -2
  280. package/test/test/util/fake_ad.js +99 -0
  281. package/test/test/util/fake_ad_manager.js +7 -1
  282. package/test/test/util/fake_networking_engine.js +41 -14
  283. package/test/test/util/fake_segment_prefetch.js +81 -0
  284. package/test/test/util/manifest_generator.js +19 -5
  285. package/test/test/util/mss_parser_util.js +115 -0
  286. package/test/test/util/offline_utils.js +1 -0
  287. package/test/test/util/simple_fakes.js +12 -3
  288. package/test/test/util/streaming_engine_util.js +14 -4
  289. package/test/test/util/ttml_utils.js +2 -2
  290. package/test/text/cue_integration.js +1 -1
  291. package/test/text/srt_text_parser_unit.js +78 -0
  292. package/test/text/text_engine_unit.js +17 -8
  293. package/test/text/ui_text_displayer_unit.js +4 -4
  294. package/test/text/vtt_text_parser_unit.js +59 -40
  295. package/test/text/web_vtt_generator_unit.js +9 -3
  296. package/test/{media/transmuxer_integration.js → transmuxer/muxjs_transmuxer_integration.js} +30 -33
  297. package/test/transmuxer/transmuxer_engine_integration.js +60 -0
  298. package/test/transmuxer/transmuxer_integration.js +296 -0
  299. package/test/util/cmcd_manager_unit.js +162 -13
  300. package/test/util/language_utils_unit.js +9 -2
  301. package/test/util/mp4_box_parsers_unit.js +39 -4
  302. package/test/util/periods_unit.js +34 -26
  303. package/test/util/stream_utils_unit.js +60 -107
  304. package/ui/controls.js +19 -1
  305. package/ui/controls.less +1 -0
  306. package/ui/externs/ui.js +11 -1
  307. package/ui/language_utils.js +15 -0
  308. package/ui/less/thumbnails.less +26 -0
  309. package/ui/locales/oc.json +42 -0
  310. package/ui/pip_button.js +83 -2
  311. package/ui/range_element.js +15 -0
  312. package/ui/resolution_selection.js +9 -2
  313. package/ui/seek_bar.js +223 -0
  314. package/ui/ui.js +5 -0
  315. package/lib/cea/i_caption_decoder.js +0 -51
  316. package/lib/cea/i_cea_parser.js +0 -68
@@ -0,0 +1,217 @@
1
+ /*! @license
2
+ * Shaka Player
3
+ * Copyright 2016 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Externs for codem-isoboxer library.
9
+ * @externs
10
+ */
11
+
12
+
13
+ /**
14
+ * @typedef {{
15
+ * Utils: !ISOBoxerUtils,
16
+ * parseBuffer: function(!(ArrayBuffer|ArrayBufferView)):!ISOBoxer,
17
+ * createBox: function(string, !ISOBoxer, boolean=):!ISOBoxer,
18
+ * createFullBox: function(string, !ISOBoxer, ?ISOBoxer=):!ISOBoxer,
19
+ * addBoxProcessor: function(string, function()):!ISOBoxer,
20
+ * createFile: function():!ISOBoxer,
21
+ * write: function():!ArrayBuffer,
22
+ * fetch: function(!ArrayBuffer):!ISOBoxer
23
+ * }}
24
+ * @property {!ISOBoxerUtils} Utils
25
+ * @property {function(!(ArrayBuffer|ArrayBufferView)):!ISOBoxer} parseBuffer
26
+ * @property {function(string, !ISOBoxer, boolean=):!ISOBoxer} createBox
27
+ * @property {function(string, !ISOBoxer, ?ISOBoxer=):!ISOBoxer} createFullBox
28
+ * @property {function(string, function()):!ISOBoxer} addBoxProcessor
29
+ * @property {function():!ISOBoxer} createFile
30
+ * @property {function():!ArrayBuffer} write
31
+ * @property {function(!ArrayBuffer):!ISOBoxer} fetch
32
+ * @const
33
+ */
34
+ var ISOBoxer;
35
+
36
+
37
+ /**
38
+ * @typedef {{
39
+ * appendBox: function(!ISOBoxer, !ISOBoxer):!ISOBox
40
+ * }}
41
+ * @const
42
+ */
43
+ var ISOBoxerUtils;
44
+
45
+
46
+ /**
47
+ * @typedef {{
48
+ * _parsing: boolean,
49
+ * type: string,
50
+ * size: number,
51
+ * _parent: ISOBox,
52
+ * boxes: !Array.<!ISOBox>,
53
+ * entry: !Array.<!Object>,
54
+ * version: !number,
55
+ * flags: !number,
56
+ * sample_count: !number,
57
+ * default_sample_info_size: !number,
58
+ * entry_count: !number,
59
+ * getLength: function():number,
60
+ * _procFullBox: function(),
61
+ * _procField: function(!string, !string, !number),
62
+ * _procFieldArray: function(!string, !number, !string, !number),
63
+ * _procEntries: function(!string, !number, !function(!ISOEntry)),
64
+ * _procEntryField: function(!ISOBox, !string, !string, !number),
65
+ * _procSubEntries: function(!ISOBox, !string, !number, !function(!ISOEntry)),
66
+ * major_brand: string,
67
+ * minor_version: number,
68
+ * compatible_brands: Array.<string>,
69
+ * _data: Array.<number>,
70
+ * creation_time: number,
71
+ * modification_time: number,
72
+ * timescale: number,
73
+ * duration: number,
74
+ * rate: number,
75
+ * volume: number,
76
+ * reserved1: number,
77
+ * reserved2: (Array.<number>|number),
78
+ * matrix: Array.<number>,
79
+ * pre_defined: (Array.<number>|number),
80
+ * next_track_ID: number,
81
+ * track_ID: number,
82
+ * layer: number,
83
+ * alternate_group: number,
84
+ * reserved3: number,
85
+ * width: number,
86
+ * height: number,
87
+ * language: string,
88
+ * handler_type: string,
89
+ * name: string,
90
+ * reserved: Array.<number>,
91
+ * graphicsmode: number,
92
+ * opcolor: Array.<number>,
93
+ * balance: number,
94
+ * entries: Array.<!ISOBox>,
95
+ * location: string,
96
+ * data_reference_index: number,
97
+ * pre_defined1: number,
98
+ * pre_defined2: Array.<number>,
99
+ * pre_defined3: number,
100
+ * horizresolution: number,
101
+ * vertresolution: number,
102
+ * frame_count: number,
103
+ * compressorname: Array.<number>,
104
+ * depth: number,
105
+ * config: Uint8Array,
106
+ * channelcount: number,
107
+ * samplesize: number,
108
+ * reserved_3: number,
109
+ * samplerate: number,
110
+ * esds: Uint8Array,
111
+ * data_format: number,
112
+ * scheme_type: number,
113
+ * scheme_version: number,
114
+ * default_IsEncrypted: number,
115
+ * default_IV_size: number,
116
+ * default_KID: Array.<number>,
117
+ * default_sample_description_index: number,
118
+ * default_sample_duration: number,
119
+ * default_sample_size: number,
120
+ * default_sample_flags: number,
121
+ * baseMediaDecodeTime: number,
122
+ * usertype: ?string,
123
+ * offset: Array.<number>,
124
+ * sample_info_size: Array.<number>,
125
+ * data_offset: number
126
+ * }}
127
+ * @property {boolean} _parsing
128
+ * @property {string} type
129
+ * @property {number} size
130
+ * @property {ISOBox} _parent
131
+ * @property {!Array.<!ISOBox>} boxes
132
+ * @property {!Array.<!ISOEntry>} entry
133
+ * @property {!number} version
134
+ * @property {!number} flags
135
+ * @property {!number} sample_count
136
+ * @property {!number} default_sample_info_size
137
+ * @property {!number} entry_count
138
+ * @property {function()} _procFullBox
139
+ * @property {function(!string, !string, !number)} _procField
140
+ * @property {function(!string, !number, !string, !number)} _procFieldArray
141
+ * @property {function(!string, !number, !function(!ISOEntry))} _procEntries
142
+ * @property {function(!ISOBox, !string, !string, !number)} _procEntryField
143
+ * @property {function(!ISOBox, !string, !number, !function(!ISOEntry))}
144
+ * _procSubEntries
145
+ * @property {string} major_brand
146
+ * @property {number} minor_version
147
+ * @property {Array.<string>} compatible_brands
148
+ * @property {Array.<number>} _data
149
+ * @property {number} creation_time
150
+ * @property {number} modification_time
151
+ * @property {number} timescale
152
+ * @property {number} duration
153
+ * @property {number} rate
154
+ * @property {number} volume
155
+ * @property {number} reserved1
156
+ * @property {Array.<number>|number} reserved2
157
+ * @property {Array.<number>} matrix
158
+ * @property {Array.<number>|number} pre_defined
159
+ * @property {number} next_track_ID
160
+ * @property {number} track_ID
161
+ * @property {number} layer
162
+ * @property {number} alternate_group
163
+ * @property {number} reserved3
164
+ * @property {number} width
165
+ * @property {number} height
166
+ * @property {string} language
167
+ * @property {string} handler_type
168
+ * @property {string} name
169
+ * @property {Array.<number>} reserved
170
+ * @property {number} graphicsmode
171
+ * @property {Array.<number>} opcolor
172
+ * @property {number} balance
173
+ * @property {Array.<!ISOBox} entries
174
+ * @property {string} location
175
+ * @property {number} data_reference_index
176
+ * @property {number} pre_defined1
177
+ * @property {Array.<number>} pre_defined2
178
+ * @property {number} pre_defined3
179
+ * @property {number} horizresolution
180
+ * @property {number} vertresolution
181
+ * @property {number} frame_count
182
+ * @property {number} compressorname
183
+ * @property {number} depth
184
+ * @property {Uint8Array} config
185
+ * @property {number} channelcount
186
+ * @property {number} samplesize
187
+ * @property {number} reserved_3
188
+ * @property {number} samplerate
189
+ * @property {Uint8Array} esds
190
+ * @property {number} data_format
191
+ * @property {number} scheme_type
192
+ * @property {number} scheme_version
193
+ * @property {number} default_IsEncrypted
194
+ * @property {number} default_IV_size
195
+ * @property {Array.<number>} default_KID
196
+ * @property {number} default_sample_description_index
197
+ * @property {number} default_sample_duration
198
+ * @property {number} default_sample_size
199
+ * @property {number} default_sample_flags
200
+ * @property {number} baseMediaDecodeTime
201
+ * @property {?string} usertype
202
+ * @property {Array.<number} offset
203
+ * @property {Array.<number} sample_info_size
204
+ * @property {number} data_offset
205
+ * @const
206
+ */
207
+ var ISOBox;
208
+
209
+
210
+ /**
211
+ * @typedef {{
212
+ * NumberOfEntries: number
213
+ * }}
214
+ * @property {number} NumberOfEntries
215
+ * @const
216
+ */
217
+ var ISOEntry;
@@ -0,0 +1,18 @@
1
+ /*! @license
2
+ * Shaka Player
3
+ * Copyright 2016 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Externs for MediaKeys which were missing in the
9
+ * Closure compiler.
10
+ *
11
+ * @externs
12
+ */
13
+
14
+ /**
15
+ * @param {Object} policy
16
+ * @return {!Promise.<string>}
17
+ */
18
+ MediaKeys.prototype.getStatusForPolicy = function(policy) {};
package/externs/mux.js CHANGED
@@ -23,29 +23,6 @@ var muxjs = {};
23
23
  muxjs.mp4 = {};
24
24
 
25
25
 
26
- /** @const */
27
- muxjs.mp4.probe = class {
28
- /**
29
- * Parses an MP4 initialization segment and extracts the timescale
30
- * values for any declared tracks.
31
- *
32
- * @param {Uint8Array} init The bytes of the init segment
33
- * @return {!Object.<number, number>} a hash of track ids to timescale
34
- * values or null if the init segment is malformed.
35
- */
36
- static timescale(init) {}
37
-
38
- /**
39
- * Find the trackIds of the video tracks in this source.
40
- * Found by parsing the Handler Reference and Track Header Boxes:
41
- *
42
- * @param {Uint8Array} init The bytes of the init segment for this source
43
- * @return {!Array.<number>} A list of trackIds
44
- **/
45
- static videoTrackIds(init) {}
46
- };
47
-
48
-
49
26
  muxjs.mp4.Transmuxer = class {
50
27
  /** @param {Object=} options */
51
28
  constructor(options) {}
@@ -74,100 +51,19 @@ muxjs.mp4.Transmuxer = class {
74
51
 
75
52
  /** Remove all handlers and clean up. */
76
53
  dispose() {}
77
-
78
- /** Reset captions. */
79
- resetCaptions() {}
80
54
  };
81
55
 
82
56
 
83
57
  /**
84
58
  * @typedef {{
85
59
  * initSegment: !Uint8Array,
86
- * data: !Uint8Array,
87
- * captions: !Array
60
+ * data: !Uint8Array
88
61
  * }}
89
62
  *
90
63
  * @description Transmuxed data from mux.js.
91
64
  * @property {!Uint8Array} initSegment
92
65
  * @property {!Uint8Array} data
93
- * @property {!Array} captions
94
66
  * @exportDoc
95
67
  */
96
68
  muxjs.mp4.Transmuxer.Segment;
97
69
 
98
-
99
- muxjs.mp4.CaptionParser = class {
100
- /**
101
- * Parser for CEA closed captions embedded in video streams for Dash.
102
- * @constructor
103
- * @struct
104
- */
105
- constructor() {}
106
-
107
- /** Initializes the closed caption parser. */
108
- init() {}
109
-
110
- /**
111
- * Return true if a new video track is selected or if the timescale is
112
- * changed.
113
- * @param {!Array.<number>} videoTrackIds A list of video tracks found in the
114
- * init segment.
115
- * @param {!Object.<number, number>} timescales The map of track Ids and the
116
- * tracks' timescales in the init segment.
117
- * @return {boolean}
118
- */
119
- isNewInit(videoTrackIds, timescales) {}
120
-
121
- /**
122
- * Parses embedded CEA closed captions and interacts with the underlying
123
- * CaptionStream, and return the parsed captions.
124
- * @param {!Uint8Array} segment The fmp4 segment containing embedded captions
125
- * @param {!Array.<number>} videoTrackIds A list of video tracks found in the
126
- * init segment.
127
- * @param {!Object.<number, number>} timescales The timescales found in the
128
- * init segment.
129
- * @return {muxjs.mp4.ParsedClosedCaptions}
130
- */
131
- parse(segment, videoTrackIds, timescales) {}
132
-
133
- /** Clear the parsed closed captions data for new data. */
134
- clearParsedCaptions() {}
135
-
136
- /** Reset the captions stream. */
137
- resetCaptionStream() {}
138
- };
139
-
140
-
141
- /**
142
- * @typedef {{
143
- * captionStreams: Object.<string, boolean>,
144
- * captions: !Array.<muxjs.mp4.ClosedCaption>
145
- * }}
146
- *
147
- * @description closed captions data parsed from mux.js caption parser.
148
- * @property {Object.<string, boolean>} captionStreams
149
- * @property {Array.<muxjs.mp4.ClosedCaption>} captions
150
- */
151
- muxjs.mp4.ParsedClosedCaptions;
152
-
153
-
154
- /**
155
- * @typedef {{
156
- * startPts: number,
157
- * endPts: number,
158
- * startTime: number,
159
- * endTime: number,
160
- * stream: string,
161
- * text: string
162
- * }}
163
- *
164
- * @description closed caption parsed from mux.js caption parser.
165
- * @property {number} startPts
166
- * @property {number} endPts
167
- * @property {number} startTime
168
- * @property {number} endTime
169
- * @property {string} stream The channel id of the closed caption.
170
- * @property {string} text The content of the closed caption.
171
- */
172
- muxjs.mp4.ClosedCaption;
173
-
@@ -49,3 +49,51 @@ HTMLMediaElement.prototype.webkitSupportsPresentationMode = function(mode) {};
49
49
 
50
50
  /** @type {string} */
51
51
  HTMLMediaElement.prototype.webkitPresentationMode;
52
+
53
+
54
+ /**
55
+ * @typedef {{
56
+ * width: (number|undefined),
57
+ * height: (number|undefined),
58
+ * }}
59
+ */
60
+ var DocumentPictureInPictureOptions;
61
+
62
+
63
+ /**
64
+ * @constructor
65
+ * @implements {EventTarget}
66
+ */
67
+ function DocumentPictureInPicture() {}
68
+
69
+
70
+ /**
71
+ * @param {DocumentPictureInPictureOptions} options
72
+ * @return {!Promise.<Window>}
73
+ */
74
+ DocumentPictureInPicture.prototype.requestWindow = function(options) {};
75
+
76
+
77
+ /** @type {Window} */
78
+ DocumentPictureInPicture.prototype.window;
79
+
80
+
81
+ /** @override */
82
+ DocumentPictureInPicture.prototype.addEventListener =
83
+ function(type, listener, options) {};
84
+
85
+
86
+ /** @override */
87
+ DocumentPictureInPicture.prototype.removeEventListener =
88
+ function(type, listener, options) {};
89
+
90
+
91
+ /** @override */
92
+ DocumentPictureInPicture.prototype.dispatchEvent = function(event) {};
93
+
94
+
95
+ /**
96
+ * @see https://wicg.github.io/document-picture-in-picture/#api
97
+ * @type {!DocumentPictureInPicture}
98
+ */
99
+ Window.prototype.documentPictureInPicture;
@@ -64,6 +64,15 @@ shaka.extern.IAdManager = class extends EventTarget {
64
64
  */
65
65
  setLocale(locale) {}
66
66
 
67
+ /**
68
+ * Called by the Player to provide an updated configuration any time it
69
+ * changes.
70
+ * Must be called at least once before init*().
71
+ *
72
+ * @param {shaka.extern.AdsConfiguration} config
73
+ */
74
+ configure(config) {}
75
+
67
76
  release() {}
68
77
 
69
78
  onAssetUnload() {}
@@ -71,14 +80,20 @@ shaka.extern.IAdManager = class extends EventTarget {
71
80
  /**
72
81
  * @param {!HTMLElement} adContainer
73
82
  * @param {!HTMLMediaElement} video
83
+ * @param {?google.ima.AdsRenderingSettings} adsRenderingSettings
74
84
  */
75
- initClientSide(adContainer, video) {}
85
+ initClientSide(adContainer, video, adsRenderingSettings) {}
76
86
 
77
87
  /**
78
88
  * @param {!google.ima.AdsRequest} imaRequest
79
89
  */
80
90
  requestClientSideAds(imaRequest) {}
81
91
 
92
+ /**
93
+ * @param {!google.ima.AdsRenderingSettings} adsRenderingSettings
94
+ */
95
+ updateClientSideAdsRenderingSettings(adsRenderingSettings) {}
96
+
82
97
  /**
83
98
  * @param {!HTMLElement} adContainer
84
99
  * @param {!HTMLMediaElement} video
@@ -237,4 +252,49 @@ shaka.extern.IAd = class {
237
252
  * @return {string}
238
253
  */
239
254
  getDescription() {}
255
+
256
+ /**
257
+ * @return {number}
258
+ */
259
+ getVastMediaBitrate() {}
260
+
261
+ /**
262
+ * @return {number}
263
+ */
264
+ getVastMediaHeight() {}
265
+
266
+ /**
267
+ * @return {number}
268
+ */
269
+ getVastMediaWidth() {}
270
+
271
+ /**
272
+ * @return {string}
273
+ */
274
+ getAdId() {}
275
+
276
+ /**
277
+ * @return {string}
278
+ */
279
+ getCreativeAdId() {}
280
+
281
+ /**
282
+ * @return {string}
283
+ */
284
+ getAdvertiserName() {}
285
+
286
+ /**
287
+ * @return {?string}
288
+ */
289
+ getMediaUrl() {}
290
+
291
+ /**
292
+ * @return {number}
293
+ */
294
+ getTimeOffset() {}
295
+
296
+ /**
297
+ * @return {number}
298
+ */
299
+ getPodIndex() {}
240
300
  };
@@ -0,0 +1,110 @@
1
+ /*! @license
2
+ * Shaka Player
3
+ * Copyright 2016 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+
8
+ /**
9
+ * @externs
10
+ */
11
+
12
+ /**
13
+ * Interface for parsing inband closed caption data from MP4 streams.
14
+ * @interface
15
+ * @exportDoc
16
+ */
17
+ shaka.extern.ICeaParser = class {
18
+ /**
19
+ * Initializes the parser with init segment data.
20
+ * @param {!BufferSource} initSegment init segment to parse.
21
+ * @exportDoc
22
+ */
23
+ init(initSegment) {}
24
+
25
+ /**
26
+ * Parses the stream and extracts closed captions packets.
27
+ * @param {!BufferSource} mediaSegment media segment to parse.
28
+ * @return {!Array<!shaka.extern.ICeaParser.CaptionPacket>}
29
+ * @exportDoc
30
+ */
31
+ parse(mediaSegment) {}
32
+ };
33
+
34
+ /**
35
+ * @typedef {{
36
+ * packet: !Uint8Array,
37
+ * pts: number
38
+ * }}
39
+ *
40
+ * @description Parsed Caption Packet.
41
+ * @property {!Uint8Array} packet
42
+ * Caption packet. More specifically, it contains a "User data
43
+ * registered by Recommendation ITU-T T.35 SEI message", from section D.1.6
44
+ * and section D.2.6 of Rec. ITU-T H.264 (06/2019).
45
+ * @property {number} pts
46
+ * The presentation timestamp (pts) at which the ITU-T T.35 data shows up.
47
+ * in seconds.
48
+ * @exportDoc
49
+ */
50
+ shaka.extern.ICeaParser.CaptionPacket;
51
+
52
+
53
+ /**
54
+ * Interface for decoding inband closed captions from packets.
55
+ * @interface
56
+ * @exportDoc
57
+ */
58
+ shaka.extern.ICaptionDecoder = class {
59
+ /**
60
+ * Extracts packets and prepares them for decoding. In a given media fragment,
61
+ * all the caption packets found in its SEI messages should be extracted by
62
+ * successive calls to extract(), followed by a single call to decode().
63
+ *
64
+ * @param {!Uint8Array} userDataSeiMessage
65
+ * This is a User Data registered by Rec.ITU-T T.35 SEI message.
66
+ * It is described in sections D.1.6 and D.2.6 of Rec. ITU-T H.264 (06/2019).
67
+ * @param {number} pts PTS when this packet was received, in seconds.
68
+ * @exportDoc
69
+ */
70
+ extract(userDataSeiMessage, pts) {}
71
+
72
+ /**
73
+ * Decodes all currently extracted packets and then clears them.
74
+ * This should be called once for a set of extracts (see comment on extract).
75
+ * @return {!Array.<!shaka.extern.ICaptionDecoder.ClosedCaption>}
76
+ * @exportDoc
77
+ */
78
+ decode() {}
79
+
80
+ /**
81
+ * Clears the decoder state completely.
82
+ * Should be used when an action renders the decoder state invalid,
83
+ * e.g. unbuffered seeks.
84
+ * @exportDoc
85
+ */
86
+ clear() {}
87
+ };
88
+
89
+ /**
90
+ * Parsed Cue.
91
+ * @typedef {{
92
+ * cue: !shaka.text.Cue,
93
+ * stream: string
94
+ * }}
95
+ *
96
+ * @exportDoc
97
+ */
98
+ shaka.extern.ICaptionDecoder.ClosedCaption;
99
+
100
+ /**
101
+ * @typedef {function():!shaka.extern.ICeaParser}
102
+ * @exportDoc
103
+ */
104
+ shaka.extern.CeaParserPlugin;
105
+
106
+ /**
107
+ * @typedef {function():!shaka.extern.ICaptionDecoder}
108
+ * @exportDoc
109
+ */
110
+ shaka.extern.CaptionDecoderPlugin;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @typedef {{
3
+ * data: Uint8Array,
4
+ * packetLength: number,
5
+ * pts: ?number,
6
+ * dts: ?number
7
+ * }}
8
+ *
9
+ * @summary MPEG_PES.
10
+ * @property {Uint8Array} data
11
+ * @property {number} packetLength
12
+ * @property {?number} pts
13
+ * @property {?number} dts
14
+ */
15
+ shaka.extern.MPEG_PES;
16
+
17
+
18
+ /**
19
+ * @typedef {{
20
+ * data: !Uint8Array,
21
+ * fullData: !Uint8Array,
22
+ * type: number,
23
+ * time: ?number
24
+ * }}
25
+ *
26
+ * @summary VideoNalu.
27
+ * @property {!Uint8Array} data
28
+ * @property {!Uint8Array} fullData
29
+ * @property {number} type
30
+ * @property {?number} time
31
+ */
32
+ shaka.extern.VideoNalu;