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
@@ -42,7 +42,9 @@ import getEventsOutOfEMSGs from "./get_events_out_of_emsgs";
42
42
  * @returns {Function}
43
43
  */
44
44
  export default function generateAudioVideoSegmentParser(
45
- { __priv_patchLastSegmentInSidx } : { __priv_patchLastSegmentInSidx? : boolean }
45
+ { __priv_patchLastSegmentInSidx } : {
46
+ __priv_patchLastSegmentInSidx? : boolean | undefined;
47
+ }
46
48
  ) : ISegmentParser<
47
49
  ArrayBuffer | Uint8Array | null,
48
50
  ArrayBuffer | Uint8Array | null
@@ -62,11 +64,13 @@ export default function generateAudioVideoSegmentParser(
62
64
  if (segment.isInit) {
63
65
  return { segmentType: "init",
64
66
  initializationData: null,
67
+ initializationDataSize: 0,
65
68
  protectionDataUpdate: false,
66
69
  initTimescale: undefined };
67
70
  }
68
71
  return { segmentType: "media",
69
72
  chunkData: null,
73
+ chunkSize: 0,
70
74
  chunkInfos: null,
71
75
  chunkOffset: 0,
72
76
  protectionDataUpdate: false,
@@ -113,6 +117,7 @@ export default function generateAudioVideoSegmentParser(
113
117
  const { needsManifestRefresh, inbandEvents } = events;
114
118
  return { segmentType: "media",
115
119
  chunkData,
120
+ chunkSize: chunkData.length,
116
121
  chunkInfos,
117
122
  chunkOffset,
118
123
  appendWindow,
@@ -125,6 +130,7 @@ export default function generateAudioVideoSegmentParser(
125
130
 
126
131
  return { segmentType: "media",
127
132
  chunkData,
133
+ chunkSize: chunkData.length,
128
134
  chunkInfos,
129
135
  chunkOffset,
130
136
  protectionDataUpdate,
@@ -175,6 +181,7 @@ export default function generateAudioVideoSegmentParser(
175
181
 
176
182
  return { segmentType: "init",
177
183
  initializationData: chunkData,
184
+ initializationDataSize: chunkData.length,
178
185
  protectionDataUpdate,
179
186
  initTimescale: parsedTimescale };
180
187
  };
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
17
+ import PPromise from "../../utils/promise";
18
18
  import request, {
19
19
  fetchIsSupported,
20
20
  } from "../../utils/request";
@@ -43,7 +43,7 @@ import lowLatencySegmentLoader from "./low_latency_segment_loader";
43
43
  export default function generateTextTrackLoader(
44
44
  { lowLatencyMode,
45
45
  checkMediaSegmentIntegrity } : { lowLatencyMode: boolean;
46
- checkMediaSegmentIntegrity? : boolean; }
46
+ checkMediaSegmentIntegrity? : boolean | undefined; }
47
47
  ) : ISegmentLoader<Uint8Array | ArrayBuffer | string | null> {
48
48
  return checkMediaSegmentIntegrity !== true ? textTrackLoader :
49
49
  addSegmentIntegrityChecks(textTrackLoader);
@@ -102,6 +102,7 @@ function parseISOBMFFEmbeddedTextTrack(
102
102
  }
103
103
  return { segmentType: "init",
104
104
  initializationData: null,
105
+ initializationDataSize: 0,
105
106
  protectionDataUpdate: false,
106
107
  initTimescale: mdhdTimescale };
107
108
  }
@@ -116,6 +117,7 @@ function parseISOBMFFEmbeddedTextTrack(
116
117
  const chunkOffset = takeFirstSet<number>(segment.timestampOffset, 0);
117
118
  return { segmentType: "media",
118
119
  chunkData,
120
+ chunkSize: chunkBytes.length,
119
121
  chunkInfos,
120
122
  chunkOffset,
121
123
  protectionDataUpdate: false,
@@ -144,21 +146,25 @@ function parsePlainTextTrack(
144
146
  if (segment.isInit) {
145
147
  return { segmentType: "init",
146
148
  initializationData: null,
149
+ initializationDataSize: 0,
147
150
  protectionDataUpdate: false,
148
151
  initTimescale: undefined };
149
152
  }
150
153
 
151
154
  let textTrackData : string;
155
+ let chunkSize : number | undefined;
152
156
  if (typeof data !== "string") {
153
157
  const bytesData = data instanceof Uint8Array ? data :
154
158
  new Uint8Array(data);
155
159
  textTrackData = utf8ToStr(bytesData);
160
+ chunkSize = bytesData.length;
156
161
  } else {
157
162
  textTrackData = data;
158
163
  }
159
164
  const chunkData = getPlainTextTrackData(content, textTrackData, isChunked);
160
165
  return { segmentType: "media",
161
166
  chunkData,
167
+ chunkSize,
162
168
  chunkInfos: null,
163
169
  chunkOffset: timestampOffset,
164
170
  protectionDataUpdate: false,
@@ -172,7 +178,9 @@ function parsePlainTextTrack(
172
178
  * @returns {Function}
173
179
  */
174
180
  export default function generateTextTrackParser(
175
- { __priv_patchLastSegmentInSidx } : { __priv_patchLastSegmentInSidx? : boolean }
181
+ { __priv_patchLastSegmentInSidx } : {
182
+ __priv_patchLastSegmentInSidx? : boolean | undefined;
183
+ }
176
184
  ) : ISegmentParser< ArrayBuffer | Uint8Array | string | null,
177
185
  ITextTrackSegmentData | null > {
178
186
  /**
@@ -194,11 +202,13 @@ export default function generateTextTrackParser(
194
202
  // No data, just return an empty placeholder object
195
203
  return segment.isInit ? { segmentType: "init",
196
204
  initializationData: null,
205
+ initializationDataSize: 0,
197
206
  protectionDataUpdate: false,
198
207
  initTimescale: undefined } :
199
208
 
200
209
  { segmentType: "media",
201
210
  chunkData: null,
211
+ chunkSize: 0,
202
212
  chunkInfos: null,
203
213
  chunkOffset: segment.timestampOffset ?? 0,
204
214
  protectionDataUpdate: false,
@@ -14,13 +14,13 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
18
17
  import { CustomLoaderError } from "../../errors";
19
18
  import {
20
19
  ILocalManifestInitSegmentLoader,
21
20
  ILocalManifestSegmentLoader,
22
21
  } from "../../parsers/manifest/local";
23
22
  import isNullOrUndefined from "../../utils/is_null_or_undefined";
23
+ import PPromise from "../../utils/promise";
24
24
  import {
25
25
  CancellationError,
26
26
  CancellationSignal,
@@ -39,7 +39,7 @@ import {
39
39
  function loadInitSegment(
40
40
  customSegmentLoader : ILocalManifestInitSegmentLoader,
41
41
  cancelSignal : CancellationSignal
42
- ) : PPromise<ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>> {
42
+ ) : Promise<ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>> {
43
43
  return new PPromise((res, rej) => {
44
44
  /** `true` when the custom segmentLoader should not be active anymore. */
45
45
  let hasFinished = false;
@@ -107,7 +107,7 @@ function loadSegment(
107
107
  segment : { time : number; duration : number; timestampOffset? : number },
108
108
  customSegmentLoader : ILocalManifestSegmentLoader,
109
109
  cancelSignal : CancellationSignal
110
- ) : PPromise< ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>> {
110
+ ) : Promise< ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>> {
111
111
  return new PPromise((res, rej) => {
112
112
  /** `true` when the custom segmentLoader should not be active anymore. */
113
113
  let hasFinished = false;
@@ -191,7 +191,7 @@ export default function segmentLoader(
191
191
  content : ISegmentContext,
192
192
  cancelSignal : CancellationSignal,
193
193
  _callbacks : ISegmentLoaderCallbacks<ArrayBuffer | null>
194
- ) : PPromise<ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>> {
194
+ ) : Promise<ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>> {
195
195
  const { segment } = content;
196
196
  const privateInfos = segment.privateInfos;
197
197
  if (segment.isInit) {
@@ -44,11 +44,13 @@ export default function segmentParser(
44
44
  if (segment.isInit) {
45
45
  return { segmentType: "init",
46
46
  initializationData: null,
47
+ initializationDataSize: 0,
47
48
  protectionDataUpdate: false,
48
49
  initTimescale: undefined };
49
50
  }
50
51
  return { segmentType: "media",
51
52
  chunkData: null,
53
+ chunkSize: 0,
52
54
  chunkInfos: null,
53
55
  chunkOffset: 0,
54
56
  protectionDataUpdate: false,
@@ -74,6 +76,7 @@ export default function segmentParser(
74
76
  getMDHDTimescale(chunkData);
75
77
  return { segmentType: "init",
76
78
  initializationData: chunkData,
79
+ initializationDataSize: 0,
77
80
  initTimescale: timescale ?? undefined,
78
81
  protectionDataUpdate };
79
82
  }
@@ -86,6 +89,7 @@ export default function segmentParser(
86
89
  const chunkOffset = takeFirstSet<number>(segment.timestampOffset, 0);
87
90
  return { segmentType: "media",
88
91
  chunkData,
92
+ chunkSize: chunkData.length,
89
93
  chunkInfos,
90
94
  chunkOffset,
91
95
  protectionDataUpdate: false,
@@ -66,6 +66,7 @@ function parseISOBMFFEmbeddedTextTrack(
66
66
  const mdhdTimescale = getMDHDTimescale(chunkBytes);
67
67
  return { segmentType: "init",
68
68
  initializationData: null,
69
+ initializationDataSize: 0,
69
70
  initTimescale: mdhdTimescale,
70
71
  protectionDataUpdate: false };
71
72
  }
@@ -80,6 +81,7 @@ function parseISOBMFFEmbeddedTextTrack(
80
81
  const chunkOffset = takeFirstSet<number>(segment.timestampOffset, 0);
81
82
  return { segmentType: "media",
82
83
  chunkData,
84
+ chunkSize: chunkBytes.length,
83
85
  chunkInfos,
84
86
  chunkOffset,
85
87
  protectionDataUpdate: false,
@@ -107,15 +109,18 @@ function parsePlainTextTrack(
107
109
  if (segment.isInit) {
108
110
  return { segmentType: "init",
109
111
  initializationData: null,
112
+ initializationDataSize: 0,
110
113
  initTimescale: undefined,
111
114
  protectionDataUpdate: false };
112
115
  }
113
116
 
114
117
  let textTrackData : string;
118
+ let chunkSize : number | undefined;
115
119
  if (typeof data !== "string") {
116
120
  const bytesData = data instanceof Uint8Array ? data :
117
121
  new Uint8Array(data);
118
122
  textTrackData = utf8ToStr(bytesData);
123
+ chunkSize = bytesData.length;
119
124
  } else {
120
125
  textTrackData = data;
121
126
  }
@@ -123,6 +128,7 @@ function parsePlainTextTrack(
123
128
  const chunkOffset = takeFirstSet<number>(segment.timestampOffset, 0);
124
129
  return { segmentType: "media",
125
130
  chunkData,
131
+ chunkSize,
126
132
  chunkInfos: null,
127
133
  chunkOffset,
128
134
  protectionDataUpdate: false,
@@ -152,12 +158,14 @@ export default function textTrackParser(
152
158
  if (segment.isInit) {
153
159
  return { segmentType: "init",
154
160
  initializationData: null,
161
+ initializationDataSize: 0,
155
162
  protectionDataUpdate: false,
156
163
  initTimescale: undefined };
157
164
  }
158
165
  const chunkOffset = segment.timestampOffset ?? 0;
159
166
  return { segmentType: "media",
160
167
  chunkData: null,
168
+ chunkSize: 0,
161
169
  chunkInfos: null,
162
170
  chunkOffset,
163
171
  protectionDataUpdate: false,
@@ -43,7 +43,7 @@ function regularManifestLoader(
43
43
  * @returns {Function}
44
44
  */
45
45
  export default function generateManifestLoader(
46
- { customManifestLoader } : { customManifestLoader?: ICustomManifestLoader }
46
+ { customManifestLoader } : { customManifestLoader?: ICustomManifestLoader | undefined }
47
47
  ) : (
48
48
  url : string | undefined,
49
49
  cancelSignal : CancellationSignal
@@ -14,7 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
18
17
  import features from "../../features";
19
18
  import Manifest, {
20
19
  Adaptation,
@@ -29,6 +28,7 @@ import parseMetaPlaylist, {
29
28
  import { IParsedManifest } from "../../parsers/manifest/types";
30
29
  import isNullOrUndefined from "../../utils/is_null_or_undefined";
31
30
  import objectAssign from "../../utils/object_assign";
31
+ import PPromise from "../../utils/promise";
32
32
  import { CancellationSignal } from "../../utils/task_canceller";
33
33
  import {
34
34
  IChunkTimeInfo,
@@ -14,7 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
18
17
  import features from "../../features";
19
18
  import log from "../../log";
20
19
  import Manifest, {
@@ -25,6 +24,7 @@ import { getMDAT } from "../../parsers/containers/isobmff";
25
24
  import createSmoothManifestParser, {
26
25
  SmoothRepresentationIndex,
27
26
  } from "../../parsers/manifest/smooth";
27
+ import PPromise from "../../utils/promise";
28
28
  import request from "../../utils/request";
29
29
  import {
30
30
  strToUtf8,
@@ -178,8 +178,8 @@ export default function(options : ITransportOptions) : ITransportPipelines {
178
178
  content : ISegmentContext,
179
179
  cancelSignal : CancellationSignal,
180
180
  callbacks : ISegmentLoaderCallbacks<ILoadedAudioVideoSegmentFormat>
181
- ) : PPromise<ISegmentLoaderResultSegmentLoaded<ILoadedAudioVideoSegmentFormat> |
182
- ISegmentLoaderResultSegmentCreated<ILoadedAudioVideoSegmentFormat>>
181
+ ) : Promise<ISegmentLoaderResultSegmentLoaded<ILoadedAudioVideoSegmentFormat> |
182
+ ISegmentLoaderResultSegmentCreated<ILoadedAudioVideoSegmentFormat>>
183
183
  {
184
184
  return segmentLoader(url, content, cancelSignal, callbacks);
185
185
  },
@@ -198,6 +198,7 @@ export default function(options : ITransportOptions) : ITransportPipelines {
198
198
  if (segment.isInit) {
199
199
  return { segmentType: "init",
200
200
  initializationData: null,
201
+ initializationDataSize: 0,
201
202
  protectionDataUpdate: false,
202
203
  initTimescale: undefined };
203
204
  }
@@ -205,6 +206,7 @@ export default function(options : ITransportOptions) : ITransportPipelines {
205
206
  chunkData: null,
206
207
  chunkInfos: null,
207
208
  chunkOffset: 0,
209
+ chunkSize: 0,
208
210
  protectionDataUpdate: false,
209
211
  appendWindow: [undefined, undefined] };
210
212
  }
@@ -216,6 +218,7 @@ export default function(options : ITransportOptions) : ITransportPipelines {
216
218
  const timescale = segment.privateInfos?.smoothInitSegment?.timescale;
217
219
  return { segmentType: "init",
218
220
  initializationData: data,
221
+ initializationDataSize: data.byteLength,
219
222
  // smooth init segments are crafted by hand.
220
223
  // Their timescale is the one from the manifest.
221
224
  initTimescale: timescale,
@@ -244,6 +247,7 @@ export default function(options : ITransportOptions) : ITransportPipelines {
244
247
  chunkData,
245
248
  chunkInfos,
246
249
  chunkOffset: 0,
250
+ chunkSize: chunkData.length,
247
251
  protectionDataUpdate: false,
248
252
  appendWindow: [undefined, undefined] };
249
253
  },
@@ -255,8 +259,8 @@ export default function(options : ITransportOptions) : ITransportPipelines {
255
259
  content : ISegmentContext,
256
260
  cancelSignal : CancellationSignal,
257
261
  callbacks : ISegmentLoaderCallbacks<ILoadedTextSegmentFormat>
258
- ) : PPromise<ISegmentLoaderResultSegmentLoaded<ILoadedTextSegmentFormat> |
259
- ISegmentLoaderResultSegmentCreated<ILoadedTextSegmentFormat>> {
262
+ ) : Promise<ISegmentLoaderResultSegmentLoaded<ILoadedTextSegmentFormat> |
263
+ ISegmentLoaderResultSegmentCreated<ILoadedTextSegmentFormat>> {
260
264
  const { segment, representation } = content;
261
265
  if (segment.isInit || url === null) {
262
266
  return PPromise.resolve({ resultType: "segment-created",
@@ -302,9 +306,11 @@ export default function(options : ITransportOptions) : ITransportPipelines {
302
306
  const isMP4 = isMP4EmbeddedTrack(representation);
303
307
  const { mimeType = "", codec = "" } = representation;
304
308
  const { data, isChunked } = loadedSegment;
309
+ let chunkSize : number | undefined;
305
310
  if (segment.isInit) { // text init segment has no use in HSS
306
311
  return { segmentType: "init",
307
312
  initializationData: null,
313
+ initializationDataSize: 0,
308
314
  protectionDataUpdate: false,
309
315
  initTimescale: undefined };
310
316
  }
@@ -313,6 +319,7 @@ export default function(options : ITransportOptions) : ITransportPipelines {
313
319
  chunkData: null,
314
320
  chunkInfos: null,
315
321
  chunkOffset: 0,
322
+ chunkSize: 0,
316
323
  protectionDataUpdate: false,
317
324
  appendWindow: [undefined, undefined] };
318
325
  }
@@ -333,6 +340,7 @@ export default function(options : ITransportOptions) : ITransportPipelines {
333
340
  chunkBytes = data instanceof Uint8Array ? data :
334
341
  new Uint8Array(data);
335
342
  }
343
+ chunkSize = chunkBytes.length;
336
344
  const timingInfos = initTimescale !== undefined ?
337
345
  extractTimingsInfos(chunkBytes,
338
346
  isChunked,
@@ -380,6 +388,7 @@ export default function(options : ITransportOptions) : ITransportPipelines {
380
388
  if (typeof data !== "string") {
381
389
  const bytesData = data instanceof Uint8Array ? data :
382
390
  new Uint8Array(data);
391
+ chunkSize = bytesData.length;
383
392
  chunkString = utf8ToStr(bytesData);
384
393
  } else {
385
394
  chunkString = data;
@@ -423,6 +432,7 @@ export default function(options : ITransportOptions) : ITransportPipelines {
423
432
  start: segmentStart,
424
433
  end: segmentEnd,
425
434
  language },
435
+ chunkSize,
426
436
  chunkInfos,
427
437
  chunkOffset,
428
438
  protectionDataUpdate: false,
@@ -431,25 +441,25 @@ export default function(options : ITransportOptions) : ITransportPipelines {
431
441
  };
432
442
 
433
443
  const imageTrackPipeline = {
434
- loadSegment(
444
+ async loadSegment(
435
445
  url : string | null,
436
446
  content : ISegmentContext,
437
447
  cancelSignal : CancellationSignal,
438
448
  callbacks : ISegmentLoaderCallbacks<ILoadedImageSegmentFormat>
439
- ) : PPromise<ISegmentLoaderResultSegmentLoaded<ILoadedImageSegmentFormat> |
440
- ISegmentLoaderResultSegmentCreated<ILoadedImageSegmentFormat>> {
449
+ ) : Promise<ISegmentLoaderResultSegmentLoaded<ILoadedImageSegmentFormat> |
450
+ ISegmentLoaderResultSegmentCreated<ILoadedImageSegmentFormat>> {
441
451
  if (content.segment.isInit || url === null) {
442
452
  // image do not need an init segment. Passthrough directly to the parser
443
- return PPromise.resolve({ resultType: "segment-created" as const,
444
- resultData: null });
453
+ return { resultType: "segment-created" as const,
454
+ resultData: null };
445
455
  }
446
456
 
447
- return request({ url,
448
- responseType: "arraybuffer",
449
- onProgress: callbacks.onProgress,
450
- cancelSignal })
451
- .then((data) => ({ resultType: "segment-loaded" as const,
452
- resultData: data }));
457
+ const data = await request({ url,
458
+ responseType: "arraybuffer",
459
+ onProgress: callbacks.onProgress,
460
+ cancelSignal });
461
+ return { resultType: "segment-loaded" as const,
462
+ resultData: data };
453
463
  },
454
464
 
455
465
  parseSegment(
@@ -465,6 +475,7 @@ export default function(options : ITransportOptions) : ITransportPipelines {
465
475
  if (content.segment.isInit) { // image init segment has no use
466
476
  return { segmentType: "init",
467
477
  initializationData: null,
478
+ initializationDataSize: 0,
468
479
  protectionDataUpdate: false,
469
480
  initTimescale: undefined };
470
481
  }
@@ -479,6 +490,7 @@ export default function(options : ITransportOptions) : ITransportPipelines {
479
490
  chunkData: null,
480
491
  chunkInfos: null,
481
492
  chunkOffset: 0,
493
+ chunkSize: 0,
482
494
  protectionDataUpdate: false,
483
495
  appendWindow: [undefined, undefined] };
484
496
  }
@@ -493,6 +505,7 @@ export default function(options : ITransportOptions) : ITransportPipelines {
493
505
  type: "bif" },
494
506
  chunkInfos: { time: 0,
495
507
  duration: Number.MAX_VALUE },
508
+ chunkSize: undefined,
496
509
  chunkOffset: 0,
497
510
  protectionDataUpdate: false,
498
511
  appendWindow: [undefined, undefined] };
@@ -14,9 +14,9 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
18
17
  import { CustomLoaderError } from "../../errors";
19
18
  import assert from "../../utils/assert";
19
+ import PPromise from "../../utils/promise";
20
20
  import request from "../../utils/request";
21
21
  import {
22
22
  CancellationError,
@@ -51,7 +51,7 @@ function regularSegmentLoader(
51
51
  content : ISegmentContext,
52
52
  callbacks : ISegmentLoaderCallbacks<Uint8Array | ArrayBuffer | null>,
53
53
  cancelSignal : CancellationSignal,
54
- checkMediaSegmentIntegrity? : boolean
54
+ checkMediaSegmentIntegrity? : boolean | undefined
55
55
  ) : Promise<ISegmentLoaderResultSegmentLoaded<Uint8Array | ArrayBuffer | null>> {
56
56
  let headers;
57
57
  const range = content.segment.range;
@@ -85,8 +85,8 @@ const generateSegmentLoader = ({
85
85
  checkMediaSegmentIntegrity,
86
86
  customSegmentLoader,
87
87
  } : {
88
- checkMediaSegmentIntegrity? : boolean;
89
- customSegmentLoader? : ICustomSegmentLoader;
88
+ checkMediaSegmentIntegrity? : boolean | undefined;
89
+ customSegmentLoader? : ICustomSegmentLoader | undefined;
90
90
  }) => (
91
91
  url : string | null,
92
92
  content : ISegmentContext,
@@ -165,7 +165,7 @@ const generateSegmentLoader = ({
165
165
  checkMediaSegmentIntegrity);
166
166
  }
167
167
 
168
- return new Promise((res, rej) => {
168
+ return new PPromise((res, rej) => {
169
169
  /** `true` when the custom segmentLoader should not be active anymore. */
170
170
  let hasFinished = false;
171
171
 
@@ -176,8 +176,8 @@ const generateSegmentLoader = ({
176
176
  */
177
177
  const resolve = (_args : {
178
178
  data : ArrayBuffer|Uint8Array;
179
- size? : number;
180
- duration? : number;
179
+ size? : number | undefined;
180
+ duration? : number | undefined;
181
181
  }) => {
182
182
  if (hasFinished || cancelSignal.isCancelled) {
183
183
  return;
@@ -231,7 +231,7 @@ const generateSegmentLoader = ({
231
231
  const progress = (
232
232
  _args : { duration : number;
233
233
  size : number;
234
- totalSize? : number; }
234
+ totalSize? : number | undefined; }
235
235
  ) => {
236
236
  if (hasFinished || cancelSignal.isCancelled) {
237
237
  return;