shaka-player 4.3.11 → 4.4.1

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 (315) hide show
  1. package/AUTHORS +9 -0
  2. package/CHANGELOG.md +303 -202
  3. package/CONTRIBUTORS +8 -0
  4. package/LICENSE +32 -0
  5. package/README.md +63 -10
  6. package/demo/autoTemplate.txt +40 -5
  7. package/demo/close_button.js +11 -0
  8. package/demo/common/asset.js +13 -1
  9. package/demo/common/assets.js +53 -3
  10. package/demo/common/message_ids.js +25 -1
  11. package/demo/config.js +69 -10
  12. package/demo/customWarning.txt +2 -2
  13. package/demo/index.html +3 -1
  14. package/demo/locales/en.json +26 -2
  15. package/demo/locales/source.json +105 -9
  16. package/demo/main.js +52 -9
  17. package/demo/search.js +3 -1
  18. package/demo/service_worker.js +3 -0
  19. package/dist/controls.css +1 -1
  20. package/dist/controls.css.map +1 -1
  21. package/dist/demo.compiled.debug.js +124 -112
  22. package/dist/demo.compiled.debug.map +3 -3
  23. package/dist/demo.compiled.js +124 -112
  24. package/dist/demo.compiled.map +3 -3
  25. package/dist/deps.js +46 -28
  26. package/dist/locales.js +33 -33
  27. package/dist/receiver.compiled.debug.js +52 -46
  28. package/dist/receiver.compiled.debug.map +3 -3
  29. package/dist/receiver.compiled.js +52 -46
  30. package/dist/receiver.compiled.map +3 -3
  31. package/dist/shaka-player.compiled.d.ts +676 -391
  32. package/dist/shaka-player.compiled.debug.d.ts +676 -391
  33. package/dist/shaka-player.compiled.debug.externs.js +1188 -616
  34. package/dist/shaka-player.compiled.debug.js +1043 -699
  35. package/dist/shaka-player.compiled.debug.map +4 -4
  36. package/dist/shaka-player.compiled.externs.js +1188 -616
  37. package/dist/shaka-player.compiled.js +1091 -929
  38. package/dist/shaka-player.compiled.map +4 -4
  39. package/dist/shaka-player.ui.d.ts +677 -392
  40. package/dist/shaka-player.ui.debug.d.ts +677 -392
  41. package/dist/shaka-player.ui.debug.externs.js +1023 -451
  42. package/dist/shaka-player.ui.debug.js +1098 -737
  43. package/dist/shaka-player.ui.debug.map +4 -4
  44. package/dist/shaka-player.ui.externs.js +1023 -451
  45. package/dist/shaka-player.ui.js +1246 -1071
  46. package/dist/shaka-player.ui.map +4 -4
  47. package/docs/tutorials/ad_monetization.md +15 -1
  48. package/docs/tutorials/application-level-redirects.md +1 -1
  49. package/docs/tutorials/config.md +9 -5
  50. package/docs/tutorials/drm-config.md +61 -0
  51. package/docs/tutorials/fairplay.md +19 -4
  52. package/docs/tutorials/license-server-auth.md +4 -4
  53. package/docs/tutorials/license-wrapping.md +2 -2
  54. package/docs/tutorials/ui-customization.md +7 -3
  55. package/docs/tutorials/ui.md +7 -7
  56. package/docs/tutorials/upgrade.md +3 -0
  57. package/externs/ima.js +123 -2
  58. package/externs/isoboxer.js +217 -0
  59. package/externs/mediakeys.js +18 -0
  60. package/externs/mux.js +1 -105
  61. package/externs/pictureinpicture.js +48 -0
  62. package/externs/shaka/ads.js +61 -1
  63. package/externs/shaka/cea.js +110 -0
  64. package/externs/shaka/codecs.js +32 -0
  65. package/externs/shaka/manifest.js +101 -1
  66. package/externs/shaka/manifest_parser.js +0 -10
  67. package/externs/shaka/net.js +36 -7
  68. package/externs/shaka/offline.js +8 -1
  69. package/externs/shaka/player.js +220 -21
  70. package/externs/shaka/text.js +1 -382
  71. package/externs/shaka/transmuxer.js +60 -0
  72. package/karma.conf.js +13 -0
  73. package/lib/abr/simple_abr_manager.js +6 -3
  74. package/lib/ads/ad_manager.js +60 -2
  75. package/lib/ads/client_side_ad.js +86 -0
  76. package/lib/ads/client_side_ad_manager.js +79 -3
  77. package/lib/ads/server_side_ad.js +86 -0
  78. package/lib/ads/server_side_ad_manager.js +13 -0
  79. package/lib/cast/cast_utils.js +1 -0
  80. package/lib/cea/cea608_data_channel.js +24 -14
  81. package/lib/cea/cea608_memory.js +5 -2
  82. package/lib/cea/cea708_service.js +8 -9
  83. package/lib/cea/cea708_window.js +1 -2
  84. package/lib/cea/cea_decoder.js +23 -6
  85. package/lib/cea/cea_utils.js +25 -2
  86. package/lib/cea/dummy_caption_decoder.js +21 -0
  87. package/lib/cea/dummy_cea_parser.js +1 -3
  88. package/lib/cea/mp4_cea_parser.js +15 -10
  89. package/lib/cea/ts_cea_parser.js +69 -0
  90. package/lib/dash/content_protection.js +32 -2
  91. package/lib/dash/dash_parser.js +93 -31
  92. package/lib/dash/mpd_utils.js +6 -25
  93. package/lib/dash/segment_base.js +12 -14
  94. package/lib/dash/segment_list.js +10 -6
  95. package/lib/dash/segment_template.js +349 -32
  96. package/lib/dependencies/all.js +8 -0
  97. package/lib/hls/hls_classes.js +33 -8
  98. package/lib/hls/hls_parser.js +805 -191
  99. package/lib/hls/manifest_text_parser.js +4 -14
  100. package/lib/media/adaptation_set_criteria.js +43 -3
  101. package/lib/media/closed_caption_parser.js +74 -12
  102. package/lib/media/drm_engine.js +189 -49
  103. package/lib/media/gap_jumping_controller.js +1 -1
  104. package/lib/media/manifest_parser.js +34 -0
  105. package/lib/media/media_source_capabilities.js +10 -0
  106. package/lib/media/media_source_engine.js +495 -231
  107. package/lib/media/playhead.js +1 -1
  108. package/lib/media/presentation_timeline.js +62 -0
  109. package/lib/media/segment_index.js +50 -14
  110. package/lib/media/segment_prefetch.js +277 -0
  111. package/lib/media/segment_reference.js +70 -4
  112. package/lib/media/streaming_engine.js +258 -81
  113. package/lib/media/video_wrapper.js +15 -7
  114. package/lib/mss/content_protection.js +353 -0
  115. package/lib/mss/mss_parser.js +1082 -0
  116. package/lib/net/networking_engine.js +60 -10
  117. package/lib/offline/indexeddb/v1_storage_cell.js +1 -0
  118. package/lib/offline/indexeddb/v2_storage_cell.js +1 -0
  119. package/lib/offline/manifest_converter.js +6 -0
  120. package/lib/offline/storage.js +2 -4
  121. package/lib/player.js +309 -105
  122. package/lib/polyfill/media_capabilities.js +43 -3
  123. package/lib/polyfill/patchedmediakeys_apple.js +5 -0
  124. package/lib/polyfill/patchedmediakeys_nop.js +5 -0
  125. package/lib/polyfill/patchedmediakeys_webkit.js +5 -0
  126. package/lib/text/cue.js +208 -130
  127. package/lib/text/lrc_text_parser.js +2 -2
  128. package/lib/text/mp4_vtt_parser.js +2 -2
  129. package/lib/text/sbv_text_parser.js +1 -1
  130. package/lib/text/simple_text_displayer.js +1 -1
  131. package/lib/text/srt_text_parser.js +9 -1
  132. package/lib/text/ssa_text_parser.js +2 -2
  133. package/lib/text/text_engine.js +3 -21
  134. package/lib/text/text_utils.js +71 -20
  135. package/lib/text/ui_text_displayer.js +14 -14
  136. package/lib/text/vtt_text_parser.js +22 -14
  137. package/lib/transmuxer/aac_transmuxer.js +224 -0
  138. package/lib/transmuxer/ac3.js +142 -0
  139. package/lib/transmuxer/ac3_transmuxer.js +213 -0
  140. package/lib/transmuxer/adts.js +232 -0
  141. package/lib/transmuxer/ec3.js +103 -0
  142. package/lib/transmuxer/ec3_transmuxer.js +213 -0
  143. package/lib/transmuxer/h264.js +324 -0
  144. package/lib/transmuxer/mp3_transmuxer.js +205 -0
  145. package/lib/transmuxer/mpeg_audio.js +196 -0
  146. package/lib/transmuxer/mpeg_ts_transmuxer.js +182 -0
  147. package/lib/transmuxer/mss_transmuxer.js +389 -0
  148. package/lib/{media/transmuxer.js → transmuxer/muxjs_transmuxer.js} +34 -80
  149. package/lib/transmuxer/transmuxer_engine.js +161 -0
  150. package/lib/transmuxer/ts_transmuxer.js +721 -0
  151. package/lib/util/cmcd_manager.js +131 -71
  152. package/lib/util/error.js +62 -26
  153. package/lib/util/exp_golomb.js +220 -0
  154. package/lib/util/fairplay_utils.js +64 -13
  155. package/lib/util/id3_utils.js +56 -3
  156. package/lib/util/language_utils.js +11 -8
  157. package/lib/util/manifest_parser_utils.js +3 -0
  158. package/lib/util/mime_utils.js +44 -7
  159. package/lib/util/mp4_box_parsers.js +233 -5
  160. package/lib/util/mp4_generator.js +1388 -0
  161. package/lib/util/periods.js +40 -34
  162. package/lib/util/platform.js +17 -3
  163. package/lib/util/player_configuration.js +38 -1
  164. package/lib/util/stream_utils.js +138 -27
  165. package/lib/util/text_parser.js +1 -1
  166. package/lib/util/ts_parser.js +460 -74
  167. package/lib/util/xml_utils.js +16 -3
  168. package/maintained-branches.md +2 -2
  169. package/package.json +3 -1
  170. package/roadmap.md +21 -6
  171. package/shaka-player.uncompiled.js +18 -0
  172. package/test/abr/simple_abr_manager_unit.js +32 -4
  173. package/test/ads/ad_manager_unit.js +18 -2
  174. package/test/cast/cast_utils_unit.js +7 -2
  175. package/test/cea/cea608_memory_unit.js +24 -0
  176. package/test/cea/cea_decoder_unit.js +33 -0
  177. package/test/dash/dash_parser_content_protection_unit.js +93 -3
  178. package/test/dash/dash_parser_live_unit.js +56 -13
  179. package/test/dash/dash_parser_manifest_unit.js +70 -2
  180. package/test/dash/dash_parser_segment_base_unit.js +14 -9
  181. package/test/dash/dash_parser_segment_template_unit.js +286 -6
  182. package/test/demo/demo_unit.js +5 -1
  183. package/test/hls/hls_live_unit.js +188 -28
  184. package/test/hls/hls_parser_unit.js +250 -109
  185. package/test/hls/manifest_text_parser_unit.js +18 -13
  186. package/test/media/adaptation_set_criteria_unit.js +46 -14
  187. package/test/media/adaptation_set_unit.js +2 -0
  188. package/test/media/drm_engine_integration.js +11 -8
  189. package/test/media/drm_engine_unit.js +220 -7
  190. package/test/media/media_source_engine_integration.js +124 -40
  191. package/test/media/media_source_engine_unit.js +133 -153
  192. package/test/media/playhead_unit.js +3 -0
  193. package/test/media/presentation_timeline_unit.js +51 -0
  194. package/test/media/segment_index_unit.js +52 -0
  195. package/test/media/segment_prefetch_unit.js +243 -0
  196. package/test/media/streaming_engine_integration.js +9 -3
  197. package/test/media/streaming_engine_unit.js +440 -59
  198. package/test/mss/mss_parser_content_protection_unit.js +49 -0
  199. package/test/mss/mss_parser_unit.js +472 -0
  200. package/test/mss/mss_player_integration.js +123 -0
  201. package/test/offline/manifest_convert_unit.js +9 -0
  202. package/test/offline/storage_integration.js +6 -1
  203. package/test/player_unit.js +386 -133
  204. package/test/polyfill/media_capabilities_unit.js +18 -0
  205. package/test/test/assets/hls-raw-aac/fileSequence0.aac +0 -0
  206. package/test/test/assets/hls-raw-aac/fileSequence1.aac +0 -0
  207. package/test/test/assets/hls-raw-aac/fileSequence2.aac +0 -0
  208. package/test/test/assets/hls-raw-aac/fileSequence3.aac +0 -0
  209. package/test/test/assets/hls-raw-aac/manifest.m3u8 +4 -0
  210. package/test/test/assets/hls-raw-aac/stream.m4a.m3u8 +14 -0
  211. package/test/test/assets/hls-raw-ac3/fileSequence0.ac3 +0 -0
  212. package/test/test/assets/hls-raw-ac3/fileSequence1.ac3 +0 -0
  213. package/test/test/assets/hls-raw-ac3/fileSequence2.ac3 +0 -0
  214. package/test/test/assets/hls-raw-ac3/fileSequence3.ac3 +0 -0
  215. package/test/test/assets/hls-raw-ac3/fileSequence4.ac3 +0 -0
  216. package/test/test/assets/hls-raw-ac3/fileSequence5.ac3 +0 -0
  217. package/test/test/assets/hls-raw-ac3/fileSequence6.ac3 +0 -0
  218. package/test/test/assets/hls-raw-ac3/fileSequence7.ac3 +0 -0
  219. package/test/test/assets/hls-raw-ac3/prog_index.m3u8 +31 -0
  220. package/test/test/assets/hls-raw-ec3/fileSequence0.ec3 +0 -0
  221. package/test/test/assets/hls-raw-ec3/fileSequence1.ec3 +0 -0
  222. package/test/test/assets/hls-raw-ec3/fileSequence2.ec3 +0 -0
  223. package/test/test/assets/hls-raw-ec3/fileSequence3.ec3 +0 -0
  224. package/test/test/assets/hls-raw-ec3/fileSequence4.ec3 +0 -0
  225. package/test/test/assets/hls-raw-ec3/fileSequence5.ec3 +0 -0
  226. package/test/test/assets/hls-raw-ec3/fileSequence6.ec3 +0 -0
  227. package/test/test/assets/hls-raw-ec3/fileSequence7.ec3 +0 -0
  228. package/test/test/assets/hls-raw-ec3/prog_index.m3u8 +31 -0
  229. package/test/test/assets/hls-raw-mp3/chunklist_w905519204.m3u8 +13 -0
  230. package/test/test/assets/hls-raw-mp3/media_w905519204_0.mp3 +0 -0
  231. package/test/test/assets/hls-raw-mp3/media_w905519204_1.mp3 +0 -0
  232. package/test/test/assets/hls-raw-mp3/media_w905519204_2.mp3 +0 -0
  233. package/test/test/assets/hls-raw-mp3/media_w905519204_3.mp3 +0 -0
  234. package/test/test/assets/hls-raw-mp3/playlist.m3u8 +4 -0
  235. package/test/test/assets/hls-ts-aac/playlist.m3u8 +23 -0
  236. package/test/test/assets/hls-ts-aac/segment_0.ts +0 -0
  237. package/test/test/assets/hls-ts-aac/segment_1.ts +0 -0
  238. package/test/test/assets/hls-ts-aac/segment_2.ts +0 -0
  239. package/test/test/assets/hls-ts-aac/segment_3.ts +0 -0
  240. package/test/test/assets/hls-ts-aac/segment_4.ts +0 -0
  241. package/test/test/assets/hls-ts-aac/segment_5.ts +0 -0
  242. package/test/test/assets/hls-ts-aac/segment_6.ts +0 -0
  243. package/test/test/assets/hls-ts-aac/segment_7.ts +0 -0
  244. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0000.ts +0 -0
  245. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0001.ts +0 -0
  246. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0002.ts +0 -0
  247. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0003.ts +0 -0
  248. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0004.ts +0 -0
  249. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0005.ts +0 -0
  250. package/test/test/assets/hls-ts-ac3/prog_index.m3u8 +19 -0
  251. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0000.ts +0 -0
  252. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0001.ts +0 -0
  253. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0002.ts +0 -0
  254. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0003.ts +0 -0
  255. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0004.ts +0 -0
  256. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0005.ts +0 -0
  257. package/test/test/assets/hls-ts-ec3/prog_index.m3u8 +19 -0
  258. package/test/test/assets/hls-ts-h264/fileSequence0.ts +0 -0
  259. package/test/test/assets/hls-ts-h264/fileSequence1.ts +0 -0
  260. package/test/test/assets/hls-ts-h264/fileSequence2.ts +0 -0
  261. package/test/test/assets/hls-ts-h264/fileSequence3.ts +0 -0
  262. package/test/test/assets/hls-ts-h264/fileSequence4.ts +0 -0
  263. package/test/test/assets/hls-ts-h264/fileSequence5.ts +0 -0
  264. package/test/test/assets/hls-ts-h264/prog_index.m3u8 +25 -0
  265. package/test/test/assets/hls-ts-mp3/manifest.m3u8 +13 -0
  266. package/test/test/assets/hls-ts-mp3/media_w239891843_0.ts +0 -0
  267. package/test/test/assets/hls-ts-mp3/media_w239891843_1.ts +0 -0
  268. package/test/test/assets/hls-ts-mp3/media_w239891843_2.ts +0 -0
  269. package/test/test/assets/hls-ts-mp3/media_w239891843_3.ts +0 -0
  270. package/test/test/assets/hls-ts-muxed-aac-h264/chunk.m3u8 +17 -0
  271. package/test/test/assets/hls-ts-muxed-aac-h264/n_0_0_0.ts +0 -0
  272. package/test/test/assets/hls-ts-muxed-aac-h264/n_1_0_0.ts +0 -0
  273. package/test/test/assets/hls-ts-muxed-aac-h264/n_2_0_0.ts +0 -0
  274. package/test/test/assets/hls-ts-muxed-aac-h264/n_3_0_0.ts +0 -0
  275. package/test/test/assets/hls-ts-muxed-aac-h264/n_4_0_0.ts +0 -0
  276. package/test/test/assets/hls-ts-muxed-aac-h264/n_5_0_0.ts +0 -0
  277. package/test/test/assets/hls-ts-muxed-aac-h264/playlist.m3u8 +4 -0
  278. package/test/test/boot.js +7 -2
  279. package/test/test/util/fake_ad.js +99 -0
  280. package/test/test/util/fake_ad_manager.js +7 -1
  281. package/test/test/util/fake_networking_engine.js +41 -14
  282. package/test/test/util/fake_segment_prefetch.js +81 -0
  283. package/test/test/util/manifest_generator.js +19 -5
  284. package/test/test/util/mss_parser_util.js +115 -0
  285. package/test/test/util/offline_utils.js +1 -0
  286. package/test/test/util/simple_fakes.js +12 -3
  287. package/test/test/util/streaming_engine_util.js +14 -4
  288. package/test/test/util/ttml_utils.js +2 -2
  289. package/test/text/cue_integration.js +1 -1
  290. package/test/text/srt_text_parser_unit.js +78 -0
  291. package/test/text/text_engine_unit.js +17 -8
  292. package/test/text/ui_text_displayer_unit.js +4 -4
  293. package/test/text/vtt_text_parser_unit.js +59 -40
  294. package/test/text/web_vtt_generator_unit.js +9 -3
  295. package/test/{media/transmuxer_integration.js → transmuxer/muxjs_transmuxer_integration.js} +30 -33
  296. package/test/transmuxer/transmuxer_engine_integration.js +60 -0
  297. package/test/transmuxer/transmuxer_integration.js +296 -0
  298. package/test/util/cmcd_manager_unit.js +162 -13
  299. package/test/util/language_utils_unit.js +9 -2
  300. package/test/util/mp4_box_parsers_unit.js +39 -4
  301. package/test/util/periods_unit.js +34 -26
  302. package/test/util/stream_utils_unit.js +60 -107
  303. package/ui/controls.js +19 -1
  304. package/ui/controls.less +1 -0
  305. package/ui/externs/ui.js +11 -1
  306. package/ui/language_utils.js +15 -0
  307. package/ui/less/thumbnails.less +26 -0
  308. package/ui/locales/oc.json +42 -0
  309. package/ui/pip_button.js +83 -2
  310. package/ui/range_element.js +15 -0
  311. package/ui/resolution_selection.js +9 -2
  312. package/ui/seek_bar.js +223 -0
  313. package/ui/ui.js +5 -0
  314. package/lib/cea/i_caption_decoder.js +0 -51
  315. package/lib/cea/i_cea_parser.js +0 -68
