rx-player 4.0.0-dev.2023110700 → 4.0.0-dev.2023120600

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 (479) hide show
  1. package/CHANGELOG.md +18 -226
  2. package/FILES.md +1 -1
  3. package/VERSION +1 -1
  4. package/dist/_esm5.processed/compat/add_text_track.d.ts +1 -3
  5. package/dist/_esm5.processed/compat/add_text_track.js +4 -7
  6. package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +0 -7
  7. package/dist/_esm5.processed/compat/event_listeners.d.ts +2 -15
  8. package/dist/_esm5.processed/compat/event_listeners.js +2 -37
  9. package/dist/_esm5.processed/compat/index.d.ts +1 -3
  10. package/dist/_esm5.processed/compat/index.js +1 -3
  11. package/dist/_esm5.processed/config.d.ts +9 -21
  12. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.d.ts +0 -58
  13. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +14 -54
  14. package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.d.ts +2 -8
  15. package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +2 -11
  16. package/dist/_esm5.processed/core/api/debug/buffer_graph.js +2 -6
  17. package/dist/_esm5.processed/core/api/debug/modules/general_info.js +13 -32
  18. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +3 -3
  19. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +1 -1
  20. package/dist/_esm5.processed/core/api/option_utils.d.ts +14 -35
  21. package/dist/_esm5.processed/core/api/option_utils.js +47 -230
  22. package/dist/_esm5.processed/core/api/public_api.d.ts +92 -266
  23. package/dist/_esm5.processed/core/api/public_api.js +451 -807
  24. package/dist/_esm5.processed/core/{segment_buffers/implementations/image → api/track_management}/index.d.ts +3 -2
  25. package/dist/_esm5.processed/core/{segment_buffers/implementations/image → api/track_management}/index.js +3 -2
  26. package/dist/_esm5.processed/core/api/{tracks_management/media_element_track_choice_manager.d.ts → track_management/media_element_tracks_store.d.ts} +15 -75
  27. package/dist/_esm5.processed/core/api/{tracks_management/media_element_track_choice_manager.js → track_management/media_element_tracks_store.js} +74 -193
  28. package/dist/_esm5.processed/core/api/track_management/track_dispatcher.d.ts +84 -0
  29. package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +158 -0
  30. package/dist/_esm5.processed/core/api/track_management/tracks_store.d.ts +406 -0
  31. package/dist/_esm5.processed/core/api/track_management/tracks_store.js +932 -0
  32. package/dist/_esm5.processed/core/api/utils.d.ts +1 -0
  33. package/dist/_esm5.processed/core/api/utils.js +28 -11
  34. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +3 -3
  35. package/dist/_esm5.processed/core/decrypt/find_key_system.js +83 -71
  36. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +6 -5
  37. package/dist/_esm5.processed/core/decrypt/session_events_listener.js +10 -72
  38. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +4 -4
  39. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +6 -4
  40. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +1 -3
  41. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +7 -26
  42. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +3 -9
  43. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +16 -9
  44. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -3
  45. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
  46. package/dist/_esm5.processed/core/fetchers/utils/schedule_request.d.ts +1 -6
  47. package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +4 -41
  48. package/dist/_esm5.processed/core/init/directfile_content_initializer.js +1 -1
  49. package/dist/_esm5.processed/core/init/media_source_content_initializer.d.ts +1 -8
  50. package/dist/_esm5.processed/core/init/media_source_content_initializer.js +5 -19
  51. package/dist/_esm5.processed/core/init/types.d.ts +5 -15
  52. package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +2 -36
  53. package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +2 -82
  54. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +54 -6
  55. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.d.ts +2 -1
  56. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.js +19 -2
  57. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +1 -2
  58. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +2 -3
  59. package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +2 -2
  60. package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
  61. package/dist/_esm5.processed/core/segment_buffers/index.js +2 -1
  62. package/dist/_esm5.processed/core/segment_buffers/inventory/index.d.ts +1 -0
  63. package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +1 -0
  64. package/dist/_esm5.processed/core/segment_buffers/inventory/utils.d.ts +33 -0
  65. package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +49 -0
  66. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +0 -1
  67. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +2 -16
  68. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +0 -15
  69. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +183 -93
  70. package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.d.ts +39 -0
  71. package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +133 -0
  72. package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +27 -13
  73. package/dist/_esm5.processed/core/stream/index.d.ts +2 -3
  74. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +2 -0
  75. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +5 -7
  76. package/dist/_esm5.processed/core/stream/period/period_stream.js +13 -12
  77. package/dist/_esm5.processed/core/stream/period/types.d.ts +5 -14
  78. package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +2 -4
  79. package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +10 -46
  80. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +29 -23
  81. package/dist/_esm5.processed/core/stream/representation/types.d.ts +11 -1
  82. package/dist/_esm5.processed/default_config.d.ts +35 -98
  83. package/dist/_esm5.processed/default_config.js +36 -113
  84. package/dist/_esm5.processed/errors/custom_loader_error.d.ts +1 -3
  85. package/dist/_esm5.processed/errors/custom_loader_error.js +1 -3
  86. package/dist/_esm5.processed/errors/media_error.js +2 -2
  87. package/dist/_esm5.processed/errors/network_error.d.ts +0 -1
  88. package/dist/_esm5.processed/errors/network_error.js +0 -1
  89. package/dist/_esm5.processed/errors/request_error.d.ts +2 -3
  90. package/dist/_esm5.processed/errors/request_error.js +2 -5
  91. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -3
  92. package/dist/_esm5.processed/features/features_object.js +0 -2
  93. package/dist/_esm5.processed/features/list/directfile.js +2 -5
  94. package/dist/_esm5.processed/features/list/index.d.ts +0 -2
  95. package/dist/_esm5.processed/features/list/index.js +0 -2
  96. package/dist/_esm5.processed/features/types.d.ts +3 -27
  97. package/dist/_esm5.processed/manifest/adaptation.d.ts +9 -11
  98. package/dist/_esm5.processed/manifest/adaptation.js +41 -30
  99. package/dist/_esm5.processed/manifest/index.d.ts +3 -4
  100. package/dist/_esm5.processed/manifest/manifest.d.ts +5 -54
  101. package/dist/_esm5.processed/manifest/manifest.js +5 -110
  102. package/dist/_esm5.processed/manifest/period.d.ts +4 -5
  103. package/dist/_esm5.processed/manifest/representation.d.ts +10 -5
  104. package/dist/_esm5.processed/manifest/representation.js +33 -10
  105. package/dist/_esm5.processed/manifest/representation_index/index.d.ts +2 -2
  106. package/dist/_esm5.processed/manifest/representation_index/static.d.ts +2 -0
  107. package/dist/_esm5.processed/manifest/representation_index/static.js +6 -0
  108. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +42 -21
  109. package/dist/_esm5.processed/manifest/types.d.ts +0 -2
  110. package/dist/_esm5.processed/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +17 -0
  111. package/dist/_esm5.processed/parsers/manifest/dash/common/convert_supplemental_codecs.js +26 -0
  112. package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +5 -0
  113. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +17 -31
  114. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +26 -19
  115. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +2 -0
  116. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +7 -1
  117. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +2 -6
  118. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +11 -8
  119. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +2 -0
  120. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +6 -0
  121. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
  122. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.js +1 -6
  123. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +3 -5
  124. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +0 -2
  125. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -1
  126. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +2 -2
  127. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +0 -2
  128. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +2 -2
  129. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +29 -17
  130. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +13 -6
  131. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +7 -2
  132. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.d.ts +10 -1
  133. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +18 -2
  134. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +6 -4
  135. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +7 -6
  136. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +5 -2
  137. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  138. package/dist/_esm5.processed/parsers/manifest/local/representation_index.d.ts +2 -0
  139. package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +6 -0
  140. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +6 -6
  141. package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.d.ts +12 -3
  142. package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +11 -2
  143. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +0 -1
  144. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +11 -17
  145. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +21 -83
  146. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +53 -125
  147. package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.d.ts +119 -0
  148. package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +159 -0
  149. package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.d.ts +3 -6
  150. package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +4 -4
  151. package/dist/_esm5.processed/parsers/manifest/types.d.ts +4 -3
  152. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_extent.js +1 -8
  153. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +1 -9
  154. package/dist/_esm5.processed/public_types.d.ts +396 -308
  155. package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.d.ts +5 -4
  156. package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +5 -4
  157. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +4 -4
  158. package/dist/_esm5.processed/transports/dash/manifest_parser.js +2 -3
  159. package/dist/_esm5.processed/transports/dash/pipelines.js +1 -4
  160. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
  161. package/dist/_esm5.processed/transports/dash/segment_loader.js +26 -20
  162. package/dist/_esm5.processed/transports/dash/segment_parser.js +19 -24
  163. package/dist/_esm5.processed/transports/dash/text_loader.js +5 -5
  164. package/dist/_esm5.processed/transports/dash/text_parser.js +28 -33
  165. package/dist/_esm5.processed/transports/local/pipelines.js +1 -10
  166. package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
  167. package/dist/_esm5.processed/transports/local/segment_parser.d.ts +1 -1
  168. package/dist/_esm5.processed/transports/local/segment_parser.js +10 -10
  169. package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
  170. package/dist/_esm5.processed/transports/local/text_parser.js +23 -23
  171. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +34 -52
  172. package/dist/_esm5.processed/{utils/list_to_map.d.ts → transports/smooth/is_mp4_embedded_track.d.ts} +5 -5
  173. package/dist/_esm5.processed/{features/list/image_buffer.d.ts → transports/smooth/is_mp4_embedded_track.js} +7 -6
  174. package/dist/_esm5.processed/transports/smooth/pipelines.js +33 -190
  175. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +1 -1
  176. package/dist/_esm5.processed/transports/smooth/segment_loader.js +28 -22
  177. package/dist/_esm5.processed/transports/smooth/utils.d.ts +1 -26
  178. package/dist/_esm5.processed/transports/smooth/utils.js +1 -55
  179. package/dist/_esm5.processed/transports/types.d.ts +94 -89
  180. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +3 -3
  181. package/dist/_esm5.processed/transports/utils/infer_segment_container.d.ts +3 -3
  182. package/dist/_esm5.processed/transports/utils/infer_segment_container.js +5 -7
  183. package/dist/_esm5.processed/transports/utils/parse_text_track.d.ts +8 -12
  184. package/dist/_esm5.processed/transports/utils/parse_text_track.js +19 -21
  185. package/dist/_esm5.processed/utils/array_includes.d.ts +2 -1
  186. package/dist/_esm5.processed/utils/array_includes.js +30 -28
  187. package/dist/_esm5.processed/utils/request/xhr.js +5 -5
  188. package/dist/commonjs/compat/is_codec_supported.js +22 -1
  189. package/dist/commonjs/compat/patch_webkit_source_buffer.js +2 -2
  190. package/dist/commonjs/config.d.ts +1 -0
  191. package/dist/commonjs/core/api/debug/buffer_graph.js +2 -6
  192. package/dist/commonjs/core/api/debug/modules/general_info.js +17 -10
  193. package/dist/commonjs/core/api/option_utils.d.ts +4 -0
  194. package/dist/commonjs/core/api/option_utils.js +8 -3
  195. package/dist/commonjs/core/api/public_api.d.ts +11 -1
  196. package/dist/commonjs/core/api/public_api.js +46 -11
  197. package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
  198. package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.js +11 -3
  199. package/dist/commonjs/core/fetchers/segment/segment_fetcher.d.ts +8 -1
  200. package/dist/commonjs/core/fetchers/segment/segment_fetcher.js +8 -4
  201. package/dist/commonjs/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
  202. package/dist/commonjs/core/fetchers/utils/schedule_request.js +1 -1
  203. package/dist/commonjs/core/init/directfile_content_initializer.js +24 -7
  204. package/dist/commonjs/core/init/media_source_content_initializer.d.ts +6 -0
  205. package/dist/commonjs/core/init/media_source_content_initializer.js +4 -6
  206. package/dist/commonjs/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
  207. package/dist/commonjs/core/init/utils/content_time_boundaries_observer.js +16 -17
  208. package/dist/commonjs/core/init/utils/get_initial_time.d.ts +17 -3
  209. package/dist/commonjs/core/init/utils/get_initial_time.js +9 -7
  210. package/dist/commonjs/core/segment_buffers/implementations/text/html/text_track_cues_store.js +54 -6
  211. package/dist/commonjs/core/segment_buffers/implementations/text/html/utils.d.ts +2 -1
  212. package/dist/commonjs/core/segment_buffers/implementations/text/html/utils.js +19 -2
  213. package/dist/commonjs/core/stream/adaptation/adaptation_stream.js +2 -2
  214. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +3 -3
  215. package/dist/commonjs/core/stream/period/period_stream.js +2 -2
  216. package/dist/commonjs/core/stream/representation/utils/get_buffer_status.js +3 -3
  217. package/dist/commonjs/core/stream/representation/utils/get_needed_segments.js +1 -1
  218. package/dist/commonjs/default_config.d.ts +5 -0
  219. package/dist/commonjs/default_config.js +5 -0
  220. package/dist/commonjs/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
  221. package/dist/commonjs/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
  222. package/dist/commonjs/manifest/representation.js +18 -5
  223. package/dist/commonjs/manifest/representation_index/static.d.ts +1 -1
  224. package/dist/commonjs/manifest/representation_index/static.js +2 -2
  225. package/dist/commonjs/manifest/representation_index/types.d.ts +4 -4
  226. package/dist/commonjs/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +17 -0
  227. package/dist/commonjs/parsers/manifest/dash/common/convert_supplemental_codecs.js +30 -0
  228. package/dist/commonjs/parsers/manifest/dash/common/flatten_overlapping_periods.js +5 -0
  229. package/dist/commonjs/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
  230. package/dist/commonjs/parsers/manifest/dash/common/indexes/base.js +4 -3
  231. package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
  232. package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
  233. package/dist/commonjs/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
  234. package/dist/commonjs/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
  235. package/dist/commonjs/parsers/manifest/dash/common/indexes/list.js +2 -2
  236. package/dist/commonjs/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
  237. package/dist/commonjs/parsers/manifest/dash/common/indexes/template.js +42 -29
  238. package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
  239. package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
  240. package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +250 -51
  241. package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
  242. package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
  243. package/dist/commonjs/parsers/manifest/dash/common/parse_adaptation_sets.js +13 -10
  244. package/dist/commonjs/parsers/manifest/dash/common/parse_mpd.js +27 -14
  245. package/dist/commonjs/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
  246. package/dist/commonjs/parsers/manifest/dash/common/parse_periods.js +17 -18
  247. package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
  248. package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.js +21 -8
  249. package/dist/commonjs/parsers/manifest/dash/common/parse_representations.js +36 -20
  250. package/dist/commonjs/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +3 -0
  251. package/dist/commonjs/parsers/manifest/dash/js-parser/node_parsers/Representation.js +3 -0
  252. package/dist/commonjs/parsers/manifest/dash/node_parser_types.d.ts +2 -0
  253. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +4 -0
  254. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +4 -0
  255. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  256. package/dist/commonjs/parsers/manifest/local/representation_index.d.ts +1 -1
  257. package/dist/commonjs/parsers/manifest/local/representation_index.js +3 -3
  258. package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
  259. package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.js +2 -2
  260. package/dist/commonjs/parsers/manifest/smooth/representation_index.d.ts +5 -5
  261. package/dist/commonjs/parsers/manifest/smooth/representation_index.js +25 -9
  262. package/dist/commonjs/parsers/manifest/types.d.ts +1 -0
  263. package/dist/commonjs/parsers/manifest/utils/index_helpers.js +1 -1
  264. package/dist/commonjs/public_types.d.ts +78 -34
  265. package/dist/commonjs/transports/dash/init_segment_loader.js +10 -5
  266. package/dist/commonjs/transports/dash/manifest_parser.js +5 -2
  267. package/dist/commonjs/transports/dash/segment_loader.js +2 -1
  268. package/dist/commonjs/transports/dash/text_loader.js +2 -0
  269. package/dist/commonjs/transports/metaplaylist/manifest_loader.js +2 -1
  270. package/dist/commonjs/transports/metaplaylist/pipelines.js +4 -1
  271. package/dist/commonjs/transports/smooth/pipelines.js +4 -2
  272. package/dist/commonjs/transports/smooth/segment_loader.js +2 -1
  273. package/dist/commonjs/transports/types.d.ts +12 -0
  274. package/dist/commonjs/transports/utils/generate_manifest_loader.js +6 -3
  275. package/dist/commonjs/utils/queue_microtask.d.ts +2 -0
  276. package/dist/commonjs/utils/queue_microtask.js +7 -0
  277. package/dist/commonjs/utils/request/fetch.d.ts +6 -0
  278. package/dist/commonjs/utils/request/fetch.js +29 -8
  279. package/dist/commonjs/utils/request/xhr.d.ts +11 -5
  280. package/dist/commonjs/utils/request/xhr.js +29 -8
  281. package/dist/es2017/compat/is_codec_supported.js +22 -1
  282. package/dist/es2017/compat/patch_webkit_source_buffer.js +2 -2
  283. package/dist/es2017/config.d.ts +1 -0
  284. package/dist/es2017/core/api/debug/buffer_graph.js +2 -6
  285. package/dist/es2017/core/api/debug/modules/general_info.js +17 -10
  286. package/dist/es2017/core/api/option_utils.d.ts +4 -0
  287. package/dist/es2017/core/api/option_utils.js +8 -3
  288. package/dist/es2017/core/api/public_api.d.ts +11 -1
  289. package/dist/es2017/core/api/public_api.js +44 -9
  290. package/dist/es2017/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
  291. package/dist/es2017/core/fetchers/manifest/manifest_fetcher.js +11 -3
  292. package/dist/es2017/core/fetchers/segment/segment_fetcher.d.ts +8 -1
  293. package/dist/es2017/core/fetchers/segment/segment_fetcher.js +8 -4
  294. package/dist/es2017/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
  295. package/dist/es2017/core/fetchers/utils/schedule_request.js +1 -1
  296. package/dist/es2017/core/init/directfile_content_initializer.js +24 -7
  297. package/dist/es2017/core/init/media_source_content_initializer.d.ts +6 -0
  298. package/dist/es2017/core/init/media_source_content_initializer.js +4 -6
  299. package/dist/es2017/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
  300. package/dist/es2017/core/init/utils/content_time_boundaries_observer.js +16 -15
  301. package/dist/es2017/core/init/utils/get_initial_time.d.ts +17 -3
  302. package/dist/es2017/core/init/utils/get_initial_time.js +9 -7
  303. package/dist/es2017/core/segment_buffers/implementations/text/html/text_track_cues_store.js +54 -6
  304. package/dist/es2017/core/segment_buffers/implementations/text/html/utils.d.ts +2 -1
  305. package/dist/es2017/core/segment_buffers/implementations/text/html/utils.js +18 -2
  306. package/dist/es2017/core/stream/adaptation/adaptation_stream.js +2 -2
  307. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +3 -3
  308. package/dist/es2017/core/stream/period/period_stream.js +2 -2
  309. package/dist/es2017/core/stream/representation/utils/get_buffer_status.js +3 -3
  310. package/dist/es2017/core/stream/representation/utils/get_needed_segments.js +1 -1
  311. package/dist/es2017/default_config.d.ts +5 -0
  312. package/dist/es2017/default_config.js +5 -0
  313. package/dist/es2017/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
  314. package/dist/es2017/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
  315. package/dist/es2017/manifest/representation.js +18 -5
  316. package/dist/es2017/manifest/representation_index/static.d.ts +1 -1
  317. package/dist/es2017/manifest/representation_index/static.js +2 -2
  318. package/dist/es2017/manifest/representation_index/types.d.ts +4 -4
  319. package/dist/es2017/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +17 -0
  320. package/dist/es2017/parsers/manifest/dash/common/convert_supplemental_codecs.js +26 -0
  321. package/dist/es2017/parsers/manifest/dash/common/flatten_overlapping_periods.js +5 -0
  322. package/dist/es2017/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
  323. package/dist/es2017/parsers/manifest/dash/common/indexes/base.js +4 -3
  324. package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
  325. package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
  326. package/dist/es2017/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
  327. package/dist/es2017/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
  328. package/dist/es2017/parsers/manifest/dash/common/indexes/list.js +2 -2
  329. package/dist/es2017/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
  330. package/dist/es2017/parsers/manifest/dash/common/indexes/template.js +40 -27
  331. package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
  332. package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
  333. package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +246 -51
  334. package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
  335. package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
  336. package/dist/es2017/parsers/manifest/dash/common/parse_adaptation_sets.js +11 -8
  337. package/dist/es2017/parsers/manifest/dash/common/parse_mpd.js +27 -13
  338. package/dist/es2017/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
  339. package/dist/es2017/parsers/manifest/dash/common/parse_periods.js +13 -16
  340. package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
  341. package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.js +10 -8
  342. package/dist/es2017/parsers/manifest/dash/common/parse_representations.js +36 -20
  343. package/dist/es2017/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +3 -0
  344. package/dist/es2017/parsers/manifest/dash/js-parser/node_parsers/Representation.js +3 -0
  345. package/dist/es2017/parsers/manifest/dash/node_parser_types.d.ts +2 -0
  346. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +4 -0
  347. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +4 -0
  348. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  349. package/dist/es2017/parsers/manifest/local/representation_index.d.ts +1 -1
  350. package/dist/es2017/parsers/manifest/local/representation_index.js +3 -3
  351. package/dist/es2017/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
  352. package/dist/es2017/parsers/manifest/metaplaylist/representation_index.js +2 -2
  353. package/dist/es2017/parsers/manifest/smooth/representation_index.d.ts +5 -5
  354. package/dist/es2017/parsers/manifest/smooth/representation_index.js +25 -9
  355. package/dist/es2017/parsers/manifest/types.d.ts +1 -0
  356. package/dist/es2017/parsers/manifest/utils/index_helpers.js +1 -1
  357. package/dist/es2017/public_types.d.ts +78 -34
  358. package/dist/es2017/transports/dash/init_segment_loader.js +5 -0
  359. package/dist/es2017/transports/dash/manifest_parser.js +3 -0
  360. package/dist/es2017/transports/dash/segment_loader.js +1 -0
  361. package/dist/es2017/transports/dash/text_loader.js +2 -0
  362. package/dist/es2017/transports/metaplaylist/manifest_loader.js +1 -0
  363. package/dist/es2017/transports/metaplaylist/pipelines.js +4 -1
  364. package/dist/es2017/transports/smooth/pipelines.js +2 -0
  365. package/dist/es2017/transports/smooth/segment_loader.js +1 -0
  366. package/dist/es2017/transports/types.d.ts +12 -0
  367. package/dist/es2017/transports/utils/generate_manifest_loader.js +3 -0
  368. package/dist/es2017/utils/queue_microtask.d.ts +2 -0
  369. package/dist/es2017/utils/queue_microtask.js +5 -0
  370. package/dist/es2017/utils/request/fetch.d.ts +6 -0
  371. package/dist/es2017/utils/request/fetch.js +29 -8
  372. package/dist/es2017/utils/request/xhr.d.ts +11 -5
  373. package/dist/es2017/utils/request/xhr.js +30 -9
  374. package/dist/mpd-parser.wasm +0 -0
  375. package/dist/rx-player.js +900 -492
  376. package/dist/rx-player.min.js +1 -1
  377. package/package.json +3 -7
  378. package/scripts/update-version +2 -0
  379. package/sonar-project.properties +1 -1
  380. package/src/compat/is_codec_supported.ts +23 -1
  381. package/src/compat/patch_webkit_source_buffer.ts +2 -2
  382. package/src/core/api/debug/buffer_graph.ts +2 -5
  383. package/src/core/api/debug/modules/general_info.ts +15 -10
  384. package/src/core/api/option_utils.ts +11 -3
  385. package/src/core/api/public_api.ts +48 -8
  386. package/src/core/fetchers/manifest/manifest_fetcher.ts +21 -3
  387. package/src/core/fetchers/segment/segment_fetcher.ts +19 -5
  388. package/src/core/fetchers/segment/segment_fetcher_creator.ts +1 -0
  389. package/src/core/fetchers/utils/schedule_request.ts +1 -1
  390. package/src/core/init/directfile_content_initializer.ts +23 -7
  391. package/src/core/init/media_source_content_initializer.ts +13 -7
  392. package/src/core/init/utils/content_time_boundaries_observer.ts +23 -22
  393. package/src/core/init/utils/get_initial_time.ts +25 -12
  394. package/src/core/segment_buffers/implementations/text/html/__tests__/utils.test.ts +15 -0
  395. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +57 -6
  396. package/src/core/segment_buffers/implementations/text/html/utils.ts +19 -2
  397. package/src/core/stream/adaptation/adaptation_stream.ts +2 -2
  398. package/src/core/stream/orchestrator/stream_orchestrator.ts +3 -3
  399. package/src/core/stream/period/period_stream.ts +2 -2
  400. package/src/core/stream/representation/utils/get_buffer_status.ts +3 -3
  401. package/src/core/stream/representation/utils/get_needed_segments.ts +2 -2
  402. package/src/default_config.ts +5 -0
  403. package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +3 -1
  404. package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +2 -0
  405. package/src/manifest/representation.ts +19 -6
  406. package/src/manifest/representation_index/static.ts +2 -2
  407. package/src/manifest/representation_index/types.ts +4 -4
  408. package/src/parsers/manifest/dash/common/__tests__/convert_supplemental_codecs.test.ts +37 -0
  409. package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +20 -0
  410. package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +182 -36
  411. package/src/parsers/manifest/dash/common/convert_supplemental_codecs.ts +32 -0
  412. package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +5 -0
  413. package/src/parsers/manifest/dash/common/indexes/base.ts +12 -4
  414. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +19 -5
  415. package/src/parsers/manifest/dash/common/indexes/index.ts +16 -4
  416. package/src/parsers/manifest/dash/common/indexes/list.ts +2 -2
  417. package/src/parsers/manifest/dash/common/indexes/template.ts +52 -31
  418. package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +4 -1
  419. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +366 -60
  420. package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +63 -25
  421. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +10 -4
  422. package/src/parsers/manifest/dash/common/parse_mpd.ts +28 -15
  423. package/src/parsers/manifest/dash/common/parse_periods.ts +12 -17
  424. package/src/parsers/manifest/dash/common/parse_representation_index.ts +50 -26
  425. package/src/parsers/manifest/dash/common/parse_representations.ts +39 -20
  426. package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +4 -0
  427. package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +4 -0
  428. package/src/parsers/manifest/dash/node_parser_types.ts +2 -0
  429. package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +2 -0
  430. package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +2 -0
  431. package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +4 -0
  432. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +4 -0
  433. package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +2 -0
  434. package/src/parsers/manifest/local/representation_index.ts +3 -3
  435. package/src/parsers/manifest/metaplaylist/representation_index.ts +2 -2
  436. package/src/parsers/manifest/smooth/representation_index.ts +23 -9
  437. package/src/parsers/manifest/types.ts +2 -0
  438. package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +1 -1
  439. package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +1 -1
  440. package/src/parsers/manifest/utils/index_helpers.ts +1 -1
  441. package/src/public_types.ts +79 -34
  442. package/src/transports/dash/init_segment_loader.ts +5 -0
  443. package/src/transports/dash/manifest_parser.ts +6 -0
  444. package/src/transports/dash/segment_loader.ts +1 -0
  445. package/src/transports/dash/text_loader.ts +2 -0
  446. package/src/transports/metaplaylist/manifest_loader.ts +1 -0
  447. package/src/transports/metaplaylist/pipelines.ts +4 -1
  448. package/src/transports/smooth/pipelines.ts +2 -0
  449. package/src/transports/smooth/segment_loader.ts +1 -0
  450. package/src/transports/types.ts +12 -0
  451. package/src/transports/utils/generate_manifest_loader.ts +3 -0
  452. package/src/utils/queue_microtask.ts +7 -0
  453. package/src/utils/request/fetch.ts +35 -8
  454. package/src/utils/request/xhr.ts +45 -14
  455. package/dist/_esm5.processed/compat/fullscreen.d.ts +0 -32
  456. package/dist/_esm5.processed/compat/fullscreen.js +0 -78
  457. package/dist/_esm5.processed/compat/is_offline.d.ts +0 -39
  458. package/dist/_esm5.processed/compat/is_offline.js +0 -43
  459. package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.d.ts +0 -258
  460. package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.js +0 -989
  461. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +0 -75
  462. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +0 -133
  463. package/dist/_esm5.processed/features/list/bif_parser.d.ts +0 -23
  464. package/dist/_esm5.processed/features/list/bif_parser.js +0 -27
  465. package/dist/_esm5.processed/features/list/image_buffer.js +0 -25
  466. package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +0 -38
  467. package/dist/_esm5.processed/transports/dash/image_pipelines.js +0 -129
  468. package/dist/_esm5.processed/utils/list_to_map.js +0 -28
  469. package/dist/_esm5.processed/utils/simple_set.d.ts +0 -51
  470. package/dist/_esm5.processed/utils/simple_set.js +0 -57
  471. package/dist/_esm5.processed/utils/uniq.d.ts +0 -36
  472. package/dist/_esm5.processed/utils/uniq.js +0 -43
  473. package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
  474. package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.js +0 -54
  475. package/dist/es2017/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
  476. package/dist/es2017/parsers/manifest/utils/is_segment_still_available.js +0 -51
  477. package/src/parsers/manifest/utils/is_segment_still_available.ts +0 -58
  478. package/src/typings/next-tick.d.ts +0 -23
  479. package/src/typings/object-assign.d.ts +0 -48
