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
@@ -36,10 +36,7 @@ describe('ManifestTextParser', () => {
36
36
 
37
37
  // playlist text:
38
38
  '#EXTM3U\n' +
39
- '#EXT-X-TARGETDURATION:6\n',
40
-
41
- // manifest URI:
42
- 'https://test/manifest.m3u8');
39
+ '#EXT-X-TARGETDURATION:6\n');
43
40
  });
44
41
 
45
42
  it('parses a Master Playlist', () => {
@@ -60,10 +57,7 @@ describe('ManifestTextParser', () => {
60
57
  '#EXTM3U\n' +
61
58
  '#EXT-X-TARGETDURATION:6\n' +
62
59
  '#EXT-X-STREAM-INF:BANDWIDTH=2165224\n' +
63
- 'prog_index.m3u8',
64
-
65
- // manifest URI:
66
- 'https://test/manifest.m3u8');
60
+ 'prog_index.m3u8');
67
61
  });
68
62
 
69
63
  it('ignores comments', () => {
@@ -78,10 +72,7 @@ describe('ManifestTextParser', () => {
78
72
  // playlist text:
79
73
  '#EXTM3U\n' +
80
74
  '#Comment\n' +
81
- '#EXT-X-TARGETDURATION:6',
82
-
83
- // manifest URI:
84
- 'https://test/manifest.m3u8');
75
+ '#EXT-X-TARGETDURATION:6');
85
76
  });
86
77
 
87
78
  /**
@@ -94,7 +85,7 @@ describe('ManifestTextParser', () => {
94
85
  shaka.util.Error.Severity.CRITICAL,
95
86
  shaka.util.Error.Category.MANIFEST,
96
87
  code));
97
- expect(() => parser.parsePlaylist(data, /* uri= */ '')).toThrow(error);
88
+ expect(() => parser.parsePlaylist(data)).toThrow(error);
98
89
  }
99
90
  });
100
91
 
@@ -110,10 +101,7 @@ describe('ManifestTextParser', () => {
110
101
 
111
102
  // playlist text:
112
103
  '#EXTM3U\n' +
113
- '#EXT-X-INDEPENDENT-SEGMENTS',
114
-
115
- // manifest URI:
116
- 'https://test/manifest.m3u8');
104
+ '#EXT-X-INDEPENDENT-SEGMENTS');
117
105
 