@@ -18,7 +18,10 @@
18
18
  * imageStreams: !Array.<shaka.extern.Stream>,
19
19
  * offlineSessionIds: !Array.<string>,
20
20
  * minBufferTime: number,
21
- * sequenceMode: boolean
21
+ * sequenceMode: boolean,
22
+ * ignoreManifestTimestampsInSegmentsMode: boolean,
23
+ * type: string,
24
+ * serviceDescription: ?shaka.extern.ServiceDescription
22
25
  * }}
23
26
  *
24
27
  * @description
@@ -76,12 +79,53 @@
76
79
  * @property {boolean} sequenceMode
77
80
  * If true, we will append the media segments using sequence mode; that is to
78
81
  * say, ignoring any timestamps inside the media files.
82
+ * @property {boolean} ignoreManifestTimestampsInSegmentsMode
83
+ * If true, don't adjust the timestamp offset to account for manifest
84
+ * segment durations being out of sync with segment durations. In other
85
+ * words, assume that there are no gaps in the segments when appending
86
+ * to the SourceBuffer, even if the manifest and segment times disagree.
87
+ * Only applies when sequenceMode is <code>false</code>, and only for HLS
88
+ * streams.
89
+ * <i>Defaults to <code>false</code>.</i>
90
+ * @property {string} type
91
+ * Indicates the type of the manifest. It can be <code>'HLS'</code> or
92
+ * <code>'DASH'</code>.
93
+ * @property {?shaka.extern.ServiceDescription} serviceDescription
94
+ * The service description for the manifest. Used to adapt playbackRate to
95
+ * decrease latency.
79
96
  *