@@ -22,8 +22,8 @@ import { IStreamOrchestratorPlaybackObservation } from "../../stream";
22
22
  /**
23
23
  * Observes what's being played and take care of media events relating to time
24
24
  * boundaries:
25
- * - Emits a `durationUpdate` when the duration of the current content is
26
- * known and every time it changes.
25
+ * - Emits a `endingPositionChange` when the known maximum playable position
26
+ * of the current content is known and every time it changes.
27
27
  * - Emits `endOfStream` API once segments have been pushed until the end and
28
28
  * `resumeStream` if downloads starts back.
29
29
  * - Emits a `periodChange` event when the currently-playing Period seemed to
@@ -56,10 +56,11 @@ export default class ContentTimeBoundariesObserver extends EventEmitter<IContent
56
56
  */
57
57
  constructor(manifest: Manifest, playbackObserver: IReadOnlyPlaybackObserver<IStreamOrchestratorPlaybackObservation>, bufferTypes: IBufferType[]);
58
58
  /**
59
- * Returns an estimate of the current duration of the content.
59
+ * Returns an estimate of the current last position which may be played in
60
+ * the content at the moment.
60
61
  * @returns {Object}
61
62
  */
62
- getCurrentDuration(): IDurationItem;
63
+ getCurrentEndingTime(): IEndingPositionInformation;
63
64
  /**
64
65
  * Method to call any time an Adaptation has been selected.
65
66
  *
@@ -126,20 +127,20 @@ export default class ContentTimeBoundariesObserver extends EventEmitter<IContent
126
127
  private _addActivelyLoadedPeriod;
127
128
  private _removeActivelyLoadedPeriod;
128
129
  private _checkCurrentPeriod;
129
- private _getManifestDuration;
130
+ private _getManifestEndTime;
130
131
  private _lazilyCreateActiveStreamInfo;
131
132
  private _checkEndOfStream;
132
133
  }
133
- export interface IDurationItem {
134
+ export interface IEndingPositionInformation {
134
135
  /**
135
136
  * The new maximum known position (note that this is the ending position
136
137
  * currently known of the current content, it might be superior to the last
137
138
  * position at which segments are available and it might also evolve over
138
139
  * time), in seconds.
139
140
  */
