rx-player 3.26.2 → 3.27.0-dev.20220317

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 (500) hide show
  1. package/.github/workflows/perfs.yml +22 -0
  2. package/CHANGELOG.md +33 -1
  3. package/FILES.md +5 -4
  4. package/VERSION +1 -1
  5. package/dist/_esm5.processed/compat/browser_detection.d.ts +4 -2
  6. package/dist/_esm5.processed/compat/browser_detection.js +4 -2
  7. package/dist/_esm5.processed/compat/eme/close_session.d.ts +11 -5
  8. package/dist/_esm5.processed/compat/eme/close_session.js +144 -36
  9. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -5
  10. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +27 -24
  11. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +53 -34
  12. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +43 -41
  13. package/dist/_esm5.processed/compat/eme/generate_key_request.d.ts +2 -3
  14. package/dist/_esm5.processed/compat/eme/generate_key_request.js +22 -26
  15. package/dist/_esm5.processed/compat/eme/load_session.d.ts +1 -2
  16. package/dist/_esm5.processed/compat/eme/load_session.js +68 -17
  17. package/dist/_esm5.processed/compat/event_listeners.js +2 -1
  18. package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +2 -2
  19. package/dist/_esm5.processed/config.d.ts +166 -1080
  20. package/dist/_esm5.processed/config.js +17 -1119
  21. package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +4 -1
  22. package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +28 -6
  23. package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
  24. package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +1 -1
  25. package/dist/_esm5.processed/core/abr/network_analyzer.js +2 -1
  26. package/dist/_esm5.processed/core/abr/pending_requests_store.js +3 -5
  27. package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +1 -1
  28. package/dist/_esm5.processed/core/abr/representation_estimator.js +2 -2
  29. package/dist/_esm5.processed/core/api/get_player_state.js +1 -1
  30. package/dist/_esm5.processed/core/api/index.d.ts +2 -1
  31. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +6 -0
  32. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +22 -4
  33. package/dist/_esm5.processed/core/api/option_utils.d.ts +3 -1
  34. package/dist/_esm5.processed/core/api/option_utils.js +19 -6
  35. package/dist/_esm5.processed/core/api/playback_observer.js +5 -1
  36. package/dist/_esm5.processed/core/api/public_api.d.ts +82 -71
  37. package/dist/_esm5.processed/core/api/public_api.js +72 -33
  38. package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +6 -6
  39. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.d.ts +7 -51
  40. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.js +30 -75
  41. package/dist/_esm5.processed/core/{eme → decrypt}/attach_media_keys.d.ts +12 -12
  42. package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +104 -0
  43. package/dist/_esm5.processed/core/{eme/clear_eme_session.d.ts → decrypt/clear_on_stop.d.ts} +3 -4
  44. package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +41 -0
  45. package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +216 -0
  46. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +866 -0
  47. package/dist/_esm5.processed/core/{eme/get_session.d.ts → decrypt/create_or_load_session.d.ts} +28 -26
  48. package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +124 -0
  49. package/dist/_esm5.processed/core/{eme → decrypt}/create_session.d.ts +22 -19
  50. package/dist/_esm5.processed/core/decrypt/create_session.js +174 -0
  51. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.d.ts +21 -0
  52. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +81 -0
  53. package/dist/_esm5.processed/core/{eme → decrypt}/find_key_system.d.ts +11 -14
  54. package/dist/_esm5.processed/core/decrypt/find_key_system.js +300 -0
  55. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.d.ts +0 -0
  56. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.js +1 -1
  57. package/dist/_esm5.processed/core/{eme → decrypt}/get_media_keys.d.ts +13 -5
  58. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +153 -0
  59. package/dist/_esm5.processed/core/{eme → decrypt}/index.d.ts +5 -6
  60. package/dist/_esm5.processed/core/{eme → decrypt}/index.js +5 -5
  61. package/dist/_esm5.processed/core/{eme → decrypt}/init_media_keys.d.ts +6 -4
  62. package/dist/_esm5.processed/core/decrypt/init_media_keys.js +82 -0
  63. package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +77 -0
  64. package/dist/_esm5.processed/core/{eme → decrypt}/session_events_listener.js +25 -24
  65. package/dist/_esm5.processed/core/{eme → decrypt}/set_server_certificate.d.ts +15 -6
  66. package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +141 -0
  67. package/dist/_esm5.processed/core/{eme → decrypt}/types.d.ts +120 -242
  68. package/dist/_esm5.processed/core/{eme → decrypt}/types.js +0 -0
  69. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.d.ts +3 -3
  70. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.js +5 -5
  71. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.d.ts +2 -2
  72. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.js +4 -3
  73. package/dist/_esm5.processed/core/{eme/utils/close_session.d.ts → decrypt/utils/clean_old_loaded_sessions.d.ts} +8 -7
  74. package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +85 -0
  75. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.d.ts +1 -1
  76. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.js +2 -2
  77. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.d.ts +0 -0
  78. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.js +1 -1
  79. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.d.ts +69 -0
  80. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +99 -0
  81. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.d.ts +0 -1
  82. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.js +4 -5
  83. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.d.ts +44 -0
  84. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +77 -0
  85. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.d.ts +104 -0
  86. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +155 -0
  87. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +108 -0
  88. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +303 -0
  89. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.d.ts +4 -4
  90. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.js +0 -0
  91. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.d.ts +8 -18
  92. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.js +119 -97
  93. package/dist/_esm5.processed/core/{eme/utils/init_data_container.d.ts → decrypt/utils/serializable_bytes.d.ts} +8 -5
  94. package/dist/_esm5.processed/core/{eme/utils/init_data_container.js → decrypt/utils/serializable_bytes.js} +9 -9
  95. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.d.ts +1 -1
  96. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.js +1 -1
  97. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +4 -4
  98. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +3 -3
  99. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +2 -2
  100. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +6 -2
  101. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
  102. package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +1 -1
  103. package/dist/_esm5.processed/core/init/get_initial_time.js +1 -1
  104. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +3 -3
  105. package/dist/_esm5.processed/core/init/initialize_directfile.js +11 -17
  106. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +5 -3
  107. package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -69
  108. package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +61 -0
  109. package/dist/_esm5.processed/core/init/link_drm_and_content.js +94 -0
  110. package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +4 -4
  111. package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +2 -1
  112. package/dist/_esm5.processed/core/init/stall_avoider.js +1 -1
  113. package/dist/_esm5.processed/core/init/stream_events_emitter/are_same_stream_events.d.ts +4 -4
  114. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +1 -1
  115. package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
  116. package/dist/_esm5.processed/core/init/types.d.ts +2 -4
  117. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +1 -1
  118. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +3 -3
  119. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -1
  120. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +32 -31
  121. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +4 -4
  122. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +17 -1
  123. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +22 -5
  124. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +2 -1
  125. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +6 -3
  126. package/dist/_esm5.processed/core/stream/events_generators.d.ts +8 -3
  127. package/dist/_esm5.processed/core/stream/events_generators.js +3 -2
  128. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +1 -0
  129. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +3 -3
  130. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +2 -1
  131. package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.js +1 -1
  132. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +2 -1
  133. package/dist/_esm5.processed/core/stream/period/period_stream.js +3 -3
  134. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +5 -6
  135. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +6 -1
  136. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +12 -9
  137. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +19 -14
  138. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +86 -10
  139. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +1 -1
  140. package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -3
  141. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +6 -0
  142. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +19 -8
  143. package/dist/_esm5.processed/core/stream/types.d.ts +1 -1
  144. package/dist/_esm5.processed/default_config.d.ts +1114 -0
  145. package/dist/_esm5.processed/default_config.js +1145 -0
  146. package/dist/_esm5.processed/errors/request_error.js +3 -1
  147. package/dist/_esm5.processed/experimental/index.d.ts +2 -0
  148. package/dist/_esm5.processed/experimental/index.js +2 -0
  149. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +1 -0
  150. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.d.ts +2 -2
  151. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +2 -4
  152. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
  153. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
  154. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +1 -2
  155. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +1 -2
  156. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
  157. package/dist/_esm5.processed/features/features_object.js +1 -1
  158. package/dist/_esm5.processed/features/initialize_features.js +1 -1
  159. package/dist/_esm5.processed/features/list/eme.d.ts +3 -3
  160. package/dist/_esm5.processed/features/list/eme.js +5 -5
  161. package/dist/_esm5.processed/features/types.d.ts +3 -3
  162. package/dist/_esm5.processed/manifest/adaptation.d.ts +2 -2
  163. package/dist/_esm5.processed/manifest/adaptation.js +3 -1
  164. package/dist/_esm5.processed/manifest/manifest.d.ts +10 -23
  165. package/dist/_esm5.processed/manifest/manifest.js +10 -74
  166. package/dist/_esm5.processed/manifest/period.d.ts +3 -3
  167. package/dist/_esm5.processed/manifest/representation.d.ts +37 -5
  168. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +18 -18
  169. package/dist/_esm5.processed/manifest/types.d.ts +3 -3
  170. package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
  171. package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
  172. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +6 -6
  173. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
  174. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -2
  175. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/is_period_fulfilled.js +1 -2
  176. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +14 -14
  177. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +17 -17
  178. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +1 -2
  179. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
  180. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +28 -20
  181. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +20 -5
  182. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
  183. package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
  184. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -35
  185. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +109 -96
  186. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +8 -8
  187. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -2
  188. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +18 -27
  189. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +25 -23
  190. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +21 -15
  191. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +19 -19
  192. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -38
  193. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +8 -8
  194. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +30 -30
  195. package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +3 -3
  196. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +1 -1
  197. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
  198. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
  199. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -0
  200. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
  201. package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
  202. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
  203. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +15 -5
  204. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +2 -2
  205. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
  206. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +31 -19
  207. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
  208. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
  209. package/dist/_esm5.processed/public_types.d.ts +2 -2
  210. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +2 -1
  211. package/dist/_esm5.processed/transports/dash/image_pipelines.js +4 -1
  212. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
  213. package/dist/_esm5.processed/transports/dash/manifest_parser.js +1 -1
  214. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
  215. package/dist/_esm5.processed/transports/dash/segment_loader.js +2 -2
  216. package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +1 -1
  217. package/dist/_esm5.processed/transports/dash/segment_parser.js +6 -3
  218. package/dist/_esm5.processed/transports/dash/text_loader.d.ts +1 -1
  219. package/dist/_esm5.processed/transports/dash/text_loader.js +1 -1
  220. package/dist/_esm5.processed/transports/dash/text_parser.d.ts +1 -1
  221. package/dist/_esm5.processed/transports/dash/text_parser.js +8 -2
  222. package/dist/_esm5.processed/transports/local/segment_loader.d.ts +1 -2
  223. package/dist/_esm5.processed/transports/local/segment_loader.js +1 -1
  224. package/dist/_esm5.processed/transports/local/segment_parser.js +4 -1
  225. package/dist/_esm5.processed/transports/local/text_parser.js +8 -2
  226. package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +1 -1
  227. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
  228. package/dist/_esm5.processed/transports/smooth/pipelines.js +69 -11
  229. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +0 -1
  230. package/dist/_esm5.processed/transports/smooth/segment_loader.js +2 -2
  231. package/dist/_esm5.processed/transports/types.d.ts +58 -30
  232. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
  233. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +1 -1
  234. package/dist/_esm5.processed/utils/cancellable_sleep.js +1 -1
  235. package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
  236. package/dist/_esm5.processed/utils/cast_to_observable.js +1 -1
  237. package/dist/_esm5.processed/utils/deep_merge.d.ts +12 -0
  238. package/dist/_esm5.processed/utils/deep_merge.js +53 -0
  239. package/dist/_esm5.processed/utils/reference.d.ts +29 -0
  240. package/dist/_esm5.processed/utils/reference.js +72 -24
  241. package/dist/_esm5.processed/utils/request/fetch.d.ts +4 -5
  242. package/dist/_esm5.processed/utils/request/fetch.js +8 -6
  243. package/dist/_esm5.processed/utils/request/xhr.d.ts +6 -6
  244. package/dist/_esm5.processed/utils/request/xhr.js +3 -2
  245. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +1 -2
  246. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +7 -2
  247. package/dist/_esm5.processed/utils/task_canceller.d.ts +5 -3
  248. package/dist/_esm5.processed/utils/task_canceller.js +3 -3
  249. package/dist/rx-player.js +5242 -3190
  250. package/dist/rx-player.min.js +1 -1
  251. package/dummy +1 -0
  252. package/{dist/_esm5.processed/core/eme/dispose_eme.d.ts → experimental/index.d.ts} +1 -4
  253. package/{dist/_esm5.processed/core/eme/dispose_media_keys.d.ts → experimental/index.js} +1 -6
  254. package/package.json +33 -36
  255. package/scripts/build/templates/experimental/index.d.ts +16 -0
  256. package/scripts/build/templates/experimental/index.js +16 -0
  257. package/scripts/doc-generator/generate_header_html.js +6 -7
  258. package/scripts/doc-generator/generate_page_html.js +3 -4
  259. package/scripts/doc-generator/generate_page_list_html.js +4 -5
  260. package/scripts/doc-generator/generate_sidebar_html.js +4 -7
  261. package/scripts/doc-generator/utils.js +0 -11
  262. package/scripts/generate_demo_list.js +3 -3
  263. package/scripts/generate_documentation_list.js +3 -3
  264. package/scripts/launch_static_server.js +127 -67
  265. package/scripts/run_standalone_demo.js +1 -0
  266. package/scripts/start_demo_web_server.js +1 -0
  267. package/sonar-project.properties +1 -1
  268. package/src/README.md +6 -6
  269. package/src/compat/__tests__/fullscreen.test.ts +7 -7
  270. package/src/compat/__tests__/is_vtt_cue.test.ts +1 -1
  271. package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +45 -5
  272. package/src/compat/browser_detection.ts +4 -2
  273. package/src/compat/eme/close_session.ts +90 -56
  274. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
  275. package/src/compat/eme/custom_media_keys/index.ts +28 -41
  276. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +63 -46
  277. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +51 -49
  278. package/src/compat/eme/generate_key_request.ts +25 -33
  279. package/src/compat/eme/load_session.ts +29 -31
  280. package/src/compat/event_listeners.ts +2 -1
  281. package/src/compat/should_favour_custom_safari_EME.ts +5 -2
  282. package/src/config.ts +17 -1210
  283. package/src/core/README.md +1 -1
  284. package/src/core/abr/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
  285. package/src/core/abr/bandwidth_estimator.ts +4 -4
  286. package/src/core/abr/buffer_based_chooser.ts +85 -20
  287. package/src/core/abr/network_analyzer.ts +6 -7
  288. package/src/core/abr/pending_requests_store.ts +3 -5
  289. package/src/core/abr/representation_estimator.ts +6 -3
  290. package/src/core/api/__tests__/get_player_state.test.ts +3 -3
  291. package/src/core/api/__tests__/option_utils.test.ts +17 -17
  292. package/src/core/api/get_player_state.ts +1 -1
  293. package/src/core/api/index.ts +3 -0
  294. package/src/core/api/media_element_track_choice_manager.ts +22 -3
  295. package/src/core/api/option_utils.ts +37 -20
  296. package/src/core/api/playback_observer.ts +12 -8
  297. package/src/core/api/public_api.ts +152 -112
  298. package/src/core/api/track_choice_manager.ts +10 -9
  299. package/src/core/decrypt/README.md +22 -0
  300. package/src/core/decrypt/__tests__/__global__/get_license.test.ts +418 -0
  301. package/src/core/decrypt/__tests__/__global__/init_data.test.ts +675 -0
  302. package/src/core/{eme → decrypt}/__tests__/__global__/media_key_system_access.test.ts +99 -92
  303. package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +156 -0
  304. package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +262 -0
  305. package/src/core/{eme → decrypt}/__tests__/__global__/utils.ts +36 -103
  306. package/src/core/{eme → decrypt}/attach_media_keys.ts +49 -56
  307. package/src/core/decrypt/clear_on_stop.ts +48 -0
  308. package/src/core/decrypt/content_decryptor.ts +1158 -0
  309. package/src/core/decrypt/create_or_load_session.ts +130 -0
  310. package/src/core/decrypt/create_session.ts +175 -0
  311. package/src/core/decrypt/dispose_decryption_resources.ts +39 -0
  312. package/src/core/{eme → decrypt}/find_key_system.ts +126 -134
  313. package/src/core/{eme → decrypt}/get_current_key_system.ts +1 -1
  314. package/src/core/decrypt/get_media_keys.ts +145 -0
  315. package/src/core/{eme → decrypt}/index.ts +11 -8
  316. package/src/core/decrypt/init_media_keys.ts +51 -0
  317. package/src/core/{eme → decrypt}/session_events_listener.ts +93 -55
  318. package/src/core/decrypt/set_server_certificate.ts +104 -0
  319. package/src/core/{eme → decrypt}/types.ts +129 -259
  320. package/src/core/{eme → decrypt}/utils/__tests__/are_init_values_compatible.test.ts +1 -1
  321. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_loaded_sessions.test.ts +29 -71
  322. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_stored_persistent_info.test.ts +6 -6
  323. package/src/core/{eme → decrypt}/utils/are_init_values_compatible.ts +9 -9
  324. package/src/core/{eme → decrypt/utils}/check_key_statuses.ts +6 -5
  325. package/{dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js → src/core/decrypt/utils/clean_old_loaded_sessions.ts} +20 -20
  326. package/src/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.ts +3 -3
  327. package/src/core/{eme → decrypt/utils}/get_drm_system_id.ts +1 -1
  328. package/src/core/decrypt/utils/init_data_values_container.ts +119 -0
  329. package/src/core/{eme → decrypt}/utils/is_session_usable.ts +4 -5
  330. package/src/core/decrypt/utils/key_id_comparison.ts +82 -0
  331. package/src/core/decrypt/utils/key_session_record.ts +175 -0
  332. package/src/core/decrypt/utils/loaded_sessions_store.ts +318 -0
  333. package/src/core/{eme → decrypt/utils}/media_keys_infos_store.ts +4 -4
  334. package/src/core/{eme → decrypt}/utils/persistent_sessions_store.ts +122 -104
  335. package/src/core/{eme/utils/init_data_container.ts → decrypt/utils/serializable_bytes.ts} +8 -5
  336. package/src/core/{eme → decrypt/utils}/server_certificate_store.ts +2 -2
  337. package/src/core/fetchers/manifest/manifest_fetcher.ts +9 -9
  338. package/src/core/fetchers/segment/segment_fetcher.ts +10 -7
  339. package/src/core/fetchers/segment/segment_fetcher_creator.ts +2 -2
  340. package/src/core/fetchers/utils/try_urls_with_backoff.ts +1 -1
  341. package/src/core/init/.initialize_media_source.ts.un~ +0 -0
  342. package/src/core/init/get_initial_time.ts +2 -1
  343. package/src/core/init/initialize_directfile.ts +19 -22
  344. package/src/core/init/initialize_media_source.ts +43 -106
  345. package/src/core/init/link_drm_and_content.ts +176 -0
  346. package/src/core/init/manifest_update_scheduler.ts +12 -10
  347. package/src/core/init/stall_avoider.ts +6 -5
  348. package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
  349. package/src/core/init/stream_events_emitter/stream_events_emitter.ts +2 -1
  350. package/src/core/init/stream_events_emitter/types.ts +2 -2
  351. package/src/core/init/types.ts +1 -39
  352. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -1
  353. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +6 -7
  354. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +32 -31
  355. package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -4
  356. package/src/core/segment_buffers/inventory/segment_inventory.ts +42 -8
  357. package/src/core/stream/adaptation/adaptation_stream.ts +7 -1
  358. package/src/core/stream/events_generators.ts +9 -4
  359. package/src/core/stream/orchestrator/stream_orchestrator.ts +9 -4
  360. package/src/core/stream/period/create_empty_adaptation_stream.ts +2 -1
  361. package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -1
  362. package/src/core/stream/period/period_stream.ts +5 -2
  363. package/src/core/stream/representation/force_garbage_collection.ts +5 -7
  364. package/src/core/stream/representation/get_buffer_status.ts +28 -16
  365. package/src/core/stream/representation/get_needed_segments.ts +124 -28
  366. package/src/core/stream/representation/get_segment_priority.ts +1 -2
  367. package/src/core/stream/representation/push_media_segment.ts +3 -2
  368. package/src/core/stream/representation/representation_stream.ts +30 -7
  369. package/src/core/stream/types.ts +1 -1
  370. package/src/default_config.ts +1241 -0
  371. package/src/errors/request_error.ts +4 -1
  372. package/src/experimental/index.ts +5 -0
  373. package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +1 -0
  374. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +5 -7
  375. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +3 -10
  376. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +4 -4
  377. package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +1 -1
  378. package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
  379. package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +1 -2
  380. package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +1 -2
  381. package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
  382. package/src/features/__tests__/initialize_features.test.ts +2 -2
  383. package/src/features/features_object.ts +1 -1
  384. package/src/features/initialize_features.ts +1 -1
  385. package/src/features/list/__tests__/eme.test.ts +5 -5
  386. package/src/features/list/eme.ts +5 -5
  387. package/src/features/types.ts +3 -10
  388. package/src/manifest/adaptation.ts +6 -4
  389. package/src/manifest/manifest.ts +16 -86
  390. package/src/manifest/period.ts +3 -3
  391. package/src/manifest/representation.ts +38 -5
  392. package/src/manifest/representation_index/types.ts +18 -18
  393. package/src/manifest/types.ts +3 -3
  394. package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
  395. package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
  396. package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
  397. package/src/parsers/manifest/dash/common/indexes/base.ts +6 -6
  398. package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +4 -2
  399. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +2 -2
  400. package/src/parsers/manifest/dash/common/indexes/is_period_fulfilled.ts +1 -2
  401. package/src/parsers/manifest/dash/common/indexes/list.ts +14 -14
  402. package/src/parsers/manifest/dash/common/indexes/template.ts +18 -18
  403. package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
  404. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +51 -23
  405. package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
  406. package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
  407. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +167 -134
  408. package/src/parsers/manifest/dash/common/parse_mpd.ts +9 -10
  409. package/src/parsers/manifest/dash/common/parse_periods.ts +80 -79
  410. package/src/parsers/manifest/dash/common/parse_representation_index.ts +83 -75
  411. package/src/parsers/manifest/dash/common/parse_representations.ts +44 -63
  412. package/src/parsers/manifest/dash/node_parser_types.ts +30 -30
  413. package/src/parsers/manifest/dash/parsers_types.ts +3 -3
  414. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -1
  415. package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +4 -4
  416. package/src/parsers/manifest/smooth/create_parser.ts +24 -21
  417. package/src/parsers/manifest/smooth/representation_index.ts +14 -14
  418. package/src/parsers/manifest/types.ts +28 -28
  419. package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +31 -33
  420. package/src/parsers/manifest/utils/clear_timeline_from_position.ts +15 -6
  421. package/src/parsers/manifest/utils/index_helpers.ts +2 -2
  422. package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
  423. package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +1 -0
  424. package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
  425. package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
  426. package/src/public_types.ts +5 -1
  427. package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +2 -2
  428. package/src/transports/dash/image_pipelines.ts +4 -1
  429. package/src/transports/dash/init_segment_loader.ts +1 -1
  430. package/src/transports/dash/manifest_parser.ts +1 -1
  431. package/src/transports/dash/segment_loader.ts +7 -7
  432. package/src/transports/dash/segment_parser.ts +8 -1
  433. package/src/transports/dash/text_loader.ts +2 -2
  434. package/src/transports/dash/text_parser.ts +11 -1
  435. package/src/transports/local/segment_loader.ts +4 -4
  436. package/src/transports/local/segment_parser.ts +4 -0
  437. package/src/transports/local/text_parser.ts +8 -0
  438. package/src/transports/metaplaylist/manifest_loader.ts +1 -1
  439. package/src/transports/metaplaylist/pipelines.ts +1 -1
  440. package/src/transports/smooth/pipelines.ts +29 -16
  441. package/src/transports/smooth/segment_loader.ts +8 -8
  442. package/src/transports/types.ts +59 -30
  443. package/src/transports/utils/call_custom_manifest_loader.ts +6 -6
  444. package/src/transports/utils/generate_manifest_loader.ts +1 -1
  445. package/src/utils/__tests__/deep_merge.test.ts +48 -0
  446. package/src/utils/__tests__/flat_map.test.ts +12 -7
  447. package/src/utils/cancellable_sleep.ts +1 -1
  448. package/src/utils/cast_to_observable.ts +1 -2
  449. package/src/utils/deep_merge.ts +46 -0
  450. package/src/utils/reference.ts +116 -23
  451. package/src/utils/request/fetch.ts +17 -15
  452. package/src/utils/request/xhr.ts +11 -8
  453. package/src/utils/rx-from_cancellable_promise.ts +8 -4
  454. package/src/utils/task_canceller.ts +6 -4
  455. package/tsconfig.json +1 -2
  456. package/tsconfig.modules.json +1 -2
  457. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
  458. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
  459. package/dist/_esm5.processed/core/eme/attach_media_keys.js +0 -57
  460. package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.d.ts +0 -59
  461. package/dist/_esm5.processed/core/eme/clear_eme_session.js +0 -50
  462. package/dist/_esm5.processed/core/eme/create_session.js +0 -126
  463. package/dist/_esm5.processed/core/eme/dispose_eme.js +0 -23
  464. package/dist/_esm5.processed/core/eme/dispose_media_keys.js +0 -36
  465. package/dist/_esm5.processed/core/eme/eme_manager.d.ts +0 -31
  466. package/dist/_esm5.processed/core/eme/eme_manager.js +0 -278
  467. package/dist/_esm5.processed/core/eme/find_key_system.js +0 -243
  468. package/dist/_esm5.processed/core/eme/get_media_keys.js +0 -85
  469. package/dist/_esm5.processed/core/eme/get_session.js +0 -68
  470. package/dist/_esm5.processed/core/eme/init_media_keys.js +0 -66
  471. package/dist/_esm5.processed/core/eme/session_events_listener.d.ts +0 -41
  472. package/dist/_esm5.processed/core/eme/set_server_certificate.js +0 -85
  473. package/dist/_esm5.processed/core/eme/utils/close_session.js +0 -81
  474. package/dist/_esm5.processed/core/eme/utils/init_data_store.d.ts +0 -115
  475. package/dist/_esm5.processed/core/eme/utils/init_data_store.js +0 -181
  476. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.d.ts +0 -123
  477. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +0 -173
  478. package/dist/_esm5.processed/core/init/create_eme_manager.d.ts +0 -34
  479. package/dist/_esm5.processed/core/init/create_eme_manager.js +0 -52
  480. package/src/core/abr/get_estimate_from_buffer_levels.ts +0 -85
  481. package/src/core/eme/README.md +0 -26
  482. package/src/core/eme/__tests__/__global__/get_license.test.ts +0 -414
  483. package/src/core/eme/__tests__/__global__/init_data.test.ts +0 -908
  484. package/src/core/eme/__tests__/__global__/media_keys.test.ts +0 -266
  485. package/src/core/eme/__tests__/__global__/server_certificate.test.ts +0 -364
  486. package/src/core/eme/__tests__/init_media_keys.test.ts +0 -182
  487. package/src/core/eme/clean_old_loaded_sessions.ts +0 -96
  488. package/src/core/eme/clear_eme_session.ts +0 -62
  489. package/src/core/eme/create_session.ts +0 -187
  490. package/src/core/eme/dispose_eme.ts +0 -25
  491. package/src/core/eme/dispose_media_keys.ts +0 -46
  492. package/src/core/eme/eme_manager.ts +0 -387
  493. package/src/core/eme/get_media_keys.ts +0 -141
  494. package/src/core/eme/get_session.ts +0 -135
  495. package/src/core/eme/init_media_keys.ts +0 -106
  496. package/src/core/eme/set_server_certificate.ts +0 -115
  497. package/src/core/eme/utils/close_session.ts +0 -113
  498. package/src/core/eme/utils/init_data_store.ts +0 -234
  499. package/src/core/eme/utils/loaded_sessions_store.ts +0 -235
  500. package/src/core/init/create_eme_manager.ts +0 -95