80
97
  * @exportDoc
81
98
  */
82
99
  shaka.extern.Manifest;
83
100
 
84
101
 
102
+ /**
103
+ * @typedef {{
104
+ * id: string,
105
+ * audioStreams: !Array.<shaka.extern.Stream>,
106
+ * videoStreams: !Array.<shaka.extern.Stream>,
107
+ * textStreams: !Array.<shaka.extern.Stream>,
108
+ * imageStreams: !Array.<shaka.extern.Stream>
109
+ * }}
110
+ *
111
+ * @description Contains the streams from one DASH period.
112
+ * For use in {@link shaka.util.PeriodCombiner}.
113
+ *
114
+ * @property {string} id
115
+ * The Period ID.
116
+ * @property {!Array.<shaka.extern.Stream>} audioStreams
117
+ * The audio streams from one Period.
118
+ * @property {!Array.<shaka.extern.Stream>} videoStreams
119
+ * The video streams from one Period.
120
+ * @property {!Array.<shaka.extern.Stream>} textStreams
121
+ * The text streams from one Period.
122
+ * @property {!Array.<shaka.extern.Stream>} imageStreams
123
+ * The image streams from one Period.
124
+ *
125
+ * @exportDoc
126
+ */
127
+ shaka.extern.Period;
128
+
85
129
  /**
86
130
  * @typedef {{
87
131
  * initData: !Uint8Array,
@@ -105,6 +149,26 @@ shaka.extern.Manifest;
105
149
  */