118
106
  verifyPlaylist(
119
107
  {
@@ -125,10 +113,7 @@ describe('ManifestTextParser', () => {
125
113
 
126
114
  // playlist text:
127
115
  '#EXTM3U\n' +
128
- '#EXT-X-PLAYLIST-TYPE:VOD',
129
-
130
- // manifest URI:
131
- 'https://test/manifest.m3u8');
116
+ '#EXT-X-PLAYLIST-TYPE:VOD');
132
117
 
133
118
  verifyPlaylist(
134
119
  {
@@ -140,10 +125,7 @@ describe('ManifestTextParser', () => {
140
125
 
141
126
  // playlist text:
142
127
  '#EXTM3U\n' +
143
- '#EXT-X-MEDIA-SEQUENCE:1',
144
-
145
- // manifest URI:
146
- 'https://test/manifest.m3u8');
128
+ '#EXT-X-MEDIA-SEQUENCE:1');
147
129
  });
148
130
 
149
131
  it('parses tags with attributes', () => {
@@ -158,10 +140,7 @@ describe('ManifestTextParser', () => {
158
140
 
159
141
  // playlist text:
160
142
  '#EXTM3U\n' +
161
- '#EXT-X-MEDIA:TYPE=CLOSED-CAPTIONS',
162
-
163
- // manifest URI:
164
- 'https://test/manifest.m3u8');
143
+ '#EXT-X-MEDIA:TYPE=CLOSED-CAPTIONS');
165
144
 
166
145
  verifyPlaylist(
167
146
  {
@@ -177,10 +156,7 @@ describe('ManifestTextParser', () => {
177
156
 
178
157
  // playlist text:
179
158
  '#EXTM3U\n' +
180
- '#EXT-X-MEDIA:URI="main.mp4",BYTERANGE="720@0"',
181
-
182
- // manifest URI:
183
- 'https://test/manifest.m3u8');
159
+ '#EXT-X-MEDIA:URI="main.mp4",BYTERANGE="720@0"');
184
160
  });
185
161
 
186
162
  it('parses tags with commas in attribute values', () => {
@@ -197,10 +173,7 @@ describe('ManifestTextParser', () => {
197
173
 
198
174
  // playlist text:
199
175
  '#EXTM3U\n' +
200
- '#EXT-X-MEDIA:CODECS="avc1.64002a,mp4a.40.2"',
201
-
202
- // manifest URI:
203
- 'https://test/manifest.m3u8');
176
+ '#EXT-X-MEDIA:CODECS="avc1.64002a,mp4a.40.2"');
204
177
 
205
178
  verifyPlaylist(
206
179
  {
@@ -216,10 +189,7 @@ describe('ManifestTextParser', () => {
216
189
 
217
190
  // playlist text:
218
191
  '#EXTM3U\n' +
219
- '#EXT-X-MEDIA:CODECS="avc1.64002a,mp4a.40.2,avc2.64000"',
220
-
221
- // manifest URI:
222
- 'https://test/manifest.m3u8');
192
+ '#EXT-X-MEDIA:CODECS="avc1.64002a,mp4a.40.2,avc2.64000"');
223
193
 
224
194
  verifyPlaylist(
225
195
  {
@@ -236,10 +206,7 @@ describe('ManifestTextParser', () => {
236
206
 
237
207
  // playlist text:
238
208
  '#EXTM3U\n' +
239
- '#EXT-X-MEDIA:CODECS="avc1.64002a,mp4a.40.2",AUDIO="a1,a2"',
240
-
241
- // manifest URI:
242
- 'https://test/manifest.m3u8');
209
+ '#EXT-X-MEDIA:CODECS="avc1.64002a,mp4a.40.2",AUDIO="a1,a2"');
243
210
 
244
211
  verifyPlaylist(
245
212
  {
@@ -255,10 +222,7 @@ describe('ManifestTextParser', () => {
255
222
 
256
223
  // playlist text:
257
224
  '#EXTM3U\n' +
258
- '#EXT-X-MEDIA:CODECS="av01.0.08M.08,mp4a.40.2"',
259
-
260
- // manifest URI:
261
- 'https://test/manifest.m3u8');
225
+ '#EXT-X-MEDIA:CODECS="av01.0.08M.08,mp4a.40.2"');
262
226
  });
263
227
 
264
228
  it('rejects invalid tags', () => {
@@ -268,7 +232,7 @@ describe('ManifestTextParser', () => {
268
232
  shaka.util.Error.Code.INVALID_HLS_TAG,
269
233
  'invalid tag'));
270
234
  const text = shaka.util.StringUtils.toUTF8('#EXTM3U\ninvalid tag');
271
- expect(() => parser.parsePlaylist(text, /* uri= */ '')).toThrow(error);
235
+ expect(() => parser.parsePlaylist(text)).toThrow(error);
272
236
  });
273
237
  });
274
238
 
@@ -307,7 +271,7 @@ describe('ManifestTextParser', () => {
307
271
  new shaka.hls.Tag(/* id= */ 0, 'EXT-X-MEDIA-SEQUENCE', [], '1'),
308
272
  ],
309
273
  segments: [
310
- new shaka.hls.Segment('https://test/manifest.m3u8', 'https://test/test.mp4',
274
+ new shaka.hls.Segment('https://test/test.mp4',
311
275
  [
312
276
  new shaka.hls.Tag(/* id= */ 2, 'EXTINF', [], '5.99467'),
313
277
  ]),
@@ -318,10 +282,7 @@ describe('ManifestTextParser', () => {
318
282
  '#EXTM3U\n' +
319
283
  '#EXT-X-MEDIA-SEQUENCE:1\n' +
320
284
  '#EXTINF:5.99467\n' +
321
- 'https://test/test.mp4\n',
322
-
323
- // manifest URI:
324
- 'https://test/manifest.m3u8');
285
+ 'https://test/test.mp4\n');
325
286
  });
326
287
 
327
288
  it('handles tags with both value and attributes', () => {
@@ -332,7 +293,7 @@ describe('ManifestTextParser', () => {
332
293
  new shaka.hls.Tag(/* id= */ 0, 'EXT-X-MEDIA-SEQUENCE', [], '1'),
333
294
  ],
334
295
  segments: [
335
- new shaka.hls.Segment('https://test/manifest.m3u8', 'https://test/test.mp4', [
296
+ new shaka.hls.Segment('https://test/test.mp4', [
336
297
  new shaka.hls.Tag(
337
298
  /* id= */ 2,
338
299
  'EXTINF',
@@ -346,10 +307,7 @@ describe('ManifestTextParser', () => {
346
307
  '#EXTM3U\n' +
347
308
  '#EXT-X-MEDIA-SEQUENCE:1\n' +
348
309
  '#EXTINF:5.99467,pid=180\n' +
349
- 'https://test/test.mp4\n',
350
-
351
- // manifest URI:
352
- 'https://test/manifest.m3u8');
310
+ 'https://test/test.mp4\n');
353
311
  });
354
312
 
355
313
  it('handles manifests with a segment tag before a playlist tag', () => {
@@ -360,7 +318,7 @@ describe('ManifestTextParser', () => {
360
318
  new shaka.hls.Tag(/* id= */ 2, 'EXT-X-TARGETDURATION', [], '6'),
361
319
  ],
362
320
  segments: [
363
- new shaka.hls.Segment('https://test/manifest.m3u8', 'https://test/test.mp4',
321
+ new shaka.hls.Segment('https://test/test.mp4',
364
322
  [
365
323
  new shaka.hls.Tag(/* id= */ 1, 'EXT-X-KEY',
366
324
  [
@@ -378,22 +336,18 @@ describe('ManifestTextParser', () => {
378
336
  '#EXT-X-KEY:METHOD="AES-128",URI="http://key.com",IV="123"\n' +
379
337
  '#EXT-X-TARGETDURATION:6\n' +
380
338
  '#EXTINF:5.99467\n' +
381
- 'https://test/test.mp4\n',
382
-
383
- // manifest URI:
384
- 'https://test/manifest.m3u8');
339
+ 'https://test/test.mp4\n');
385
340
  });
386
341
 
387
342
  it('tracks playlist URI', () => {
388
343
  verifyPlaylist(
389
344
  {
390
- absoluteUri: 'https://test/manifest.m3u8',
391
345
  type: shaka.hls.PlaylistType.MEDIA,
392
346
  tags: [
393
347
  new shaka.hls.Tag(/* id= */ 0, 'EXT-X-MEDIA-SEQUENCE', [], '1'),
394
348
  ],
395
349
  segments: [
396
- new shaka.hls.Segment('https://test/manifest.m3u8', 'test.mp4',
350
+ new shaka.hls.Segment('test.mp4',
397
351
  [
398
352
  new shaka.hls.Tag(/* id= */ 2, 'EXTINF', [], '5.99467'),
399
353
  ]),
@@ -404,10 +358,7 @@ describe('ManifestTextParser', () => {
404
358
  '#EXTM3U\n' +
405
359
  '#EXT-X-MEDIA-SEQUENCE:1\n' +
406
360
  '#EXTINF:5.99467\n' +
407
- 'test.mp4\n',
408
-
409
- // manifest URI:
410
- 'https://test/manifest.m3u8');
361
+ 'test.mp4\n');
411
362
  });
412
363
  });
413
364
 
@@ -427,17 +378,14 @@ describe('ManifestTextParser', () => {
427
378
  new shaka.hls.Tag(/* id= */ 0, 'EXT-X-TARGETDURATION', [], '6'),
428
379
  ],
429
380
  segments: [
430
- new shaka.hls.Segment('https://test/manifest.m3u8', 'uri',
381
+ new shaka.hls.Segment('uri',
431
382
  [new shaka.hls.Tag(2, 'EXTINF', [], '5')]),
432
- new shaka.hls.Segment('https://test/manifest.m3u8', 'uri2',
383
+ new shaka.hls.Segment('uri2',
433
384
  [new shaka.hls.Tag(3, 'EXTINF', [], '4')]),
434
385
  ],
435
386
  },
436
387
 
437
- manifestText,
438
-
439
- // manifest URI:
440
- 'https://test/manifest.m3u8');
388
+ manifestText);
441
389
  });
442
390
 
443
391
  it('identifies playlist tags', () => {
@@ -449,19 +397,16 @@ describe('ManifestTextParser', () => {
449
397
  new shaka.hls.Tag(/* id= */ 4, 'EXT-X-ENDLIST', []),
450
398
  ],
451
399
  segments: [
452
- new shaka.hls.Segment('https://test/manifest.m3u8', 'uri',
400
+ new shaka.hls.Segment('uri',
453
401
  [new shaka.hls.Tag(2, 'EXTINF', [], '5')]),
454
- new shaka.hls.Segment('https://test/manifest.m3u8', 'uri2',
402
+ new shaka.hls.Segment('uri2',
455
403
  [new shaka.hls.Tag(3, 'EXTINF', [], '4')]),
456
404
  ],
457
405
  },
458
406
 
459
407
  // Append a playlist tag to the manifest text so it appears after
460
408
  // segment-related tags.
461
- manifestText + '#EXT-X-ENDLIST',
462
-
463
- // manifest URI:
464
- 'https://test/manifest.m3u8');
409
+ manifestText + '#EXT-X-ENDLIST');
465
410
  });
466
411
 
467
412
  it('parses segments with partial segments', () => {
@@ -508,14 +453,12 @@ describe('ManifestTextParser', () => {
508
453
  ],
509
454
  segments: [
510
455
  new shaka.hls.Segment(
511
- /* absoluteMediaPlaylistUri= */ 'https://test/manifest.m3u8',
512
456
  /* verbatimSegmentUri= */ 'uri',
513
457
  /* tags= */ [
514
458
  new shaka.hls.Tag(3, 'EXTINF', [], '5'),
515
459
  mapTag,
516
460
  ]),
517
461
  new shaka.hls.Segment(
518
- /* absoluteMediaPlaylistUri= */ 'https://test/manifest.m3u8',
519
462
  /* verbatimSegmentUri= */ 'uri2',
520
463
  /* tags= */ [
521
464
  new shaka.hls.Tag(6, 'EXTINF', [], '2'),
@@ -523,15 +466,12 @@ describe('ManifestTextParser', () => {
523
466
  ],
524
467
  /* partialSegments= */ partialSegments1),
525
468
  new shaka.hls.Segment(
526
- /* absoluteMediaPlaylistUri= */ '',
527
469
  /* verbatimSegmentUri= */ '',
528
470
  /* tags= */ [mapTag],
529
471
  /* partialSegments= */ partialSegments2),
530
472
  ],
531
473
  },
532
- manifestTextWithPartialSegments,
533
- // manifest URI:
534
- 'https://test/manifest.m3u8');
474
+ manifestTextWithPartialSegments);
535
475
  });
536
476
 
537
477
  it('parses segments with preload hint segments', () => {
@@ -577,22 +517,18 @@ describe('ManifestTextParser', () => {
577
517
  ],
578
518
  segments: [
579
519
  new shaka.hls.Segment(
580
- /* absoluteMediaPlaylistUri= */ 'https://test/manifest.m3u8',
581
520
  /* verbatimSegmentUri= */ 'uri',
582
521
  /* tags= */ [
583
522
  new shaka.hls.Tag(3, 'EXTINF', [], '5'),
584
523
  mapTag,
585
524
  ]),
586
525
  new shaka.hls.Segment(
587
- /* absoluteMediaPlaylistUri= */ '',
588
526
  /* verbatimSegmentUri= */ '',
589
527
  /* tags= */ [preloadMapTag],
590
528
  /* partialSegments= */ preloadSegment),
591
529
  ],
592
530
  },
593
- manifestTextWithPreloadSegments,
594
- // manifest URI:
595
- 'https://test/manifest.m3u8');
531
+ manifestTextWithPreloadSegments);
596
532
  });
597
533
  });
598
534
 
@@ -600,13 +536,10 @@ describe('ManifestTextParser', () => {
600
536
  /**
601
537
  * @param {!Object} expectedPlaylist
602
538
  * @param {string} playlistText
603
- * @param {string} absoluteManifestUri
604
539
  */
605
- function verifyPlaylist(expectedPlaylist, playlistText, absoluteManifestUri) {
540
+ function verifyPlaylist(expectedPlaylist, playlistText) {
606
541
  const playlistBuffer = shaka.util.StringUtils.toUTF8(playlistText);
607
- const actualPlaylist =
608
- parser.parsePlaylist(playlistBuffer, absoluteManifestUri);
609
-
542
+ const actualPlaylist = parser.parsePlaylist(playlistBuffer);
610
543
  expect(actualPlaylist).toEqual(jasmine.objectContaining(expectedPlaylist));
611
544
  }
612
545
  });