@@ -17,25 +17,32 @@
17
17
  * Remove segments which starts before the given `firstAvailablePosition` from
18
18
  * the timeline. `firstAvailablePosition` has to be time scaled.
19
19
  * @param {Array.<Object>}
20
- * @returns {number}
20
+ * @returns {number} - Returns the number of removed segments. This includes
21
+ * potential implicit segment from decremented `repeatCount` attributes.
21
22
  */
22
23
  export default function clearTimelineFromPosition(timeline, firstAvailablePosition) {
24
+ var nbEltsRemoved = 0;
23
25
  while (timeline.length > 0) {
24
26
  var firstElt = timeline[0];
25
27
  if (firstElt.start >= firstAvailablePosition) {
26
- return; // all clear
28
+ return nbEltsRemoved; // all clear
27
29
  }
28
- if (firstElt.repeatCount <= 0) {
30
+ if (firstElt.repeatCount === -1) {
31
+ return nbEltsRemoved;
32
+ }
33
+ else if (firstElt.repeatCount === 0) {
29
34
  timeline.shift();
35
+ nbEltsRemoved += 1;
30
36
  }
31
37
  else { // we have a segment repetition
32
38
  var nextElt = timeline[1];
33
39
  if (nextElt !== undefined && nextElt.start <= firstAvailablePosition) {
34
40
  timeline.shift();
41
+ nbEltsRemoved += 1;
35
42
  }
36
43
  else { // no next segment or next segment is available
37
44
  if (firstElt.duration <= 0) {
38
- return;
45
+ return nbEltsRemoved;
39
46
  }
40
47
  var nextStart = firstElt.start + firstElt.duration;
41
48
  var nextRepeat = 1;
@@ -46,14 +53,17 @@ export default function clearTimelineFromPosition(timeline, firstAvailablePositi
46
53
  }
47
54
  if (nextRepeat > firstElt.repeatCount) { // every start is before
48
55
  timeline.shift();
56
+ nbEltsRemoved = firstElt.repeatCount + 1;
49
57
  }
50
58
  else { // some repetitions start after and some before
51
59
  var newRepeat = firstElt.repeatCount - nextRepeat;
52
60
  firstElt.start = nextStart;
53
61
  firstElt.repeatCount = newRepeat;
54
- return;
62
+ nbEltsRemoved += nextRepeat;
63
+ return nbEltsRemoved;
55
64
  }
56
65
  }
57
66
  }
58
67
  }
68
+ return nbEltsRemoved;
59
69
  }
@@ -25,7 +25,7 @@ export interface IIndexSegment {
25
25
  */
26
26
  repeatCount: number;
27
27
  /** Optional byte-range the segment is available at when requested. */
28
- range?: [number, number];
28
+ range?: [number, number] | undefined;
29
29
  }
30
30
  /**
31
31
  * Calculate the number of times a timeline element repeats based on the next
@@ -35,7 +35,7 @@ export interface IIndexSegment {
35
35
  * @param {number|undefined} maxPosition
36
36
  * @returns {Number}
37
37
  */
38
- export declare function calculateRepeat(element: IIndexSegment, nextElement?: IIndexSegment | null | undefined, maxPosition?: number): number;
38
+ export declare function calculateRepeat(element: IIndexSegment, nextElement?: IIndexSegment | null | undefined, maxPosition?: number | undefined): number;
39
39
  /**
40
40
  * Returns end of the segment given, in index time.
41
41
  * @param {Object} segment
@@ -17,7 +17,17 @@ import { IIndexSegment } from "./index_helpers";
17
17
  /**
18
18
  * Update a complete array of segments in a given timeline with a [generally]
19
19
  * smaller but [generally] newer set of segments.
20
+ *
21
+ * Returns a boolean:
22
+ * - If set to `true`, the old timeline was emptied and completely replaced by
23
+ * the content of the newer timeline.
24
+ * This could happen either if a problem happened while trying to update or
25
+ * when the update is actually bigger than what it is updating.
26
+ * - If set to `false`, the older timeline was either updated to add the newer
27
+ * segments, or untouched.
28
+ *
20
29
  * @param {Array.<Object>} oldTimeline
21
30
  * @param {Array.<Object>} newTimeline
31
+ * @returns {boolean}
22
32
  */
23
- export default function updateSegmentTimeline(oldTimeline: IIndexSegment[], newTimeline: IIndexSegment[]): void;
33
+ export default function updateSegmentTimeline(oldTimeline: IIndexSegment[], newTimeline: IIndexSegment[]): boolean;
@@ -28,18 +28,28 @@ import { getIndexSegmentEnd, } from "./index_helpers";
28
28
  /**
29
29
  * Update a complete array of segments in a given timeline with a [generally]
30
30
  * smaller but [generally] newer set of segments.
31
+ *
32
+ * Returns a boolean:
33
+ * - If set to `true`, the old timeline was emptied and completely replaced by
34
+ * the content of the newer timeline.
35
+ * This could happen either if a problem happened while trying to update or
36
+ * when the update is actually bigger than what it is updating.
37
+ * - If set to `false`, the older timeline was either updated to add the newer
38
+ * segments, or untouched.
39
+ *
31
40
  * @param {Array.<Object>} oldTimeline
32
41
  * @param {Array.<Object>} newTimeline
42
+ * @returns {boolean}
33
43
  */
34
44
  export default function updateSegmentTimeline(oldTimeline, newTimeline) {
35
- var prevTimelineLength = oldTimeline.length;
36
45
  if (oldTimeline.length === 0) {
37
- oldTimeline.splice.apply(oldTimeline, __spreadArray([0, prevTimelineLength], newTimeline, false));
38
- return;
46
+ oldTimeline.push.apply(oldTimeline, newTimeline);
47
+ return true;
39
48
  }
40
- if (newTimeline.length === 0) {
41
- return;
49
+ else if (newTimeline.length === 0) {
50
+ return false;
42
51
  }
52
+ var prevTimelineLength = oldTimeline.length;
43
53
  var newIndexStart = newTimeline[0].start;
44
54
  var oldLastElt = oldTimeline[prevTimelineLength - 1];
45
55
  var oldIndexEnd = getIndexSegmentEnd(oldLastElt, newTimeline[0]);
@@ -50,16 +60,18 @@ export default function updateSegmentTimeline(oldTimeline, newTimeline) {
50
60
  var currStart = oldTimeline[i].start;
51
61
  if (currStart === newIndexStart) {
52
62
  // replace that one and those after it
53
- oldTimeline.splice.apply(oldTimeline, __spreadArray([i, prevTimelineLength - i], newTimeline, false));
54
- return;
63
+ var nbEltsToRemove = prevTimelineLength - i;
64
+ oldTimeline.splice.apply(oldTimeline, __spreadArray([i, nbEltsToRemove], newTimeline, false));
65
+ return false;
55
66
  }
56
67
  else if (currStart < newIndexStart) { // first to be before
57
68
  var currElt = oldTimeline[i];
58
69
  if (currElt.start + currElt.duration > newIndexStart) {
59
- // the new Manifest overlaps a previous segment (weird). Remove the latter.
60
- log.warn("RepresentationIndex: Manifest update removed previous segments");
61
- oldTimeline.splice.apply(oldTimeline, __spreadArray([i, prevTimelineLength - i], newTimeline, false));
62
- return;
70
+ // The new Manifest overlaps a previous segment (weird)
71
+ // In that improbable case, we'll just completely replace segments
72
+ log.warn("RepresentationIndex: Manifest update removed all previous segments");
73
+ oldTimeline.splice.apply(oldTimeline, __spreadArray([0, prevTimelineLength], newTimeline, false));
74
+ return true;
63
75
  }
64
76
  else if (currElt.repeatCount === undefined || currElt.repeatCount <= 0) {
65
77
  if (currElt.repeatCount < 0) {
@@ -67,7 +79,7 @@ export default function updateSegmentTimeline(oldTimeline, newTimeline) {
67
79
  currElt.duration) - 1;
68
80
  }
69
81
  oldTimeline.splice.apply(oldTimeline, __spreadArray([i + 1, prevTimelineLength - (i + 1)], newTimeline, false));
70
- return;
82
+ return false;
71
83
  }
72
84
  // else, there is a positive repeat we might want to update
73
85
  var eltLastTime = currElt.start + currElt.duration * (currElt.repeatCount + 1);
@@ -75,7 +87,7 @@ export default function updateSegmentTimeline(oldTimeline, newTimeline) {
75
87
  // put it after this one
76
88
  oldTimeline.splice.apply(// our new index comes directly after
77
89
  oldTimeline, __spreadArray([i + 1, prevTimelineLength - (i + 1)], newTimeline, false));
78
- return;
90
+ return false;
79
91
  }
80
92
  var newCurrRepeat = ((newIndexStart - currElt.start) / currElt.duration) - 1;
81
93
  if (newCurrRepeat % 1 === 0 && currElt.duration === newTimeline[0].duration) {
@@ -86,13 +98,13 @@ export default function updateSegmentTimeline(oldTimeline, newTimeline) {
86
98
  oldTimeline.splice.apply(oldTimeline, __spreadArray([i, prevTimelineLength - i], newTimeline, false));
87
99
  oldTimeline[i].start = currElt.start;
88
100
  oldTimeline[i].repeatCount = newRepeatCount;
89
- return;
101
+ return false;
90
102
  }
91
103
  log.warn("RepresentationIndex: Manifest update removed previous segments");
92
104
  oldTimeline[i].repeatCount = Math.floor(newCurrRepeat);
93
105
  // put it after this one
94
106
  oldTimeline.splice.apply(oldTimeline, __spreadArray([i + 1, prevTimelineLength - (i + 1)], newTimeline, false));
95
- return;
107
+ return false;
96
108
  }
97
109
  }
98
110
  // if we got here, it means that every segments in the previous manifest are
@@ -103,12 +115,12 @@ export default function updateSegmentTimeline(oldTimeline, newTimeline) {
103
115
  if (prevLastElt.repeatCount !== undefined && prevLastElt.repeatCount < 0) {
104
116
  if (prevLastElt.start > newLastElt.start) {
105
117
  log.warn("RepresentationIndex: The new index is older than the previous one");
106
- return; // the old comes after
118
+ return false;
107
119
  }
108
120
  else { // the new has more depth
109
121
  log.warn("RepresentationIndex: The new index is \"bigger\" than the previous one");
110
122
  oldTimeline.splice.apply(oldTimeline, __spreadArray([0, prevTimelineLength], newTimeline, false));
111
- return;
123
+ return true;
112
124
  }
113
125
  }
114
126
  var prevLastTime = prevLastElt.start + prevLastElt.duration *
@@ -117,10 +129,10 @@ export default function updateSegmentTimeline(oldTimeline, newTimeline) {
117
129
  (newLastElt.repeatCount + 1);
118
130
  if (prevLastTime >= newLastTime) {
119
131
  log.warn("RepresentationIndex: The new index is older than the previous one");
120
- return; // the old comes after
132
+ return false;
121
133
  }
122
134
  // the new one has more depth. full update
123
135
  log.warn("RepresentationIndex: The new index is \"bigger\" than the previous one");
124
136
  oldTimeline.splice.apply(oldTimeline, __spreadArray([0, prevTimelineLength], newTimeline, false));
125
- return;
137
+ return true;
126
138
  }
@@ -35,9 +35,9 @@ export default function toHTML(cueObj: {
35
35
  start: number;
36
36
  end: number;
37
37
  settings: Partial<Record<string, string>>;
38
- header?: string;
38
+ header?: string | undefined;
39
39
  payload: string[];
40
40
  }, styling: {
41
41
  classes: IStyleElements;
42
- global?: string;
42
+ global?: string | undefined;
43
43
  }): IVTTHTMLCue;
@@ -16,7 +16,7 @@
16
16
  export interface IVTTCueObject {
17
17
  start: number;
18
18
  end: number;
19
- header?: string;
19
+ header: string | undefined;
20
20
  settings: Partial<Record<string, string>>;
21
21
  payload: string[];
22
22
  }
@@ -17,8 +17,8 @@
17
17
  * This file exports types we want to expose to library users.
18
18
  * Those types are considered as part of the API.
19
19
  */
20
- export { IConstructorOptions, ILoadVideoOptions, ITransportOptions, IKeySystemOption, ISupplementaryTextTrackOption, ISupplementaryImageTrackOption, IDefaultAudioTrackOption, IDefaultTextTrackOption, INetworkConfigOption, IStartAtOption, ITMAudioTrackListItem as IAvailableAudioTrack, ITMTextTrackListItem as IAvailableTextTrack, ITMVideoTrackListItem as IAvailableVideoTrack, ITMAudioTrack as IAudioTrack, ITMTextTrack as ITextTrack, ITMVideoTrack as IVideoTrack, IAudioTrackPreference, ITextTrackPreference, IVideoTrackPreference, IStreamEvent, IStreamEventData, } from "./core/api";
21
- export { IPersistentSessionInfo, IPersistentSessionStorage, } from "./core/eme";
20
+ export { IConstructorOptions, ILoadVideoOptions, ITransportOptions, IKeySystemOption, ISupplementaryTextTrackOption, ISupplementaryImageTrackOption, IDefaultAudioTrackOption, IDefaultTextTrackOption, INetworkConfigOption, IStartAtOption, ITMAudioTrackListItem as IAvailableAudioTrack, ITMTextTrackListItem as IAvailableTextTrack, ITMVideoTrackListItem as IAvailableVideoTrack, ITMAudioTrack as IAudioTrack, ITMTextTrack as ITextTrack, ITMVideoTrack as IVideoTrack, IAudioTrackPreference, ITextTrackPreference, IVideoTrackPreference, IBitrateEstimate, IPositionUpdateItem as IPositionUpdate, IPlayerState, IStreamEvent, IStreamEventData, } from "./core/api";
21
+ export { IPersistentSessionInfo, IPersistentSessionStorage, } from "./core/decrypt";
22
22
  export { ICustomError as IPlayerError } from "./errors";
23
23
  export { IExposedAdaptation as IAdaptation, IExposedManifest as IManifest, IExposedPeriod as IPeriod, IExposedRepresentation as IRepresentation, IExposedSegment as ISegment, IRepresentationFilter, IRepresentationInfos, } from "./manifest";
24
24
  export { ICustomSegmentLoader as ISegmentLoader, ICustomManifestLoader as IManifestLoader, } from "./transports";
@@ -24,6 +24,7 @@ var __assign = (this && this.__assign) || function () {
24
24
  };
25
25
  return __assign.apply(this, arguments);
26
26
  };
27
+ import PPromise from "../../utils/promise";
27
28
  import TaskCanceller from "../../utils/task_canceller";
28
29
  import checkISOBMFFIntegrity from "../utils/check_isobmff_integrity";
29
30
  import inferSegmentContainer from "../utils/infer_segment_container";
@@ -36,7 +37,7 @@ import inferSegmentContainer from "../utils/infer_segment_container";
36
37
  */
37
38
  export default function addSegmentIntegrityChecks(segmentLoader) {
38
39
  return function (url, content, initialCancelSignal, callbacks) {
39
- return new Promise(function (res, rej) {
40
+ return new PPromise(function (res, rej) {
40
41
  var canceller = new TaskCanceller();
41
42
  var unregisterCancelLstnr = initialCancelSignal
42
43
  .register(function onCheckCancellation(err) {
@@ -13,8 +13,8 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import PPromise from "pinkie";
17
16
  import features from "../../features";
17
+ import PPromise from "../../utils/promise";
18
18
  import request from "../../utils/request";
19
19
  import takeFirstSet from "../../utils/take_first_set";
20
20
  /**
@@ -47,6 +47,7 @@ export function imageParser(loadedSegment, content) {
47
47
  if (content.segment.isInit) { // image init segment has no use
48
48
  return { segmentType: "init",
49
49
  initializationData: null,
50
+ initializationDataSize: 0,
50
51
  protectionDataUpdate: false,
51
52
  initTimescale: undefined };
52
53
  }
@@ -58,6 +59,7 @@ export function imageParser(loadedSegment, content) {
58
59
  if (data === null || features.imageParser === null) {
59
60
  return { segmentType: "media",
60
61
  chunkData: null,
62
+ chunkSize: 0,
61
63
  chunkInfos: { duration: segment.duration,
62
64
  time: segment.time }, chunkOffset: chunkOffset, protectionDataUpdate: false,
63
65
  appendWindow: [period.start, period.end] };
@@ -70,6 +72,7 @@ export function imageParser(loadedSegment, content) {
70
72
  end: Number.MAX_VALUE,
71
73
  timescale: 1,
72
74
  type: "bif" },
75
+ chunkSize: undefined,
73
76
  chunkInfos: { time: 0,
74
77
  duration: Number.MAX_VALUE }, chunkOffset: chunkOffset, protectionDataUpdate: false,
75
78
  appendWindow: [period.start, period.end] };
@@ -13,8 +13,8 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import PPromise from "pinkie";
17
16
  import { concat } from "../../utils/byte_parsing";
17
+ import PPromise from "../../utils/promise";
18
18
  import request from "../../utils/request";
19
19
  import byteRange from "../utils/byte_range";
20
20
  /**
@@ -13,12 +13,12 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import PPromise from "pinkie";
17
16
  import { formatError } from "../../errors";
18
17
  import features from "../../features";
19
18
  import log from "../../log";
20
19
  import Manifest from "../../manifest";
21
20
  import objectAssign from "../../utils/object_assign";
21
+ import PPromise from "../../utils/promise";
22
22
  import request from "../../utils/request";
23
23
  import { strToUtf8, utf8ToStr, } from "../../utils/string_parsing";
24
24
  export default function generateManifestParser(options) {
@@ -31,6 +31,6 @@ export declare function regularSegmentLoader(url: string, content: ISegmentConte
31
31
  */
32
32
  export default function generateSegmentLoader({ lowLatencyMode, segmentLoader: customSegmentLoader, checkMediaSegmentIntegrity }: {
33
33
  lowLatencyMode: boolean;
34
- segmentLoader?: ICustomSegmentLoader;
35
- checkMediaSegmentIntegrity?: boolean;
34
+ segmentLoader?: ICustomSegmentLoader | undefined;
35
+ checkMediaSegmentIntegrity?: boolean | undefined;
36
36
  }): ISegmentLoader<Uint8Array | ArrayBuffer | null>;
@@ -13,8 +13,8 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import PPromise from "pinkie";
17
16
  import { CustomLoaderError } from "../../errors";
17
+ import PPromise from "../../utils/promise";
18
18
  import request, { fetchIsSupported, } from "../../utils/request";
19
19
  import warnOnce from "../../utils/warn_once";
20
20
  import byteRange from "../utils/byte_range";
@@ -79,7 +79,7 @@ export default function generateSegmentLoader(_a) {
79
79
  representation: content.representation,
80
80
  segment: content.segment,
81
81
  transport: "dash", url: url };
82
- return new Promise(function (res, rej) {
82
+ return new PPromise(function (res, rej) {
83
83
  /** `true` when the custom segmentLoader should not be active anymore. */
84
84
  var hasFinished = false;
85
85
  /**
@@ -19,5 +19,5 @@ import { ISegmentParser } from "../types";
19
19
  * @returns {Function}
20
20
  */
21
21
  export default function generateAudioVideoSegmentParser({ __priv_patchLastSegmentInSidx }: {
22
- __priv_patchLastSegmentInSidx?: boolean;
22
+ __priv_patchLastSegmentInSidx?: boolean | undefined;
23
23
  }): ISegmentParser<ArrayBuffer | Uint8Array | null, ArrayBuffer | Uint8Array | null>;
@@ -36,11 +36,13 @@ export default function generateAudioVideoSegmentParser(_a) {
36
36
  if (segment.isInit) {
37
37
  return { segmentType: "init",
38
38
  initializationData: null,
39
+ initializationDataSize: 0,
39
40
  protectionDataUpdate: false,
40
41
  initTimescale: undefined };
41
42
  }
42
43
  return { segmentType: "media",
43
44
  chunkData: null,
45
+ chunkSize: 0,
44
46
  chunkInfos: null,
45
47
  chunkOffset: 0,
46
48
  protectionDataUpdate: false, appendWindow: appendWindow };
@@ -74,11 +76,11 @@ export default function generateAudioVideoSegmentParser(_a) {
74
76
  var events = getEventsOutOfEMSGs(whitelistedEMSGs, manifest.publishTime);
75
77
  if (events !== undefined) {
76
78
  var needsManifestRefresh = events.needsManifestRefresh, inbandEvents = events.inbandEvents;
77
- return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: chunkOffset, appendWindow: appendWindow, inbandEvents: inbandEvents, protectionDataUpdate: protectionDataUpdate, needsManifestRefresh: needsManifestRefresh };
79
+ return { segmentType: "media", chunkData: chunkData, chunkSize: chunkData.length, chunkInfos: chunkInfos, chunkOffset: chunkOffset, appendWindow: appendWindow, inbandEvents: inbandEvents, protectionDataUpdate: protectionDataUpdate, needsManifestRefresh: needsManifestRefresh };
78
80
  }
79
81
  }
80
82
  }
81
- return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: protectionDataUpdate, appendWindow: appendWindow };
83
+ return { segmentType: "media", chunkData: chunkData, chunkSize: chunkData.length, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: protectionDataUpdate, appendWindow: appendWindow };
82
84
  }
83
85
  // we're handling an initialization segment
84
86
  var indexRange = segment.indexRange;
@@ -117,6 +119,7 @@ export default function generateAudioVideoSegmentParser(_a) {
117
119
  var parsedTimescale = isNullOrUndefined(timescale) ? undefined :
118
120
  timescale;
119
121
  return { segmentType: "init",
120
- initializationData: chunkData, protectionDataUpdate: protectionDataUpdate, initTimescale: parsedTimescale };
122
+ initializationData: chunkData,
123
+ initializationDataSize: chunkData.length, protectionDataUpdate: protectionDataUpdate, initTimescale: parsedTimescale };
121
124
  };
122
125
  }
@@ -21,5 +21,5 @@ import { ISegmentLoader } from "../types";
21
21
  */
22
22
  export default function generateTextTrackLoader({ lowLatencyMode, checkMediaSegmentIntegrity }: {
23
23
  lowLatencyMode: boolean;
24
- checkMediaSegmentIntegrity?: boolean;
24
+ checkMediaSegmentIntegrity?: boolean | undefined;
25
25
  }): ISegmentLoader<Uint8Array | ArrayBuffer | string | null>;
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import PPromise from "pinkie";
16
+ import PPromise from "../../utils/promise";
17
17
  import request, { fetchIsSupported, } from "../../utils/request";
18
18
  import warnOnce from "../../utils/warn_once";
19
19
  import byteRange from "../utils/byte_range";
@@ -21,5 +21,5 @@ import { ISegmentParser, ITextTrackSegmentData } from "../types";
21
21
  * @returns {Function}
22
22
  */
23
23
  export default function generateTextTrackParser({ __priv_patchLastSegmentInSidx }: {
24
- __priv_patchLastSegmentInSidx?: boolean;
24
+ __priv_patchLastSegmentInSidx?: boolean | undefined;
25
25
  }): ISegmentParser<ArrayBuffer | Uint8Array | string | null, ITextTrackSegmentData | null>;
@@ -71,13 +71,14 @@ function parseISOBMFFEmbeddedTextTrack(data, isChunked, content, initTimescale,
71
71
  }
72
72
  return { segmentType: "init",
73
73
  initializationData: null,
74
+ initializationDataSize: 0,
74
75
  protectionDataUpdate: false,
75
76
  initTimescale: mdhdTimescale };
76
77
  }
77
78
  var chunkInfos = getISOBMFFTimingInfos(chunkBytes, isChunked, segment, initTimescale);
78
79
  var chunkData = getISOBMFFEmbeddedTextTrackData(content, chunkBytes, chunkInfos, isChunked);
79
80
  var chunkOffset = takeFirstSet(segment.timestampOffset, 0);
80
- return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
81
+ return { segmentType: "media", chunkData: chunkData, chunkSize: chunkBytes.length, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
81
82
  appendWindow: [period.start, period.end] };
82
83
  }
83
84
  /**
@@ -97,20 +98,23 @@ function parsePlainTextTrack(data, isChunked, content) {
97
98
  if (segment.isInit) {
98
99
  return { segmentType: "init",
99
100
  initializationData: null,
101
+ initializationDataSize: 0,
100
102
  protectionDataUpdate: false,
101
103
  initTimescale: undefined };
102
104
  }
103
105
  var textTrackData;
106
+ var chunkSize;
104
107
  if (typeof data !== "string") {
105
108
  var bytesData = data instanceof Uint8Array ? data :
106
109
  new Uint8Array(data);
107
110
  textTrackData = utf8ToStr(bytesData);
111
+ chunkSize = bytesData.length;
108
112
  }
109
113
  else {
110
114
  textTrackData = data;
111
115
  }
112
116
  var chunkData = getPlainTextTrackData(content, textTrackData, isChunked);
113
- return { segmentType: "media", chunkData: chunkData, chunkInfos: null,
117
+ return { segmentType: "media", chunkData: chunkData, chunkSize: chunkSize, chunkInfos: null,
114
118
  chunkOffset: timestampOffset,
115
119
  protectionDataUpdate: false,
116
120
  appendWindow: [period.start, period.end] };
@@ -136,10 +140,12 @@ export default function generateTextTrackParser(_a) {
136
140
  // No data, just return an empty placeholder object
137
141
  return segment.isInit ? { segmentType: "init",
138
142
  initializationData: null,
143
+ initializationDataSize: 0,
139
144
  protectionDataUpdate: false,
140
145
  initTimescale: undefined } :
141
146
  { segmentType: "media",
142
147
  chunkData: null,
148
+ chunkSize: 0,
143
149
  chunkInfos: null,
144
150
  chunkOffset: (_a = segment.timestampOffset) !== null && _a !== void 0 ? _a : 0,
145
151
  protectionDataUpdate: false,
@@ -13,7 +13,6 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import PPromise from "pinkie";
17
16
  import { CancellationSignal } from "../../utils/task_canceller";
18
17
  import { ISegmentContext, ISegmentLoaderCallbacks, ISegmentLoaderResultSegmentLoaded } from "../types";
19
18
  /**
@@ -24,4 +23,4 @@ import { ISegmentContext, ISegmentLoaderCallbacks, ISegmentLoaderResultSegmentLo
24
23
  * @param {Object} _callbacks
25
24
  * @returns {Promise}
26
25
  */
27
- export default function segmentLoader(_url: string | null, content: ISegmentContext, cancelSignal: CancellationSignal, _callbacks: ISegmentLoaderCallbacks<ArrayBuffer | null>): PPromise<ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>>;
26
+ export default function segmentLoader(_url: string | null, content: ISegmentContext, cancelSignal: CancellationSignal, _callbacks: ISegmentLoaderCallbacks<ArrayBuffer | null>): Promise<ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>>;
@@ -13,9 +13,9 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import PPromise from "pinkie";
17
16
  import { CustomLoaderError } from "../../errors";
18
17
  import isNullOrUndefined from "../../utils/is_null_or_undefined";
18
+ import PPromise from "../../utils/promise";
19
19
  /**
20
20
  * @param {Function} customSegmentLoader
21
21
  * @param {Object} cancelSignal
@@ -26,11 +26,13 @@ export default function segmentParser(loadedSegment, content, initTimescale) {
26
26
  if (segment.isInit) {
27
27
  return { segmentType: "init",
28
28
  initializationData: null,
29
+ initializationDataSize: 0,
29
30
  protectionDataUpdate: false,
30
31
  initTimescale: undefined };
31
32
  }
32
33
  return { segmentType: "media",
33
34
  chunkData: null,
35
+ chunkSize: 0,
34
36
  chunkInfos: null,
35
37
  chunkOffset: 0,
36
38
  protectionDataUpdate: false, appendWindow: appendWindow };
@@ -52,10 +54,11 @@ export default function segmentParser(loadedSegment, content, initTimescale) {
52
54
  getMDHDTimescale(chunkData);
53
55
  return { segmentType: "init",
54
56
  initializationData: chunkData,
57
+ initializationDataSize: 0,
55
58
  initTimescale: timescale !== null && timescale !== void 0 ? timescale : undefined, protectionDataUpdate: protectionDataUpdate };
56
59
  }
57
60
  var chunkInfos = seemsToBeMP4 ? getISOBMFFTimingInfos(chunkData, false, segment, initTimescale) :
58
61
  null; // TODO extract time info from webm
59
62
  var chunkOffset = takeFirstSet(segment.timestampOffset, 0);
60
- return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false, appendWindow: appendWindow };
63
+ return { segmentType: "media", chunkData: chunkData, chunkSize: chunkData.length, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false, appendWindow: appendWindow };
61
64
  }
@@ -43,13 +43,14 @@ function parseISOBMFFEmbeddedTextTrack(data, isChunked, content, initTimescale)
43
43
  var mdhdTimescale = getMDHDTimescale(chunkBytes);
44
44
  return { segmentType: "init",
45
45
  initializationData: null,
46
+ initializationDataSize: 0,
46
47
  initTimescale: mdhdTimescale,
47
48
  protectionDataUpdate: false };
48
49
  }
49
50
  var chunkInfos = getISOBMFFTimingInfos(chunkBytes, isChunked, segment, initTimescale);
50
51
  var chunkData = getISOBMFFEmbeddedTextTrackData(content, chunkBytes, chunkInfos, isChunked);
51
52
  var chunkOffset = takeFirstSet(segment.timestampOffset, 0);
52
- return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
53
+ return { segmentType: "media", chunkData: chunkData, chunkSize: chunkBytes.length, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
53
54
  appendWindow: [period.start, period.end] };
54
55
  }
55
56
  /**
@@ -67,21 +68,24 @@ function parsePlainTextTrack(data, isChunked, content) {
67
68
  if (segment.isInit) {
68
69
  return { segmentType: "init",
69
70
  initializationData: null,
71
+ initializationDataSize: 0,
70
72
  initTimescale: undefined,
71
73
  protectionDataUpdate: false };
72
74
  }
73
75
  var textTrackData;
76
+ var chunkSize;
74
77
  if (typeof data !== "string") {
75
78
  var bytesData = data instanceof Uint8Array ? data :
76
79
  new Uint8Array(data);
77
80
  textTrackData = utf8ToStr(bytesData);
81
+ chunkSize = bytesData.length;
78
82
  }
79
83
  else {
80
84
  textTrackData = data;
81
85
  }
82
86
  var chunkData = getPlainTextTrackData(content, textTrackData, isChunked);
83
87
  var chunkOffset = takeFirstSet(segment.timestampOffset, 0);
84
- return { segmentType: "media", chunkData: chunkData, chunkInfos: null, chunkOffset: chunkOffset, protectionDataUpdate: false,
88
+ return { segmentType: "media", chunkData: chunkData, chunkSize: chunkSize, chunkInfos: null, chunkOffset: chunkOffset, protectionDataUpdate: false,
85
89
  appendWindow: [period.start, period.end] };
86
90
  }
87
91
  /**
@@ -100,12 +104,14 @@ export default function textTrackParser(loadedSegment, content, initTimescale) {
100
104
  if (segment.isInit) {
101
105
  return { segmentType: "init",
102
106
  initializationData: null,
107
+ initializationDataSize: 0,
103
108
  protectionDataUpdate: false,
104
109
  initTimescale: undefined };
105
110
  }
106
111
  var chunkOffset = (_a = segment.timestampOffset) !== null && _a !== void 0 ? _a : 0;
107
112
  return { segmentType: "media",
108
113
  chunkData: null,
114
+ chunkSize: 0,
109
115
  chunkInfos: null, chunkOffset: chunkOffset, protectionDataUpdate: false,
110
116
  appendWindow: [period.start, period.end] };
111
117
  }
@@ -21,5 +21,5 @@ import { ICustomManifestLoader, ILoadedManifestFormat, IRequestedData } from "..
21
21
  * @returns {Function}
22
22
  */
23
23
  export default function generateManifestLoader({ customManifestLoader }: {
24
- customManifestLoader?: ICustomManifestLoader;
24
+ customManifestLoader?: ICustomManifestLoader | undefined;
25
25
  }): (url: string | undefined, cancelSignal: CancellationSignal) => Promise<IRequestedData<ILoadedManifestFormat>>;
@@ -24,12 +24,12 @@ var __assign = (this && this.__assign) || function () {
24
24
  };
25
25
  return __assign.apply(this, arguments);
26
26
  };
27
- import PPromise from "pinkie";
28
27
  import features from "../../features";
29
28
  import Manifest from "../../manifest";
30
29
  import parseMetaPlaylist from "../../parsers/manifest/metaplaylist";
31
30
  import isNullOrUndefined from "../../utils/is_null_or_undefined";
32
31
  import objectAssign from "../../utils/object_assign";
32
+ import PPromise from "../../utils/promise";
33
33
  import generateManifestLoader from "./manifest_loader";
34
34
  /**
35
35
  * Get base - real - content from an offseted metaplaylist content.