106
150
  shaka.extern.InitDataOverride;
107
151
 
152
+ /**
153
+ * @typedef {{
154
+ * maxLatency: ?number,
155
+ * maxPlaybackRate: ?number
156
+ * }}
157
+ *
158
+ * @description
159
+ * Maximum latency and playback rate for a manifest. When max latency is reached
160
+ * playbackrate is updated to maxPlaybackRate to decrease latency.
161
+ * More information {@link https://dashif.org/docs/CR-Low-Latency-Live-r8.pdf here}.
162
+ *
163
+ * @property {?number} maxLatency
164
+ * Maximum latency in seconds.
165
+ * @property {?number} maxPlaybackRate
166
+ * Maximum playback rate.
167
+ *
168
+ * @exportDoc
169
+ */
170
+ shaka.extern.ServiceDescription;
171
+
108
172
 
109
173
  /**
110
174
  * @typedef {{
@@ -307,12 +371,14 @@ shaka.extern.FetchCryptoKeysFunction;
307
371
  * drmInfos: !Array.<shaka.extern.DrmInfo>,
308
372
  * keyIds: !Set.<string>,
309
373
  * language: string,
374
+ * originalLanguage: ?string,
310
375
  * label: ?string,
311
376
  * type: string,
312
377
  * primary: boolean,
313
378
  * trickModeVideo: ?shaka.extern.Stream,
314
379
  * emsgSchemeIdUris: ?Array.<string>,
315
380
  * roles: !Array.<string>,
381
+ * accessibilityPurpose: ?shaka.media.ManifestParser.AccessibilityPurpose,
316
382
  * forced: boolean,
317
383
  * channelsCount: ?number,
318
384
  * audioSamplingRate: ?number,
@@ -322,6 +388,7 @@ shaka.extern.FetchCryptoKeysFunction;
322
388
  * matchedStreams:
323
389
  * (!Array.<shaka.extern.Stream>|!Array.<shaka.extern.StreamDB>|
324
390
  * undefined),
391
+ * mssPrivateData: (shaka.extern.MssPrivateData|undefined),
325
392
  * external: boolean
326
393
  * }}
327
394
  *
@@ -391,6 +458,9 @@ shaka.extern.FetchCryptoKeysFunction;
391
458
  * The Stream's language, specified as a language code. <br>
392
459
  * Audio stream's language must be identical to the language of the containing
393
460
  * Variant.
461
+ * @property {?string} originalLanguage
462
+ * <i>Optional.</i> <br>
463
+ * The original language, if any, that appeared in the manifest.
394
464
  * @property {?string} label
395
465
  * The Stream's label, unique text that should describe the audio/text track.
396
466
  * @property {string} type
@@ -411,6 +481,9 @@ shaka.extern.FetchCryptoKeysFunction;
411
481
  * @property {!Array.<string>} roles
412
482
  * The roles of the stream as they appear on the manifest,
413
483
  * e.g. 'main', 'caption', or 'commentary'.
484
+ * @property {?shaka.media.ManifestParser.AccessibilityPurpose}
485
+ * accessibilityPurpose
486
+ * The DASH accessibility descriptor, if one was provided for this stream.
414
487
  * @property {boolean} forced
415
488
  * <i>Defaults to false.</i> <br>
416
489
  * Whether the stream set was forced
@@ -435,6 +508,9 @@ shaka.extern.FetchCryptoKeysFunction;
435
508
  * @property {(!Array.<shaka.extern.Stream>|!Array.<shaka.extern.StreamDB>|
436
509
  * undefined)} matchedStreams
437
510
  * The streams in all periods which match the stream. Used for Dash.
511
+ * @property {(shaka.extern.MssPrivateData|undefined)} mssPrivateData
512
+ * <i>Microsoft Smooth Streaming only.</i> <br>
513
+ * Private MSS data that is necessary to be able to do transmuxing.
438
514
  * @property {boolean} external
439
515
  * Indicate if the stream was added externally.
440
516
  * Eg: external text tracks.
@@ -442,3 +518,27 @@ shaka.extern.FetchCryptoKeysFunction;
442
518
  * @exportDoc
443
519
  */