140
- duration: number;
141
+ endingPosition: number;
141
142
  /**
142
- * If `true`, the communicated `duration` is the actual end of the content.
143
+ * If `true`, the communicated `endingPosition` is the actual end of the content.
143
144
  * It may still be updated due to a track change or to add precision, but it
144
145
  * is still a (rough) estimate of the maximum position that content should
145
146
  * have.
@@ -147,7 +148,7 @@ export interface IDurationItem {
147
148
  * If `false`, this is the currently known maximum position associated to
148
149
  * the content, but the content is still evolving (typically, new media
149
150
  * segments are still being generated) and as such it can still have a
150
- * longer duration in the future.
151
+ * longer `endingPosition` in the future.
151
152
  */
152
153
  isEnd: boolean;
153
154
  }
@@ -161,10 +162,10 @@ export interface IContentTimeBoundariesObserverEvent {
161
162
  /** Triggered when a new `Period` is currently playing. */
162
163
  periodChange: Period;
163
164
  /**
164
- * Triggered when the duration of the currently-playing content became known
165
- * or changed.
165
+ * Triggered when the ending position of the currently-playing content became
166
+ * known or changed.
166
167
  */
167
- durationUpdate: IDurationItem;
168
+ endingPositionChange: IEndingPositionInformation;
168
169
  /**
169
170
  * Triggered when the last possible chronological segment for all types of
170
171
  * buffers has either been pushed or is being pushed to the corresponding
@@ -21,8 +21,8 @@ import TaskCanceller from "../../../utils/task_canceller";
21
21
  /**
22
22
  * Observes what's being played and take care of media events relating to time
23
23
  * boundaries:
24
- * - Emits a `durationUpdate` when the duration of the current content is
25
- * known and every time it changes.
24
+ * - Emits a `endingPositionChange` when the known maximum playable position
25
+ * of the current content is known and every time it changes.
26
26
  * - Emits `endOfStream` API once segments have been pushed until the end and
27
27
  * `resumeStream` if downloads starts back.
28
28
  * - Emits a `periodChange` event when the currently-playing Period seemed to
@@ -65,7 +65,7 @@ export default class ContentTimeBoundariesObserver extends EventEmitter {
65
65
  }
66
66
  }, { includeLastObservation: true, clearSignal: cancelSignal });
67
67
  manifest.addEventListener("manifestUpdate", () => {
68
- this.trigger("durationUpdate", this._getManifestDuration());
68
+ this.trigger("endingPositionChange", this._getManifestEndTime());
69
69
  if (cancelSignal.isCancelled()) {
70
70
  return;
71
71
  }
@@ -73,11 +73,12 @@ export default class ContentTimeBoundariesObserver extends EventEmitter {
73
73
  }, cancelSignal);
74
74
  }
75
75
  /**
76
- * Returns an estimate of the current duration of the content.
76
+ * Returns an estimate of the current last position which may be played in
77
+ * the content at the moment.
77
78
  * @returns {Object}
78
79
  */
79
- getCurrentDuration() {
80
- return this._getManifestDuration();
80
+ getCurrentEndingTime() {
81
+ return this._getManifestEndTime();
81
82
  }
82
83
  /**
83
84
  * Method to call any time an Adaptation has been selected.
@@ -106,12 +107,13 @@ export default class ContentTimeBoundariesObserver extends EventEmitter {
106
107
  .updateLastVideoAdaptation(adaptation);
107
108
  }
108
109
  const endingPosition = this._maximumPositionCalculator.getEndingPosition();
109
- const newDuration = endingPosition !== undefined ?
110
+ const newEndingPosition = endingPosition !== undefined ?
110
111
  { isEnd: true,
111
- duration: endingPosition } :
112
+ endingPosition } :
112
113
  { isEnd: false,
113
- duration: this._maximumPositionCalculator.getMaximumAvailablePosition() };
114
- this.trigger("durationUpdate", newDuration);
114
+ endingPosition: this._maximumPositionCalculator
115
+ .getMaximumAvailablePosition() };
116
+ this.trigger("endingPositionChange", newEndingPosition);
115
117
  }
116
118
  }
117
119
  }
@@ -238,13 +240,13 @@ export default class ContentTimeBoundariesObserver extends EventEmitter {
238
240
  }
239
241
  }
240
242
  }
241
- _getManifestDuration() {
243
+ _getManifestEndTime() {
242
244
  const endingPosition = this._maximumPositionCalculator.getEndingPosition();
243
245
  return endingPosition !== undefined ?
244
246
  { isEnd: true,
245
- duration: endingPosition } :
247
+ endingPosition } :
246
248
  { isEnd: false,
247
- duration: this._maximumPositionCalculator.getMaximumAvailablePosition() };
249
+ endingPosition: this._maximumPositionCalculator.getMaximumAvailablePosition() };
248
250
  }
249
251
  _lazilyCreateActiveStreamInfo(bufferType) {
250
252
  let streamInfo = this._activeStreams.get(bufferType);
@@ -315,9 +317,8 @@ class MaximumPositionCalculator {
315
317
  * @returns {number}
316
318
  */
317
319
  getMaximumAvailablePosition() {
318
- var _a;
319
320
  if (this._manifest.isDynamic) {
320
- return (_a = this._manifest.getLivePosition()) !== null && _a !== void 0 ? _a : this._manifest.getMaximumSafePosition();
321
+ return this._manifest.getMaximumSafePosition();
321
322
  }
322
323
  if (this._lastVideoAdaptation === undefined ||
323
324
  this._lastAudioAdaptation === undefined) {
@@ -37,11 +37,25 @@ export interface IInitialTimeOptions {
37
37
  */
38
38
  fromFirstPosition?: number | null | undefined;
39
39
  /**
40
- * If set, we should begin at this position relative to the content's end,
41
- * in seconds.
40
+ * If set, we should begin at this position relative to the content's maximum
41
+ * seekable position, in seconds.
42
+ *
43
+ * It should consequently in most cases be a negative value.
42
44
  */
43
45
  fromLastPosition?: number | null | undefined;
44
- /** If set, we should begin at this position relative to the whole duration of
46
+ /**
47
+ * If set, we should begin at this position relative to the content's live
48
+ * edge if it makes sense, in seconds.
49
+ *
50
+ * It should consequently in most cases be a negative value.
51
+ *
52
+ * If the live edge is unknown or if it does not make sense for the current
53
+ * content, that position is relative to the content's maximum position
54
+ * instead.
55
+ */
56
+ fromLivePosition?: number | null | undefined;
57
+ /**
58
+ * If set, we should begin at this position relative to the whole duration of
45
59
  * the content, in percentage.
46
60
  */
47
61
  percentage?: number | null | undefined;
@@ -31,15 +31,10 @@ import getMonotonicTimeStamp from "../../../utils/monotonic_timestamp";
31
31
  * @returns {Number}
32
32
  */
33
33
  export default function getInitialTime(manifest, lowLatencyMode, startAt) {
34
+ var _a;
34
35
  if (!isNullOrUndefined(startAt)) {
35
36
  const min = manifest.getMinimumSafePosition();
36
- let max;
37
- if (manifest.isLive) {
38
- max = manifest.getLivePosition();
39
- }
40
- if (max === undefined) {
41
- max = manifest.getMaximumSafePosition();
42
- }
37
+ const max = manifest.getMaximumSafePosition();
43
38
  if (!isNullOrUndefined(startAt.position)) {
44
39
  log.debug("Init: using startAt.minimumPosition");
45
40
  return Math.max(Math.min(startAt.position, max), min);
@@ -64,6 +59,13 @@ export default function getInitialTime(manifest, lowLatencyMode, startAt) {
64
59
  return fromLastPosition >= 0 ? max :
65
60
  Math.max(min, max + fromLastPosition);
66
61
  }
62
+ else if (!isNullOrUndefined(startAt.fromLivePosition)) {
63
+ log.debug("Init: using startAt.fromLivePosition");
64
+ const livePosition = (_a = manifest.getLivePosition()) !== null && _a !== void 0 ? _a : max;
65
+ const { fromLivePosition } = startAt;
66
+ return fromLivePosition >= 0 ? livePosition :
67
+ Math.max(min, livePosition + fromLivePosition);
68
+ }
67
69
  else if (!isNullOrUndefined(startAt.percentage)) {
68
70
  log.debug("Init: using startAt.percentage");
69
71
  const { percentage } = startAt;
@@ -15,6 +15,22 @@
15
15
  */
16
16
  import assert from "../../../../../utils/assert";
17
17
  import { areNearlyEqual, getCuesAfter, getCuesBefore, removeCuesInfosBetween, } from "./utils";
18
+ /**
19
+ * first or last IHTMLCue in a group can have a slighlty different start
20
+ * or end time than the start or end time of the ICuesGroup due to parsing
21
+ * approximation.
22
+ * DELTA_CUES_GROUP defines the tolerance level when comparing the start/end
23
+ * of a IHTMLCue to the start/end of a ICuesGroup.
24
+ * Having this value too high may lead to have unwanted subtitle displayed
25
+ * Having this value too low may lead to have subtitles not displayed
26
+ */
27
+ const DELTA_CUES_GROUP = 1e-3;
28
+ /**
29
+ * segment_duration / RELATIVE_DELTA_RATIO = relative_delta
30
+ *
31
+ * relative_delta is the tolerance to determine if two segements are the same
32
+ */
33
+ const RELATIVE_DELTA_RATIO = 5;
18
34
  /**
19
35
  * Manage the buffer of the HTMLTextSegmentBuffer.
20
36
  * Allows to add, remove and recuperate cues at given times.
@@ -57,6 +73,18 @@ export default class TextTrackCuesStore {
57
73
  ret.push(cues[j].element);
58
74
  }
59
75
  }
76
+ // first or last IHTMLCue in a group can have a slighlty different start
77
+ // or end time than the start or end time of the ICuesGroup due to parsing
78
+ // approximation.
79
+ // Add a tolerance of 1ms to fix this issue
80
+ if (ret.length === 0 && cues.length > 0) {
81
+ for (let j = 0; j < cues.length; j++) {
82
+ if (areNearlyEqual(time, cues[j].start, DELTA_CUES_GROUP)
83
+ || areNearlyEqual(time, cues[j].end, DELTA_CUES_GROUP)) {
84
+ ret.push(cues[j].element);
85
+ }
86
+ }
87
+ }
60
88
  return ret;
61
89
  }
62
90
  }
@@ -143,6 +171,11 @@ export default class TextTrackCuesStore {
143
171
  insert(cues, start, end) {
144
172
  const cuesBuffer = this._cuesBuffer;
145
173
  const cuesInfosToInsert = { start, end, cues };
174
+ // it's preferable to have a delta depending on the duration of the segment
175
+ // if the delta is one fifth of the length of the segment:
176
+ // a segment of [0, 2] is the "same" segment as [0, 2.1]
177
+ // but [0, 0.04] is not the "same" segement as [0,04, 0.08]
178
+ const relativeDelta = Math.abs(start - end) / RELATIVE_DELTA_RATIO;
146
179
  /**
147
180
  * Called when we found the index of the next cue relative to the cue we
148
181
  * want to insert (that is a cue starting after its start or at the same
@@ -154,7 +187,7 @@ export default class TextTrackCuesStore {
154
187
  function onIndexOfNextCueFound(indexOfNextCue) {
155
188
  const nextCue = cuesBuffer[indexOfNextCue];
156
189
  if (nextCue === undefined || // no cue
157
- areNearlyEqual(cuesInfosToInsert.end, nextCue.end)) // samey end
190
+ areNearlyEqual(cuesInfosToInsert.end, nextCue.end, relativeDelta)) // samey end
158
191
  {
159
192
  // ours: |AAAAA|
160
193
  // the current one: |BBBBB|
@@ -190,8 +223,8 @@ export default class TextTrackCuesStore {
190
223
  for (let cueIdx = 0; cueIdx < cuesBuffer.length; cueIdx++) {
191
224
  let cuesInfos = cuesBuffer[cueIdx];
192
225
  if (start < cuesInfos.end) {
193
- if (areNearlyEqual(start, cuesInfos.start)) {
194
- if (areNearlyEqual(end, cuesInfos.end)) {
226
+ if (areNearlyEqual(start, cuesInfos.start, relativeDelta)) {
227
+ if (areNearlyEqual(end, cuesInfos.end, relativeDelta)) {
195
228
  // exact same segment
196
229
  // ours: |AAAAA|
197
230
  // the current one: |BBBBB|
@@ -239,7 +272,7 @@ export default class TextTrackCuesStore {
239
272
  cuesBuffer.splice(cueIdx, 0, cuesInfosToInsert);
240
273
  return;
241
274
  }
242
- else if (areNearlyEqual(end, cuesInfos.start)) {
275
+ else if (areNearlyEqual(end, cuesInfos.start, relativeDelta)) {
243
276
  // our cue goes just before the current one:
244
277
  // ours: |AAAAAAA|
245
278
  // the current one: |BBBB|
@@ -251,7 +284,7 @@ export default class TextTrackCuesStore {
251
284
  cuesBuffer.splice(cueIdx, 0, cuesInfosToInsert);
252
285
  return;
253
286
  }
254
- else if (areNearlyEqual(end, cuesInfos.end)) {
287
+ else if (areNearlyEqual(end, cuesInfos.end, relativeDelta)) {
255
288
  // ours: |AAAAAAA|
256
289
  // the current one: |BBBB|
257
290
  // Result: |AAAAAAA|
@@ -279,7 +312,7 @@ export default class TextTrackCuesStore {
279
312
  return;
280
313
  }
281
314
  // else -> start > cuesInfos.start
282
- if (areNearlyEqual(cuesInfos.end, end)) {
315
+ if (areNearlyEqual(cuesInfos.end, end, relativeDelta)) {
283
316
  // ours: |AAAAAA|
284
317
  // the current one: |BBBBBBBB|
285
318
  // Result: |BBAAAAAA|
@@ -315,6 +348,21 @@ export default class TextTrackCuesStore {
315
348
  }
316
349
  }
317
350
  }
351
+ if (cuesBuffer.length) {
352
+ const lastCue = cuesBuffer[cuesBuffer.length - 1];
353
+ if (areNearlyEqual(lastCue.end, start, relativeDelta)) {
354
+ // Match the end of the previous cue to the start of the following one
355
+ // if they are close enough. If there is a small gap between two segments
356
+ // it can lead to having no subtitles for a short time, this is noticeable when
357
+ // two successive segments displays the same text, making it diseappear
358
+ // and reappear quickly, which gives the impression of blinking
359
+ //
360
+ // ours: |AAAAA|
361
+ // the current one: |BBBBB|...
362
+ // Result: |BBBBBBBAAAAA|
363
+ lastCue.end = start;
364
+ }
365
+ }
318
366
  // no cues group has the end after our current start.
319
367
  // These cues should be the last one
320
368
  cuesBuffer.push(cuesInfosToInsert);
@@ -18,9 +18,10 @@ import { ICuesGroup, IHTMLCue } from "./types";
18
18
  * @see MAX_DELTA_BUFFER_TIME
19
19
  * @param {Number} a
20
20
  * @param {Number} b
21
+ * @param {Number} delta
21
22
  * @returns {Boolean}
22
23
  */
23
- export declare function areNearlyEqual(a: number, b: number): boolean;
24
+ export declare function areNearlyEqual(a: number, b: number, delta?: number): boolean;
24
25
  /**
25
26
  * Get all cues which have data before the given time.
26
27
  * @param {Object} cues
@@ -44,6 +44,21 @@
44
44
  * Setting a value too high might lead to two segments targeting different times
45
45
  * to be wrongly believed to target the same time. In worst case scenarios, this
46
46
  * could lead to wanted text tracks being removed.
47
+ *
48
+ * When comparing 2 segments s1 and s2, you may want to take into account the duration
49
+ * of the segments:
50
+ * - if s1 is [0, 2] and s2 is [0, 2.1] s1 and s2 can be considered as nearly equal as
51
+ * there is a relative difference of: (2.1-2) / 2 = 5%;
52
+ * Formula: (end_s1 - end_s2) / duration_s2 = relative_difference
53
+ * - if s1 is [0, 0.04] and s2 is [0.04, 0.08] s1 and s2 may not considered as nearly
54
+ * equal as there is a relative difference of: (0.04-0.08) / 0.04 = 100%
55
+ *
56
+ * To compare relatively to the duration of a segment you can provide and additional
57
+ * parameter "delta" that remplace MAX_DELTA_BUFFER_TIME.
58
+ * If parameter "delta" is higher than MAX_DELTA_BUFFER_TIME, MAX_DELTA_BUFFER_TIME
59
+ * is used instead of delta. This ensure that segments are nearly equal when comparing
60
+ * relatively AND absolutely.
61
+ *
47
62
  * @type Number
48
63
  */
49
64
  const MAX_DELTA_BUFFER_TIME = 0.2;
@@ -51,10 +66,11 @@ const MAX_DELTA_BUFFER_TIME = 0.2;
51
66
  * @see MAX_DELTA_BUFFER_TIME
52
67
  * @param {Number} a
53
68
  * @param {Number} b
69
+ * @param {Number} delta
54
70
  * @returns {Boolean}
55
71
  */
56
- export function areNearlyEqual(a, b) {
57
- return Math.abs(a - b) <= MAX_DELTA_BUFFER_TIME;
72
+ export function areNearlyEqual(a, b, delta = MAX_DELTA_BUFFER_TIME) {
73
+ return Math.abs(a - b) <= Math.min(delta, MAX_DELTA_BUFFER_TIME);
58
74
  }
59
75
  /**
60
76
  * Get all cues which have data before the given time.
@@ -1,4 +1,3 @@
1
- import nextTick from "next-tick";
2
1
  import config from "../../../config";
3
2
  import { formatError } from "../../../errors";
4
3
  import log from "../../../log";
@@ -6,6 +5,7 @@ import assertUnreachable from "../../../utils/assert_unreachable";
6
5
  import cancellableSleep from "../../../utils/cancellable_sleep";
7
6
  import noop from "../../../utils/noop";
8
7
  import objectAssign from "../../../utils/object_assign";
8
+ import queueMicrotask from "../../../utils/queue_microtask";
9
9
  import SharedReference, { createMappedReference, } from "../../../utils/reference";
10
10
  import TaskCanceller from "../../../utils/task_canceller";
11
11
  import RepresentationStream from "../representation";
@@ -133,7 +133,7 @@ export default function AdaptationStream({ playbackObserver, content, options, r
133
133
  // conditions where the inner logic would be called synchronously before
134
134
  // the next observation (which may reflect very different playback conditions)
135
135
  // is actually received.
136
- return nextTick(() => {
136
+ return queueMicrotask(() => {
137
137
  playbackObserver.listen(() => {
138
138
  if (fnCancelSignal.isCancelled()) {
139
139
  return;
@@ -13,10 +13,10 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import nextTick from "next-tick";
17
16
  import config from "../../../config";
18
17
  import { MediaError } from "../../../errors";
19
18
  import log from "../../../log";
19
+ import queueMicrotask from "../../../utils/queue_microtask";
20
20
  import { createMappedReference, } from "../../../utils/reference";
21
21
  import SortedList from "../../../utils/sorted_list";
22
22
  import TaskCanceller from "../../../utils/task_canceller";
@@ -265,7 +265,7 @@ export default function StreamOrchestrator(content, playbackObserver, representa
265
265
  // Schedule micro task before checking the last playback observation
266
266
  // to reduce the risk of race conditions where the next observation
267
267
  // was going to be emitted synchronously.
268
- nextTick(() => {
268
+ queueMicrotask(() => {
269
269
  var _a;
270
270
  if (orchestratorCancelSignal.isCancelled()) {
271
271
  return;
@@ -430,7 +430,7 @@ export default function StreamOrchestrator(content, playbackObserver, representa
430
430
  // conditions where the inner logic would be called synchronously before
431
431
  // the next observation (which may reflect very different playback
432
432
  // conditions) is actually received.
433
- return nextTick(() => {
433
+ return queueMicrotask(() => {
434
434
  if (innerCancelSignal.isCancelled()) {
435
435
  return;
436
436
  }
@@ -13,11 +13,11 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import nextTick from "next-tick";
17
16
  import config from "../../../config";
18
17
  import { formatError, MediaError, } from "../../../errors";
19
18
  import log from "../../../log";
20
19
  import objectAssign from "../../../utils/object_assign";
20
+ import queueMicrotask from "../../../utils/queue_microtask";
21
21
  import { getLeftSizeOfBufferedTimeRange } from "../../../utils/ranges";
22
22
  import SharedReference from "../../../utils/reference";
23
23
  import TaskCanceller, { CancellationError, } from "../../../utils/task_canceller";
@@ -253,7 +253,7 @@ export default function PeriodStream({ bufferType, content, garbageCollectors, p
253
253
  // is actually received.
254
254
  // It can happen when `askForMediaSourceReload` is called as a side-effect of
255
255
  // the same event that triggers the playback observation to be emitted.
256
- nextTick(() => {
256
+ queueMicrotask(() => {
257
257
  playbackObserver.listen(() => {
258
258
  if (cancelSignal.isCancelled()) {
259
259
  return;
@@ -74,7 +74,7 @@ export default function getBufferStatus(content, initialWantedTime, playbackObse
74
74
  * needed segments for this Representation until the end of the Period.
75
75
  */
76
76
  const hasFinishedLoading = representation.index.isInitialized() &&
77
- representation.index.isFinished() &&
77
+ !representation.index.isStillAwaitingFutureSegments() &&
78
78
  neededRange.hasReachedPeriodEnd &&
79
79
  prioritizedNeededSegments.length === 0 &&
80
80
  segmentsOnHold.length === 0;
@@ -128,7 +128,7 @@ function getRangeOfNeededSegments(content, initialWantedTime, bufferGoal) {
128
128
  SegmentBuffersStore.isNative(content.adaptation.type) &&
129
129
  initialWantedTime >= lastIndexPosition &&
130
130
  representationIndex.isInitialized() &&
131
- representationIndex.isFinished() &&
131
+ !representationIndex.isStillAwaitingFutureSegments() &&
132
132
  isPeriodTheCurrentAndLastOne(manifest, period, initialWantedTime)) {
133
133
  wantedStartPosition = lastIndexPosition - 1;
134
134
  }
@@ -138,7 +138,7 @@ function getRangeOfNeededSegments(content, initialWantedTime, bufferGoal) {
138
138
  const wantedEndPosition = wantedStartPosition + bufferGoal;
139
139
  let hasReachedPeriodEnd;
140
140
  if (!representation.index.isInitialized() ||
141
- !representation.index.isFinished() ||
141
+ representation.index.isStillAwaitingFutureSegments() ||
142
142
  period.end === undefined) {
143
143
  hasReachedPeriodEnd = false;
144
144
  }
@@ -320,7 +320,7 @@ function doesEndSeemGarbageCollected(currentSeg, nextSeg, minimumEndTime) {
320
320
  }
321
321
  if (minimumEndTime > currentSeg.bufferedEnd &&
322
322
  currentSeg.end - currentSeg.bufferedEnd > MAX_TIME_MISSING_FROM_COMPLETE_SEGMENT) {
323
- log.info("Stream: The end of the wanted segment has been garbage collected", currentSeg.start, currentSeg.bufferedStart);
323
+ log.info("Stream: The end of the wanted segment has been garbage collected", currentSeg.end, currentSeg.bufferedEnd);
324
324
  return true;
325
325
  }
326
326
  return false;
@@ -21,6 +21,11 @@ declare const DEFAULT_CONFIG: {
21
21
  * @type {Number}
22
22
  */
23
23
  DEFAULT_REQUEST_TIMEOUT: number;
24
+ /**
25
+ * Default connection time after which a request will timeout, in ms.
26
+ * @type {Number}
27
+ */
28
+ DEFAULT_CONNECTION_TIMEOUT: number;
24
29
  /**
25
30
  * Can be either:
26
31
  * - "native": Subtitles are all displayed in a <track> element
@@ -21,6 +21,11 @@ const DEFAULT_CONFIG = {
21
21
  * @type {Number}
22
22
  */
23
23
  DEFAULT_REQUEST_TIMEOUT: 30 * 1000,
24
+ /**
25
+ * Default connection time after which a request will timeout, in ms.
26
+ * @type {Number}
27
+ */
28
+ DEFAULT_CONNECTION_TIMEOUT: 15 * 1000,
24
29
  /**
25
30
  * Can be either:
26
31
  * - "native": Subtitles are all displayed in a <track> element
@@ -128,7 +128,9 @@ export default class VideoThumbnailLoader {
128
128
  {}, { baseDelay: 0,
129
129
  maxDelay: 0,
130
130
  maxRetry: 0,
131
- requestTimeout: config.getCurrent().DEFAULT_REQUEST_TIMEOUT });
131
+ requestTimeout: config.getCurrent().DEFAULT_REQUEST_TIMEOUT,
132
+ connectionTimeout: config.getCurrent().DEFAULT_CONNECTION_TIMEOUT,
133
+ });
132
134
  const initSegment = content.representation.index.getInitSegment();
133
135
  const initSegmentUniqueId = initSegment !== null ?
134
136
  content.representation.uniqueId :
@@ -69,6 +69,7 @@ async function getDurationFromManifest(url, transport) {
69
69
  url,
70
70
  responseType: "document",
71
71
  timeout: config.getCurrent().DEFAULT_REQUEST_TIMEOUT,
72
+ connectionTimeout: config.getCurrent().DEFAULT_CONNECTION_TIMEOUT,
72
73
  // We won't cancel
73
74
  cancelSignal: new TaskCanceller().signal,
74
75
  });
@@ -106,6 +107,7 @@ async function getDurationFromManifest(url, transport) {
106
107
  url,
107
108
  responseType: "text",
108
109
  timeout: config.getCurrent().DEFAULT_REQUEST_TIMEOUT,
110
+ connectionTimeout: config.getCurrent().DEFAULT_CONNECTION_TIMEOUT,
109
111
  // We won't cancel
110
112
  cancelSignal: new TaskCanceller().signal,
111
113
  });
@@ -27,6 +27,7 @@ class Representation {
27
27
  * @param {Object} args
28
28
  */
29
29
  constructor(args, opts) {
30
+ var _a;
30
31
  this.id = args.id;
31
32
  this.uniqueId = generateRepresentationUniqueId();
32
33
  this.bitrate = args.bitrate;
@@ -55,12 +56,24 @@ class Representation {
55
56
  this.cdnMetadata = args.cdnMetadata;
56
57
  this.index = args.index;
57
58
  if (opts.type === "audio" || opts.type === "video") {
58
- const mimeTypeStr = this.getMimeTypeString();
59
- const isSupported = isCodecSupported(mimeTypeStr);
60
- if (!isSupported) {
61
- log.info("Unsupported Representation", mimeTypeStr, this.id, this.bitrate);
59
+ this.isSupported = false;
60
+ // Supplemental codecs are defined as backwards-compatible codecs enhancing
61
+ // the experience of a base layer codec
62
+ if (args.supplementalCodecs !== undefined) {
63
+ const supplementalCodecMimeTypeStr = `${(_a = this.mimeType) !== null && _a !== void 0 ? _a : ""};codecs="${args.supplementalCodecs}"`;
64
+ if (isCodecSupported(supplementalCodecMimeTypeStr)) {
65
+ this.codec = args.supplementalCodecs;
66
+ this.isSupported = true;
67
+ }
68
+ }
69
+ if (!this.isSupported) {
70
+ const mimeTypeStr = this.getMimeTypeString();
71
+ const isSupported = isCodecSupported(mimeTypeStr);
72
+ if (!isSupported) {
73
+ log.info("Unsupported Representation", mimeTypeStr, this.id, this.bitrate);
74
+ }
75
+ this.isSupported = isSupported;
62
76
  }
63
- this.isSupported = isSupported;
64
77
  }
65
78
  else {
66
79
  this.isSupported = true; // TODO for other types
@@ -89,7 +89,7 @@ export default class StaticRepresentationIndex implements IRepresentationIndex {
89
89
  /**
90
90
  * @returns {Boolean}
91
91
  */
92
- isFinished(): true;
92
+ isStillAwaitingFutureSegments(): false;
93
93
  /**
94
94
  * @returns {Boolean}
95
95
  */
@@ -115,8 +115,8 @@ export default class StaticRepresentationIndex {
115
115
  /**
116
116
  * @returns {Boolean}
117
117
  */
118
- isFinished() {
119
- return true;
118
+ isStillAwaitingFutureSegments() {
119
+ return false;
120
120
  }
121
121
  /**
122
122
  * @returns {Boolean}
@@ -304,7 +304,7 @@ export interface IRepresentationIndex {
304
304
  getLastAvailablePosition(): number | null | undefined;
305
305
  /**
306
306
  * Returns the ending time, in seconds, of the Representation once it is
307
- * "finished" (@see isFinished).
307
+ * "finished" (@see isStillAwaitingFutureSegments).
308
308
  * Should thus be equivalent to `getLastAvailablePosition` once finished.
309
309
  *
310
310
  * Returns `null` if nothing is in the index
@@ -352,13 +352,13 @@ export interface IRepresentationIndex {
352
352
  */
353
353
  checkDiscontinuity(time: number): number | null;
354
354
  /**
355
- * Returns `true` if the last segments in this index have already been
355
+ * Returns `false` if the last segments in this index have already been
356
356
  * generated so that we can freely go to the next period.
357
- * Returns `false` if the index is still waiting on future segments to be
357
+ * Returns `true` if the index is still waiting on future segments to be
358
358
  * generated.
359
359
  * @returns {boolean}
360
360
  */
361
- isFinished(): boolean;
361
+ isStillAwaitingFutureSegments(): boolean;
362
362
  /**
363
363
  * Returns `true` if this index has all the data it needs to give the list
364
364
  * of available segments.