444
520
  shaka.extern.Stream;
521
+
522
+
523
+ /**
524
+ * @typedef {{
525
+ * duration: number,
526
+ * timescale: number,
527
+ * codecPrivateData: ?string
528
+ * }}
529
+ *
530
+ * @description
531
+ * Private MSS data that is necessary to be able to do transmuxing.
532
+ *
533
+ * @property {number} duration
534
+ * <i>Required.</i> <br>
535
+ * MSS Stream duration.
536
+ * @property {number} timescale
537
+ * <i>Required.</i> <br>
538
+ * MSS timescale.
539
+ * @property {?string} codecPrivateData
540
+ * MSS codecPrivateData.
541
+ *
542
+ * @exportDoc
543
+ */
544
+ shaka.extern.MssPrivateData;
@@ -100,10 +100,6 @@ shaka.extern.ManifestParser = class {
100
100
  /**
101
101
  * @typedef {{
102
102
  * networkingEngine: !shaka.net.NetworkingEngine,
103
- * modifyManifestRequest: function(!shaka.extern.Request,
104
- * shaka.util.CmcdManager.ManifestInfo),
105
- * modifySegmentRequest: function(!shaka.extern.Request,
106
- * shaka.util.CmcdManager.SegmentInfo),
107
103
  * filter: function(shaka.extern.Manifest):!Promise,
108
104
  * makeTextStreamsForClosedCaptions: function(shaka.extern.Manifest),
109
105
  * onTimelineRegionAdded: function(shaka.extern.TimelineRegionInfo),
@@ -124,12 +120,6 @@ shaka.extern.ManifestParser = class {
124
120
  *
125
121
  * @property {!shaka.net.NetworkingEngine} networkingEngine
126
122
  * The networking engine to use for network requests.
127
- * @property {function(!shaka.extern.Request,
128
- * shaka.util.CmcdManager.ManifestInfo)} modifyManifestRequest
129
- * Modify a manifest request
130
- * @property {function(!shaka.extern.Request,
131
- * shaka.util.CmcdManager.SegmentInfo)} modifySegmentRequest
132
- * Modify a segment request
133
123
  * @property {function(shaka.extern.Manifest):!Promise} filter
134
124
  * Should be called when new variants or text streams are added to the
135
125
  * Manifest. Note that this operation is asynchronous.
@@ -200,15 +200,40 @@ shaka.extern.ProgressUpdated;
200
200
  shaka.extern.HeadersReceived;
201
201
 
202
202
 
203
+ /**
204
+ * @typedef {{
205
+ * type: (shaka.net.NetworkingEngine.AdvancedRequestType|undefined),
206
+ * stream: (shaka.extern.Stream|undefined),
207
+ * segment: (shaka.media.SegmentReference|undefined)
208
+ * }}
209
+ *
210
+ * @description
211
+ * Defines contextual data about a request
212
+ *
213
+ * @property {shaka.net.NetworkingEngine.AdvancedRequestType=} type
214
+ * The advanced type
215
+ * @property {shaka.extern.Stream=} stream
216
+ * The duration of the segment in seconds
217
+ * @property {shaka.media.SegmentReference=} segment
218
+ * The request's segment reference
219
+ * @exportDoc
220
+ */
221
+ shaka.extern.RequestContext;
222
+
223
+
203
224
  /**
204
225
  * Defines a filter for requests. This filter takes the request and modifies
205
226
  * it before it is sent to the scheme plugin.
206
- * A request filter can run asynchronously by returning a promise; in this case,
207
- * the request will not be sent until the promise is resolved.
227
+ * The RequestType describes the basic type of the request (manifest, segment,
228
+ * etc). The optional RequestContext will be provided where applicable to
229
+ * provide additional infomation about the request. A request filter can run
230
+ * asynchronously by returning a promise; in this case, the request will not be
231
+ * sent until the promise is resolved.
208
232
  *
209
233
  * @typedef {!function(shaka.net.NetworkingEngine.RequestType,
210
- * shaka.extern.Request):
211
- (Promise|undefined)}
234
+ * shaka.extern.Request,
235
+ * shaka.extern.RequestContext=):
236
+ * (Promise|undefined)}
212
237
  * @exportDoc
213
238
  */
214
239
  shaka.extern.RequestFilter;
@@ -217,11 +242,15 @@ shaka.extern.RequestFilter;
217
242
  /**
218
243
  * Defines a filter for responses. This filter takes the response and modifies
219
244
  * it before it is returned.
220
- * A response filter can run asynchronously by returning a promise.
245
+ * The RequestType describes the basic type of the request (manifest, segment,
246
+ * etc). The optional RequestContext will be provided where applicable to
247
+ * provide additional infomation about the request. A response filter can run
248
+ * asynchronously by returning a promise.
221
249
  *
222
250
  * @typedef {!function(shaka.net.NetworkingEngine.RequestType,
223
- * shaka.extern.Response):
224
- (Promise|undefined)}
251
+ * shaka.extern.Response,
252
+ * shaka.extern.RequestContext=):
253
+ * (Promise|undefined)}
225
254
  * @exportDoc
226
255
  */
227
256
  shaka.extern.ResponseFilter;
@@ -74,7 +74,8 @@ shaka.extern.StoredContent;
74
74
  * drmInfo: ?shaka.extern.DrmInfo,
75
75
  * appMetadata: Object,
76
76
  * isIncomplete: (boolean|undefined),
77
- * sequenceMode: (boolean|undefined)
77
+ * sequenceMode: (boolean|undefined),
78
+ * type: (string|undefined)
78
79
  * }}
79
80
  *
80
81
  * @property {number} creationTime
@@ -102,6 +103,9 @@ shaka.extern.StoredContent;
102
103
  * @property {(boolean|undefined)} sequenceMode
103
104
  * If true, we will append the media segments using sequence mode; that is to
104
105
  * say, ignoring any timestamps inside the media files.
106
+ * @property {(string|undefined)} type
107
+ * Indicates the type of the manifest. It can be <code>'HLS'</code> or
108
+ * <code>'DASH'</code>.
105
109
  */
106
110
  shaka.extern.ManifestDB;
107
111
 
@@ -119,6 +123,7 @@ shaka.extern.ManifestDB;
119
123
  * hdr: (string|undefined),
120
124
  * kind: (string|undefined),
121
125
  * language: string,
126
+ * originalLanguage: (?string|undefined),
122
127
  * label: ?string,
123
128
  * width: ?number,
124
129
  * height: ?number,
@@ -159,6 +164,8 @@ shaka.extern.ManifestDB;
159
164
  * The kind of text stream; undefined for audio/video.
160
165
  * @property {string} language
161
166
  * The language of the stream; '' for video.
167
+ * @property {(?string|undefined)} originalLanguage
168
+ * The original language, if any, that appeared in the manifest.
162
169
  * @property {?string} label
163
170
  * The label of the stream; '' for video.
164
171
  * @property {?number} width