rx-player 3.33.4-dev.2024083000 → 3.33.4

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 (730) hide show
  1. package/.prettierignore +1 -0
  2. package/.prettierrc +4 -0
  3. package/.vscode/settings.json +9 -0
  4. package/CHANGELOG.md +1662 -1076
  5. package/MAINTAINERS.md +9 -12
  6. package/README.md +111 -127
  7. package/VERSION +1 -1
  8. package/dist/_esm5.processed/compat/add_class_name.js +4 -3
  9. package/dist/_esm5.processed/compat/add_text_track.d.ts +1 -1
  10. package/dist/_esm5.processed/compat/add_text_track.js +4 -4
  11. package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +2 -1
  12. package/dist/_esm5.processed/compat/browser_compatibility_types.js +15 -10
  13. package/dist/_esm5.processed/compat/browser_detection.d.ts +3 -1
  14. package/dist/_esm5.processed/compat/browser_detection.js +18 -10
  15. package/dist/_esm5.processed/compat/can_reuse_media_keys.d.ts +4 -0
  16. package/dist/_esm5.processed/compat/can_reuse_media_keys.js +6 -2
  17. package/dist/_esm5.processed/compat/change_source_buffer_type.d.ts +1 -1
  18. package/dist/_esm5.processed/compat/eme/close_session.d.ts +1 -1
  19. package/dist/_esm5.processed/compat/eme/close_session.js +17 -13
  20. package/dist/_esm5.processed/compat/eme/custom_key_system_access.d.ts +1 -1
  21. package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.d.ts +1 -1
  22. package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +8 -9
  23. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -2
  24. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +1 -1
  25. package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.d.ts +1 -1
  26. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.d.ts +1 -1
  27. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +7 -9
  28. package/dist/_esm5.processed/compat/eme/custom_media_keys/types.d.ts +4 -1
  29. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.d.ts +2 -2
  30. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +6 -12
  31. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.d.ts +2 -1
  32. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +3 -3
  33. package/dist/_esm5.processed/compat/eme/eme-api-implementation.d.ts +4 -4
  34. package/dist/_esm5.processed/compat/eme/eme-api-implementation.js +26 -11
  35. package/dist/_esm5.processed/compat/eme/generate_key_request.d.ts +1 -1
  36. package/dist/_esm5.processed/compat/eme/generate_key_request.js +17 -20
  37. package/dist/_esm5.processed/compat/eme/get_init_data.d.ts +3 -1
  38. package/dist/_esm5.processed/compat/eme/get_init_data.js +7 -9
  39. package/dist/_esm5.processed/compat/eme/get_uuid_kid_from_keystatus_kid.js +2 -3
  40. package/dist/_esm5.processed/compat/eme/get_webkit_fairplay_initdata.js +12 -13
  41. package/dist/_esm5.processed/compat/eme/index.d.ts +8 -5
  42. package/dist/_esm5.processed/compat/eme/index.js +1 -1
  43. package/dist/_esm5.processed/compat/eme/load_session.d.ts +1 -1
  44. package/dist/_esm5.processed/compat/enable_audio_track.d.ts +1 -1
  45. package/dist/_esm5.processed/compat/event_listeners.d.ts +26 -24
  46. package/dist/_esm5.processed/compat/event_listeners.js +14 -29
  47. package/dist/_esm5.processed/compat/fullscreen.d.ts +1 -1
  48. package/dist/_esm5.processed/compat/fullscreen.js +1 -1
  49. package/dist/_esm5.processed/compat/generate_init_data.js +3 -5
  50. package/dist/_esm5.processed/compat/index.d.ts +6 -3
  51. package/dist/_esm5.processed/compat/index.js +2 -2
  52. package/dist/_esm5.processed/compat/is_vtt_cue.d.ts +1 -1
  53. package/dist/_esm5.processed/compat/make_vtt_cue.d.ts +1 -1
  54. package/dist/_esm5.processed/compat/on_height_width_change.d.ts +2 -2
  55. package/dist/_esm5.processed/compat/on_height_width_change.js +3 -2
  56. package/dist/_esm5.processed/compat/patch_webkit_source_buffer.js +28 -29
  57. package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +2 -2
  58. package/dist/_esm5.processed/compat/should_reload_media_source_on_decipherability_update.js +1 -2
  59. package/dist/_esm5.processed/config.d.ts +1 -1
  60. package/dist/_esm5.processed/config.js +0 -15
  61. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.d.ts +7 -6
  62. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +45 -22
  63. package/dist/_esm5.processed/core/adaptive/buffer_based_chooser.d.ts +1 -1
  64. package/dist/_esm5.processed/core/adaptive/buffer_based_chooser.js +11 -10
  65. package/dist/_esm5.processed/core/adaptive/guess_based_chooser.d.ts +4 -4
  66. package/dist/_esm5.processed/core/adaptive/guess_based_chooser.js +7 -6
  67. package/dist/_esm5.processed/core/adaptive/index.d.ts +3 -2
  68. package/dist/_esm5.processed/core/adaptive/network_analyzer.d.ts +4 -4
  69. package/dist/_esm5.processed/core/adaptive/network_analyzer.js +43 -38
  70. package/dist/_esm5.processed/core/adaptive/utils/bandwidth_estimator.js +1 -1
  71. package/dist/_esm5.processed/core/adaptive/utils/ewma.js +1 -2
  72. package/dist/_esm5.processed/core/adaptive/utils/filter_by_bitrate.d.ts +1 -1
  73. package/dist/_esm5.processed/core/adaptive/utils/filter_by_width.d.ts +1 -1
  74. package/dist/_esm5.processed/core/adaptive/utils/filter_by_width.js +3 -6
  75. package/dist/_esm5.processed/core/adaptive/utils/get_buffer_levels.js +7 -4
  76. package/dist/_esm5.processed/core/adaptive/utils/last_estimate_storage.d.ts +1 -1
  77. package/dist/_esm5.processed/core/adaptive/utils/pending_requests_store.d.ts +2 -1
  78. package/dist/_esm5.processed/core/adaptive/utils/representation_score_calculator.d.ts +1 -1
  79. package/dist/_esm5.processed/core/adaptive/utils/representation_score_calculator.js +8 -5
  80. package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.d.ts +1 -1
  81. package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +5 -3
  82. package/dist/_esm5.processed/core/api/debug/buffer_graph.d.ts +1 -1
  83. package/dist/_esm5.processed/core/api/debug/buffer_graph.js +3 -8
  84. package/dist/_esm5.processed/core/api/debug/buffer_size_graph.js +1 -2
  85. package/dist/_esm5.processed/core/api/debug/modules/general_info.d.ts +2 -2
  86. package/dist/_esm5.processed/core/api/debug/modules/general_info.js +17 -13
  87. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.d.ts +3 -3
  88. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +4 -2
  89. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.d.ts +2 -2
  90. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +1 -1
  91. package/dist/_esm5.processed/core/api/debug/render.d.ts +2 -2
  92. package/dist/_esm5.processed/core/api/debug/utils.d.ts +5 -5
  93. package/dist/_esm5.processed/core/api/index.d.ts +1 -1
  94. package/dist/_esm5.processed/core/api/option_utils.d.ts +3 -3
  95. package/dist/_esm5.processed/core/api/option_utils.js +85 -48
  96. package/dist/_esm5.processed/core/api/playback_observer.d.ts +16 -18
  97. package/dist/_esm5.processed/core/api/playback_observer.js +65 -42
  98. package/dist/_esm5.processed/core/api/public_api.d.ts +10 -9
  99. package/dist/_esm5.processed/core/api/public_api.js +103 -94
  100. package/dist/_esm5.processed/core/api/tracks_management/media_element_track_choice_manager.d.ts +1 -1
  101. package/dist/_esm5.processed/core/api/tracks_management/media_element_track_choice_manager.js +25 -14
  102. package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.d.ts +3 -3
  103. package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.js +72 -80
  104. package/dist/_esm5.processed/core/api/utils.d.ts +5 -5
  105. package/dist/_esm5.processed/core/api/utils.js +5 -8
  106. package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.d.ts +12 -54
  107. package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +55 -66
  108. package/dist/_esm5.processed/core/decrypt/attach_media_keys.d.ts +10 -5
  109. package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +16 -8
  110. package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +11 -2
  111. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +136 -65
  112. package/dist/_esm5.processed/core/decrypt/create_or_load_session.d.ts +5 -4
  113. package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +18 -7
  114. package/dist/_esm5.processed/core/decrypt/create_session.d.ts +5 -4
  115. package/dist/_esm5.processed/core/decrypt/create_session.js +6 -12
  116. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +1 -2
  117. package/dist/_esm5.processed/core/decrypt/find_key_system.d.ts +13 -3
  118. package/dist/_esm5.processed/core/decrypt/find_key_system.js +45 -22
  119. package/dist/_esm5.processed/core/decrypt/get_key_system_configuration.js +1 -2
  120. package/dist/_esm5.processed/core/decrypt/get_media_keys.d.ts +9 -4
  121. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +17 -6
  122. package/dist/_esm5.processed/core/decrypt/init_media_keys.d.ts +3 -3
  123. package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +2 -2
  124. package/dist/_esm5.processed/core/decrypt/session_events_listener.js +12 -16
  125. package/dist/_esm5.processed/core/decrypt/set_server_certificate.d.ts +3 -3
  126. package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +6 -7
  127. package/dist/_esm5.processed/core/decrypt/types.d.ts +11 -5
  128. package/dist/_esm5.processed/core/decrypt/utils/are_init_values_compatible.js +20 -12
  129. package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.d.ts +2 -2
  130. package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.js +5 -4
  131. package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.d.ts +1 -1
  132. package/dist/_esm5.processed/core/decrypt/utils/clean_old_stored_persistent_info.d.ts +1 -1
  133. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.d.ts +1 -1
  134. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +16 -9
  135. package/dist/_esm5.processed/core/decrypt/utils/is_session_usable.d.ts +1 -1
  136. package/dist/_esm5.processed/core/decrypt/utils/is_session_usable.js +1 -2
  137. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.d.ts +1 -1
  138. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +1 -2
  139. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +11 -13
  140. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +13 -13
  141. package/dist/_esm5.processed/core/decrypt/utils/media_keys_infos_store.d.ts +8 -3
  142. package/dist/_esm5.processed/core/decrypt/utils/media_keys_infos_store.js +1 -2
  143. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +3 -3
  144. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +27 -16
  145. package/dist/_esm5.processed/core/decrypt/utils/serializable_bytes.js +1 -1
  146. package/dist/_esm5.processed/core/decrypt/utils/server_certificate_store.d.ts +1 -1
  147. package/dist/_esm5.processed/core/decrypt/utils/server_certificate_store.js +19 -12
  148. package/dist/_esm5.processed/core/fetchers/cdn_prioritizer.d.ts +2 -2
  149. package/dist/_esm5.processed/core/fetchers/cdn_prioritizer.js +5 -6
  150. package/dist/_esm5.processed/core/fetchers/index.d.ts +6 -3
  151. package/dist/_esm5.processed/core/fetchers/index.js +1 -1
  152. package/dist/_esm5.processed/core/fetchers/manifest/index.d.ts +3 -2
  153. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +2 -2
  154. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +68 -61
  155. package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +4 -3
  156. package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +4 -3
  157. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +9 -8
  158. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +41 -29
  159. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +5 -5
  160. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +2 -3
  161. package/dist/_esm5.processed/core/fetchers/segment/task_prioritizer.d.ts +1 -1
  162. package/dist/_esm5.processed/core/fetchers/segment/task_prioritizer.js +19 -18
  163. package/dist/_esm5.processed/core/fetchers/utils/error_selector.d.ts +1 -1
  164. package/dist/_esm5.processed/core/fetchers/utils/error_selector.js +1 -1
  165. package/dist/_esm5.processed/core/fetchers/utils/schedule_request.d.ts +3 -3
  166. package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +25 -25
  167. package/dist/_esm5.processed/core/init/directfile_content_initializer.d.ts +4 -4
  168. package/dist/_esm5.processed/core/init/directfile_content_initializer.js +21 -17
  169. package/dist/_esm5.processed/core/init/index.d.ts +2 -1
  170. package/dist/_esm5.processed/core/init/index.js +1 -1
  171. package/dist/_esm5.processed/core/init/media_source_content_initializer.d.ts +9 -9
  172. package/dist/_esm5.processed/core/init/media_source_content_initializer.js +64 -32
  173. package/dist/_esm5.processed/core/init/types.d.ts +10 -12
  174. package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.d.ts +6 -5
  175. package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.js +20 -19
  176. package/dist/_esm5.processed/core/init/utils/create_media_source.d.ts +1 -1
  177. package/dist/_esm5.processed/core/init/utils/create_media_source.js +2 -3
  178. package/dist/_esm5.processed/core/init/utils/create_stream_playback_observer.d.ts +6 -6
  179. package/dist/_esm5.processed/core/init/utils/create_stream_playback_observer.js +5 -3
  180. package/dist/_esm5.processed/core/init/utils/end_of_stream.d.ts +1 -1
  181. package/dist/_esm5.processed/core/init/utils/get_initial_time.d.ts +1 -1
  182. package/dist/_esm5.processed/core/init/utils/get_initial_time.js +12 -15
  183. package/dist/_esm5.processed/core/init/utils/get_loaded_reference.d.ts +3 -3
  184. package/dist/_esm5.processed/core/init/utils/get_loaded_reference.js +1 -2
  185. package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.d.ts +9 -9
  186. package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +39 -3
  187. package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.d.ts +9 -8
  188. package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.js +12 -9
  189. package/dist/_esm5.processed/core/init/utils/media_source_duration_updater.js +10 -7
  190. package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +7 -6
  191. package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +24 -24
  192. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/are_same_stream_events.js +1 -3
  193. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/index.d.ts +1 -1
  194. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.d.ts +2 -2
  195. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.js +14 -6
  196. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.d.ts +3 -3
  197. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.js +12 -19
  198. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/types.d.ts +1 -1
  199. package/dist/_esm5.processed/core/init/utils/throw_on_media_error.d.ts +1 -1
  200. package/dist/_esm5.processed/core/init/utils/throw_on_media_error.js +11 -6
  201. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +6 -6
  202. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +12 -13
  203. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.d.ts +3 -2
  204. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +6 -9
  205. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +3 -2
  206. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +1 -1
  207. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +2 -1
  208. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +7 -7
  209. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.d.ts +1 -1
  210. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +4 -4
  211. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/update_proportional_elements.js +1 -2
  212. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.d.ts +1 -1
  213. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.js +2 -6
  214. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +2 -1
  215. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +2 -2
  216. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/parsers.d.ts +1 -1
  217. package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +5 -7
  218. package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +1 -1
  219. package/dist/_esm5.processed/core/segment_buffers/index.d.ts +8 -4
  220. package/dist/_esm5.processed/core/segment_buffers/index.js +2 -2
  221. package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.d.ts +1 -1
  222. package/dist/_esm5.processed/core/segment_buffers/inventory/index.d.ts +6 -4
  223. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +4 -4
  224. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +63 -54
  225. package/dist/_esm5.processed/core/segment_buffers/inventory/types.d.ts +1 -1
  226. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +2 -2
  227. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +17 -23
  228. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +3 -3
  229. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +49 -22
  230. package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +8 -7
  231. package/dist/_esm5.processed/core/stream/adaptation/utils/create_representation_estimator.d.ts +7 -6
  232. package/dist/_esm5.processed/core/stream/adaptation/utils/create_representation_estimator.js +2 -1
  233. package/dist/_esm5.processed/core/stream/index.d.ts +6 -5
  234. package/dist/_esm5.processed/core/stream/orchestrator/get_time_ranges_for_content.d.ts +3 -3
  235. package/dist/_esm5.processed/core/stream/orchestrator/get_time_ranges_for_content.js +2 -2
  236. package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +3 -2
  237. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +9 -7
  238. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +47 -34
  239. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +3 -3
  240. package/dist/_esm5.processed/core/stream/period/period_stream.js +49 -16
  241. package/dist/_esm5.processed/core/stream/period/types.d.ts +15 -12
  242. package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +9 -9
  243. package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +26 -25
  244. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +3 -3
  245. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +47 -23
  246. package/dist/_esm5.processed/core/stream/representation/types.d.ts +9 -8
  247. package/dist/_esm5.processed/core/stream/representation/utils/append_segment_to_buffer.d.ts +4 -4
  248. package/dist/_esm5.processed/core/stream/representation/utils/append_segment_to_buffer.js +10 -7
  249. package/dist/_esm5.processed/core/stream/representation/utils/check_for_discontinuity.d.ts +4 -3
  250. package/dist/_esm5.processed/core/stream/representation/utils/check_for_discontinuity.js +16 -18
  251. package/dist/_esm5.processed/core/stream/representation/utils/downloading_queue.d.ts +7 -6
  252. package/dist/_esm5.processed/core/stream/representation/utils/downloading_queue.js +11 -11
  253. package/dist/_esm5.processed/core/stream/representation/utils/force_garbage_collection.d.ts +2 -2
  254. package/dist/_esm5.processed/core/stream/representation/utils/force_garbage_collection.js +6 -8
  255. package/dist/_esm5.processed/core/stream/representation/utils/get_buffer_status.d.ts +5 -4
  256. package/dist/_esm5.processed/core/stream/representation/utils/get_buffer_status.js +40 -19
  257. package/dist/_esm5.processed/core/stream/representation/utils/get_needed_segments.d.ts +4 -3
  258. package/dist/_esm5.processed/core/stream/representation/utils/get_needed_segments.js +27 -28
  259. package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.d.ts +6 -5
  260. package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.js +7 -5
  261. package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.d.ts +8 -7
  262. package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.js +13 -10
  263. package/dist/_esm5.processed/default_config.js +20 -16
  264. package/dist/_esm5.processed/errors/encrypted_media_error.d.ts +2 -2
  265. package/dist/_esm5.processed/errors/encrypted_media_error.js +1 -1
  266. package/dist/_esm5.processed/errors/error_codes.d.ts +1 -1
  267. package/dist/_esm5.processed/errors/error_codes.js +1 -1
  268. package/dist/_esm5.processed/errors/format_error.d.ts +2 -2
  269. package/dist/_esm5.processed/errors/format_error.js +1 -2
  270. package/dist/_esm5.processed/errors/index.d.ts +6 -3
  271. package/dist/_esm5.processed/errors/index.js +2 -2
  272. package/dist/_esm5.processed/errors/is_known_error.d.ts +1 -1
  273. package/dist/_esm5.processed/errors/is_known_error.js +2 -2
  274. package/dist/_esm5.processed/errors/media_error.d.ts +3 -3
  275. package/dist/_esm5.processed/errors/media_error.js +4 -7
  276. package/dist/_esm5.processed/errors/network_error.d.ts +2 -2
  277. package/dist/_esm5.processed/errors/network_error.js +3 -3
  278. package/dist/_esm5.processed/errors/other_error.d.ts +1 -1
  279. package/dist/_esm5.processed/errors/other_error.js +1 -1
  280. package/dist/_esm5.processed/errors/request_error.d.ts +1 -1
  281. package/dist/_esm5.processed/experimental/features/dash_wasm.d.ts +2 -2
  282. package/dist/_esm5.processed/experimental/features/debug_element.d.ts +1 -1
  283. package/dist/_esm5.processed/experimental/features/local.d.ts +1 -1
  284. package/dist/_esm5.processed/experimental/features/metaplaylist.d.ts +1 -1
  285. package/dist/_esm5.processed/experimental/index.d.ts +1 -1
  286. package/dist/_esm5.processed/experimental/index.js +1 -1
  287. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/features/dash.d.ts +1 -1
  288. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/features/metaplaylist.d.ts +1 -1
  289. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/index.d.ts +1 -1
  290. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/index.js +2 -2
  291. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_and_push_segment.d.ts +3 -3
  292. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_and_push_segment.js +7 -3
  293. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.d.ts +1 -1
  294. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +1 -2
  295. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.d.ts +2 -2
  296. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.js +2 -2
  297. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/types.d.ts +3 -2
  298. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.d.ts +2 -2
  299. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +12 -18
  300. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +13 -23
  301. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.d.ts +1 -1
  302. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +8 -7
  303. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.d.ts +1 -1
  304. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +9 -13
  305. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +4 -3
  306. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +5 -3
  307. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/capabilities.d.ts +1 -1
  308. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/capabilities.js +10 -47
  309. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.d.ts +2 -1
  310. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +8 -5
  311. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.d.ts +2 -1
  312. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +21 -13
  313. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.d.ts +2 -1
  314. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +22 -18
  315. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.js +4 -7
  316. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/index.d.ts +1 -1
  317. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.d.ts +2 -1
  318. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +3 -5
  319. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.d.ts +1 -1
  320. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.js +4 -10
  321. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.d.ts +2 -1
  322. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +2 -3
  323. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.d.ts +2 -1
  324. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +2 -3
  325. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +2 -2
  326. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/utils.d.ts +1 -1
  327. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/utils.js +6 -6
  328. package/dist/_esm5.processed/experimental/tools/parseBIFThumbnails.js +5 -4
  329. package/dist/_esm5.processed/features/add_features.d.ts +1 -1
  330. package/dist/_esm5.processed/features/features_object.d.ts +1 -1
  331. package/dist/_esm5.processed/features/features_object.js +4 -3
  332. package/dist/_esm5.processed/features/index.d.ts +3 -2
  333. package/dist/_esm5.processed/features/index.js +1 -1
  334. package/dist/_esm5.processed/features/list/bif_parser.d.ts +1 -1
  335. package/dist/_esm5.processed/features/list/dash.d.ts +1 -1
  336. package/dist/_esm5.processed/features/list/directfile.d.ts +1 -1
  337. package/dist/_esm5.processed/features/list/eme.d.ts +1 -1
  338. package/dist/_esm5.processed/features/list/html_sami_parser.d.ts +1 -1
  339. package/dist/_esm5.processed/features/list/html_srt_parser.d.ts +1 -1
  340. package/dist/_esm5.processed/features/list/html_text_buffer.d.ts +1 -1
  341. package/dist/_esm5.processed/features/list/html_ttml_parser.d.ts +1 -1
  342. package/dist/_esm5.processed/features/list/html_vtt_parser.d.ts +1 -1
  343. package/dist/_esm5.processed/features/list/image_buffer.d.ts +1 -1
  344. package/dist/_esm5.processed/features/list/native_sami_parser.d.ts +1 -1
  345. package/dist/_esm5.processed/features/list/native_srt_parser.d.ts +1 -1
  346. package/dist/_esm5.processed/features/list/native_text_buffer.d.ts +1 -1
  347. package/dist/_esm5.processed/features/list/native_ttml_parser.d.ts +1 -1
  348. package/dist/_esm5.processed/features/list/native_vtt_parser.d.ts +1 -1
  349. package/dist/_esm5.processed/features/list/smooth.d.ts +1 -1
  350. package/dist/_esm5.processed/features/types.d.ts +11 -11
  351. package/dist/_esm5.processed/manifest/adaptation.d.ts +3 -3
  352. package/dist/_esm5.processed/manifest/adaptation.js +24 -14
  353. package/dist/_esm5.processed/manifest/index.d.ts +9 -5
  354. package/dist/_esm5.processed/manifest/index.js +4 -8
  355. package/dist/_esm5.processed/manifest/manifest.d.ts +8 -7
  356. package/dist/_esm5.processed/manifest/manifest.js +37 -33
  357. package/dist/_esm5.processed/manifest/period.d.ts +4 -4
  358. package/dist/_esm5.processed/manifest/period.js +7 -14
  359. package/dist/_esm5.processed/manifest/representation.d.ts +4 -4
  360. package/dist/_esm5.processed/manifest/representation.js +5 -5
  361. package/dist/_esm5.processed/manifest/representation_index/index.d.ts +3 -2
  362. package/dist/_esm5.processed/manifest/representation_index/index.js +1 -1
  363. package/dist/_esm5.processed/manifest/representation_index/static.d.ts +1 -1
  364. package/dist/_esm5.processed/manifest/representation_index/static.js +6 -2
  365. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +6 -5
  366. package/dist/_esm5.processed/manifest/update_period_in_place.d.ts +3 -3
  367. package/dist/_esm5.processed/manifest/update_period_in_place.js +9 -9
  368. package/dist/_esm5.processed/manifest/update_periods.d.ts +2 -2
  369. package/dist/_esm5.processed/manifest/update_periods.js +6 -3
  370. package/dist/_esm5.processed/manifest/utils.d.ts +4 -4
  371. package/dist/_esm5.processed/manifest/utils.js +6 -4
  372. package/dist/_esm5.processed/parsers/containers/isobmff/create_box.d.ts +1 -1
  373. package/dist/_esm5.processed/parsers/containers/isobmff/create_box.js +5 -4
  374. package/dist/_esm5.processed/parsers/containers/isobmff/drm/playready.js +2 -3
  375. package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +3 -5
  376. package/dist/_esm5.processed/parsers/containers/isobmff/index.d.ts +5 -4
  377. package/dist/_esm5.processed/parsers/containers/isobmff/index.js +4 -4
  378. package/dist/_esm5.processed/parsers/containers/isobmff/read.d.ts +1 -1
  379. package/dist/_esm5.processed/parsers/containers/isobmff/read.js +9 -9
  380. package/dist/_esm5.processed/parsers/containers/isobmff/take_pssh_out.js +3 -4
  381. package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +51 -41
  382. package/dist/_esm5.processed/parsers/containers/matroska/index.d.ts +2 -1
  383. package/dist/_esm5.processed/parsers/containers/matroska/index.js +1 -1
  384. package/dist/_esm5.processed/parsers/containers/matroska/utils.js +29 -16
  385. package/dist/_esm5.processed/parsers/images/bif.js +15 -5
  386. package/dist/_esm5.processed/parsers/manifest/dash/common/attach_trickmode_track.d.ts +1 -1
  387. package/dist/_esm5.processed/parsers/manifest/dash/common/convert_supplemental_codecs.js +1 -3
  388. package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.d.ts +1 -1
  389. package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +1 -1
  390. package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.js +4 -12
  391. package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.d.ts +1 -1
  392. package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +4 -5
  393. package/dist/_esm5.processed/parsers/manifest/dash/common/get_minimum_and_maximum_positions.d.ts +1 -1
  394. package/dist/_esm5.processed/parsers/manifest/dash/common/get_minimum_and_maximum_positions.js +5 -2
  395. package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +1 -1
  396. package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.js +5 -6
  397. package/dist/_esm5.processed/parsers/manifest/dash/common/index.d.ts +3 -2
  398. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +4 -4
  399. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +34 -28
  400. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +2 -2
  401. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +7 -4
  402. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +4 -4
  403. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -11
  404. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/index.d.ts +10 -5
  405. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +2 -2
  406. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +30 -18
  407. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +3 -3
  408. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +56 -55
  409. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.d.ts +1 -1
  410. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +2 -6
  411. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.d.ts +1 -1
  412. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.js +11 -15
  413. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.d.ts +1 -1
  414. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +12 -9
  415. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.d.ts +1 -1
  416. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.js +29 -19
  417. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/index.d.ts +3 -2
  418. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +6 -6
  419. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +73 -59
  420. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +2 -4
  421. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +1 -1
  422. package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.js +7 -8
  423. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +4 -4
  424. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +52 -50
  425. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_availability_start_time.d.ts +1 -1
  426. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +6 -6
  427. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +52 -31
  428. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +4 -4
  429. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +41 -30
  430. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +4 -4
  431. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +1 -2
  432. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +4 -4
  433. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +63 -64
  434. package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.d.ts +1 -1
  435. package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +4 -2
  436. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.d.ts +1 -1
  437. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +73 -37
  438. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.d.ts +1 -1
  439. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +1 -2
  440. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/ContentComponent.d.ts +1 -1
  441. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/ContentProtection.d.ts +1 -1
  442. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/EventStream.d.ts +1 -1
  443. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/EventStream.js +13 -7
  444. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Initialization.d.ts +1 -1
  445. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Initialization.js +5 -3
  446. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/MPD.d.ts +1 -1
  447. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/MPD.js +44 -27
  448. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Period.d.ts +1 -1
  449. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Period.js +14 -8
  450. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.d.ts +1 -1
  451. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +36 -18
  452. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.d.ts +1 -1
  453. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.js +36 -18
  454. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentList.d.ts +1 -1
  455. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.d.ts +1 -1
  456. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +17 -8
  457. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTimeline.d.ts +1 -1
  458. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.d.ts +1 -1
  459. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.js +9 -5
  460. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.d.ts +8 -26
  461. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +6 -12
  462. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.d.ts +2 -2
  463. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +9 -4
  464. package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +2 -2
  465. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/index.d.ts +3 -2
  466. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.d.ts +1 -1
  467. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +29 -16
  468. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.d.ts +3 -2
  469. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +22 -35
  470. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.d.ts +2 -2
  471. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.d.ts +2 -2
  472. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.d.ts +2 -2
  473. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.js +3 -1
  474. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.d.ts +3 -2
  475. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +2 -4
  476. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Label.d.ts +3 -0
  477. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Label.js +9 -0
  478. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.d.ts +3 -2
  479. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +5 -5
  480. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.d.ts +3 -2
  481. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +9 -6
  482. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.d.ts +3 -2
  483. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +8 -16
  484. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.d.ts +2 -2
  485. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.d.ts +2 -2
  486. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.js +5 -10
  487. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.d.ts +3 -2
  488. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.d.ts +2 -2
  489. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.js +11 -18
  490. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.d.ts +2 -2
  491. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.js +2 -4
  492. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.d.ts +3 -2
  493. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +5 -5
  494. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.d.ts +2 -2
  495. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +5 -6
  496. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/parsers_stack.d.ts +1 -1
  497. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/parsers_stack.js +1 -2
  498. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  499. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/utils.d.ts +1 -1
  500. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/utils.js +2 -4
  501. package/dist/_esm5.processed/parsers/manifest/local/index.d.ts +1 -1
  502. package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.d.ts +2 -2
  503. package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +25 -16
  504. package/dist/_esm5.processed/parsers/manifest/local/representation_index.d.ts +2 -2
  505. package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +5 -10
  506. package/dist/_esm5.processed/parsers/manifest/metaplaylist/index.d.ts +3 -2
  507. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
  508. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +33 -29
  509. package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.d.ts +2 -2
  510. package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +9 -7
  511. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +3 -3
  512. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +136 -109
  513. package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +3 -3
  514. package/dist/_esm5.processed/parsers/manifest/smooth/index.d.ts +4 -2
  515. package/dist/_esm5.processed/parsers/manifest/smooth/index.js +1 -1
  516. package/dist/_esm5.processed/parsers/manifest/smooth/parse_C_nodes.js +6 -6
  517. package/dist/_esm5.processed/parsers/manifest/smooth/parse_protection_node.js +12 -8
  518. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +2 -2
  519. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +48 -53
  520. package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +10 -7
  521. package/dist/_esm5.processed/parsers/manifest/smooth/utils/tokens.d.ts +1 -1
  522. package/dist/_esm5.processed/parsers/manifest/smooth/utils/tokens.js +2 -3
  523. package/dist/_esm5.processed/parsers/manifest/types.d.ts +2 -2
  524. package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.d.ts +1 -1
  525. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +1 -1
  526. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +9 -6
  527. package/dist/_esm5.processed/parsers/manifest/utils/get_first_time_from_adaptation.d.ts +1 -1
  528. package/dist/_esm5.processed/parsers/manifest/utils/get_first_time_from_adaptation.js +5 -4
  529. package/dist/_esm5.processed/parsers/manifest/utils/get_last_time_from_adaptation.d.ts +1 -1
  530. package/dist/_esm5.processed/parsers/manifest/utils/get_last_time_from_adaptation.js +5 -4
  531. package/dist/_esm5.processed/parsers/manifest/utils/get_maximum_positions.d.ts +1 -1
  532. package/dist/_esm5.processed/parsers/manifest/utils/get_maximum_positions.js +10 -16
  533. package/dist/_esm5.processed/parsers/manifest/utils/get_minimum_position.d.ts +1 -1
  534. package/dist/_esm5.processed/parsers/manifest/utils/get_minimum_position.js +4 -10
  535. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +1 -1
  536. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +4 -5
  537. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +1 -1
  538. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +18 -18
  539. package/dist/_esm5.processed/parsers/texttracks/index.d.ts +1 -1
  540. package/dist/_esm5.processed/parsers/texttracks/sami/html.d.ts +1 -1
  541. package/dist/_esm5.processed/parsers/texttracks/sami/html.js +15 -15
  542. package/dist/_esm5.processed/parsers/texttracks/sami/native.d.ts +1 -1
  543. package/dist/_esm5.processed/parsers/texttracks/sami/native.js +7 -14
  544. package/dist/_esm5.processed/parsers/texttracks/srt/html.js +6 -6
  545. package/dist/_esm5.processed/parsers/texttracks/srt/native.d.ts +1 -1
  546. package/dist/_esm5.processed/parsers/texttracks/srt/native.js +1 -7
  547. package/dist/_esm5.processed/parsers/texttracks/srt/parse_cue.js +4 -8
  548. package/dist/_esm5.processed/parsers/texttracks/ttml/get_parameters.js +4 -8
  549. package/dist/_esm5.processed/parsers/texttracks/ttml/get_time_delimiters.d.ts +1 -1
  550. package/dist/_esm5.processed/parsers/texttracks/ttml/get_time_delimiters.js +6 -8
  551. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_default_ttml_paragraph_style.js +2 -2
  552. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_extent.js +2 -6
  553. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +3 -4
  554. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +2 -6
  555. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_padding.js +2 -6
  556. package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.d.ts +2 -2
  557. package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +22 -21
  558. package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +2 -2
  559. package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_cue.d.ts +1 -1
  560. package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_cue.js +5 -3
  561. package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_ttml_to_div.d.ts +1 -1
  562. package/dist/_esm5.processed/parsers/texttracks/ttml/html/ttml_color_to_css_color.js +34 -19
  563. package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_cue.d.ts +2 -2
  564. package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_cue.js +9 -10
  565. package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_ttml_to_vtt.d.ts +1 -1
  566. package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.d.ts +3 -3
  567. package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.js +28 -16
  568. package/dist/_esm5.processed/parsers/texttracks/ttml/resolve_styles_inheritance.d.ts +1 -1
  569. package/dist/_esm5.processed/parsers/texttracks/ttml/time_parsing.d.ts +1 -1
  570. package/dist/_esm5.processed/parsers/texttracks/ttml/time_parsing.js +2 -2
  571. package/dist/_esm5.processed/parsers/texttracks/types.d.ts +1 -1
  572. package/dist/_esm5.processed/parsers/texttracks/webvtt/get_cue_blocks.js +1 -1
  573. package/dist/_esm5.processed/parsers/texttracks/webvtt/get_style_blocks.js +2 -1
  574. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/convert_payload_to_html.d.ts +1 -1
  575. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.d.ts +1 -1
  576. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +6 -12
  577. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_styled_element.d.ts +1 -1
  578. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_styled_element.js +7 -8
  579. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/index.d.ts +1 -1
  580. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/parse_style_block.js +4 -4
  581. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/parse_webvtt_to_div.d.ts +1 -1
  582. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +1 -1
  583. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.js +4 -10
  584. package/dist/_esm5.processed/parsers/texttracks/webvtt/native/parse_vtt_to_cues.d.ts +1 -1
  585. package/dist/_esm5.processed/parsers/texttracks/webvtt/native/parse_vtt_to_cues.js +2 -6
  586. package/dist/_esm5.processed/parsers/texttracks/webvtt/native/set_settings_on_cue.d.ts +1 -1
  587. package/dist/_esm5.processed/parsers/texttracks/webvtt/native/to_native_cue.d.ts +1 -1
  588. package/dist/_esm5.processed/parsers/texttracks/webvtt/native/to_native_cue.js +1 -1
  589. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.js +2 -4
  590. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_timestamp.js +1 -2
  591. package/dist/_esm5.processed/parsers/texttracks/webvtt/utils.js +6 -6
  592. package/dist/_esm5.processed/public_types.d.ts +13 -11
  593. package/dist/_esm5.processed/tools/TextTrackRenderer/index.d.ts +3 -2
  594. package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.d.ts +2 -2
  595. package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +15 -10
  596. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.d.ts +1 -1
  597. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +2 -3
  598. package/dist/_esm5.processed/transports/dash/construct_segment_url.d.ts +2 -2
  599. package/dist/_esm5.processed/transports/dash/construct_segment_url.js +5 -3
  600. package/dist/_esm5.processed/transports/dash/extract_complete_chunks.js +2 -2
  601. package/dist/_esm5.processed/transports/dash/get_events_out_of_emsgs.d.ts +2 -2
  602. package/dist/_esm5.processed/transports/dash/get_events_out_of_emsgs.js +9 -10
  603. package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +3 -3
  604. package/dist/_esm5.processed/transports/dash/image_pipelines.js +32 -19
  605. package/dist/_esm5.processed/transports/dash/init_segment_loader.d.ts +3 -3
  606. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +46 -22
  607. package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.d.ts +2 -2
  608. package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +13 -9
  609. package/dist/_esm5.processed/transports/dash/manifest_parser.d.ts +2 -2
  610. package/dist/_esm5.processed/transports/dash/manifest_parser.js +35 -22
  611. package/dist/_esm5.processed/transports/dash/pipelines.d.ts +1 -1
  612. package/dist/_esm5.processed/transports/dash/pipelines.js +11 -15
  613. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +4 -4
  614. package/dist/_esm5.processed/transports/dash/segment_loader.js +30 -21
  615. package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +2 -2
  616. package/dist/_esm5.processed/transports/dash/segment_parser.js +47 -21
  617. package/dist/_esm5.processed/transports/dash/text_loader.d.ts +2 -2
  618. package/dist/_esm5.processed/transports/dash/text_loader.js +19 -19
  619. package/dist/_esm5.processed/transports/dash/text_parser.d.ts +2 -2
  620. package/dist/_esm5.processed/transports/dash/text_parser.js +45 -24
  621. package/dist/_esm5.processed/transports/local/pipelines.d.ts +1 -1
  622. package/dist/_esm5.processed/transports/local/pipelines.js +7 -8
  623. package/dist/_esm5.processed/transports/local/segment_loader.d.ts +3 -3
  624. package/dist/_esm5.processed/transports/local/segment_loader.js +14 -6
  625. package/dist/_esm5.processed/transports/local/segment_parser.d.ts +1 -1
  626. package/dist/_esm5.processed/transports/local/segment_parser.js +31 -13
  627. package/dist/_esm5.processed/transports/local/text_parser.d.ts +1 -1
  628. package/dist/_esm5.processed/transports/local/text_parser.js +44 -19
  629. package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +4 -4
  630. package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.js +9 -5
  631. package/dist/_esm5.processed/transports/metaplaylist/pipelines.d.ts +1 -1
  632. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +25 -18
  633. package/dist/_esm5.processed/transports/smooth/extract_timings_infos.d.ts +2 -2
  634. package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +16 -15
  635. package/dist/_esm5.processed/transports/smooth/isobmff/create_audio_init_segment.js +3 -3
  636. package/dist/_esm5.processed/transports/smooth/isobmff/create_boxes.js +14 -32
  637. package/dist/_esm5.processed/transports/smooth/isobmff/create_init_segment.js +2 -2
  638. package/dist/_esm5.processed/transports/smooth/isobmff/create_traf_box.js +2 -2
  639. package/dist/_esm5.processed/transports/smooth/isobmff/get_aaces_header.js +4 -16
  640. package/dist/_esm5.processed/transports/smooth/isobmff/index.d.ts +4 -2
  641. package/dist/_esm5.processed/transports/smooth/isobmff/parse_tfrf.js +2 -2
  642. package/dist/_esm5.processed/transports/smooth/isobmff/parse_tfxd.js +1 -1
  643. package/dist/_esm5.processed/transports/smooth/isobmff/patch_segment.js +11 -10
  644. package/dist/_esm5.processed/transports/smooth/pipelines.d.ts +1 -1
  645. package/dist/_esm5.processed/transports/smooth/pipelines.js +121 -79
  646. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +3 -3
  647. package/dist/_esm5.processed/transports/smooth/segment_loader.js +53 -27
  648. package/dist/_esm5.processed/transports/smooth/utils.d.ts +2 -2
  649. package/dist/_esm5.processed/transports/smooth/utils.js +7 -5
  650. package/dist/_esm5.processed/transports/types.d.ts +11 -25
  651. package/dist/_esm5.processed/transports/utils/byte_range.js +1 -2
  652. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.d.ts +3 -3
  653. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +13 -7
  654. package/dist/_esm5.processed/transports/utils/check_isobmff_integrity.js +3 -3
  655. package/dist/_esm5.processed/transports/utils/find_complete_box.js +3 -2
  656. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +3 -3
  657. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.js +18 -6
  658. package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.d.ts +2 -2
  659. package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +12 -11
  660. package/dist/_esm5.processed/transports/utils/infer_segment_container.d.ts +1 -1
  661. package/dist/_esm5.processed/transports/utils/infer_segment_container.js +1 -3
  662. package/dist/_esm5.processed/transports/utils/parse_text_track.d.ts +4 -4
  663. package/dist/_esm5.processed/transports/utils/parse_text_track.js +9 -6
  664. package/dist/_esm5.processed/utils/are_codecs_compatible.js +5 -1
  665. package/dist/_esm5.processed/utils/array_includes.js +2 -6
  666. package/dist/_esm5.processed/utils/assert.js +3 -4
  667. package/dist/_esm5.processed/utils/base64.js +87 -29
  668. package/dist/_esm5.processed/utils/byte_parsing.js +60 -56
  669. package/dist/_esm5.processed/utils/cancellable_sleep.d.ts +1 -1
  670. package/dist/_esm5.processed/utils/create_cancellable_promise.d.ts +1 -1
  671. package/dist/_esm5.processed/utils/deep_merge.js +4 -4
  672. package/dist/_esm5.processed/utils/event_emitter.d.ts +1 -1
  673. package/dist/_esm5.processed/utils/get_fuzzed_delay.js +1 -1
  674. package/dist/_esm5.processed/utils/hash_buffer.js +1 -1
  675. package/dist/_esm5.processed/utils/initialization_segment_cache.d.ts +2 -2
  676. package/dist/_esm5.processed/utils/languages/index.d.ts +4 -2
  677. package/dist/_esm5.processed/utils/languages/index.js +2 -2
  678. package/dist/_esm5.processed/utils/languages/normalize.d.ts +2 -1
  679. package/dist/_esm5.processed/utils/languages/normalize.js +5 -3
  680. package/dist/_esm5.processed/utils/logger.js +7 -14
  681. package/dist/_esm5.processed/utils/object_assign.js +5 -5
  682. package/dist/_esm5.processed/utils/object_values.d.ts +1 -1
  683. package/dist/_esm5.processed/utils/object_values.js +2 -3
  684. package/dist/_esm5.processed/utils/ranges.d.ts +2 -1
  685. package/dist/_esm5.processed/utils/ranges.js +19 -23
  686. package/dist/_esm5.processed/utils/reference.d.ts +3 -3
  687. package/dist/_esm5.processed/utils/reference.js +1 -3
  688. package/dist/_esm5.processed/utils/request/fetch.d.ts +1 -1
  689. package/dist/_esm5.processed/utils/request/fetch.js +34 -23
  690. package/dist/_esm5.processed/utils/request/index.d.ts +6 -3
  691. package/dist/_esm5.processed/utils/request/index.js +2 -2
  692. package/dist/_esm5.processed/utils/request/xhr.d.ts +1 -1
  693. package/dist/_esm5.processed/utils/request/xhr.js +28 -17
  694. package/dist/_esm5.processed/utils/retry_promise_with_backoff.d.ts +2 -2
  695. package/dist/_esm5.processed/utils/slice_uint8array.js +3 -3
  696. package/dist/_esm5.processed/utils/starts_with.js +3 -3
  697. package/dist/_esm5.processed/utils/string_parsing.js +16 -18
  698. package/dist/_esm5.processed/utils/task_canceller.js +1 -2
  699. package/dist/_esm5.processed/utils/uniq.d.ts +1 -1
  700. package/dist/_esm5.processed/utils/uniq.js +4 -3
  701. package/dist/_esm5.processed/utils/weak_map_memory.js +0 -1
  702. package/dist/_esm5.processed/utils/wrapInPromise.d.ts +1 -1
  703. package/dist/mpd-parser.wasm +0 -0
  704. package/dist/rx-player.js +345 -236
  705. package/dist/rx-player.min.js +1 -1
  706. package/experimental/features/index.d.ts-E +16 -0
  707. package/experimental/features/index.js-E +16 -0
  708. package/experimental/index.d.ts +1 -1
  709. package/experimental/index.d.ts-E +16 -0
  710. package/experimental/index.js +1 -1
  711. package/experimental/index.js-E +16 -0
  712. package/experimental/tools/VideoThumbnailLoader/index.d.ts-E +18 -0
  713. package/experimental/tools/VideoThumbnailLoader/index.js-E +18 -0
  714. package/experimental/tools/index.d.ts-E +16 -0
  715. package/experimental/tools/index.js-E +16 -0
  716. package/features/index.d.ts-E +16 -0
  717. package/features/index.js-E +16 -0
  718. package/logger/index.d.ts-E +17 -0
  719. package/logger/index.js-E +17 -0
  720. package/minimal/index.d.ts-E +17 -0
  721. package/minimal/index.js-E +17 -0
  722. package/package.json +29 -14
  723. package/tools/TextTrackRenderer.d.ts-E +18 -0
  724. package/tools/TextTrackRenderer.js-E +18 -0
  725. package/tools/index.d.ts-E +16 -0
  726. package/tools/index.js-E +16 -0
  727. package/tools/string-utils.d.ts-E +18 -0
  728. package/tools/string-utils.js-E +18 -0
  729. package/types/index.d.ts-E +16 -0
  730. package/types/index.js-E +15 -0
package/CHANGELOG.md CHANGED
@@ -1,1816 +1,2402 @@
1
1
  # Changelog
2
2
 
3
- ## v3.33.4 (upcoming)
3
+ ## v3.33.4 (2024-10-16)
4
4
 
5
5
  ### Bug fixes
6
6
 
7
- - Compat: Fix autoPlay on Tizen when the content starts on a discontinuity [#1500]
7
+ - Compat: Fix autoPlay on Tizen when the content starts on a discontinuity [#1500]
8
+ - Work-around the "hulu issue" seen on firefox 129 and 130 (`1911283` and `1912238` on
9
+ bugzilla) which also impacted the RxPlayer [#1544]
10
+ - Fix rare cases where the active Period would not be advertised by the RxPlayer [#1534]
11
+ - DRM/Compat: Re-create MediaKeys for each content on Philips' NETTV and `KSTB40xx`
12
+ set-top boxes [#1519, #1538]
13
+ - Fix some issues that may arise on BUFFER_FULL situations [#1566]
14
+ - Directfile/Compat: Fix `startAt.fromLastPosition` handling on Safari when playing
15
+ directfile contents [#1574]
16
+ - Consider `stpp.ttml` codec for text format [#1567]
17
+ - DRM/Compat: Re-create MediaKeys for each content on Philips' NETTV, and `KSTB40XX`
18
+ set-top boxes [#1519, #1538]
19
+ - DRM/Compat: fix content not starting on Safari because key are never considered usable
20
+ [#1535]
21
+ - DASH_WASM: fix `Label` element never being parsed [#1543]
22
+ - Fix an off by one issue when relying on keySystems[].maxSessionCacheSize [#1579]
8
23
 
9
24
  ### Other improvements
10
25
 
11
- - DASH: provide a more precize calculation for the timeshift buffer depth [#1492]
26
+ - DASH: provide a more precize calculation for the timeshift buffer depth [#1492]
27
+ - Handle `hev1` codec and `hvc1` codecs as part of the same family of codecs when trying
28
+ to check for compatibility between the two [#1536]
29
+ - Better handle `QuotaExceededError` issue after `appendBuffer` MSE calls when
30
+ `wantedBufferAhead` is set to `Infinity` [#1566]
31
+ - Bring prettier to the v3 [#1545]
12
32
 
13
- ## v3.33.3
33
+ ## v3.33.3 (2024-07-08)
14
34
 
15
35
  ### Bug fixes
16
36
 
17
- - DASH: support absolute path in URL resolution with RFC 3986 implementation [#1446]
18
- - DASH: fix cases of blinking subtitles [#1447]
19
- - Fix precision issues of the `maxVideoBufferSize` API [#1448]
20
- - DASH: Prevent multiple loading of the same segment for some DASH low-latency contents
21
- [#1449]
22
- - Await some delay before re-attempting to push a segment following an error [#1411]
23
- - DRM/Compat: on Edge test comprehensively KeySystems before considering them as usable
24
- [#1450]
25
- - DRM/DASH: Ignore `0x0` key id found in DASH initialization segments are they are often
26
- linked to unencrypted data. [#1466, #1458]
27
- - DRM/Compat: On the PlayStation 5, reload directly when a decryption key become
28
- unusable to prevent fatal errors [#1451]
29
- - Directfile/Compat: On safari on iOS no longer stay stuck in buffering when `autoPlay`
30
- is set to `false` or not set and the video element has the attribute "playsinline"
31
- [#1406, #1404, #1390]
32
- - Directfile/compat: On safari mobile in directfile mode, do not stay in an infinite
33
- `LOADING` state if the `duration` is set to `NaN` (rare issue in a
34
- normally-unsupported multiple RxPlayer-per-media-element scenario) [#1452]
35
- - Fix RxPlay error messages not properly displaying in Chrome's inspector since Chrome 126
36
- [#1474]
37
+ - DASH: support absolute path in URL resolution with RFC 3986 implementation [#1446]
38
+ - DASH: fix cases of blinking subtitles [#1447]
39
+ - Fix precision issues of the `maxVideoBufferSize` API [#1448]
40
+ - DASH: Prevent multiple loading of the same segment for some DASH low-latency contents
41
+ [#1449]
42
+ - Await some delay before re-attempting to push a segment following an error [#1411]
43
+ - DRM/Compat: on Edge test comprehensively KeySystems before considering them as usable
44
+ [#1450]
45
+ - DRM/DASH: Ignore `0x0` key id found in DASH initialization segments are they are often
46
+ linked to unencrypted data. [#1466, #1458]
47
+ - DRM/Compat: On the PlayStation 5, reload directly when a decryption key become unusable
48
+ to prevent fatal errors [#1451]
49
+ - Directfile/Compat: On safari on iOS no longer stay stuck in buffering when `autoPlay` is
50
+ set to `false` or not set and the video element has the attribute "playsinline" [#1406,
51
+ #1404, #1390]
52
+ - Directfile/compat: On safari mobile in directfile mode, do not stay in an infinite
53
+ `LOADING` state if the `duration` is set to `NaN` (rare issue in a normally-unsupported
54
+ multiple RxPlayer-per-media-element scenario) [#1452]
55
+ - Fix RxPlay error messages not properly displaying in Chrome's inspector since Chrome 126
56
+ [#1474]
37
57
 
38
58
  ### Other improvements
39
59
 
40
- - Signal an error if multiple active RxPlayer are linked to the same media element
41
- [#1453]
42
- - Undetermined audio and text track language now have a `normalized` property equal to
43
- `"und"` for better ISO 639-3 compatibility [#1454]
60
+ - Signal an error if multiple active RxPlayer are linked to the same media element [#1453]
61
+ - Undetermined audio and text track language now have a `normalized` property equal to
62
+ `"und"` for better ISO 639-3 compatibility [#1454]
44
63
 
45
64
  ## v3.33.2 (2024-02-27)
46
65
 
47
66
  ### Bug fixes
48
67
 
49
- - dash: Don't unnecessarily reload external `<UTCTiming>` resources at each refresh if it failed for the first request of the Manifest [#1370]
50
- - dash: The `DASH_WASM` feature do not rely on WebAssembly's sign-extension operators anymore as that is poorly supported on older Samsung and LG TVs [#1372]
68
+ - dash: Don't unnecessarily reload external `<UTCTiming>` resources at each refresh if it
69
+ failed for the first request of the Manifest [#1370]
70
+ - dash: The `DASH_WASM` feature do not rely on WebAssembly's sign-extension operators
71
+ anymore as that is poorly supported on older Samsung and LG TVs [#1372]
51
72
 
52
73
  ### Other improvements
53
74
 
54
- - build: automatically install Rust and WASM toolchain locally if unavailable when building the RxPlayer WebAssembly file
55
- - doc: Update our documentation generator and fix all invalid anchors in it
56
- - npm: prevent the publishing of unnecessary files on the npm registry [#1377, #1378]
75
+ - build: automatically install Rust and WASM toolchain locally if unavailable when
76
+ building the RxPlayer WebAssembly file
77
+ - doc: Update our documentation generator and fix all invalid anchors in it
78
+ - npm: prevent the publishing of unnecessary files on the npm registry [#1377, #1378]
57
79
 
58
80
  ## v3.33.0 (2024-01-24)
59
81
 
60
82
  ### Features
61
83
 
62
- - Add `getLivePosition` RxPlayer method [#1300]
63
- - Add `startAt.fromLivePosition` `loadVideo` option [#1300]
64
- - Add the possibility to set a new `keySystems` option on the `reload` API [#1308]
84
+ - Add `getLivePosition` RxPlayer method [#1300]
85
+ - Add `startAt.fromLivePosition` `loadVideo` option [#1300]
86
+ - Add the possibility to set a new `keySystems` option on the `reload` API [#1308]
65
87
 
66
88
  ### Bug fixes
67
89
 
68
- - Fix subtitles "blinking" in some specific conditions, especially with some DASH low-latency contents [#1314]
69
- - DASH: Fix Period overlap resolution logic for when the first Period is removed [#1311]
70
- - TTML: Fix handling of the `tts:lineHeight` attribute [#1320]
71
- - Fix import of the `LOCAL_MANIFEST` experimental feature
72
- - Avoid very rarely skipping segments which initially were too big to be pushed due to memory limitations [#1323]
73
- - Fix issue arising when using track APIs at the exact last possible position of a Period with no consecutive Period [#1337]
74
- - Starting at the end (through a `startAt` `loadVideo` option) or reloading at the end led to the restart of the content [#1338]
75
- - DRM/Safari: also perform Safari DRM work-arounds when the page is launched from the dock [#1351, #1356]
90
+ - Fix subtitles "blinking" in some specific conditions, especially with some DASH
91
+ low-latency contents [#1314]
92
+ - DASH: Fix Period overlap resolution logic for when the first Period is removed [#1311]
93
+ - TTML: Fix handling of the `tts:lineHeight` attribute [#1320]
94
+ - Fix import of the `LOCAL_MANIFEST` experimental feature
95
+ - Avoid very rarely skipping segments which initially were too big to be pushed due to
96
+ memory limitations [#1323]
97
+ - Fix issue arising when using track APIs at the exact last possible position of a Period
98
+ with no consecutive Period [#1337]
99
+ - Starting at the end (through a `startAt` `loadVideo` option) or reloading at the end led
100
+ to the restart of the content [#1338]
101
+ - DRM/Safari: also perform Safari DRM work-arounds when the page is launched from the dock
102
+ [#1351, #1356]
76
103
 
77
104
  ### Other improvements
78
105
 
79
- - DASH: rely on SCTE214 `supplementalCodecs` instead of `codecs` if it's supported to better support backward compatible Dolby Vision contents [#1307]
80
- - DASH: Provide better support of the `availabilityTimeOffset` attribute [#1300]
81
- - DEBUG_ELEMENT: Add unsupported and undecipherable bitrates to the debug element [#1321]
82
- - DEBUG_ELEMENT: update buffer graph maximum size so it becomes more readable for lengthy contents [#1316]
83
- - DEBUG_ELEMENT: always synchronize inventory of segments before rendering it [#1317]
84
- - Remove remaining RxPlayer dependency removing possibility of some application-side bundling errors [#1312]
85
- - Add exception to text Garbage collection logic to avoid unnecessarily reload text segments frequently [#1325]
86
- - Avoid logging too much the buffer's content when our debugging UI or the demo is used [#1341]
87
- - Demo: Fix reporting of live position in demo page [#1313]
106
+ - DASH: rely on SCTE214 `supplementalCodecs` instead of `codecs` if it's supported to
107
+ better support backward compatible Dolby Vision contents [#1307]
108
+ - DASH: Provide better support of the `availabilityTimeOffset` attribute [#1300]
109
+ - DEBUG_ELEMENT: Add unsupported and undecipherable bitrates to the debug element [#1321]
110
+ - DEBUG_ELEMENT: update buffer graph maximum size so it becomes more readable for lengthy
111
+ contents [#1316]
112
+ - DEBUG_ELEMENT: always synchronize inventory of segments before rendering it [#1317]
113
+ - Remove remaining RxPlayer dependency removing possibility of some application-side
114
+ bundling errors [#1312]
115
+ - Add exception to text Garbage collection logic to avoid unnecessarily reload text
116
+ segments frequently [#1325]
117
+ - Avoid logging too much the buffer's content when our debugging UI or the demo is used
118
+ [#1341]
119
+ - Demo: Fix reporting of live position in demo page [#1313]
88
120
 
89
121
  ## v3.32.1 (2023-10-19)
90
122
 
91
123
  ### Features
92
124
 
93
- - DASH: add optional `isSpatialAudio` boolean property to Representation returned by `getAvailableAudioTracks`, `getAudioTrack`, corresponding events, and `trackInfo` optional property of `MediaError` objects to signal Dolby Atmos techology [#1275]
94
- - `LOCAL`: add `isSpatialAudio` property to Representation of the experiment `"local"` transport (used for offline playback) [#1275]
95
- - `addFeatures` static method is now available on all RxPlayer builds. It was previously only in the minimal (`rx-player/minimal` import path) [#1287]
96
- - The `NATIVE_TEXT_BUFFER`, `HTML_TEXT_BUFFER` and `IMAGE_BUFFER` features are now totally optional [#1287, #1293]
125
+ - DASH: add optional `isSpatialAudio` boolean property to Representation returned by
126
+ `getAvailableAudioTracks`, `getAudioTrack`, corresponding events, and `trackInfo`
127
+ optional property of `MediaError` objects to signal Dolby Atmos techology [#1275]
128
+ - `LOCAL`: add `isSpatialAudio` property to Representation of the experiment `"local"`
129
+ transport (used for offline playback) [#1275]
130
+ - `addFeatures` static method is now available on all RxPlayer builds. It was previously
131
+ only in the minimal (`rx-player/minimal` import path) [#1287]
132
+ - The `NATIVE_TEXT_BUFFER`, `HTML_TEXT_BUFFER` and `IMAGE_BUFFER` features are now totally
133
+ optional [#1287, #1293]
97
134
 
98
135
  ### Bug fixes
99
136
 
100
- - Fix `setVideoBitrate` and `setAudioBitrate` API which may have led to a higher quality than wanted in the default `"seamless"` `manualBitrateSwitchingMode` if our buffer-based adaptive logic decided to [#1267, #1271]
101
- - On the PlayStation 5, only switch to the `"LOADED"` state once the HTMLMediaElement's `readyState` of `4` has been reached, as it seems to switch to `3` too soon there [#1257]
102
- - DASH: Fix potential track duplication if more than two `AdaptationSet` have an `adaptation-set-switching` `<SupplementalProperty>` between one another [#1279]
103
- - DASH-WASM: availabilityTimeOffset is actually a floating number [#1278]
137
+ - Fix `setVideoBitrate` and `setAudioBitrate` API which may have led to a higher quality
138
+ than wanted in the default `"seamless"` `manualBitrateSwitchingMode` if our buffer-based
139
+ adaptive logic decided to [#1267, #1271]
140
+ - On the PlayStation 5, only switch to the `"LOADED"` state once the HTMLMediaElement's
141
+ `readyState` of `4` has been reached, as it seems to switch to `3` too soon there
142
+ [#1257]
143
+ - DASH: Fix potential track duplication if more than two `AdaptationSet` have an
144
+ `adaptation-set-switching` `<SupplementalProperty>` between one another [#1279]
145
+ - DASH-WASM: availabilityTimeOffset is actually a floating number [#1278]
104
146
 
105
147
  ### Other improvements
106
148
 
107
- - Do not load the last text segment if the current position goes after it as it is unnecessary [#1256]
108
- - Implement better `NetworkError` messages [#1274]
109
- - Set a better error message for when no `keySystems` option is set when playing an encrypted content
110
- - Fix very small memory leak when reloading a content [#1286]
111
- - Re-check for segments to load immediately after the manifest has been refreshed [#1282]
112
- - When "fallbacking" an undecipherable Representation, now empty the whole buffer if we can't make out where content was in the buffer [#1283]
113
- - Improve segment start detection in buffer when there's unknown data buffered before it [#1284]
114
- - DRM: Selection of alternative EME API like those used on IE11 or Safari has been refactored to facilitate future developments [#1261]
149
+ - Do not load the last text segment if the current position goes after it as it is
150
+ unnecessary [#1256]
151
+ - Implement better `NetworkError` messages [#1274]
152
+ - Set a better error message for when no `keySystems` option is set when playing an
153
+ encrypted content
154
+ - Fix very small memory leak when reloading a content [#1286]
155
+ - Re-check for segments to load immediately after the manifest has been refreshed [#1282]
156
+ - When "fallbacking" an undecipherable Representation, now empty the whole buffer if we
157
+ can't make out where content was in the buffer [#1283]
158
+ - Improve segment start detection in buffer when there's unknown data buffered before it
159
+ [#1284]
160
+ - DRM: Selection of alternative EME API like those used on IE11 or Safari has been
161
+ refactored to facilitate future developments [#1261]
115
162
 
116
163
  ### Deprecated
117
164
 
118
- - Deprecate the `manifestUpdateUrl` `loadVideo` option as it doesn't seem used anymore [#1288]
119
- - Deprecate the `NATIVE_TEXT_BUFFER`, `HTML_TEXT_BUFFER` and `IMAGE_BUFFER` features as they are now unneeded [#1287, #1293]
165
+ - Deprecate the `manifestUpdateUrl` `loadVideo` option as it doesn't seem used anymore
166
+ [#1288]
167
+ - Deprecate the `NATIVE_TEXT_BUFFER`, `HTML_TEXT_BUFFER` and `IMAGE_BUFFER` features as
168
+ they are now unneeded [#1287, #1293]
120
169
 
121
170
  ## v3.31.0 (2023-06-14)
122
171
 
123
172
  ### Features
124
173
 
125
- - Add `isContentLoaded`, `isBuffering`, `isPaused`, and `getLastStoredContentPosition` methods [#1248]
126
- - Add `play` and `paused` events [#1253]
127
- - Add `trackInfo` property to some `MediaError` to expose information on the track that caused the error [#1241]
174
+ - Add `isContentLoaded`, `isBuffering`, `isPaused`, and `getLastStoredContentPosition`
175
+ methods [#1248]
176
+ - Add `play` and `paused` events [#1253]
177
+ - Add `trackInfo` property to some `MediaError` to expose information on the track that
178
+ caused the error [#1241]
128
179
 
129
180
  ### Bug fixes
130
181
 
131
- - DASH: Fix issue which could lead to infinite rebuffering when switching between multiple Periods [#1232]
132
- - Return actual ending duration through the `getVideoDuration` method when playing dynamic contents whose future end is already known [#1235]
133
- - DASH/WASM: actually reject the `DASH_WASM.initialize`'s Promise if it fails [#1238]
134
- - On the PlayStation 5, set `Infinity` MediaSource duration for live contents to prevent playback issues [#1250]
182
+ - DASH: Fix issue which could lead to infinite rebuffering when switching between multiple
183
+ Periods [#1232]
184
+ - Return actual ending duration through the `getVideoDuration` method when playing dynamic
185
+ contents whose future end is already known [#1235]
186
+ - DASH/WASM: actually reject the `DASH_WASM.initialize`'s Promise if it fails [#1238]
187
+ - On the PlayStation 5, set `Infinity` MediaSource duration for live contents to prevent
188
+ playback issues [#1250]
135
189
 
136
190
  ### Other improvements
137
191
 
138
- - adaptive: Perform various adaptive tweaks to avoid switching too much between qualities in some conditions [#1237]
139
- - Directfile: Detect "forced" subtitles on Safari when playing directfile contents (such as HLS) [#1239]
140
- - Improve `"direct"` `audioTrackSwitchingMode` compatibility by re-seeking [#1246]
141
- - The `DEBUG_ELEMENT` feature now uses the `monospace` fallback font as a default for a better rendering on apple devices
142
- - doc: externalize documentation-generator code
192
+ - adaptive: Perform various adaptive tweaks to avoid switching too much between qualities
193
+ in some conditions [#1237]
194
+ - Directfile: Detect "forced" subtitles on Safari when playing directfile contents (such
195
+ as HLS) [#1239]
196
+ - Improve `"direct"` `audioTrackSwitchingMode` compatibility by re-seeking [#1246]
197
+ - The `DEBUG_ELEMENT` feature now uses the `monospace` fallback font as a default for a
198
+ better rendering on apple devices
199
+ - doc: externalize documentation-generator code
143
200
 
144
201
  ## v3.30.0 (2023-03-07)
145
202
 
146
203
  ### Features
147
204
 
148
- - Add `updateContentUrls` API, allowing to update the Manifest's URL during playback [#1182]
149
- - DASH: implement forced-subtitles, adding the `forced` property to the audio tracks API and selecting by default a forced text track linked to the audio track's language if present [#1187]
150
- - DRM: add the `getKeySystemConfiguration` method to the RxPlayer [#1202]
151
- - add experimental `DEBUG_ELEMENT` feature and `createDebugElement` method to render a default debugging HTML element [#1200]
205
+ - Add `updateContentUrls` API, allowing to update the Manifest's URL during playback
206
+ [#1182]
207
+ - DASH: implement forced-subtitles, adding the `forced` property to the audio tracks API
208
+ and selecting by default a forced text track linked to the audio track's language if
209
+ present [#1187]
210
+ - DRM: add the `getKeySystemConfiguration` method to the RxPlayer [#1202]
211
+ - add experimental `DEBUG_ELEMENT` feature and `createDebugElement` method to render a
212
+ default debugging HTML element [#1200]
152
213
 
153
214
  ### Deprecated
154
215
 
155
- - Deprecate the `getVideoLoadedTime` method which can be easily replaced (see Deprecated method documentation)
156
- - Deprecate the `getVideoPlayedTime` method which can be easily replaced (see Deprecated method documentation)
157
- - Deprecate the `transportOptions.aggressiveMode` option
158
- - DRM: Deprecate the `keySystems[].onKeyStatusesChange` callback as no good use case was found for it.
216
+ - Deprecate the `getVideoLoadedTime` method which can be easily replaced (see Deprecated
217
+ method documentation)
218
+ - Deprecate the `getVideoPlayedTime` method which can be easily replaced (see Deprecated
219
+ method documentation)
220
+ - Deprecate the `transportOptions.aggressiveMode` option
221
+ - DRM: Deprecate the `keySystems[].onKeyStatusesChange` callback as no good use case was
222
+ found for it.
159
223
 
160
224
  ### Bug fixes
161
225
 
162
- - Fix segment requesting error when playing a DASH content without an url and without BaseURL elements [#1192]
163
- - API: Stop sending events if the content is stopped due to a side-effect of one of the event handler [#1197]
164
- - text-tracks/ttml: fix inconsistent line spacing when resizing the `textTrackElement` [#1191]
165
- - DRM: Fix race condition leading to a JS error instead of a `NO_PLAYABLE_REPRESENTATION` [#1201]
166
- - DRM/Compat: Renew MediaKeys at each `loadVideo` on all WebOS (LG TV) platforms to work around issues [#1188]
226
+ - Fix segment requesting error when playing a DASH content without an url and without
227
+ BaseURL elements [#1192]
228
+ - API: Stop sending events if the content is stopped due to a side-effect of one of the
229
+ event handler [#1197]
230
+ - text-tracks/ttml: fix inconsistent line spacing when resizing the `textTrackElement`
231
+ [#1191]
232
+ - DRM: Fix race condition leading to a JS error instead of a `NO_PLAYABLE_REPRESENTATION`
233
+ [#1201]
234
+ - DRM/Compat: Renew MediaKeys at each `loadVideo` on all WebOS (LG TV) platforms to work
235
+ around issues [#1188]
167
236
 
168
237
  ### Other improvements
169
238
 
170
- - DASH: better detect closed captions [#1187]
171
- - DASH: handle `endNumber` DASH attribute [#1186]
172
- - DASH: Do not merge AdaptationSet with role "main" anymore [#1214]
173
- - DASH: parse `transferCharacteristics` property in the MPD to better detect hdr [#1212]
174
- - Support encrypted contents on Panasonic 2019 TVs [#1226]
175
- - Better handle SourceBuffer's QuotaExceededError, responsible for `MediaError` with the `BUFFER_FULL_ERROR` code [#1221]
176
- - API: send available...TracksChange events in the very unlikely scenario where tracks are added after a manifest update [#1197]
177
- - Completely remove RxJS dependency from the RxPlayer's source code [#1193]
178
- - DRM: Request PR recommendation when PlayReady is asked and try default recommendation robustnesses [#1189]
239
+ - DASH: better detect closed captions [#1187]
240
+ - DASH: handle `endNumber` DASH attribute [#1186]
241
+ - DASH: Do not merge AdaptationSet with role "main" anymore [#1214]
242
+ - DASH: parse `transferCharacteristics` property in the MPD to better detect hdr [#1212]
243
+ - Support encrypted contents on Panasonic 2019 TVs [#1226]
244
+ - Better handle SourceBuffer's QuotaExceededError, responsible for `MediaError` with the
245
+ `BUFFER_FULL_ERROR` code [#1221]
246
+ - API: send available...TracksChange events in the very unlikely scenario where tracks are
247
+ added after a manifest update [#1197]
248
+ - Completely remove RxJS dependency from the RxPlayer's source code [#1193]
249
+ - DRM: Request PR recommendation when PlayReady is asked and try default recommendation
250
+ robustnesses [#1189]
179
251
 
180
252
  ## v3.29.0 (2022-11-16)
181
253
 
182
254
  ### Features
183
255
 
184
- - add `networkConfig.segmentRequestTimeout` and `networkConfig.manifestRequestTimeout` options to loadVideo to configure the timeout of respectively segment and manifest requests [#1156]
185
- - add `timeout` property to the first argument communicated to a `segmentLoader` (from `loadVideo`'s `transportOptions`) [#1156]
186
- - add `timeout` property to a new third argument communicated to a `manifestLoader` (from `loadVideo`'s `transportOptions`) [#1156]
187
- - DRM: add `keySystems[].onKeyExpiration` to `loadVideo` options to configure the behavior the RxPlayer should have on key expiration [#1157]
188
- - DRM: add `keyStatuses` property to an `EncryptedMediaError` with the `KEY_STATUS_CHANGE_ERROR` code to communicate which key id and key statuses caused issues. [#1157]
256
+ - add `networkConfig.segmentRequestTimeout` and `networkConfig.manifestRequestTimeout`
257
+ options to loadVideo to configure the timeout of respectively segment and manifest
258
+ requests [#1156]
259
+ - add `timeout` property to the first argument communicated to a `segmentLoader` (from
260
+ `loadVideo`'s `transportOptions`) [#1156]
261
+ - add `timeout` property to a new third argument communicated to a `manifestLoader` (from
262
+ `loadVideo`'s `transportOptions`) [#1156]
263
+ - DRM: add `keySystems[].onKeyExpiration` to `loadVideo` options to configure the behavior
264
+ the RxPlayer should have on key expiration [#1157]
265
+ - DRM: add `keyStatuses` property to an `EncryptedMediaError` with the
266
+ `KEY_STATUS_CHANGE_ERROR` code to communicate which key id and key statuses caused
267
+ issues. [#1157]
189
268
 
190
269
  ### Deprecated
191
270
 
192
- - DRM: Deprecate `keySystems[].throwOnLicenseExpiration` `loadVideo` option as this boolean can be replaced with more customizability by the new `keySystems[].onKeyExpiration` `loadVideo` option [#1157]
271
+ - DRM: Deprecate `keySystems[].throwOnLicenseExpiration` `loadVideo` option as this
272
+ boolean can be replaced with more customizability by the new
273
+ `keySystems[].onKeyExpiration` `loadVideo` option [#1157]
193
274
 
194
275
  ### Bug fixes
195
276
 
196
- - Directfile: Fix long-running issues with rare "directfile" contents and some browsers/platforms (seen on Chrome PC and PlayStation 5) where playback would stay in `LOADING` state indefinitely despite playing [#1174]
197
- - DRM: Fix undocumented `keySystems[].videoRobustnesses` `loadVideo` option. `audioRobustnesses` was previously used even for video capabilities [#1171]
198
- - Compat/Directfile: Fix an issue with WebOS (LG TVs) when playing multiple directfile contents with the `stopAtEnd` player option set to `true` [#1154]
199
- - Compat/DRM: Fix infinite loading on WebOS (LG TVs) 2021 and 2022 when loading more than once an encrypted content by resetting decryption capabilities each time [#1175]
200
- - Compat: To work around an issue on WebOS (LG TVs), also specify a request timeout manually through a `setTimeout` call when XMLHttpRequests are created for Manifest and segment requests [#1152]
201
- - Compat/Directfile: Fix an issue on Tizen (Samsung TVs) where playing directfile contents could randomly lead to not having audio [#1170]
202
- - Compat: Fix issue with Tizen (Samsung TVs) where starting playback on a discontinuity could lead to infinite rebuffering [#1140, #1176]
203
- - Compat/Directfile: For `"directfile"` contents, also consider `AudioTrack` with a `description` (without an "s") as audio-description audio tracks to work-around what seems to be a Safari typo [#1160]
204
- - DRM: When using persistent licenses, create new MediaKeySession when `load` resolves with `false`, instead of relying the same, to fix issues with such persistent sessions if the browser cleaned it up [#1139]
205
- - Only call "MediaSource.endOfStream" once, the most visible side-effect should have been repeated logs [#1163]
277
+ - Directfile: Fix long-running issues with rare "directfile" contents and some
278
+ browsers/platforms (seen on Chrome PC and PlayStation 5) where playback would stay in
279
+ `LOADING` state indefinitely despite playing [#1174]
280
+ - DRM: Fix undocumented `keySystems[].videoRobustnesses` `loadVideo` option.
281
+ `audioRobustnesses` was previously used even for video capabilities [#1171]
282
+ - Compat/Directfile: Fix an issue with WebOS (LG TVs) when playing multiple directfile
283
+ contents with the `stopAtEnd` player option set to `true` [#1154]
284
+ - Compat/DRM: Fix infinite loading on WebOS (LG TVs) 2021 and 2022 when loading more than
285
+ once an encrypted content by resetting decryption capabilities each time [#1175]
286
+ - Compat: To work around an issue on WebOS (LG TVs), also specify a request timeout
287
+ manually through a `setTimeout` call when XMLHttpRequests are created for Manifest and
288
+ segment requests [#1152]
289
+ - Compat/Directfile: Fix an issue on Tizen (Samsung TVs) where playing directfile contents
290
+ could randomly lead to not having audio [#1170]
291
+ - Compat: Fix issue with Tizen (Samsung TVs) where starting playback on a discontinuity
292
+ could lead to infinite rebuffering [#1140, #1176]
293
+ - Compat/Directfile: For `"directfile"` contents, also consider `AudioTrack` with a
294
+ `description` (without an "s") as audio-description audio tracks to work-around what
295
+ seems to be a Safari typo [#1160]
296
+ - DRM: When using persistent licenses, create new MediaKeySession when `load` resolves
297
+ with `false`, instead of relying the same, to fix issues with such persistent sessions
298
+ if the browser cleaned it up [#1139]
299
+ - Only call "MediaSource.endOfStream" once, the most visible side-effect should have been
300
+ repeated logs [#1163]
206
301
 
207
302
  ### Other improvements
208
303
 
209
- - DASH: Improve multi-CDN configurations, by smartly selecting the right CDN depending on past status [#1165]
210
- - Allow reverse playback use cases by not skipping gaps and most discontinuities when the playback rate has been set to `0` or a negative value [#1138]
211
- - In the experimental "local" transport, add `incomingRanges` property to signal the time ranges of remaining data, allowing better discontinuity handling and duration estimates for sill-loading dowloaded contents [#1151]
212
- - Only send, through `"warning"` events, one `EncryptedMediaError` with a `KEY_STATUS_CHANGE_ERROR` code when multiple ones arises at the same time [#1157]
304
+ - DASH: Improve multi-CDN configurations, by smartly selecting the right CDN depending on
305
+ past status [#1165]
306
+ - Allow reverse playback use cases by not skipping gaps and most discontinuities when the
307
+ playback rate has been set to `0` or a negative value [#1138]
308
+ - In the experimental "local" transport, add `incomingRanges` property to signal the time
309
+ ranges of remaining data, allowing better discontinuity handling and duration estimates
310
+ for sill-loading dowloaded contents [#1151]
311
+ - Only send, through `"warning"` events, one `EncryptedMediaError` with a
312
+ `KEY_STATUS_CHANGE_ERROR` code when multiple ones arises at the same time [#1157]
213
313
 
214
314
  ## v3.28.0 (2022-07-12)
215
315
 
216
316
  ### Features
217
317
 
218
- - Add `label` to audio, video and text track APIs (such as `getAvailableAudioTracks`) which gives a human-readable description of the corresponding track, if available in the Manifest [#1105, #1109]
219
- - Automatically set the LogLevel to `"DEBUG"` if a global `__RX_PLAYER_DEBUG_MODE__` constant is set to `true`, to simplify debugging [#1115]
318
+ - Add `label` to audio, video and text track APIs (such as `getAvailableAudioTracks`)
319
+ which gives a human-readable description of the corresponding track, if available in the
320
+ Manifest [#1105, #1109]
321
+ - Automatically set the LogLevel to `"DEBUG"` if a global `__RX_PLAYER_DEBUG_MODE__`
322
+ constant is set to `true`, to simplify debugging [#1115]
220
323
 
221
324
  ### Bug fixes
222
325
 
223
- - Use the first **compatible** codec of the current AdaptationSet when creating a SourceBuffer [#1094]
224
- - DASH/DRM: Fix potential infinite rebuffering when a KID is not announced in the MPD [#1113]
225
- - DRM: Fix quality fallback when loading a content whose license has been cached under an extended `singleLicensePer` setting and when starting (and staying) with a quality whose key id is not in it [#1133]
226
- - DASH: Avoid infinite loop due to rounding errors while parsing multi-Periods MPDs [#1111, #1110]
227
- - After a `RELOADING` state, stay in `PAUSED` if the media element was paused synchronously before the side-effect which triggered the reloading (usually coming from the API) was perform [#1132]
228
- - Fix issue with `maxVideoBufferSize` setting which could lead to too much data being buffered [#1125]
229
- - Prevent possibility of requests loops and infinite rebuffering when a pushed segment is always completely and immediately garbage collected by the browser [#1123]
230
- - DASH: Fix potential rare memory leak when stopping the content after it has reloaded at least once [#1135]
231
- - Directfile: Properly announce the audio track's `audioDescription` accessibility attribute in directfile mode on Safari [#1136]
232
- - DASH: Fix issues that could arise if a segment is calculated to start at a negative position [#1122]
233
- - DASH: Fix possibility of wrong segments being requested when a SegmentTimeline in a given Period (whose Period@end is set) had an S@r set to `-1` at its end [#1098]
234
- - DASH: If the first `<S>` has its S@t attribute not set, make as if it is set to `0` [#1118]
326
+ - Use the first **compatible** codec of the current AdaptationSet when creating a
327
+ SourceBuffer [#1094]
328
+ - DASH/DRM: Fix potential infinite rebuffering when a KID is not announced in the MPD
329
+ [#1113]
330
+ - DRM: Fix quality fallback when loading a content whose license has been cached under an
331
+ extended `singleLicensePer` setting and when starting (and staying) with a quality whose
332
+ key id is not in it [#1133]
333
+ - DASH: Avoid infinite loop due to rounding errors while parsing multi-Periods MPDs
334
+ [#1111, #1110]
335
+ - After a `RELOADING` state, stay in `PAUSED` if the media element was paused
336
+ synchronously before the side-effect which triggered the reloading (usually coming from
337
+ the API) was perform [#1132]
338
+ - Fix issue with `maxVideoBufferSize` setting which could lead to too much data being
339
+ buffered [#1125]
340
+ - Prevent possibility of requests loops and infinite rebuffering when a pushed segment is
341
+ always completely and immediately garbage collected by the browser [#1123]
342
+ - DASH: Fix potential rare memory leak when stopping the content after it has reloaded at
343
+ least once [#1135]
344
+ - Directfile: Properly announce the audio track's `audioDescription` accessibility
345
+ attribute in directfile mode on Safari [#1136]
346
+ - DASH: Fix issues that could arise if a segment is calculated to start at a negative
347
+ position [#1122]
348
+ - DASH: Fix possibility of wrong segments being requested when a SegmentTimeline in a
349
+ given Period (whose Period@end is set) had an S@r set to `-1` at its end [#1098]
350
+ - DASH: If the first `<S>` has its S@t attribute not set, make as if it is set to `0`
351
+ [#1118]
235
352
 
236
353
  ### Other improvements
237
354
 
238
- - TTML: Add support for percent based thickness for textOutline in TTML Subtitles [#1108]
239
- - Improve TypeScript's language servers auto import feature with the RxPlayer by better redirecting to the exported type [#1126]
240
- - If seeking after the last potential position, load last segments before ending [#1097]
241
- - The duration set on the media element is now only relative to the current chosen tracks (it was previously relative to all potential track). This allows to seek later when switching e.g. to a longer video track [#1102]
242
- - Errors coming from an HTMLMediaElement now have the browser's error message if it exists [#1112]
243
- - TTML: Better handle EBU-TT subtitles by handling the `tt` XML namespace in our TTML parser [#1131]
244
- - DRM: Information on persisted DRM sessions are now automatically updated to their last version when possible [#1096]
245
- - Only log values which are relatively inexpensive to stringify to reduce the difference between debugging sessions and what is usually seen in production [#1116]
355
+ - TTML: Add support for percent based thickness for textOutline in TTML Subtitles [#1108]
356
+ - Improve TypeScript's language servers auto import feature with the RxPlayer by better
357
+ redirecting to the exported type [#1126]
358
+ - If seeking after the last potential position, load last segments before ending [#1097]
359
+ - The duration set on the media element is now only relative to the current chosen tracks
360
+ (it was previously relative to all potential track). This allows to seek later when
361
+ switching e.g. to a longer video track [#1102]
362
+ - Errors coming from an HTMLMediaElement now have the browser's error message if it exists
363
+ [#1112]
364
+ - TTML: Better handle EBU-TT subtitles by handling the `tt` XML namespace in our TTML
365
+ parser [#1131]
366
+ - DRM: Information on persisted DRM sessions are now automatically updated to their last
367
+ version when possible [#1096]
368
+ - Only log values which are relatively inexpensive to stringify to reduce the difference
369
+ between debugging sessions and what is usually seen in production [#1116]
246
370
 
247
371
  ## v3.27.0 (2022-03-31)
248
372
 
249
373
  ### Features
250
374
 
251
- - Add a `maxVideoBufferSize` constructor option and `{get,set}MaxVideoBufferSize` methods to limit the size of loaded video data buffered at the same time [#1041, #1054]
252
- - DRM: Add a `"periods"` mode to the `keySystems[].singleLicensePer` `loadVideo` option, allowing to obtain decryption license for groups of Periods allowing a compromise between optimization, features and compatibility [#1028, #1061]
253
- - Add a `"reload"` `audioTrackSwitchingMode` to work-around rare compatibility issues when switching audio tracks [#1089]
375
+ - Add a `maxVideoBufferSize` constructor option and `{get,set}MaxVideoBufferSize` methods
376
+ to limit the size of loaded video data buffered at the same time [#1041, #1054]
377
+ - DRM: Add a `"periods"` mode to the `keySystems[].singleLicensePer` `loadVideo` option,
378
+ allowing to obtain decryption license for groups of Periods allowing a compromise
379
+ between optimization, features and compatibility [#1028, #1061]
380
+ - Add a `"reload"` `audioTrackSwitchingMode` to work-around rare compatibility issues when
381
+ switching audio tracks [#1089]
254
382
 
255
383
  ### Bug fixes
256
384
 
257
- - subtitles: Fix rare issue where subtitles could be skipped due to a rounding error [#1064]
258
- - DASH: fix issue where the wrong segments would be requested on $Number$-based MPD with a SegmentTimeline older than the `timeShiftBufferDepth` [#1052, #1060]
259
- - directfile: disable all audio tracks before enabling one to work-around Safari issue on MacOS Monterey [#1067]
260
- - avoid performing a small seek when changing the audio track [#1080]
261
- - api: allow switching to RELOADING state synchronously after LOADED [#1083]
262
- - Safari Mobile: Improve decryption support on Safari mobile by relying on the vendored `WebKitMediaKeys` API [#1072]
263
- - DASH: Fix issue which prevented the integrity check of most MP4 DASH segments when `transportOptions.checkMediaSegmentIntegrity` was set to `true`
264
- - avoid unnecessary warning logs when loading some initialization segments [#1049]
265
- - TypeScript: Add forgotten TypeScript types in the exposed segment and manifest loader APIs [#1057]
266
- - DRM: Avoid decryption issues when a license is persisted in a `singleLicensePer` `"init-data"` mode but loaded in a `"content"` mode [#1031, #1042]
267
- - DRM: Totally avoid the theoretical possibility of leaking MediaKeySessions when a `generateRequest` or `load` call takes multiple seconds [#1093]
385
+ - subtitles: Fix rare issue where subtitles could be skipped due to a rounding error
386
+ [#1064]
387
+ - DASH: fix issue where the wrong segments would be requested on $Number$-based MPD with a
388
+ SegmentTimeline older than the `timeShiftBufferDepth` [#1052, #1060]
389
+ - directfile: disable all audio tracks before enabling one to work-around Safari issue on
390
+ MacOS Monterey [#1067]
391
+ - avoid performing a small seek when changing the audio track [#1080]
392
+ - api: allow switching to RELOADING state synchronously after LOADED [#1083]
393
+ - Safari Mobile: Improve decryption support on Safari mobile by relying on the vendored
394
+ `WebKitMediaKeys` API [#1072]
395
+ - DASH: Fix issue which prevented the integrity check of most MP4 DASH segments when
396
+ `transportOptions.checkMediaSegmentIntegrity` was set to `true`
397
+ - avoid unnecessary warning logs when loading some initialization segments [#1049]
398
+ - TypeScript: Add forgotten TypeScript types in the exposed segment and manifest loader
399
+ APIs [#1057]
400
+ - DRM: Avoid decryption issues when a license is persisted in a `singleLicensePer`
401
+ `"init-data"` mode but loaded in a `"content"` mode [#1031, #1042]
402
+ - DRM: Totally avoid the theoretical possibility of leaking MediaKeySessions when a
403
+ `generateRequest` or `load` call takes multiple seconds [#1093]
268
404
 
269
405
  ### Other improvements
270
406
 
271
- - DASH: always consider that the non-last Period is finished when it contains SegmentTimeline elements [#1047]
272
- - add better buffer cleaning logic on a browser's `QuotaExceededError` to better handle memory limitations [#1065]
273
- - DASH: Prioritize selectionPriority attribute over a "main" Role when ordering AdaptationSets [#1082]
274
- - directfile/Safari: use the `getStartDate` method in `getWallClockTime`, `seekTo` and the `positionUpdate` event when available to obtain true offseted "wall-clock" times when playing HLS contents on Safari [#1055]
275
- - DRM: Improve DRM Session caches performance when `singleLicensePer` is set to `"content"`
276
- - DRM: Stop retrying closing MediaKeySessions multiple times when it fails, instead doing it only once when it should work [#1093]
277
- - TypeScript: Add IBitrateEstimate, IPositionUpdate and IPlayerState types to the exported types [#1084]
278
- - Remove dependency on pinkie's promise ponyfill [#1058, #1090]
279
- - tests: add performance tests, to better catch and avoid performance regressions [#1053, #1062]
280
- - DRM: Refactor DRM logic for better maintainability. DRM-linked logs are now prefixed by `DRM:` instead of `EME:` like previously [#1042]
407
+ - DASH: always consider that the non-last Period is finished when it contains
408
+ SegmentTimeline elements [#1047]
409
+ - add better buffer cleaning logic on a browser's `QuotaExceededError` to better handle
410
+ memory limitations [#1065]
411
+ - DASH: Prioritize selectionPriority attribute over a "main" Role when ordering
412
+ AdaptationSets [#1082]
413
+ - directfile/Safari: use the `getStartDate` method in `getWallClockTime`, `seekTo` and the
414
+ `positionUpdate` event when available to obtain true offseted "wall-clock" times when
415
+ playing HLS contents on Safari [#1055]
416
+ - DRM: Improve DRM Session caches performance when `singleLicensePer` is set to
417
+ `"content"`
418
+ - DRM: Stop retrying closing MediaKeySessions multiple times when it fails, instead doing
419
+ it only once when it should work [#1093]
420
+ - TypeScript: Add IBitrateEstimate, IPositionUpdate and IPlayerState types to the exported
421
+ types [#1084]
422
+ - Remove dependency on pinkie's promise ponyfill [#1058, #1090]
423
+ - tests: add performance tests, to better catch and avoid performance regressions [#1053, #1062]
424
+ - DRM: Refactor DRM logic for better maintainability. DRM-linked logs are now prefixed by
425
+ `DRM:` instead of `EME:` like previously [#1042]
281
426
 
282
427
  ## v3.26.2 (2022-01-11)
283
428
 
284
429
  ### Bug fixes
285
430
 
286
- - API: re-switch to SEEKING state instead of BUFFERING when seeking to already-buffered data [#1015]
287
- - DASH: provide default startNumber attribute for number-based SegmentTemplate indexes with a SegmentTimeline [#1009]
288
- - TTML (subtitles): interpret percentages as relative to the computed cell size and not as the percentage of the inherited font size in the page [#1013]
289
- - subtitles: Work-around recent Chrome issue where the content of a native `<track>` element would still be visible despite being removed from the DOM (issue only reproducible in the `"native"` `textTrackMode`) [#1039]
290
- - API: Fix rare issue happening when switching rapidly between Representations, which led to multiple APIs such as `getAvailableVideoBitrate` or `getAvailableAudioTracks` returning either incorrect or empty results [#1018]
291
- - Improve prevention of rare segment-loading loops by fixing an issue with the clean-up of the short-term buffer history we maintain [#1045]
431
+ - API: re-switch to SEEKING state instead of BUFFERING when seeking to already-buffered
432
+ data [#1015]
433
+ - DASH: provide default startNumber attribute for number-based SegmentTemplate indexes
434
+ with a SegmentTimeline [#1009]
435
+ - TTML (subtitles): interpret percentages as relative to the computed cell size and not as
436
+ the percentage of the inherited font size in the page [#1013]
437
+ - subtitles: Work-around recent Chrome issue where the content of a native `<track>`
438
+ element would still be visible despite being removed from the DOM (issue only
439
+ reproducible in the `"native"` `textTrackMode`) [#1039]
440
+ - API: Fix rare issue happening when switching rapidly between Representations, which led
441
+ to multiple APIs such as `getAvailableVideoBitrate` or `getAvailableAudioTracks`
442
+ returning either incorrect or empty results [#1018]
443
+ - Improve prevention of rare segment-loading loops by fixing an issue with the clean-up of
444
+ the short-term buffer history we maintain [#1045]
292
445
 
293
446
  ### Other improvements
294
447
 
295
- - DASH-LL: Improve adaptive bitrate logic on low-latency contents by implementing a specific algorithm for those [#1025, #1036]
296
- - DASH-LL: Improve handling of $Time$-based DASH-LL contents [#1020]
297
- - DASH: Support UTCTiming element with the `urn:mpeg:dash:utc:http-xsdate:2014` scheme [#1021]
298
- - DOC: Important refactoring of the RxPlayer API documentation to improve readability, discoverability and to add search capability to it [#1016]
299
- - DASH: handle ContentProtection elements that have been defined at the Representation-level (and not at the AdaptationSet-level, as defined by the DASH-IF IOP) [#1027]
300
- - DASH: Be resilient when the resource behind an UTCTiming element leads to an error (usually due to an HTTP-related issue) - instead of failing with an error like now [#1026]
301
- - Better estimate the duration of ISOBMFF segments with multiple moof boxes [#1037]
302
- - EME: Add hex-encoded key id to the `KEY_STATUS_CHANGE_ERROR` error message so we can know which key we're talking about when debugging [#1033]
303
- - dev/scripts: for the "modular" (a.k.a. minimal) RxPlayer build now rely on TypeScript's const enums, instead of uglily using sed, to replace compile-time constants. [#1014]
304
- - dev/scripts: remove reliance on environment variables when running the RxPlayer build scripts [#1004]
305
- - dev/scripts: add esbuild devdependency and add "s" script to allow faster checks for RxPlayer developpers [#1003]
306
- - CI: Rely on Github actions instead of Travis for most CI-related matters [#1046]
307
- - code/refacto: replace central `Clock` concept (Observable bringing media-related updates to the RxPlayer at a regular pace) by a more flexible `PlaybackObserver` class [#1002]
448
+ - DASH-LL: Improve adaptive bitrate logic on low-latency contents by implementing a
449
+ specific algorithm for those [#1025, #1036]
450
+ - DASH-LL: Improve handling of $Time$-based DASH-LL contents [#1020]
451
+ - DASH: Support UTCTiming element with the `urn:mpeg:dash:utc:http-xsdate:2014` scheme
452
+ [#1021]
453
+ - DOC: Important refactoring of the RxPlayer API documentation to improve readability,
454
+ discoverability and to add search capability to it [#1016]
455
+ - DASH: handle ContentProtection elements that have been defined at the
456
+ Representation-level (and not at the AdaptationSet-level, as defined by the DASH-IF IOP)
457
+ [#1027]
458
+ - DASH: Be resilient when the resource behind an UTCTiming element leads to an error
459
+ (usually due to an HTTP-related issue) - instead of failing with an error like now
460
+ [#1026]
461
+ - Better estimate the duration of ISOBMFF segments with multiple moof boxes [#1037]
462
+ - EME: Add hex-encoded key id to the `KEY_STATUS_CHANGE_ERROR` error message so we can
463
+ know which key we're talking about when debugging [#1033]
464
+ - dev/scripts: for the "modular" (a.k.a. minimal) RxPlayer build now rely on TypeScript's
465
+ const enums, instead of uglily using sed, to replace compile-time constants. [#1014]
466
+ - dev/scripts: remove reliance on environment variables when running the RxPlayer build
467
+ scripts [#1004]
468
+ - dev/scripts: add esbuild devdependency and add "s" script to allow faster checks for
469
+ RxPlayer developpers [#1003]
470
+ - CI: Rely on Github actions instead of Travis for most CI-related matters [#1046]
471
+ - code/refacto: replace central `Clock` concept (Observable bringing media-related updates
472
+ to the RxPlayer at a regular pace) by a more flexible `PlaybackObserver` class [#1002]
308
473
 
309
474
  ## v3.26.1 (2021-09-14)
310
475
 
311
476
  ### Bug fixes
312
477
 
313
- - ttml: Do not throw if a TTML subtitles file doesn't contain any `<body>` tag, just ignore it [#993]
314
- - Auto-detect when playback is unexplicably frozen and try to unlock it through a small seek [#982]
315
- - Properly send `available{Audio,Video}BitratesChange` event for multi-Period contents [#983]
316
- - DASH/MetaPlaylist/Local: fix rare infinite rebuffering issue which could happen when changing or disabling the track of a future Period [#1000]
317
- - compat: Prevent rare segment-loading loops by automatically detecting when segments are garbage collected by the browser immediately after being pushed [#987, #990]
318
- - compat/DRM: In some Safari versions, communicating a license as a JS `ArrayBuffer` could throw, this is now fixed [#974]
319
- - DASH_WASM: Don't stop with a fatal error if an expected ISO8601 duration value is empty in the MPD
320
- - DASH_WASM: Parse `<Event>` elements which contain an XML namespace defined outside that element [#981]
321
- - DASH_WASM: Drastically reduce wasm compilation time and file size [#980]
478
+ - ttml: Do not throw if a TTML subtitles file doesn't contain any `<body>` tag, just
479
+ ignore it [#993]
480
+ - Auto-detect when playback is unexplicably frozen and try to unlock it through a small
481
+ seek [#982]
482
+ - Properly send `available{Audio,Video}BitratesChange` event for multi-Period contents
483
+ [#983]
484
+ - DASH/MetaPlaylist/Local: fix rare infinite rebuffering issue which could happen when
485
+ changing or disabling the track of a future Period [#1000]
486
+ - compat: Prevent rare segment-loading loops by automatically detecting when segments are
487
+ garbage collected by the browser immediately after being pushed [#987, #990]
488
+ - compat/DRM: In some Safari versions, communicating a license as a JS `ArrayBuffer` could
489
+ throw, this is now fixed [#974]
490
+ - DASH_WASM: Don't stop with a fatal error if an expected ISO8601 duration value is empty
491
+ in the MPD
492
+ - DASH_WASM: Parse `<Event>` elements which contain an XML namespace defined outside that
493
+ element [#981]
494
+ - DASH_WASM: Drastically reduce wasm compilation time and file size [#980]
322
495
 
323
496
  ### Other improvements
324
497
 
325
- - Request initialization segment and the first media segments at the same time when possible, potentially reducing loading times [#973]
326
- - Remove cached segment request detection in the adaptive logic, as it is sensible to false positives, leading to a poor bitrate in some short contents [#977]
327
- - Export more needed types through the `rx-player/types` path [#972, #976]
328
- - demo: Expose some player options in the demo page [#999]
329
- - dev: Rewrite build logic from bash to node.js to improve its maintainability
330
- - dev: Replace internal `info` script by more helpful and interactive `list` script [#991]
331
- - dev/code: Forbid the usage of TypeScript's type `any` in most of the RxPlayer's code - performing runtime type-checking in some cases (in DEV mode only) [#994]
332
- - dev/code: Remove RxJS from the transports code [#962]
498
+ - Request initialization segment and the first media segments at the same time when
499
+ possible, potentially reducing loading times [#973]
500
+ - Remove cached segment request detection in the adaptive logic, as it is sensible to
501
+ false positives, leading to a poor bitrate in some short contents [#977]
502
+ - Export more needed types through the `rx-player/types` path [#972, #976]
503
+ - demo: Expose some player options in the demo page [#999]
504
+ - dev: Rewrite build logic from bash to node.js to improve its maintainability
505
+ - dev: Replace internal `info` script by more helpful and interactive `list` script [#991]
506
+ - dev/code: Forbid the usage of TypeScript's type `any` in most of the RxPlayer's code -
507
+ performing runtime type-checking in some cases (in DEV mode only) [#994]
508
+ - dev/code: Remove RxJS from the transports code [#962]
333
509
 
334
510
  ## v3.26.0 (2021-06-10)
335
511
 
336
512
  ### Features
337
513
 
338
- - Add HDR information through the `hdrInfo` property on video Representation/tracks as returned by APIs such as `getVideoTrack`, `getAvailableVideoTracks`, the `videoTrackChange` event, `getManifest`, `getCurrentAdaptations` and `getCurrentRepresentations` [#946]
339
- - Add the `DASH_WASM` experimental feature, allowing faster MPD parsing using WebAssembly [#937]
340
- - Add the experimental `VideoThumbnailLoader` tool, which uses "trickmodes" DASH AdaptationSet to generate thumbnails [#647]
341
- - Add `preferTrickModeTracks` option to `setPlaybackRate`, to switch on or off trickmode tracks when available on the Manifest [#940]
342
- - Add `areTrickModeTracksEnabled` method to indicate whether the RxPlayer is using trickmode tracks in priority [#940]
343
- - Add `trickModeTracks` and `isTrickModeTrack` properties to video tracks as returned by the `getVideoTrack` and `getAvailableVideoTracks` method and by the `videoTrackChange` event [#940]
344
- - Add `maxSessionCacheSize` `keySystems` option, to configure the maximum number of decryption sessions that can be kept alive at the same time in a cache [#938]
345
- - The `manifestLoader` callback defined in `transportOptions` can now ask for a request to be retried [#964]
346
- - `initialManifest` now accepts the Manifest as an `ArrayBuffer` [#937]
347
- - The `manifestLoader` callback defined in `transportOptions` can now send the Manifest as an `ArrayBuffer` [#937]
514
+ - Add HDR information through the `hdrInfo` property on video Representation/tracks as
515
+ returned by APIs such as `getVideoTrack`, `getAvailableVideoTracks`, the
516
+ `videoTrackChange` event, `getManifest`, `getCurrentAdaptations` and
517
+ `getCurrentRepresentations` [#946]
518
+ - Add the `DASH_WASM` experimental feature, allowing faster MPD parsing using WebAssembly
519
+ [#937]
520
+ - Add the experimental `VideoThumbnailLoader` tool, which uses "trickmodes" DASH
521
+ AdaptationSet to generate thumbnails [#647]
522
+ - Add `preferTrickModeTracks` option to `setPlaybackRate`, to switch on or off trickmode
523
+ tracks when available on the Manifest [#940]
524
+ - Add `areTrickModeTracksEnabled` method to indicate whether the RxPlayer is using
525
+ trickmode tracks in priority [#940]
526
+ - Add `trickModeTracks` and `isTrickModeTrack` properties to video tracks as returned by
527
+ the `getVideoTrack` and `getAvailableVideoTracks` method and by the `videoTrackChange`
528
+ event [#940]
529
+ - Add `maxSessionCacheSize` `keySystems` option, to configure the maximum number of
530
+ decryption sessions that can be kept alive at the same time in a cache [#938]
531
+ - The `manifestLoader` callback defined in `transportOptions` can now ask for a request to
532
+ be retried [#964]
533
+ - `initialManifest` now accepts the Manifest as an `ArrayBuffer` [#937]
534
+ - The `manifestLoader` callback defined in `transportOptions` can now send the Manifest as
535
+ an `ArrayBuffer` [#937]
348
536
 
349
537
  ### Bug fixes
350
538
 
351
- - DASH: don't ignore new EventStream elements that weren't in the previous MPD update for a given Period [#956]
352
- - DASH: fix fatal error linked to the `duration` of the `MediaSource` happening when playing a multi-Period live DASH content whose previous (before updating) last Period's segments had been fully generated and fully pushed. [#952]
353
- - DASH: Avoid loading plain-text subtitles in a loop when playing before the first cue starts or after the last cue ends [#945, #948]
354
- - DASH: Avoid loading plain-text subtitles in a loop when the `transportOptions.checkMediaSegmentIntegrity` is set to `true` [#947]
355
- - DASH: avoid ending a dynamic stream if new Periods may be added later to the MPD [#959]
356
- - DASH: avoid unnecessarily refresh a MPD based on SegmentList elements when they don't perfectly align with the pushed data [#963]
539
+ - DASH: don't ignore new EventStream elements that weren't in the previous MPD update for
540
+ a given Period [#956]
541
+ - DASH: fix fatal error linked to the `duration` of the `MediaSource` happening when
542
+ playing a multi-Period live DASH content whose previous (before updating) last Period's
543
+ segments had been fully generated and fully pushed. [#952]
544
+ - DASH: Avoid loading plain-text subtitles in a loop when playing before the first cue
545
+ starts or after the last cue ends [#945, #948]
546
+ - DASH: Avoid loading plain-text subtitles in a loop when the
547
+ `transportOptions.checkMediaSegmentIntegrity` is set to `true` [#947]
548
+ - DASH: avoid ending a dynamic stream if new Periods may be added later to the MPD [#959]
549
+ - DASH: avoid unnecessarily refresh a MPD based on SegmentList elements when they don't
550
+ perfectly align with the pushed data [#963]
357
551
 
358
552
  ### Other improvements
359
553
 
360
- - Improve `audioTrackSwitchingMode` `"direct"` mode by avoiding unnecessary reloading cases [#872, #887, #943]
361
- - When seeking after the end of an ended content, actually seek just a little before to avoid subtle issues [#941]
362
- - DASH: limit the postponment of a Manifest refresh due to poor MPD-parsing performance to 6-times the "regular" delay (not impacted by `tansportOptions.minimumManifestUpdateInterval`) [#958]
363
- - DASH: Avoid loading two times a segment instead of once when that segment is not anounced in the MPD through a SegmentBase, SegmentList nor SegmentTemplate element but just through the Representation's BaseURL. [#949]
364
- - Update used RxJS version to 7.0.0, which might bring with it a smaller size and better performances [#954]
365
- - demo: remove Chart.js dependency (we found that its new API documentation and errors were too impenetrable) and replace the "Buffer Size" chart by a homemade one. [#955, #957]
554
+ - Improve `audioTrackSwitchingMode` `"direct"` mode by avoiding unnecessary reloading
555
+ cases [#872, #887, #943]
556
+ - When seeking after the end of an ended content, actually seek just a little before to
557
+ avoid subtle issues [#941]
558
+ - DASH: limit the postponment of a Manifest refresh due to poor MPD-parsing performance to
559
+ 6-times the "regular" delay (not impacted by
560
+ `tansportOptions.minimumManifestUpdateInterval`) [#958]
561
+ - DASH: Avoid loading two times a segment instead of once when that segment is not
562
+ anounced in the MPD through a SegmentBase, SegmentList nor SegmentTemplate element but
563
+ just through the Representation's BaseURL. [#949]
564
+ - Update used RxJS version to 7.0.0, which might bring with it a smaller size and better
565
+ performances [#954]
566
+ - demo: remove Chart.js dependency (we found that its new API documentation and errors
567
+ were too impenetrable) and replace the "Buffer Size" chart by a homemade one. [#955, #957]
366
568
 
367
569
  ## v3.24.0 (2021-04-01)
368
570
 
369
571
  ### Features
370
572
 
371
- - Add `inbandEvent` event for when an event is encountered in a media segment [#892]
372
- - DRM: Add `singleLicensePer` `keySystems` option to be able to signal in advance that the current content has a single license, even if it has multiple encryption keys [#863, #904]
373
- - DRM: Add `keySystems[].licenseStorage.disableRetroCompatibility` boolean to unlock optimizations when compatibility with EME sessions persisted in older RxPlayer versions is not important [#919]
573
+ - Add `inbandEvent` event for when an event is encountered in a media segment [#892]
574
+ - DRM: Add `singleLicensePer` `keySystems` option to be able to signal in advance that the
575
+ current content has a single license, even if it has multiple encryption keys [#863, #904]
576
+ - DRM: Add `keySystems[].licenseStorage.disableRetroCompatibility` boolean to unlock
577
+ optimizations when compatibility with EME sessions persisted in older RxPlayer versions
578
+ is not important [#919]
374
579
 
375
580
  ### Bug fixes
376
581
 
377
- - DASH: Fix rounding error that could cause infinite buffering issues when going from a DASH Period to the next [#897, #899]
378
- - DRM: Always pass on server certificate before any challenge is generated. Contents with multiple licenses previously could lead to the latter being done before the former. [#895]
379
- - DRM: Fix possible leaks of MediaKeySessions if closed at the wrong time [#920]
380
- - Fix issue making sudden and acute fall in bandwidth not being considered soon enough [#906]
381
- - On some devices when `maxBufferAhead` is set, avoid removing the initially loaded data if done before the initial seek could be performed [#907]
382
- - Avoid cases of infinite rebuffering on Tizen 4 by avoiding pushing segments "on top of others" too close to the current position [#925]
383
- - Avoid seeking issues on Tizen by not seeking over discontinuities that will be already handled by the browser [#922]
384
- - Fix initial seek on Tizen (Samsung TVs) on live contents by setting a much lower duration (to work-around a Tizen overflow) [#914]
385
- - DASH: Consider multiple defined `<Accessibility>` tags for a single AdaptationSet [#903]
386
- - Fix error that could be thrown on Safari when calling the `getStatusForHDCP` method from the experimental `MediaCapabilitiesProber` tool [#927]
582
+ - DASH: Fix rounding error that could cause infinite buffering issues when going from a
583
+ DASH Period to the next [#897, #899]
584
+ - DRM: Always pass on server certificate before any challenge is generated. Contents with
585
+ multiple licenses previously could lead to the latter being done before the former.
586
+ [#895]
587
+ - DRM: Fix possible leaks of MediaKeySessions if closed at the wrong time [#920]
588
+ - Fix issue making sudden and acute fall in bandwidth not being considered soon enough
589
+ [#906]
590
+ - On some devices when `maxBufferAhead` is set, avoid removing the initially loaded data
591
+ if done before the initial seek could be performed [#907]
592
+ - Avoid cases of infinite rebuffering on Tizen 4 by avoiding pushing segments "on top of
593
+ others" too close to the current position [#925]
594
+ - Avoid seeking issues on Tizen by not seeking over discontinuities that will be already
595
+ handled by the browser [#922]
596
+ - Fix initial seek on Tizen (Samsung TVs) on live contents by setting a much lower
597
+ duration (to work-around a Tizen overflow) [#914]
598
+ - DASH: Consider multiple defined `<Accessibility>` tags for a single AdaptationSet [#903]
599
+ - Fix error that could be thrown on Safari when calling the `getStatusForHDCP` method from
600
+ the experimental `MediaCapabilitiesProber` tool [#927]
387
601
 
388
602
  ### Other improvements
389
603
 
390
- - Avoid to push on top of the current position if there's already a segment there as it can provoke minor decoding issues on some devices [#925]
391
- - Update video element's duration if the content duration changes [#917]
392
- - DASH: Improve loading time with encrypted contents by only using the encrypted initialization data found in the Manifest when found in it [#911, #919]
393
- - Record redirections made on a `manifestUpdateUrl` to request directly the right URL on next update. [#929]
394
- - Improve loading time when a `serverCertificate` is given by calling the `setServerCertificate` API earlier [#895]
395
- - Improve loading time when switching contents by fetching the Manifest at the same time the previous content is cleaned-up [#894]
396
- - Improve loading time on some CPU-constrained devices by not running unnecessary playback checks on the "progress" HTMLMediaElement event anymore [#893]
397
- - DASH: Consider DASH audio AdaptationSet with a "urn:mpeg:dash:role:2011" schemeIdUri and a "description" role as `audioDescription` tracks [#903]
398
- - Warn through the logger when the autoplay attribute is enabled on the media element but not on RxPlayer [#924]
399
- - Avoid switching to a SEEKING state if the seek operation was performed inside the RxPlayer's code [#872, #887]
400
- - DRM: Wait up to 100 milliseconds after a persistent MediaKeySession has been loaded to wait for possibly late `keyStatuses` updates [#928]
401
- - DRM: Only store persistent MediaKeySession once at least one key is known [#926]
402
- - DRM: Reconsider Representations that have been fallbacked from if they become decipherable [#905]
403
- - DRM: Lower the maximum size of the MediaKeySession cache from 50 to 15 to improve compatibility, even more now that license with multiple keys are properly handled
404
- - Doc: Move architecture documentation closer to the code it documents [#764, #900]
405
- - Doc: add "Quick links" to the top of the API documentation [#909]
604
+ - Avoid to push on top of the current position if there's already a segment there as it
605
+ can provoke minor decoding issues on some devices [#925]
606
+ - Update video element's duration if the content duration changes [#917]
607
+ - DASH: Improve loading time with encrypted contents by only using the encrypted
608
+ initialization data found in the Manifest when found in it [#911, #919]
609
+ - Record redirections made on a `manifestUpdateUrl` to request directly the right URL on
610
+ next update. [#929]
611
+ - Improve loading time when a `serverCertificate` is given by calling the
612
+ `setServerCertificate` API earlier [#895]
613
+ - Improve loading time when switching contents by fetching the Manifest at the same time
614
+ the previous content is cleaned-up [#894]
615
+ - Improve loading time on some CPU-constrained devices by not running unnecessary playback
616
+ checks on the "progress" HTMLMediaElement event anymore [#893]
617
+ - DASH: Consider DASH audio AdaptationSet with a "urn:mpeg:dash:role:2011" schemeIdUri and
618
+ a "description" role as `audioDescription` tracks [#903]
619
+ - Warn through the logger when the autoplay attribute is enabled on the media element but
620
+ not on RxPlayer [#924]
621
+ - Avoid switching to a SEEKING state if the seek operation was performed inside the
622
+ RxPlayer's code [#872, #887]
623
+ - DRM: Wait up to 100 milliseconds after a persistent MediaKeySession has been loaded to
624
+ wait for possibly late `keyStatuses` updates [#928]
625
+ - DRM: Only store persistent MediaKeySession once at least one key is known [#926]
626
+ - DRM: Reconsider Representations that have been fallbacked from if they become
627
+ decipherable [#905]
628
+ - DRM: Lower the maximum size of the MediaKeySession cache from 50 to 15 to improve
629
+ compatibility, even more now that license with multiple keys are properly handled
630
+ - Doc: Move architecture documentation closer to the code it documents [#764, #900]
631
+ - Doc: add "Quick links" to the top of the API documentation [#909]
406
632
 
407
633
  ## v3.23.1 (2021-02-01)
408
634
 
409
635
  ### Bug fixes
410
636
 
411
- - Fix support of encrypted contents on Safari (v3.23.0 regression)
637
+ - Fix support of encrypted contents on Safari (v3.23.0 regression)
412
638
 
413
639
  ## v3.23.0 (2021-02-01)
414
640
 
415
641
  ### Features
416
642
 
417
- - Add the `reload` method to be able to re-load the last loaded content as fast as possible (e.g. after fatal errors) [#859, #867]
418
- - Add `onCodecSwitch` loadVideo option, to select a strategy when a new incompatible codec is encountered [#856]
419
- - Emit `DISCONTINUITY_ENCOUNTERED` warnings when a discontinuity has been seeked over [#862]
420
- - Add minAudioBitrate and minVideoBitrate constructor options and the {set,get}Minimum{Audio,Video}Bitrate methods to define the minimum quality reachable through adaptive streaming [#876]
643
+ - Add the `reload` method to be able to re-load the last loaded content as fast as
644
+ possible (e.g. after fatal errors) [#859, #867]
645
+ - Add `onCodecSwitch` loadVideo option, to select a strategy when a new incompatible codec
646
+ is encountered [#856]
647
+ - Emit `DISCONTINUITY_ENCOUNTERED` warnings when a discontinuity has been seeked over
648
+ [#862]
649
+ - Add minAudioBitrate and minVideoBitrate constructor options and the
650
+ {set,get}Minimum{Audio,Video}Bitrate methods to define the minimum quality reachable
651
+ through adaptive streaming [#876]
421
652
 
422
653
  ### Bug fixes
423
654
 
424
- - Fix impossibility to fallback to another Representation (with the `keySystems[].fallbackOn` `loadVideo` options) when a decryption key has been found to be non-usable [#889]
425
- - Fix DRM-related events being sent twice in a row instead of just once [#850]
426
- - Stop and throw `MANIFEST_PARSE_ERROR` error again when either audio or video has only unsupported codecs (instead of just playing the other type) [#864]
427
- - Avoid re-downloading a segment that ends a lot before its expected end [#846]
428
- - In "native" `textTrackMode`, avoid requesting text segments in a loop [#878]
429
- - Disable effects of `throttleVideoBitrateWhenHidden`, `limitVideoWidth` and `throttleVideoBitrate` player options on Firefox >= 67 due to how Picture in Picture mode is currently handled in them [#874]
430
- - Work-around race condition in old Chromium versions where loading a persistent MediaKeySession led to no key statuses right away [#847]
655
+ - Fix impossibility to fallback to another Representation (with the
656
+ `keySystems[].fallbackOn` `loadVideo` options) when a decryption key has been found to
657
+ be non-usable [#889]
658
+ - Fix DRM-related events being sent twice in a row instead of just once [#850]
659
+ - Stop and throw `MANIFEST_PARSE_ERROR` error again when either audio or video has only
660
+ unsupported codecs (instead of just playing the other type) [#864]
661
+ - Avoid re-downloading a segment that ends a lot before its expected end [#846]
662
+ - In "native" `textTrackMode`, avoid requesting text segments in a loop [#878]
663
+ - Disable effects of `throttleVideoBitrateWhenHidden`, `limitVideoWidth` and
664
+ `throttleVideoBitrate` player options on Firefox >= 67 due to how Picture in Picture
665
+ mode is currently handled in them [#874]
666
+ - Work-around race condition in old Chromium versions where loading a persistent
667
+ MediaKeySession led to no key statuses right away [#847]
431
668
 
432
669
  ### Other improvements
433
670
 
434
- - Skip over most audio or video discontinuities in the stream, even those not announced in the Manifest [#862]
435
- - When track or bitrate switching lead to a reload, seek back a consistent number of milliseconds to give back context [#848]
436
- - Don't call `setServerCertificate` API when `keySystems[].serverCertificate` option is set to `null` [#849]
437
- - On the rare platforms where an undefined initialization data type can be received on encrypted events, retry `generateRequest` with a default "cenc" value if the first one fails due to it being empty [#870]
438
- - Re-add debug logs logging the principal media properties at each clock tick [#844]
439
- - Use TextEncoder and TextDecoder interfaces when available to speed-up string conversions [#843, #875]
440
- - Throw a better error when no EME API is found
441
- - Reduce default bundles size by switching to webpack 5 to generate them
442
- - tests: Add conformance tests on the initial seek to help debugging related issues on new platforms [#873]
443
- - lint/code: Use eslint code linter even for the TypeScript code [#842]
671
+ - Skip over most audio or video discontinuities in the stream, even those not announced in
672
+ the Manifest [#862]
673
+ - When track or bitrate switching lead to a reload, seek back a consistent number of
674
+ milliseconds to give back context [#848]
675
+ - Don't call `setServerCertificate` API when `keySystems[].serverCertificate` option is
676
+ set to `null` [#849]
677
+ - On the rare platforms where an undefined initialization data type can be received on
678
+ encrypted events, retry `generateRequest` with a default "cenc" value if the first one
679
+ fails due to it being empty [#870]
680
+ - Re-add debug logs logging the principal media properties at each clock tick [#844]
681
+ - Use TextEncoder and TextDecoder interfaces when available to speed-up string conversions
682
+ [#843, #875]
683
+ - Throw a better error when no EME API is found
684
+ - Reduce default bundles size by switching to webpack 5 to generate them
685
+ - tests: Add conformance tests on the initial seek to help debugging related issues on new
686
+ platforms [#873]
687
+ - lint/code: Use eslint code linter even for the TypeScript code [#842]
444
688
 
445
689
  ## v3.22.0 (2020-11-17)
446
690
 
447
691
  ### Features
448
692
 
449
- - Add `audioTrackSwitchingMode` `loadVideo` option to allow different strategies when switching between audio tracks [#801, #806]
450
- - Add `enableFastSwitching` `loadVideo` option to enable or disable optimizations doing segment replacement in the browser's buffer [#779, #780]
451
- - Add `initialManifest` `loadVideo` option to provide the Manifest to the RxPlayer when it has already been loaded [#807]
452
- - tools: Add `StringUtils` utilitary functions to tools to convert bytes to strings and the other way around [#809]
453
- - tools: The `TextTrackRenderer` tool is not experimental anymore: it now has a stable API [#810]
454
- - experimental/local-manifest: The RxPlayer now (only) plays the new `"0.2"` format version of the "LocalManifest" (in the experimental `"local"` transport) [#810]
693
+ - Add `audioTrackSwitchingMode` `loadVideo` option to allow different strategies when
694
+ switching between audio tracks [#801, #806]
695
+ - Add `enableFastSwitching` `loadVideo` option to enable or disable optimizations doing
696
+ segment replacement in the browser's buffer [#779, #780]
697
+ - Add `initialManifest` `loadVideo` option to provide the Manifest to the RxPlayer when it
698
+ has already been loaded [#807]
699
+ - tools: Add `StringUtils` utilitary functions to tools to convert bytes to strings and
700
+ the other way around [#809]
701
+ - tools: The `TextTrackRenderer` tool is not experimental anymore: it now has a stable API
702
+ [#810]
703
+ - experimental/local-manifest: The RxPlayer now (only) plays the new `"0.2"` format
704
+ version of the "LocalManifest" (in the experimental `"local"` transport) [#810]
455
705
 
456
706
  ### Bug fixes
457
707
 
458
- - directfile: Fix impossibility to play an encrypted content in directfile mode (regression brought in v3.21.1) [#827, #830]
459
- - subtitles: Display multiple cues with overlapping times [#829]
460
- - smooth: Fix minimum position in a Smooth live content when fewer segments than the dvr window length are available [#826]
461
- - dash/metaplaylist: Fix possible playback issues on multi-Period contents, where segments from multiple Periods overlap [#837]
462
- - Fix very rare race condition which triggered a "setting priority of null" error after synchronous segment requests were done [#817]
463
- - local-manifest: LocalManifest that transition from not finished to finished while playing now end properly [#818]
464
- - local-manifest: Fix and clarify the duration and maximum position reported for a playing LocalManifest [#818]
465
- - compatibility/drm: On some webkit-based browsers, do not require the use of a server certificate for DRM if the key system used is not FairPlay [#833]
466
- - drm: Properly update to a different server certificate on the MediaKeys or remove it if needed [#835]
467
- - drm: throw MEDIA_IS_ENCRYPTED_ERROR again when playing an encrypted event without either the `EME` feature, EME APIs or a `keySystems` option [#841]
708
+ - directfile: Fix impossibility to play an encrypted content in directfile mode
709
+ (regression brought in v3.21.1) [#827, #830]
710
+ - subtitles: Display multiple cues with overlapping times [#829]
711
+ - smooth: Fix minimum position in a Smooth live content when fewer segments than the dvr
712
+ window length are available [#826]
713
+ - dash/metaplaylist: Fix possible playback issues on multi-Period contents, where segments
714
+ from multiple Periods overlap [#837]
715
+ - Fix very rare race condition which triggered a "setting priority of null" error after
716
+ synchronous segment requests were done [#817]
717
+ - local-manifest: LocalManifest that transition from not finished to finished while
718
+ playing now end properly [#818]
719
+ - local-manifest: Fix and clarify the duration and maximum position reported for a playing
720
+ LocalManifest [#818]
721
+ - compatibility/drm: On some webkit-based browsers, do not require the use of a server
722
+ certificate for DRM if the key system used is not FairPlay [#833]
723
+ - drm: Properly update to a different server certificate on the MediaKeys or remove it if
724
+ needed [#835]
725
+ - drm: throw MEDIA_IS_ENCRYPTED_ERROR again when playing an encrypted event without either
726
+ the `EME` feature, EME APIs or a `keySystems` option [#841]
468
727
 
469
728
  ### Other improvements
470
729
 
471
- - subtitles/ttml: Apply default position to TTML subtitles in `"html"` `textTrackMode` when no style is found [#815]
472
- - subtitles/ttml: Set default text color to white to TTML subtitles in `"html"` textTrackMode [#832]
473
- - drm: Avoid re-setting a server certificate we know has already been pushed to improve loading performance [#824, #835]
474
- - dash: Always prefer a "main" AdaptationSet when hesitating between multiple ones [#828]
475
- - dash: Improve minimum position precision for dynamic DASH contents when less segments are available than what would be guessed from the timeShiftBufferDepth [#826]
476
- - drm/logs: Better log why a MediaKeySession is not considered as "usable" [#822]
477
- - drm/logs: Be more verbose with DRM-related logs, even at lower logger levels [#821]
478
- - tests/conformance: Add "conformance tests", to quickly test the capabilities of new devices and targets [#814]
479
- - code: avoid circular dependency in `src/features` in original typescript source files [#805]
480
- - demo: Fix default position for the video track select element in the demo to always be at the currently selected video track [#813]
481
- - demo/code: Better integrate the RxPlayer to the demo: through a simple import, instead of adding a script tag for the bundled version [#811]
482
- - dev: Remove all enforced git-hooks (on pre-commit and pre-push) [#808]
730
+ - subtitles/ttml: Apply default position to TTML subtitles in `"html"` `textTrackMode`
731
+ when no style is found [#815]
732
+ - subtitles/ttml: Set default text color to white to TTML subtitles in `"html"`
733
+ textTrackMode [#832]
734
+ - drm: Avoid re-setting a server certificate we know has already been pushed to improve
735
+ loading performance [#824, #835]
736
+ - dash: Always prefer a "main" AdaptationSet when hesitating between multiple ones [#828]
737
+ - dash: Improve minimum position precision for dynamic DASH contents when less segments
738
+ are available than what would be guessed from the timeShiftBufferDepth [#826]
739
+ - drm/logs: Better log why a MediaKeySession is not considered as "usable" [#822]
740
+ - drm/logs: Be more verbose with DRM-related logs, even at lower logger levels [#821]
741
+ - tests/conformance: Add "conformance tests", to quickly test the capabilities of new
742
+ devices and targets [#814]
743
+ - code: avoid circular dependency in `src/features` in original typescript source files
744
+ [#805]
745
+ - demo: Fix default position for the video track select element in the demo to always be
746
+ at the currently selected video track [#813]
747
+ - demo/code: Better integrate the RxPlayer to the demo: through a simple import, instead
748
+ of adding a script tag for the bundled version [#811]
749
+ - dev: Remove all enforced git-hooks (on pre-commit and pre-push) [#808]
483
750
 
484
751
  ## v3.21.1 (2020-09-21)
485
752
 
486
753
  ### Bug fixes
487
754
 
488
- - compatibility/drm: make switching the current `MediaKeys` work on most platforms by re-ordering browser API calls [#766, #744]
489
- - compatibility/drm: in Edge and IE11, fix behavior which could lead to not fallbacking from a non-decryptable quality due to a badly parsed key ID [#790]
490
- - dash: when a Representation depends on multiple SegmentTemplate at the same time, merge all corresponding information instead of just relying on the last one [#767, #768]
491
- - smooth: skip discontinuity when seeking in the middle of one when playing a smooth content [#792]
492
- - api: fix `getUrl` and the minimum position calculation after playing for some time a live content with a set `manifestUpdateUrl` [#775, #776]
493
- - drm/subtitles: better handle UTF-8 and UTF-16 characters in an encrypted initialization data or in subtitles [#791]
494
- - requests: still retry all the other segment's URLs when a non-retryable error happen on the request for one of them [#798]
495
- - dash: fix infinite rebuffering when playing multi-Period DASH contents for some time with a `manifestUpdateUrl` set [#797]
755
+ - compatibility/drm: make switching the current `MediaKeys` work on most platforms by
756
+ re-ordering browser API calls [#766, #744]
757
+ - compatibility/drm: in Edge and IE11, fix behavior which could lead to not fallbacking
758
+ from a non-decryptable quality due to a badly parsed key ID [#790]
759
+ - dash: when a Representation depends on multiple SegmentTemplate at the same time, merge
760
+ all corresponding information instead of just relying on the last one [#767, #768]
761
+ - smooth: skip discontinuity when seeking in the middle of one when playing a smooth
762
+ content [#792]
763
+ - api: fix `getUrl` and the minimum position calculation after playing for some time a
764
+ live content with a set `manifestUpdateUrl` [#775, #776]
765
+ - drm/subtitles: better handle UTF-8 and UTF-16 characters in an encrypted initialization
766
+ data or in subtitles [#791]
767
+ - requests: still retry all the other segment's URLs when a non-retryable error happen on
768
+ the request for one of them [#798]
769
+ - dash: fix infinite rebuffering when playing multi-Period DASH contents for some time
770
+ with a `manifestUpdateUrl` set [#797]
496
771
 
497
772
  ### Other improvements
498
773
 
499
- - improve seek latency in some rare cases where we could profit from cancelling a request for a needed segment [#752, #769]
500
- - requests: only download an initialization segment when media segments for that Representation are needed [#773]
501
- - requests: avoid unnecessary segment requests when segments loaded don't exactly align with what is expected if contiguous segments exist [#772, #771]
502
- - better time quality switches to avoid having to re-download segments in the new quality [#781, #782, #783]
503
- - adaptive: limit bandwidth oscillations when the buffer level is low by choosing a lower bitrate by default and limiting fall in bandwidth when in "starvation mode" [#796]
504
- - compatibility/drm: filter out badly-formed CENC PSSH when found, if some well-formed exist [#788]
505
- - isobmff: support rare but possible occurence where an ISOBMFF box size is stored on 8 bytes [#784]
506
- - logs: when logs are set to `"DEBUG"`, now regularly print visual representations of which segments live currently in the buffer(s) [#795]
507
- - demo: change separator in the demo's generated links from "\" to "!" to not change its form when percent-encoded [#758, #759]
508
- - project: better document changes in changelog and release notes, mostly by linking to related issues and PRs
509
- - code: rename "Buffer" module to "Stream" in the code, documentation and logs to better reflect what that code does [#793]
510
- - tests: add "global" unit tests for a more a module-oriented testing strategy (when compared to our existing function-oriented unit tests) to our EME (DRM) related code [#753]
774
+ - improve seek latency in some rare cases where we could profit from cancelling a request
775
+ for a needed segment [#752, #769]
776
+ - requests: only download an initialization segment when media segments for that
777
+ Representation are needed [#773]
778
+ - requests: avoid unnecessary segment requests when segments loaded don't exactly align
779
+ with what is expected if contiguous segments exist [#772, #771]
780
+ - better time quality switches to avoid having to re-download segments in the new quality
781
+ [#781, #782, #783]
782
+ - adaptive: limit bandwidth oscillations when the buffer level is low by choosing a lower
783
+ bitrate by default and limiting fall in bandwidth when in "starvation mode" [#796]
784
+ - compatibility/drm: filter out badly-formed CENC PSSH when found, if some well-formed
785
+ exist [#788]
786
+ - isobmff: support rare but possible occurence where an ISOBMFF box size is stored on 8
787
+ bytes [#784]
788
+ - logs: when logs are set to `"DEBUG"`, now regularly print visual representations of
789
+ which segments live currently in the buffer(s) [#795]
790
+ - demo: change separator in the demo's generated links from "\" to "!" to not change its
791
+ form when percent-encoded [#758, #759]
792
+ - project: better document changes in changelog and release notes, mostly by linking to
793
+ related issues and PRs
794
+ - code: rename "Buffer" module to "Stream" in the code, documentation and logs to better
795
+ reflect what that code does [#793]
796
+ - tests: add "global" unit tests for a more a module-oriented testing strategy (when
797
+ compared to our existing function-oriented unit tests) to our EME (DRM) related code
798
+ [#753]
511
799
 
512
800
  ## v3.21.0 (2020-06-17)
513
801
 
514
802
  ### Features
515
803
 
516
- - api/events: add `"streamEvent"` event for when a DASH EventStream's event is reached
517
- - api/events: add `"streamEventSkip"` event for when a DASH EventStream's event is "skipped"
518
- - types/events: add `IStreamEvent` and `IStreamEventData` - which define the payload emitted by both a `"streamEvent"` and `"streamEventSkip"` events to the exported types
519
- - api/tracks: add second argument to `setPreferredAudioTracks`, `setPreferredTextTracks` and `setPreferredVideoTracks` to be able to also apply them to the currently loaded Periods / content
520
- - text/webvtt: parse settings attributes of WebVTT subtitles when in HTML mode
521
- - api/tracks: add codec information to `getAvailableAudioTracks` and `getAudioTrack`
804
+ - api/events: add `"streamEvent"` event for when a DASH EventStream's event is reached
805
+ - api/events: add `"streamEventSkip"` event for when a DASH EventStream's event is
806
+ "skipped"
807
+ - types/events: add `IStreamEvent` and `IStreamEventData` - which define the payload
808
+ emitted by both a `"streamEvent"` and `"streamEventSkip"` events to the exported types
809
+ - api/tracks: add second argument to `setPreferredAudioTracks`, `setPreferredTextTracks`
810
+ and `setPreferredVideoTracks` to be able to also apply them to the currently loaded
811
+ Periods / content
812
+ - text/webvtt: parse settings attributes of WebVTT subtitles when in HTML mode
813
+ - api/tracks: add codec information to `getAvailableAudioTracks` and `getAudioTrack`
522
814
 
523
815
  ### Bug fixes
524
816
 
525
- - dash: do not reduce the minimum position when using the `manifestUpdateUrl` `transportOptions` in `loadVideo`
526
- - local-manifest: consider `language` property from a "local" Manifest
527
- - local-manifest: refresh the Manifest even if we dont have a Manifest URL, as is often the case when playing locally-stored contents
528
- - local-manifest: allow the "expired" property of a local-manifest to be updated
529
- - compat/eme/fairplay: for fairplay contents, better format the initialization data given to the CDM. The previous behavior could lead to invalid license requests
530
- - eme: re-allow serialization into a JSON string of the persisted session data, as presented in the DRM tutorial
531
- - compat/low-latency: fix compilation of async/await when playing low-latency contents with the default bundled builds
532
- - eme: ensure that the previous MediaKeySystemAccess used had `persistentState` to "required" when a new content needs it to be
533
- - eme: fix `closeSessionsOnStop` `keySystems` option actually not removing any MediaKeySession when stopping a content (v3.20.1 regression).
817
+ - dash: do not reduce the minimum position when using the `manifestUpdateUrl`
818
+ `transportOptions` in `loadVideo`
819
+ - local-manifest: consider `language` property from a "local" Manifest
820
+ - local-manifest: refresh the Manifest even if we dont have a Manifest URL, as is often
821
+ the case when playing locally-stored contents
822
+ - local-manifest: allow the "expired" property of a local-manifest to be updated
823
+ - compat/eme/fairplay: for fairplay contents, better format the initialization data given
824
+ to the CDM. The previous behavior could lead to invalid license requests
825
+ - eme: re-allow serialization into a JSON string of the persisted session data, as
826
+ presented in the DRM tutorial
827
+ - compat/low-latency: fix compilation of async/await when playing low-latency contents
828
+ with the default bundled builds
829
+ - eme: ensure that the previous MediaKeySystemAccess used had `persistentState` to
830
+ "required" when a new content needs it to be
831
+ - eme: fix `closeSessionsOnStop` `keySystems` option actually not removing any
832
+ MediaKeySession when stopping a content (v3.20.1 regression).
534
833
 
535
834
  ### Other improvements
536
835
 
537
- - dash: emit minor errors arising when parsing the DASH MPD through warning events (whose payload will be an error with the `PIPELINE_PARSE_ERROR` code)
538
- - dash: consider AdaptationSet@selectionPriority in our initial track choice if the user preferences lead to multiple compatible tracks
539
- - misc: do not download video segments when playing on an "audio" element.
540
- - eme: replace the MediaKeySession's cache entry based on the least recently used instead of on the least recently created to improve cache effectiveness.
541
- - eme/persistent sessions: Limit the maximum of stored persistent MediaKeySessions to 1000 to avoid the storage to grow indefinitely (higher than that, the least-recently used will be evicted)
836
+ - dash: emit minor errors arising when parsing the DASH MPD through warning events (whose
837
+ payload will be an error with the `PIPELINE_PARSE_ERROR` code)
838
+ - dash: consider AdaptationSet@selectionPriority in our initial track choice if the user
839
+ preferences lead to multiple compatible tracks
840
+ - misc: do not download video segments when playing on an "audio" element.
841
+ - eme: replace the MediaKeySession's cache entry based on the least recently used instead
842
+ of on the least recently created to improve cache effectiveness.
843
+ - eme/persistent sessions: Limit the maximum of stored persistent MediaKeySessions to 1000
844
+ to avoid the storage to grow indefinitely (higher than that, the least-recently used
845
+ will be evicted)
542
846
 
543
847
  ## v3.20.1 (2020-05-06)
544
848
 
545
849
  ### Bug fixes
546
850
 
547
- - eme: fix `OTHER_ERROR` issue arising when loading a new encrypted media when a previous since-disposed instance of the RxPlayer played encrypted contents on the same media element
548
- - eme: fix `OTHER_ERROR` issue arising on Internet Explorer 11 when playing more than one encrypted content
549
- - eme: fix issue where more than 50 active MediaKeySessions at the same time could lead to infinite rebuffering when playing back a previous content with multiple encryption keys
550
- - directfile: for directfile contents, don't reset to the preferred audio, text or video track when the track list changes
551
- - eme: remove any possibility of collision in the storage of EME initialization data. The previous behavior could theorically lead some initialization data to be ignored.
552
- - eme: fix typo which conflated an EME "internal-error" key status and an "output-restricted" one.
851
+ - eme: fix `OTHER_ERROR` issue arising when loading a new encrypted media when a previous
852
+ since-disposed instance of the RxPlayer played encrypted contents on the same media
853
+ element
854
+ - eme: fix `OTHER_ERROR` issue arising on Internet Explorer 11 when playing more than one
855
+ encrypted content
856
+ - eme: fix issue where more than 50 active MediaKeySessions at the same time could lead to
857
+ infinite rebuffering when playing back a previous content with multiple encryption keys
858
+ - directfile: for directfile contents, don't reset to the preferred audio, text or video
859
+ track when the track list changes
860
+ - eme: remove any possibility of collision in the storage of EME initialization data. The
861
+ previous behavior could theorically lead some initialization data to be ignored.
862
+ - eme: fix typo which conflated an EME "internal-error" key status and an
863
+ "output-restricted" one.
553
864
 
554
865
  ## v3.20.0 (2020-04-22)
555
866
 
556
867
  ### Features
557
868
 
558
- - api: add `disableVideoTrack` method
559
- - api: add the `preferredVideoTrack` constructor option and `setPreferredVideoTracks` / `getPreferredVideoTracks` methods to set a video track preference (or to start with the video track disabled).
560
- - api: add optional `codec` property to preferred audio tracks APIs, allowing applications to communicate a codec preference.
561
- - api: make the `language` and `audioDescription` properties in `preferredAudioTracks`' objects optional.
562
- - api: add `signInterpreted` to `getVideoTrack` and `getAvailableVideoTracks` return objects to know when a track contains sign language interpretation
869
+ - api: add `disableVideoTrack` method
870
+ - api: add the `preferredVideoTrack` constructor option and `setPreferredVideoTracks` /
871
+ `getPreferredVideoTracks` methods to set a video track preference (or to start with the
872
+ video track disabled).
873
+ - api: add optional `codec` property to preferred audio tracks APIs, allowing applications
874
+ to communicate a codec preference.
875
+ - api: make the `language` and `audioDescription` properties in `preferredAudioTracks`'
876
+ objects optional.
877
+ - api: add `signInterpreted` to `getVideoTrack` and `getAvailableVideoTracks` return
878
+ objects to know when a track contains sign language interpretation
563
879
 
564
880
  ### Deprecated
565
881
 
566
- - api: deprecate the `getManifest()` method
567
- - api: deprecate the `getCurrentAdaptations()` method
568
- - api: deprecate the `getCurrentRepresentations()` method
882
+ - api: deprecate the `getManifest()` method
883
+ - api: deprecate the `getCurrentAdaptations()` method
884
+ - api: deprecate the `getCurrentRepresentations()` method
569
885
 
570
886
  ### Bug fixes
571
887
 
572
- - compat/eme: Set proper EME Safari implementation, to play contents with DRM on it without issues
573
- - compat/directfile/iOS: On Safari iOS, fix auto-play warnings when a directfile content is played with the `playsinline` attribute set.
574
- - directfile: In Directfile mode, always disable the current text track when a `null` is encountered in the preferredTextTracks array
888
+ - compat/eme: Set proper EME Safari implementation, to play contents with DRM on it
889
+ without issues
890
+ - compat/directfile/iOS: On Safari iOS, fix auto-play warnings when a directfile content
891
+ is played with the `playsinline` attribute set.
892
+ - directfile: In Directfile mode, always disable the current text track when a `null` is
893
+ encountered in the preferredTextTracks array
575
894
 
576
895
  ### Other improvements
577
896
 
578
- - abr: ignore requests that may have directly hit the cache in our adaptive logic
579
- - dash/perf: improve parsing efficiency for very large MPDs, at the expense of a very small risk of de-synchronization. Mechanisms still allow for regular re-synchronization.
897
+ - abr: ignore requests that may have directly hit the cache in our adaptive logic
898
+ - dash/perf: improve parsing efficiency for very large MPDs, at the expense of a very
899
+ small risk of de-synchronization. Mechanisms still allow for regular re-synchronization.
580
900
 
581
901
  ## v3.19.0 (2020-03-11)
582
902
 
583
903
  ### Features
584
904
 
585
- - dash: handle multiple URL per segment announced through multiple BaseURL elements in the MPD
586
- - dash/smooth/metaplaylist: add `manifestUpdateUrl` to loadVideo's `transportOptions` to provide a shorter version of the Manifest, used for more resource-efficient Manifest updates
587
- - tools/createMetaplaylist: add the experimental `createMetaplaylist` tool, which allows to generate Metaplaylist contents from given Manifests
588
- - tools/TextTrackRenderer: add the optional `language` property to the `setTextTrack` method of the experimental `TextTrackRenderer` tool as it could be needed when parsing SAMI subtitles
589
- - types: export IAvailableAudioTrack, IAvailableTextTrack and IAvailableVideoTrack types
590
- - types: export IAudioTrack, ITextTrack and IVideoTrack types
905
+ - dash: handle multiple URL per segment announced through multiple BaseURL elements in the
906
+ MPD
907
+ - dash/smooth/metaplaylist: add `manifestUpdateUrl` to loadVideo's `transportOptions` to
908
+ provide a shorter version of the Manifest, used for more resource-efficient Manifest
909
+ updates
910
+ - tools/createMetaplaylist: add the experimental `createMetaplaylist` tool, which allows
911
+ to generate Metaplaylist contents from given Manifests
912
+ - tools/TextTrackRenderer: add the optional `language` property to the `setTextTrack`
913
+ method of the experimental `TextTrackRenderer` tool as it could be needed when parsing
914
+ SAMI subtitles
915
+ - types: export IAvailableAudioTrack, IAvailableTextTrack and IAvailableVideoTrack types
916
+ - types: export IAudioTrack, ITextTrack and IVideoTrack types
591
917
 
592
918
  ### Bug fixes
593
919
 
594
- - dash/smooth: fix segment url resolution when there is query parameters in the Manifest URL and/or segment path, themselves containing "/" characters
595
- - local-manifest: fix videoElement's duration and `getVideoDuration` for contents in the experimental `local` transport
596
- - tools/parseBifThumbnails: do not return an un-displayable ArrayBuffer of the whole thing in each `image` property in the experimental `parseBifThumbnails` function
920
+ - dash/smooth: fix segment url resolution when there is query parameters in the Manifest
921
+ URL and/or segment path, themselves containing "/" characters
922
+ - local-manifest: fix videoElement's duration and `getVideoDuration` for contents in the
923
+ experimental `local` transport
924
+ - tools/parseBifThumbnails: do not return an un-displayable ArrayBuffer of the whole thing
925
+ in each `image` property in the experimental `parseBifThumbnails` function
597
926
 
598
927
  ### Other improvements
599
928
 
600
- - compat: avoid pushing a segment on top of the current position in Safari, as it can sometime lead to green macro-blocks
601
- - dash: add multiple performance improvements related to MPD parsing on embedded devices
602
- - dash/smooth/metaplaylist/local: refresh less often the Manifest when parsing it takes too much time to improve performance
603
- - smooth: filter unsupported video and audio QualityLevels when parsing a Smooth Manifest
604
- - build: greatly reduce the time needed to produce a modular build through the `npm run build:modular` script
605
- - build: remove Object.assign dependency
929
+ - compat: avoid pushing a segment on top of the current position in Safari, as it can
930
+ sometime lead to green macro-blocks
931
+ - dash: add multiple performance improvements related to MPD parsing on embedded devices
932
+ - dash/smooth/metaplaylist/local: refresh less often the Manifest when parsing it takes
933
+ too much time to improve performance
934
+ - smooth: filter unsupported video and audio QualityLevels when parsing a Smooth Manifest
935
+ - build: greatly reduce the time needed to produce a modular build through the
936
+ `npm run build:modular` script
937
+ - build: remove Object.assign dependency
606
938
 
607
939
  ## v3.18.0 (2020-01-30)
608
940
 
609
941
  ### Features
610
942
 
611
- - directfile: support most audio tracks API when playing a directfile content
612
- - directfile: support most text tracks API when playing a directfile content
613
- - directfile: support most video tracks API when playing a directfile content
614
- - api: add `seeking` and `seeked` events which announce the beginning and end of a seek, even when seeking to an already buffered part
615
- - subtitles/ttml: handle styles inheriting other styles in TTML subtitles
616
- - local-manifest: add experimental `local` transport to allow the playback of downloaded contents (even when offline)
617
- - tools: add the experimental `TextTrackRenderer` tool to be able to add a custom text track to any content
618
- - tools: add the experimental `parseBifThumbnails` tool to easily parse thumbnails in the BIF format
943
+ - directfile: support most audio tracks API when playing a directfile content
944
+ - directfile: support most text tracks API when playing a directfile content
945
+ - directfile: support most video tracks API when playing a directfile content
946
+ - api: add `seeking` and `seeked` events which announce the beginning and end of a seek,
947
+ even when seeking to an already buffered part
948
+ - subtitles/ttml: handle styles inheriting other styles in TTML subtitles
949
+ - local-manifest: add experimental `local` transport to allow the playback of downloaded
950
+ contents (even when offline)
951
+ - tools: add the experimental `TextTrackRenderer` tool to be able to add a custom text
952
+ track to any content
953
+ - tools: add the experimental `parseBifThumbnails` tool to easily parse thumbnails in the
954
+ BIF format
619
955
 
620
956
  ### Deprecated
621
957
 
622
- - api: deprecate the `supplementaryTextTracks` loadVideo option in profit of the external TextTrackRenderer tool
623
- - api: aeprecate the `supplementaryImageTracks` loadVideo option in profit of the external parseBifThumbnails tool
624
- - api: deprecate the `getImageTrackData` method in profit of the external `parseBifThumbnails` tool
625
- - api: deprecate the `imageTrackUpdate` event in profit of the external `parseBifThumbnails` tool
626
- - api: deprecate `hideNativeSubtitles` (officially)
958
+ - api: deprecate the `supplementaryTextTracks` loadVideo option in profit of the external
959
+ TextTrackRenderer tool
960
+ - api: aeprecate the `supplementaryImageTracks` loadVideo option in profit of the external
961
+ parseBifThumbnails tool
962
+ - api: deprecate the `getImageTrackData` method in profit of the external
963
+ `parseBifThumbnails` tool
964
+ - api: deprecate the `imageTrackUpdate` event in profit of the external
965
+ `parseBifThumbnails` tool
966
+ - api: deprecate `hideNativeSubtitles` (officially)
627
967
 
628
968
  ### Bug fixes
629
969
 
630
- - subtitles/ttml: Correctly handle alpha information in the rgba values included in a TTML file
631
- - images/bif: fix sometimes incorrect "ts" value on thumbnails returned by the `getImageTrackData` method and the `imageTrackUpdate` event
970
+ - subtitles/ttml: Correctly handle alpha information in the rgba values included in a TTML
971
+ file
972
+ - images/bif: fix sometimes incorrect "ts" value on thumbnails returned by the
973
+ `getImageTrackData` method and the `imageTrackUpdate` event
632
974
 
633
975
  ### Other improvements
634
976
 
635
- - node: allow the RxPlayer to be imported from Node.js for server-side-rendering
636
- - images/bif: throw a better error when an invalid BIF file is received
637
- - api: be more "generous" with player events by ditching the deep-equal npm module due to package size and some edge-case behavior
638
- - demo: avoid re-rendering multiple ui components when unnecessary
977
+ - node: allow the RxPlayer to be imported from Node.js for server-side-rendering
978
+ - images/bif: throw a better error when an invalid BIF file is received
979
+ - api: be more "generous" with player events by ditching the deep-equal npm module due to
980
+ package size and some edge-case behavior
981
+ - demo: avoid re-rendering multiple ui components when unnecessary
639
982
 
640
983
  ## v3.17.1 (2019-12-20)
641
984
 
642
985
  ### Bug fixes
643
986
 
644
- - dash/metaplaylist: fix infinite rebuffering issue when refreshing multi-Period contents under specific conditions
645
- - buffer: be less aggressive when garbage collecting subtitles (if the maxBufferAhead/maxBufferBehind options are set) to avoid useful subtitles being removed
646
- - directfile/compat: for directfile contents, trigger directly the LOADED state on iOS/iPad/iPod browsers as those are not preloaded there
987
+ - dash/metaplaylist: fix infinite rebuffering issue when refreshing multi-Period contents
988
+ under specific conditions
989
+ - buffer: be less aggressive when garbage collecting subtitles (if the
990
+ maxBufferAhead/maxBufferBehind options are set) to avoid useful subtitles being removed
991
+ - directfile/compat: for directfile contents, trigger directly the LOADED state on
992
+ iOS/iPad/iPod browsers as those are not preloaded there
647
993
 
648
994
  ### Other improvements
649
995
 
650
- - demo: display clickable "play" button on the video element when autoplay is blocked due to browser policies - to help users unlock the situation
651
- - demo: add "Other" key system to allow specifying a custom key system in the demo page
996
+ - demo: display clickable "play" button on the video element when autoplay is blocked due
997
+ to browser policies - to help users unlock the situation
998
+ - demo: add "Other" key system to allow specifying a custom key system in the demo page
652
999
 
653
1000
  ## v3.17.0 (2019-12-09)
654
1001
 
655
1002
  ### Features
656
1003
 
657
- - eme/api: add keySystems.fallbackOn property to `loadVideo` to allow fallbacking to other qualities when encountering various key errors
658
- - eme/api: allow to set `fallbackOnLastTry` on a `getLicense` Error to be able to fallback on other qualities when a license request is on error
659
- - eme/api: add `NO_PLAYABLE_REPRESENTATION` `MediaError` for when every video or audio quality cannot be played
660
- - manifest/api: add `decipherable` property to a Representation object
661
- - api: add `decipherabilityUpdate` event triggered when a Representation's decipherability status is updated
662
- - languages/api: add `dub` boolean to audio tracks (through `getAudioTrack` and `getAvailableAudioTracks`) to tell if this is a dubbed track
663
- - languages/ttml: with TTML subtitles, support length relative to the Computed Cell Size for `tts:fontSize`, `tts:padding`, `tts:extent`, `tts:origin` and `tts:lineHeight`
664
- - transports/api: add `checkMediaSegmentIntegrity` `transportOptions` to automatically retry media segments which appear corrupted
665
- - transports/api: add `minimumManifestUpdateInterval` `transportOptions` to limit the Manifest update frequency
666
- - transports/api: add "progress" callback to a custom segmentLoader to improve adaptive streaming when an external segment loader is used
1004
+ - eme/api: add keySystems.fallbackOn property to `loadVideo` to allow fallbacking to other
1005
+ qualities when encountering various key errors
1006
+ - eme/api: allow to set `fallbackOnLastTry` on a `getLicense` Error to be able to fallback
1007
+ on other qualities when a license request is on error
1008
+ - eme/api: add `NO_PLAYABLE_REPRESENTATION` `MediaError` for when every video or audio
1009
+ quality cannot be played
1010
+ - manifest/api: add `decipherable` property to a Representation object
1011
+ - api: add `decipherabilityUpdate` event triggered when a Representation's decipherability
1012
+ status is updated
1013
+ - languages/api: add `dub` boolean to audio tracks (through `getAudioTrack` and
1014
+ `getAvailableAudioTracks`) to tell if this is a dubbed track
1015
+ - languages/ttml: with TTML subtitles, support length relative to the Computed Cell Size
1016
+ for `tts:fontSize`, `tts:padding`, `tts:extent`, `tts:origin` and `tts:lineHeight`
1017
+ - transports/api: add `checkMediaSegmentIntegrity` `transportOptions` to automatically
1018
+ retry media segments which appear corrupted
1019
+ - transports/api: add `minimumManifestUpdateInterval` `transportOptions` to limit the
1020
+ Manifest update frequency
1021
+ - transports/api: add "progress" callback to a custom segmentLoader to improve adaptive
1022
+ streaming when an external segment loader is used
667
1023
 
668
1024
  ### Bug fixes
669
1025
 
670
- - dash/metaplaylist: download the first segment of a new Period when the last downloaded segment from the previous Period ends after that segment ends
671
- - smooth/metaplaylist: consider `serverSyncInfos` `transportOptions` for Smooth and MetaPlaylist contents
672
- - buffers: completely clean a previous audio/text track from the SourceBuffer when switching to a different audio/text track
673
- - dash: avoid requesting an inexistent segment when downloading a multi-Period DASH content with a number-based SegmentTemplate with the `agressiveMode` option set to `true`
674
- - eme: do not wait for a previous invalid MediaKeySession to be closed before re-creating a valid one for the same content, to work around a widevine issue
675
- - eme: avoid race condition issue arising when multiple init data are received before the MediaKeys have been attached to the media element
676
- - dash: do not consider "trickmodes" AdaptationSet as directly playable video tracks
677
- - directfile: begin directly at the end (instead of the beginning) when setting a `startAt` loadVideo option with a `fromLastPosition` property set to `0` on directfile contents
678
- - metaplaylist: fix playback for non-live MetaPlaylist contents not starting at a `0` time
1026
+ - dash/metaplaylist: download the first segment of a new Period when the last downloaded
1027
+ segment from the previous Period ends after that segment ends
1028
+ - smooth/metaplaylist: consider `serverSyncInfos` `transportOptions` for Smooth and
1029
+ MetaPlaylist contents
1030
+ - buffers: completely clean a previous audio/text track from the SourceBuffer when
1031
+ switching to a different audio/text track
1032
+ - dash: avoid requesting an inexistent segment when downloading a multi-Period DASH
1033
+ content with a number-based SegmentTemplate with the `agressiveMode` option set to
1034
+ `true`
1035
+ - eme: do not wait for a previous invalid MediaKeySession to be closed before re-creating
1036
+ a valid one for the same content, to work around a widevine issue
1037
+ - eme: avoid race condition issue arising when multiple init data are received before the
1038
+ MediaKeys have been attached to the media element
1039
+ - dash: do not consider "trickmodes" AdaptationSet as directly playable video tracks
1040
+ - directfile: begin directly at the end (instead of the beginning) when setting a
1041
+ `startAt` loadVideo option with a `fromLastPosition` property set to `0` on directfile
1042
+ contents
1043
+ - metaplaylist: fix playback for non-live MetaPlaylist contents not starting at a `0` time
679
1044
 
680
1045
  ### Other improvements
681
1046
 
682
- - abr: better estimate a lower bitrate after a sudden fall in bandwidth
683
- - dash/low-latency: properly use @availabilityTimeOffset when playing a low-latency DASH content
684
- - code: use only strict boolean expressions in the code (do not rely on falsy or truthy values anymore).
685
- - demo: add buffer content graphs to the demo page to vizualize exactly what have been buffered
686
- - demo: improve accessibility of the demo page for the english-speaking visually impaired
687
- - misc: replace uglifyJS by terser for minification purposes
1047
+ - abr: better estimate a lower bitrate after a sudden fall in bandwidth
1048
+ - dash/low-latency: properly use @availabilityTimeOffset when playing a low-latency DASH
1049
+ content
1050
+ - code: use only strict boolean expressions in the code (do not rely on falsy or truthy
1051
+ values anymore).
1052
+ - demo: add buffer content graphs to the demo page to vizualize exactly what have been
1053
+ buffered
1054
+ - demo: improve accessibility of the demo page for the english-speaking visually impaired
1055
+ - misc: replace uglifyJS by terser for minification purposes
688
1056
 
689
1057
  ## v3.16.1 (2019-10-03)
690
1058
 
691
1059
  ### Bug fixes
692
1060
 
693
- - dash: update timeshiftBufferDepth considered when refreshing the MPD
694
- - dash: fix infinite rebuffering issue when refreshing a Multi-Period MPD with the oldest Periods removed
695
- - api: go to `"SEEKING"` state instead of `"BUFFERING"` when seeking while the player is in the "BUFFERING" state
696
- - api: Avoid reinitializing the video, audio and text track choice after a `"RELOADING"` state
697
- - api: When going back to a Period on which `disableTextTracks` was called, keep the text track disabled even if different `preferredTextTracks` are set
698
- - smooth: Replace `{CustomAttributes}` token in a segment URL
699
- - dash: load the last segment of a Period when it is declared in a SegmentTemplate (with no SegmentTimeline) and when its end is exactly equal to the end of the Period
1061
+ - dash: update timeshiftBufferDepth considered when refreshing the MPD
1062
+ - dash: fix infinite rebuffering issue when refreshing a Multi-Period MPD with the oldest
1063
+ Periods removed
1064
+ - api: go to `"SEEKING"` state instead of `"BUFFERING"` when seeking while the player is
1065
+ in the "BUFFERING" state
1066
+ - api: Avoid reinitializing the video, audio and text track choice after a `"RELOADING"`
1067
+ state
1068
+ - api: When going back to a Period on which `disableTextTracks` was called, keep the text
1069
+ track disabled even if different `preferredTextTracks` are set
1070
+ - smooth: Replace `{CustomAttributes}` token in a segment URL
1071
+ - dash: load the last segment of a Period when it is declared in a SegmentTemplate (with
1072
+ no SegmentTimeline) and when its end is exactly equal to the end of the Period
700
1073
 
701
1074
  ### Other improvements
702
1075
 
703
- - dash/metaplaylist: be more tolerant with the appendWindows set as the previous behavior could lead to infinite rebuffering and segments re-downloading
704
- - dash/metaplaylist/smooth: Better handle discontinuities in a VoD content
705
- - dash/metaplaylist: Handle discontinuities between DASH Periods and between MetaPlaylist contents
706
- - dash/smooth: Avoid requesting multiple time the last segment when the duration given in the Manifest are inexact
707
- - smooth: Skip without throwing Manifest's StreamIndex with an unrecognized type
708
- - dash: Improve prediction of when to update a dynamic MPD with xlinks
709
- - dash: Be more tolerant of differences between a segment's time announced by the Manifest and the reality to avoid multiple cases of segment re-downloading
710
- - dash: Guess initialization range for segments defined in a SegmentBase without an Initialization element
711
- - dash: Throw better error when a sidx with a reference_type `1` is encountered
712
- - api: Throw a better error when setting a `preferredAudioTracks` or `preferredTextTracks` value in the wrong format
713
- - demo: Allow to export and share demo links with custom contents
714
- - demo: Fix video track switching in the demo page
715
- - demo: Fix spinner not hiding when playing on very specific conditions
716
- - demo: reset playback rate before loading a content
1076
+ - dash/metaplaylist: be more tolerant with the appendWindows set as the previous behavior
1077
+ could lead to infinite rebuffering and segments re-downloading
1078
+ - dash/metaplaylist/smooth: Better handle discontinuities in a VoD content
1079
+ - dash/metaplaylist: Handle discontinuities between DASH Periods and between MetaPlaylist
1080
+ contents
1081
+ - dash/smooth: Avoid requesting multiple time the last segment when the duration given in
1082
+ the Manifest are inexact
1083
+ - smooth: Skip without throwing Manifest's StreamIndex with an unrecognized type
1084
+ - dash: Improve prediction of when to update a dynamic MPD with xlinks
1085
+ - dash: Be more tolerant of differences between a segment's time announced by the Manifest
1086
+ and the reality to avoid multiple cases of segment re-downloading
1087
+ - dash: Guess initialization range for segments defined in a SegmentBase without an
1088
+ Initialization element
1089
+ - dash: Throw better error when a sidx with a reference_type `1` is encountered
1090
+ - api: Throw a better error when setting a `preferredAudioTracks` or `preferredTextTracks`
1091
+ value in the wrong format
1092
+ - demo: Allow to export and share demo links with custom contents
1093
+ - demo: Fix video track switching in the demo page
1094
+ - demo: Fix spinner not hiding when playing on very specific conditions
1095
+ - demo: reset playback rate before loading a content
717
1096
 
718
1097
  ## v3.16.0 (2019-09-16)
719
1098
 
720
1099
  ### Features
721
1100
 
722
- - dash: add `lowLatencyMode` `loadVideo` option to play low-latency DASH contents with chunk-encoded CMAF and chunked transfer encoding close to the live edge efficiently
723
- - metaplaylist: add the experimental `metaplaylist` transport, which allows to smoothly play a concatenation of multiple contents
724
- - api: add `serverSyncInfos` to `transportOptions` (`loadVideo` option)
725
- - errors: add `code` property to a `NetworkError` indicating the corresponding HTTP status
1101
+ - dash: add `lowLatencyMode` `loadVideo` option to play low-latency DASH contents with
1102
+ chunk-encoded CMAF and chunked transfer encoding close to the live edge efficiently
1103
+ - metaplaylist: add the experimental `metaplaylist` transport, which allows to smoothly
1104
+ play a concatenation of multiple contents
1105
+ - api: add `serverSyncInfos` to `transportOptions` (`loadVideo` option)
1106
+ - errors: add `code` property to a `NetworkError` indicating the corresponding HTTP status
726
1107
 
727
1108
  ### Bug fixes
728
1109
 
729
- - dash: fix minimum time calculation for Multi-Period MPDs with SegmentTemplate segment indexes but no SegmentTimeline
730
- - dash: play static MPD not declaring any segment for a time of 0 seconds at the minimum possible time by default
731
- - dash: fix maximum position calculation for live Multi-Period contents where the currently generated period is not the last one declared in the MPD
1110
+ - dash: fix minimum time calculation for Multi-Period MPDs with SegmentTemplate segment
1111
+ indexes but no SegmentTimeline
1112
+ - dash: play static MPD not declaring any segment for a time of 0 seconds at the minimum
1113
+ possible time by default
1114
+ - dash: fix maximum position calculation for live Multi-Period contents where the
1115
+ currently generated period is not the last one declared in the MPD
732
1116
 
733
1117
  ### Other improvements
734
1118
 
735
- - api: authorize to set no `url` to `loadVideo` if the `manifestLoader` `transportOption` is set
736
- - smooth: the `aggressiveMode` option now only allows requests for segments which had time to at least begin to be generated to avoid too much HTTP 412
737
- - dash: the `aggressiveMode` now also have an effect for some SegmentTemplate DASH contents (download segments even if they're not finished)
738
- - code: add pre-commit and pre-push git hooks to automate checking and facilitate bisecting
739
- - dash: better handle live Multi-Period contents where the currently broadcasted period is not the last one declared in the MPD
740
- - dash: better infer the end of a Period if the start of the next one is defined
741
- - api: always start live contents at the live edge if one is defined and not just before the last available segments
742
- - ci: run integration tests with Travis and appveyor again
1119
+ - api: authorize to set no `url` to `loadVideo` if the `manifestLoader` `transportOption`
1120
+ is set
1121
+ - smooth: the `aggressiveMode` option now only allows requests for segments which had time
1122
+ to at least begin to be generated to avoid too much HTTP 412
1123
+ - dash: the `aggressiveMode` now also have an effect for some SegmentTemplate DASH
1124
+ contents (download segments even if they're not finished)
1125
+ - code: add pre-commit and pre-push git hooks to automate checking and facilitate
1126
+ bisecting
1127
+ - dash: better handle live Multi-Period contents where the currently broadcasted period is
1128
+ not the last one declared in the MPD
1129
+ - dash: better infer the end of a Period if the start of the next one is defined
1130
+ - api: always start live contents at the live edge if one is defined and not just before
1131
+ the last available segments
1132
+ - ci: run integration tests with Travis and appveyor again
743
1133
 
744
1134
  ## v3.15.1 (2019-08-07)
745
1135
 
746
1136
  ### Bug fixes
747
1137
 
748
- - api: fix `networkConfig.segmentRetry` `loadVideo` option. Due to a typo, it was forced to the default value (4)
749
- - api/abr: when the `throttleVideoBitrateWhenHidden` option is set to true, wait 60 seconds (as documented) after the page is hidden before switching to a lower bitrate
750
- - dash: fix segment indexing for SegmentList-based MPD with a period start different than 0
1138
+ - api: fix `networkConfig.segmentRetry` `loadVideo` option. Due to a typo, it was forced
1139
+ to the default value (4)
1140
+ - api/abr: when the `throttleVideoBitrateWhenHidden` option is set to true, wait 60
1141
+ seconds (as documented) after the page is hidden before switching to a lower bitrate
1142
+ - dash: fix segment indexing for SegmentList-based MPD with a period start different than
1143
+ 0
751
1144
 
752
1145
  ### Other improvements
753
1146
 
754
- - dash/smooth: check if the segment should still be available before retrying it (avoid unnecessary HTTP 404 errors)
755
- - dash/smooth: the Manifest can now be refreshed due to unexpected 404 HTTP errors on a segment request (only on particular conditions)
756
- - dash: better handle segments overlapping multiple periods by using the data that is only within the concerned Period's bounds
757
- - demo: authorize to play stored contents with an HTTP Manifest in the HTTPS demo
1147
+ - dash/smooth: check if the segment should still be available before retrying it (avoid
1148
+ unnecessary HTTP 404 errors)
1149
+ - dash/smooth: the Manifest can now be refreshed due to unexpected 404 HTTP errors on a
1150
+ segment request (only on particular conditions)
1151
+ - dash: better handle segments overlapping multiple periods by using the data that is only
1152
+ within the concerned Period's bounds
1153
+ - demo: authorize to play stored contents with an HTTP Manifest in the HTTPS demo
758
1154
 
759
1155
  ## v3.15.0 (2019-07-24)
760
1156
 
761
1157
  ### Features
762
1158
 
763
- - eme: add `getLicenseConfig` property to the `keySystems` `loadVideo` option, to be able to have much more control over getLicense's behavior
764
- - eme: add `noRetry` to `getLicense` errors to abort retries when the licence request fails
765
- - eme: add `message` to `getLicense` and `onKeyStatusesChange` errors to allow custom errors when the license request fails
766
- - eme: add a new `ENCRYPTED_MEDIA_ERROR` with the code `CREATE_MEDIA_KEYS_ERROR` for when we cannot create a MediaKeys instance (seen on some Android devices).
1159
+ - eme: add `getLicenseConfig` property to the `keySystems` `loadVideo` option, to be able
1160
+ to have much more control over getLicense's behavior
1161
+ - eme: add `noRetry` to `getLicense` errors to abort retries when the licence request
1162
+ fails
1163
+ - eme: add `message` to `getLicense` and `onKeyStatusesChange` errors to allow custom
1164
+ errors when the license request fails
1165
+ - eme: add a new `ENCRYPTED_MEDIA_ERROR` with the code `CREATE_MEDIA_KEYS_ERROR` for when
1166
+ we cannot create a MediaKeys instance (seen on some Android devices).
767
1167
 
768
1168
  ### Bug fixes
769
1169
 
770
- - api: avoid sending {audio,video...}BitrateChange with a `-1` value when starting to play a content
771
- - api/abr: a call to `setAudioBitrate` or `setVideoBitrate` could be ignored for a content if it was still loading. This is now fixed.
772
- - api/abr: a call to `setMaxAutoBitrate` or `setMaxVideoBitrate` could be ignored for a content if it was still loading. This is now fixed.
773
- - dash: fix maximum position calculation when refreshing a live MPD with a UTCTiming element and no SegmentTimeline.
774
- - dash/smooth: a MPD/Manifest request failing could still be retried when loading another content
775
- - eme/compat: on Safari, depend on WebKitMediaKeys even if MediaKeys is defined because of differences of implementations
776
- - pipelines: always send `PIPELINE_LOAD_ERROR` warnings when a segment request or a Manifest request is retried
777
- - errors: replace undocumented `PIPELINE_RESOLVE_ERROR` code into the proper documented `PIPELINE_LOAD_ERROR` code
778
- - errors: replace undocumented `PIPELINE_PARSING_ERROR` code into the proper documented `PIPELINE_PARSE_ERROR` code
779
- - errors: add to the `ErrorCodes` static property the previously forgotten `NONE`, `INVALID_KEY_SYSTEM` and `INVALID_ENCRYPTED_EVENT` codes.
1170
+ - api: avoid sending {audio,video...}BitrateChange with a `-1` value when starting to play
1171
+ a content
1172
+ - api/abr: a call to `setAudioBitrate` or `setVideoBitrate` could be ignored for a content
1173
+ if it was still loading. This is now fixed.
1174
+ - api/abr: a call to `setMaxAutoBitrate` or `setMaxVideoBitrate` could be ignored for a
1175
+ content if it was still loading. This is now fixed.
1176
+ - dash: fix maximum position calculation when refreshing a live MPD with a UTCTiming
1177
+ element and no SegmentTimeline.
1178
+ - dash/smooth: a MPD/Manifest request failing could still be retried when loading another
1179
+ content
1180
+ - eme/compat: on Safari, depend on WebKitMediaKeys even if MediaKeys is defined because of
1181
+ differences of implementations
1182
+ - pipelines: always send `PIPELINE_LOAD_ERROR` warnings when a segment request or a
1183
+ Manifest request is retried
1184
+ - errors: replace undocumented `PIPELINE_RESOLVE_ERROR` code into the proper documented
1185
+ `PIPELINE_LOAD_ERROR` code
1186
+ - errors: replace undocumented `PIPELINE_PARSING_ERROR` code into the proper documented
1187
+ `PIPELINE_PARSE_ERROR` code
1188
+ - errors: add to the `ErrorCodes` static property the previously forgotten `NONE`,
1189
+ `INVALID_KEY_SYSTEM` and `INVALID_ENCRYPTED_EVENT` codes.
780
1190
 
781
1191
  ### Other improvements
782
1192
 
783
- - abr: make use of another adaptive algorithm, buffer-based, when enough buffer has been built.
784
- - demo: allow the user to save custom contents to local storage to be able to reuse them when the page is refreshed
785
- - eme: throw a better error in `onKeyStatusesChange` if the Promise is rejected without an Error
786
- - errors: refactore error management to better correlate the `fatal` boolean to a playback stop and to better ensure a documented error is always thrown
787
- - scripts: make our build script compatible with MacOS (handle BSD sed)
1193
+ - abr: make use of another adaptive algorithm, buffer-based, when enough buffer has been
1194
+ built.
1195
+ - demo: allow the user to save custom contents to local storage to be able to reuse them
1196
+ when the page is refreshed
1197
+ - eme: throw a better error in `onKeyStatusesChange` if the Promise is rejected without an
1198
+ Error
1199
+ - errors: refactore error management to better correlate the `fatal` boolean to a playback
1200
+ stop and to better ensure a documented error is always thrown
1201
+ - scripts: make our build script compatible with MacOS (handle BSD sed)
788
1202
 
789
1203
  ## v3.14.0 (2019-06-26)
790
1204
 
791
1205
  ### Features
792
1206
 
793
- - api/abr: add `throttleVideoBitrateWhenHidden` which unlike `throttleWhenHidden` does not throttle the video bitrate if the media element is in picture-in-picture mode
1207
+ - api/abr: add `throttleVideoBitrateWhenHidden` which unlike `throttleWhenHidden` does not
1208
+ throttle the video bitrate if the media element is in picture-in-picture mode
794
1209
 
795
1210
  ### Deprecated
796
1211
 
797
- - api/abr: deprecate `throttleWhenHidden` in profit of `throttleVideoBitrateWhenHidden` which has a better API definition for some edge cases
1212
+ - api/abr: deprecate `throttleWhenHidden` in profit of `throttleVideoBitrateWhenHidden`
1213
+ which has a better API definition for some edge cases
798
1214
 
799
1215
  ### Bug fixes
800
1216
 
801
- - api/abr: `limitVideoWidth` now also considers if the video is in picture-in-picture mode
802
- - buffer: better prevent the `BUFFER_FULL_ERROR` `MediaError` on some memory-constrained devices
803
- - dash: consider the buffer depth as infinite (until `availabilityStartTime`) if the `timeShiftBufferDepth` is not set
804
- - smooth: consider the buffer depth as infinite if the `DVRWindowLength` is not set or set to 0
805
- - init: start live contents that just began (less than 10 seconds ago) at the minimum position instead of throwing a STARTING_TIME_NOT_FOUND MEDIA_ERROR.
806
- - tests: use web server (local by default) instead of stubbed XHRs to serve tests contents to our integration and memory tests
1217
+ - api/abr: `limitVideoWidth` now also considers if the video is in picture-in-picture mode
1218
+ - buffer: better prevent the `BUFFER_FULL_ERROR` `MediaError` on some memory-constrained
1219
+ devices
1220
+ - dash: consider the buffer depth as infinite (until `availabilityStartTime`) if the
1221
+ `timeShiftBufferDepth` is not set
1222
+ - smooth: consider the buffer depth as infinite if the `DVRWindowLength` is not set or set
1223
+ to 0
1224
+ - init: start live contents that just began (less than 10 seconds ago) at the minimum
1225
+ position instead of throwing a STARTING_TIME_NOT_FOUND MEDIA_ERROR.
1226
+ - tests: use web server (local by default) instead of stubbed XHRs to serve tests contents
1227
+ to our integration and memory tests
807
1228
 
808
1229
  ## v3.13.0 (2019-05-15)
809
1230
 
810
1231
  ### Features
811
1232
 
812
- - eme: add `disableMediaKeysAttachmentLock` key system option to bypass a deadlock (with possible tradeoffs) when playing encrypted contents on some peculiar devices
1233
+ - eme: add `disableMediaKeysAttachmentLock` key system option to bypass a deadlock (with
1234
+ possible tradeoffs) when playing encrypted contents on some peculiar devices
813
1235
 
814
1236
  ### Bug fixes
815
1237
 
816
- - dash/smooth: never rely on Date.now when calculating time differences to avoid issues when the user adjusts the system clock while playing a live content
817
- - eme: throw a better error (avoid `toString is not a function` messages) for a `KEY_LOAD_ERROR` when the `getLicense` function provided fails without a proper error
818
- - api: fix rare situation with DASH multi-period contents where we reported no available bitrate, Adaptation nor Representation when switching to another Period.
1238
+ - dash/smooth: never rely on Date.now when calculating time differences to avoid issues
1239
+ when the user adjusts the system clock while playing a live content
1240
+ - eme: throw a better error (avoid `toString is not a function` messages) for a
1241
+ `KEY_LOAD_ERROR` when the `getLicense` function provided fails without a proper error
1242
+ - api: fix rare situation with DASH multi-period contents where we reported no available
1243
+ bitrate, Adaptation nor Representation when switching to another Period.
819
1244
 
820
1245
  ### Other improvements
821
1246
 
822
- - eme: add other default contentTypes when calling requestMediaKeySystemAccess to improve device support
823
- - demo: update the demo UI
824
- - code: change indentation style of a big chunk of the code to increase readability
1247
+ - eme: add other default contentTypes when calling requestMediaKeySystemAccess to improve
1248
+ device support
1249
+ - demo: update the demo UI
1250
+ - code: change indentation style of a big chunk of the code to increase readability
825
1251
 
826
1252
  ## v3.12.0 (2019-04-10)
827
1253
 
828
1254
  ### Features
829
1255
 
830
- - dash: add UTCTiming support
831
- - smooth: add `aggressiveMode` transportOption to requests segments in advance
832
- - dash/smooth: add `referenceDateTime` transportOption to set a default reference time for live contents
1256
+ - dash: add UTCTiming support
1257
+ - smooth: add `aggressiveMode` transportOption to requests segments in advance
1258
+ - dash/smooth: add `referenceDateTime` transportOption to set a default reference time for
1259
+ live contents
833
1260
 
834
1261
  ### Bug fixes
835
1262
 
836
- - buffer: work around firefox bug leading to infinite rebuffering when seeking many times in a content
1263
+ - buffer: work around firefox bug leading to infinite rebuffering when seeking many times
1264
+ in a content
837
1265
 
838
1266
  ### Other improvements
839
1267
 
840
- - dash/smooth: add optional `url`, `sendingTime` and `receivingTime` properties in the response given by manifestLoader transportOption
841
- - misc: deploy documentation pages and demos from our previous versions
842
- - misc: add new RxPlayer logo to README.md and the demo
1268
+ - dash/smooth: add optional `url`, `sendingTime` and `receivingTime` properties in the
1269
+ response given by manifestLoader transportOption
1270
+ - misc: deploy documentation pages and demos from our previous versions
1271
+ - misc: add new RxPlayer logo to README.md and the demo
843
1272
 
844
1273
  ## v3.11.1 (2019-03-11)
845
1274
 
846
1275
  ### Bug fixes
847
1276
 
848
- - npm: publish package again. An error in the previous release led to some files missing on npm
1277
+ - npm: publish package again. An error in the previous release led to some files missing
1278
+ on npm
849
1279
 
850
1280
  ## v3.11.0 (2019-03-07)
851
1281
 
852
1282
  ### Features
853
1283
 
854
- - languages/api: add `preferredAudioTracks` and `preferredTextTracks` player options
855
- - languages/api: add `setPreferredAudioTracks`, `getPreferredAudioTracks`, `setPreferredTextTracks` and `getPreferredTextTracks` methods
856
- - languages/api: add `availableAudioTracksChange`, `availableTextTracksChange` and `availableVideoTracksChange` events
857
- - abr/api: add `availableAudioBitratesChange` and `availableVideoBitratesChange` events
858
- - eme: allow playback of mixed encrypted and unencrypted contents on Chrome
859
- - types: export the new `IAudioTrackPreference` and `ITextTrackPreference` types
1284
+ - languages/api: add `preferredAudioTracks` and `preferredTextTracks` player options
1285
+ - languages/api: add `setPreferredAudioTracks`, `getPreferredAudioTracks`,
1286
+ `setPreferredTextTracks` and `getPreferredTextTracks` methods
1287
+ - languages/api: add `availableAudioTracksChange`, `availableTextTracksChange` and
1288
+ `availableVideoTracksChange` events
1289
+ - abr/api: add `availableAudioBitratesChange` and `availableVideoBitratesChange` events
1290
+ - eme: allow playback of mixed encrypted and unencrypted contents on Chrome
1291
+ - types: export the new `IAudioTrackPreference` and `ITextTrackPreference` types
860
1292
 
861
1293
  ### Deprecated
862
1294
 
863
- - languages/api: deprecate the `defaultAudioTrack` `loadVideo` option in favor of the `preferredAudioTracks` player option.
864
- - languages/api: deprecate the `defaultTextTrack` `loadVideo` option in favor of the `preferredTextTracks` player option.
1295
+ - languages/api: deprecate the `defaultAudioTrack` `loadVideo` option in favor of the
1296
+ `preferredAudioTracks` player option.
1297
+ - languages/api: deprecate the `defaultTextTrack` `loadVideo` option in favor of the
1298
+ `preferredTextTracks` player option.
865
1299
 
866
1300
  ### Bug fixes
867
1301
 
868
- - dash: fix `minimumUpdatePeriod` management for DASH contents
869
- - smooth: better prevent 412 HTTP errors for smooth streaming contents
870
- - subtitles: ensure subtitles are not visible in Firefox when disabling them in the `"native"` textTrack mode.
871
- - errors: avoid sending multiple `MEDIA_TIME_BEFORE_MANIFEST` or `MEDIA_TIME_AFTER_MANIFEST` warnings instead of just one
872
- - api: fix (deprecated) option `hideNativeSubtitles`
1302
+ - dash: fix `minimumUpdatePeriod` management for DASH contents
1303
+ - smooth: better prevent 412 HTTP errors for smooth streaming contents
1304
+ - subtitles: ensure subtitles are not visible in Firefox when disabling them in the
1305
+ `"native"` textTrack mode.
1306
+ - errors: avoid sending multiple `MEDIA_TIME_BEFORE_MANIFEST` or
1307
+ `MEDIA_TIME_AFTER_MANIFEST` warnings instead of just one
1308
+ - api: fix (deprecated) option `hideNativeSubtitles`
873
1309
 
874
1310
  ### Other improvements
875
1311
 
876
- - errors: set a readable error message for every error and warnings thrown
877
- - tools/mediaCapabilitiesProber: set logs about unimportant missing APIs as debug-level instead of warn-level
878
- - types: provide type safety to `addEventListener` and `removeEventListener`
1312
+ - errors: set a readable error message for every error and warnings thrown
1313
+ - tools/mediaCapabilitiesProber: set logs about unimportant missing APIs as debug-level
1314
+ instead of warn-level
1315
+ - types: provide type safety to `addEventListener` and `removeEventListener`
879
1316
 
880
1317
  ## v3.10.3 (2019-01-30)
881
1318
 
882
1319
  ### Bug fixes
883
1320
 
884
- - dash/api: fix `getMinimumPosition` for MPDs with an availabilityStartTime superior to unix epoch
885
- - smooth: be more tolerant on downloaded segments (accept ISOBMFF with boxes in any order)
886
- - buffers/abr: fix issue infrequently leading to a delay in quality changes
887
- - buffers: improve synchronisation to the SourceBuffer's buffer to avoid cases where the same segment could be downloaded multiple times
888
- - subtitles: fix bug in the clean-up logic of subtitles in the `"html"` texttrack mode that would lead to removed subtitles still being displayed
889
- - pipelines: retry a segment request with a backoff instead of stopping when receiving a HTTP 412
890
- - compat/subtitles: work-around firefox issue in the `"native"` texttrack mode to ensure track cues are removed when the content is stopped
891
- - subtitles/webvtt: support default classes in the WebVTT specification
892
- - subtitles/webvtt: multiple styles for the same element are now merged into one (instead of considering only the last one)
893
- - subtitles/webvtt: fix styling issues when both styles applied globally and styles applied on a selector are defined
894
- - subtitles/webvtt: do not remove whitespaces in styles to keep a sane formatting for some complex values
1321
+ - dash/api: fix `getMinimumPosition` for MPDs with an availabilityStartTime superior to
1322
+ unix epoch
1323
+ - smooth: be more tolerant on downloaded segments (accept ISOBMFF with boxes in any order)
1324
+ - buffers/abr: fix issue infrequently leading to a delay in quality changes
1325
+ - buffers: improve synchronisation to the SourceBuffer's buffer to avoid cases where the
1326
+ same segment could be downloaded multiple times
1327
+ - subtitles: fix bug in the clean-up logic of subtitles in the `"html"` texttrack mode
1328
+ that would lead to removed subtitles still being displayed
1329
+ - pipelines: retry a segment request with a backoff instead of stopping when receiving a
1330
+ HTTP 412
1331
+ - compat/subtitles: work-around firefox issue in the `"native"` texttrack mode to ensure
1332
+ track cues are removed when the content is stopped
1333
+ - subtitles/webvtt: support default classes in the WebVTT specification
1334
+ - subtitles/webvtt: multiple styles for the same element are now merged into one (instead
1335
+ of considering only the last one)
1336
+ - subtitles/webvtt: fix styling issues when both styles applied globally and styles
1337
+ applied on a selector are defined
1338
+ - subtitles/webvtt: do not remove whitespaces in styles to keep a sane formatting for some
1339
+ complex values
895
1340
 
896
1341
  ### Other improvements
897
1342
 
898
- - dash: warn through logs when fields are not in the expected format
899
- - drm: throw more explicative error messages when DRM are not supported in the current target
900
- - dash/smooth: get more precize duration from ISOBMFF by better handling the default duration taken from the tfhd box
901
- - tests: continue unit test coverage improvements (from 22% in the `v3.10.2` to 33.6%)
902
- - demo: fix initial text-track selection
1343
+ - dash: warn through logs when fields are not in the expected format
1344
+ - drm: throw more explicative error messages when DRM are not supported in the current
1345
+ target
1346
+ - dash/smooth: get more precize duration from ISOBMFF by better handling the default
1347
+ duration taken from the tfhd box
1348
+ - tests: continue unit test coverage improvements (from 22% in the `v3.10.2` to 33.6%)
1349
+ - demo: fix initial text-track selection
903
1350
 
904
1351
  ## v3.10.2 (2019-01-08)
905
1352
 
906
1353
  ### Bug fixes
907
1354
 
908
- - dash/smooth: fix manifest updates for some DASH contents (SegmentTimeline without SegmentTemplate) and for some Smooth usages
909
- - compat/drm: adopt a new strategy for malfunctioning CENC PSSH on Edge by moving them at the end of the initialization data
910
- - dash/smooth: update deprecated Manifest.adaptations property when updating the manifest
1355
+ - dash/smooth: fix manifest updates for some DASH contents (SegmentTimeline without
1356
+ SegmentTemplate) and for some Smooth usages
1357
+ - compat/drm: adopt a new strategy for malfunctioning CENC PSSH on Edge by moving them at
1358
+ the end of the initialization data
1359
+ - dash/smooth: update deprecated Manifest.adaptations property when updating the manifest
911
1360
 
912
1361
  ## Other improvements
913
1362
 
914
- - dash: refresh the MPD less often
915
- - dash/smooth: improve precision of `getMaximumPosition` when the Manifest is updated
916
- - tests: use the Jest library for unit tests
917
- - tests: add a lot of unit tests to sensitive code (from a coverage of 13% in the v3.10.1 to 22% in the v3.10.2)
918
- - npm: reduce size of the npm package
1363
+ - dash: refresh the MPD less often
1364
+ - dash/smooth: improve precision of `getMaximumPosition` when the Manifest is updated
1365
+ - tests: use the Jest library for unit tests
1366
+ - tests: add a lot of unit tests to sensitive code (from a coverage of 13% in the v3.10.1
1367
+ to 22% in the v3.10.2)
1368
+ - npm: reduce size of the npm package
919
1369
 
920
1370
  ## v3.10.1 (2019-01-03)
921
1371
 
922
1372
  ### Bug fixes
923
1373
 
924
- - abr: always consider the last quality estimation
925
- - drm: work-arround Edge bug where the browser does not accept a valid CENC PSSH (DRM-related information in an ISOBMFF)
926
- - dash: handle `S` nodes (segments) with an @r attribute at `-1` in an MPD
927
- - dash: handle `SegmentTimeline` which have as a first `S` node (segment) an undefined @t attribute in an MPD
928
- - dash: Representation.index.getLastPosition() for SegmentBase-based DASH Representations now returns the end of the last segment (it returned the start of the last segment before)
929
- - dash/smooth: throw better error (`MANIFEST_PARSE_ERROR`) if none of the audio or video tracks of a content can be played (e.g. none have supported codecs)
1374
+ - abr: always consider the last quality estimation
1375
+ - drm: work-arround Edge bug where the browser does not accept a valid CENC PSSH
1376
+ (DRM-related information in an ISOBMFF)
1377
+ - dash: handle `S` nodes (segments) with an @r attribute at `-1` in an MPD
1378
+ - dash: handle `SegmentTimeline` which have as a first `S` node (segment) an undefined @t
1379
+ attribute in an MPD
1380
+ - dash: Representation.index.getLastPosition() for SegmentBase-based DASH Representations
1381
+ now returns the end of the last segment (it returned the start of the last segment
1382
+ before)
1383
+ - dash/smooth: throw better error (`MANIFEST_PARSE_ERROR`) if none of the audio or video
1384
+ tracks of a content can be played (e.g. none have supported codecs)
930
1385
 
931
1386
  ### Other improvements
932
1387
 
933
- - manifest: better infer the minimum time of a Manifest
934
- - code: refresh code architecture (rename and move modules, remove some dependencies...)
935
- - tests: add coverage reports for both unit and "integration" tests, to check where tests are lacking and better pin down our hot-spots
936
- - tests: add appveyor countinous integration service for unit tests
1388
+ - manifest: better infer the minimum time of a Manifest
1389
+ - code: refresh code architecture (rename and move modules, remove some dependencies...)
1390
+ - tests: add coverage reports for both unit and "integration" tests, to check where tests
1391
+ are lacking and better pin down our hot-spots
1392
+ - tests: add appveyor countinous integration service for unit tests
937
1393
 
938
1394
  ## v3.10.0 (2018-12-11)
939
1395
 
940
1396
  ### Features
941
1397
 
942
- - dash: Manage xlinks in "onLoad" resolution model
943
- - dash: Implement AdaptationSet switching by merging similar and switchable AdaptationSet into a single track
944
- - compat: add `MEDIA_ERR_METADATA_NOT_LOADED` warning, triggered when the browser has issues with loading the initial data (only seen on the Samsung mobile browser in directfile mode)
945
- - compat: add `MEDIA_ERR_PLAY_NOT_ALLOWED` warning, triggered when the application tries to `play` but the current browser doesn't allow it (often due to autoplay policy)
946
- - api: the `play` API now returns a Promise, mirroring the original browser's `play` API
1398
+ - dash: Manage xlinks in "onLoad" resolution model
1399
+ - dash: Implement AdaptationSet switching by merging similar and switchable AdaptationSet
1400
+ into a single track
1401
+ - compat: add `MEDIA_ERR_METADATA_NOT_LOADED` warning, triggered when the browser has
1402
+ issues with loading the initial data (only seen on the Samsung mobile browser in
1403
+ directfile mode)
1404
+ - compat: add `MEDIA_ERR_PLAY_NOT_ALLOWED` warning, triggered when the application tries
1405
+ to `play` but the current browser doesn't allow it (often due to autoplay policy)
1406
+ - api: the `play` API now returns a Promise, mirroring the original browser's `play` API
947
1407
 
948
1408
  ### Deprecated
949
1409
 
950
- - api: The `xhr` property from a `NetworkError` is now deprecated
1410
+ - api: The `xhr` property from a `NetworkError` is now deprecated
951
1411
 
952
1412
  ### Bug fixes
953
1413
 
954
- - compat/smooth: fix fatal error `BUFFER_APPEND_ERROR` happening on some HSS contents with Edge
955
- - dash/smooth: never refresh the manifest if its content is not dynamic
956
- - dash/smooth: use new URL if the initial manifest request is redirected (again :/ - thanks @fnatte)
957
- - api: do not go out of the `LOADING` state if the metadata could not be fetched (even if the browser tells us otherwise) - to work around Samsung Browser bug
958
- - api: avoid going out of the `LOADED` state until the initial seek is done and metadata is fetched
959
- - compat: use Promise ponyfill to improve IE11 compatibility with the MediaCapabilitiesProber and some EME functionalities
960
- - api: translate most IETF language tags into corresponding ISO639-3 codes for the `normalizedLanguage` property - given from APIs such as `getAvailableAudioTracks`
961
- - tools: fix `mediaCapabilitiesProber.getCompatibleDRMConfigurations` experimental tool on Safari
962
- - api: filter out duplicates in `getAvailableVideoBitrates` and `getAvailableAudioBitrates`
1414
+ - compat/smooth: fix fatal error `BUFFER_APPEND_ERROR` happening on some HSS contents with
1415
+ Edge
1416
+ - dash/smooth: never refresh the manifest if its content is not dynamic
1417
+ - dash/smooth: use new URL if the initial manifest request is redirected (again :/ -
1418
+ thanks @fnatte)
1419
+ - api: do not go out of the `LOADING` state if the metadata could not be fetched (even if
1420
+ the browser tells us otherwise) - to work around Samsung Browser bug
1421
+ - api: avoid going out of the `LOADED` state until the initial seek is done and metadata
1422
+ is fetched
1423
+ - compat: use Promise ponyfill to improve IE11 compatibility with the
1424
+ MediaCapabilitiesProber and some EME functionalities
1425
+ - api: translate most IETF language tags into corresponding ISO639-3 codes for the
1426
+ `normalizedLanguage` property - given from APIs such as `getAvailableAudioTracks`
1427
+ - tools: fix `mediaCapabilitiesProber.getCompatibleDRMConfigurations` experimental tool on
1428
+ Safari
1429
+ - api: filter out duplicates in `getAvailableVideoBitrates` and
1430
+ `getAvailableAudioBitrates`
963
1431
 
964
1432
  ### Other improvements
965
1433
 
966
- - dash: better infer unknown Period durations
967
- - dash: better manage overlapping Periods by giving more importance to the last chronological one
968
- - memory: clean-up `Adaptation` and `Representation` information on Periods which are not considered anymore
969
- - log: warn through our logs every time a warning event is sent by the API
970
- - demo: authorize DRMs in IE11 or Safari when in HTTP in the demo page
971
- - demo: fix time indication for non-live contents
1434
+ - dash: better infer unknown Period durations
1435
+ - dash: better manage overlapping Periods by giving more importance to the last
1436
+ chronological one
1437
+ - memory: clean-up `Adaptation` and `Representation` information on Periods which are not
1438
+ considered anymore
1439
+ - log: warn through our logs every time a warning event is sent by the API
1440
+ - demo: authorize DRMs in IE11 or Safari when in HTTP in the demo page
1441
+ - demo: fix time indication for non-live contents
972
1442
 
973
1443
  ## v3.9.3 (2018-11-23)
974
1444
 
975
1445
  ### Bug fixes
976
1446
 
977
- - compat: fix `undefined Object.values function` issue happening in some older browsers (mainly encountered in IE11 and old webkit versions)
978
- - compat: remove side-effects relative to DRM on Safari
979
- - tools: fix issue about an undefined Array.prototype.find method in some older browsers when calling mediaCapabilitiesProber.getCompatibleDRMConfigurations (mainly encountered in IE11)
1447
+ - compat: fix `undefined Object.values function` issue happening in some older browsers
1448
+ (mainly encountered in IE11 and old webkit versions)
1449
+ - compat: remove side-effects relative to DRM on Safari
1450
+ - tools: fix issue about an undefined Array.prototype.find method in some older browsers
1451
+ when calling mediaCapabilitiesProber.getCompatibleDRMConfigurations (mainly encountered
1452
+ in IE11)
980
1453
 
981
1454
  ### Other improvements
982
1455
 
983
- - eme: activate MediaKeys caching on Edge
984
- - compat: add in our validation process a ban of methods and functions unavailable in older browsers
985
- - tests/smooth: reinforce our Smooth Streaming integration tests
1456
+ - eme: activate MediaKeys caching on Edge
1457
+ - compat: add in our validation process a ban of methods and functions unavailable in
1458
+ older browsers
1459
+ - tests/smooth: reinforce our Smooth Streaming integration tests
986
1460
 
987
1461
  ## v3.9.2 (2018-11-14)
988
1462
 
989
1463
  ### Bug fixes
990
1464
 
991
- - smooth: authorize empty tracks ("StreamIndex") in Smooth manifests
1465
+ - smooth: authorize empty tracks ("StreamIndex") in Smooth manifests
992
1466
 
993
1467
  ## v3.9.1 (2018-11-13)
994
1468
 
995
1469
  ### Bug fixes
996
1470
 
997
- - smooth: fix issue preventing emergency manifest updates
998
- - dash: fix timeout for minimumUpdatePeriod in cases where the time at which the manifest was last requested is not known (like when setting a customManifestLoader argument)
1471
+ - smooth: fix issue preventing emergency manifest updates
1472
+ - dash: fix timeout for minimumUpdatePeriod in cases where the time at which the manifest
1473
+ was last requested is not known (like when setting a customManifestLoader argument)
999
1474
 
1000
1475
  ### Other improvements
1001
1476
 
1002
- - smooth: keep supplementary segment information when updating the manifest
1003
- - smooth: when updating segment information, perform garbage-collection of those concerning unreachable segments
1477
+ - smooth: keep supplementary segment information when updating the manifest
1478
+ - smooth: when updating segment information, perform garbage-collection of those
1479
+ concerning unreachable segments
1004
1480
 
1005
1481
  ## v3.9.0 (2018-11-08)
1006
1482
 
1007
1483
  ### Features
1008
1484
 
1009
- - dash: consider `minimumUpdatePeriod` attribute in MPDs
1010
- - buffer: add codec-switching for browsers supporting the `SourceBuffer.prototype.changeType` API
1011
- - dash/smooth: accept and parse segments with a "stpp.ttml.im1t" codec (TTML IMSC1 in MP4)
1485
+ - dash: consider `minimumUpdatePeriod` attribute in MPDs
1486
+ - buffer: add codec-switching for browsers supporting the
1487
+ `SourceBuffer.prototype.changeType` API
1488
+ - dash/smooth: accept and parse segments with a "stpp.ttml.im1t" codec (TTML IMSC1 in MP4)
1012
1489
 
1013
1490
  ### Bug fixes
1014
1491
 
1015
- - smooth: fix calculations of the initial time, duration and minimum position for HSS VOD contents not starting at a '0' time
1016
- - buffer: fix priority updates for segment requests
1017
- - dash: calculate VOD duration from the last period if undefined in the MPD's root
1018
- - dash: remove possibility of obtaining two periods with the same id
1019
- - typings: make `manualBitrateSwitchingMode` `loadVideo` option an optional TypeScript typing (thanks @fnatte again!)
1492
+ - smooth: fix calculations of the initial time, duration and minimum position for HSS VOD
1493
+ contents not starting at a '0' time
1494
+ - buffer: fix priority updates for segment requests
1495
+ - dash: calculate VOD duration from the last period if undefined in the MPD's root
1496
+ - dash: remove possibility of obtaining two periods with the same id
1497
+ - typings: make `manualBitrateSwitchingMode` `loadVideo` option an optional TypeScript
1498
+ typing (thanks @fnatte again!)
1020
1499
 
1021
1500
  ### Other improvements
1022
1501
 
1023
- - abr: do not always cancel pending requests when switching to a new bitrate
1024
- - abr: re-estimate the bandwidth immediately after each request
1025
- - buffer: remove automatic garbage-collection of the "image" source-buffer (its rules should be more complex than those in place)
1026
- - tools/mediaCapabilitiesProber: Make `getCompatibleDRMConfigurations` work under IE11 and old webkit versions
1027
- - tools/mediaCapabilitiesProber: Add a multitude of bug fixes to the experimental mediaCapabilitiesProber
1028
- - package: divide by more than 2 the size of our package published in `npm` (thanks @necccc)
1029
- - tests: add memory tests to detect memory leaks
1030
- - demo: add 'favicon' to the demo page
1502
+ - abr: do not always cancel pending requests when switching to a new bitrate
1503
+ - abr: re-estimate the bandwidth immediately after each request
1504
+ - buffer: remove automatic garbage-collection of the "image" source-buffer (its rules
1505
+ should be more complex than those in place)
1506
+ - tools/mediaCapabilitiesProber: Make `getCompatibleDRMConfigurations` work under IE11 and
1507
+ old webkit versions
1508
+ - tools/mediaCapabilitiesProber: Add a multitude of bug fixes to the experimental
1509
+ mediaCapabilitiesProber
1510
+ - package: divide by more than 2 the size of our package published in `npm` (thanks
1511
+ @necccc)
1512
+ - tests: add memory tests to detect memory leaks
1513
+ - demo: add 'favicon' to the demo page
1031
1514
 
1032
1515
  ## v3.8.1 (2018-10-17)
1033
1516
 
1034
1517
  ### Bug fixes
1035
1518
 
1036
- - abr: fix memory leak in ABR Management
1037
- - eme: avoid re-attaching a server certificate at each encrypted event
1519
+ - abr: fix memory leak in ABR Management
1520
+ - eme: avoid re-attaching a server certificate at each encrypted event
1038
1521
 
1039
1522
  ### Other improvements
1040
1523
 
1041
- - buffer: lower the "paddings" applied to the video buffer when raising the quality
1042
- - abr: when pratical, avoid relying on the "Content-Length" header to protect against miscalculations when downloading from misconfigured servers
1043
- - abr: lower the minimum number of bytes we wait to download before we evaluate the bandwidth
1044
- - abr: use performance.now instead of Date.now for better precision
1045
- - module: move express from the dependencies to the devDependencies
1046
- - demo: fix standalone demo and add possibility to launch it via HTTPS
1524
+ - buffer: lower the "paddings" applied to the video buffer when raising the quality
1525
+ - abr: when pratical, avoid relying on the "Content-Length" header to protect against
1526
+ miscalculations when downloading from misconfigured servers
1527
+ - abr: lower the minimum number of bytes we wait to download before we evaluate the
1528
+ bandwidth
1529
+ - abr: use performance.now instead of Date.now for better precision
1530
+ - module: move express from the dependencies to the devDependencies
1531
+ - demo: fix standalone demo and add possibility to launch it via HTTPS
1047
1532
 
1048
1533
  ## v3.8.0 (2018-10-11)
1049
1534
 
1050
1535
  ### Features
1051
1536
 
1052
- - api/dash/smooth: add representationFilter API to prevent Representations (i.e. media qualities) from being played
1053
- - api/buffer: add `manualBitrateSwitchingMode` option to allow a direct representation switch when calling `setVideoBitrate` and `setAudioBitrate`
1054
- - api/buffer: emit a `MEDIA_TIME_BEFORE_MANIFEST` warning when the wanted time is before what is announced in the manifest
1055
- - api/buffer: emit a `MEDIA_TIME_AFTER_MANIFEST` warning when the wanted time is after what is announced in the manifest
1537
+ - api/dash/smooth: add representationFilter API to prevent Representations (i.e. media
1538
+ qualities) from being played
1539
+ - api/buffer: add `manualBitrateSwitchingMode` option to allow a direct representation
1540
+ switch when calling `setVideoBitrate` and `setAudioBitrate`
1541
+ - api/buffer: emit a `MEDIA_TIME_BEFORE_MANIFEST` warning when the wanted time is before
1542
+ what is announced in the manifest
1543
+ - api/buffer: emit a `MEDIA_TIME_AFTER_MANIFEST` warning when the wanted time is after
1544
+ what is announced in the manifest
1056
1545
 
1057
1546
  ### Bug fixes
1058
1547
 
1059
- - remove export of undeclared `ICompatVTTCue` from modular build
1548
+ - remove export of undeclared `ICompatVTTCue` from modular build
1060
1549
 
1061
1550
  ### Other improvements
1062
1551
 
1063
- - buffer: to avoid taking too much memory, regularly clean-up text and image buffer 5 hours ahead/behind the current position (customizable)
1064
- - demo: add HTTPS capabilities on local full demo
1065
- - rxjs: update rxjs to 6.3.3
1066
- - typescript: update typescript to 3.1.2
1552
+ - buffer: to avoid taking too much memory, regularly clean-up text and image buffer 5
1553
+ hours ahead/behind the current position (customizable)
1554
+ - demo: add HTTPS capabilities on local full demo
1555
+ - rxjs: update rxjs to 6.3.3
1556
+ - typescript: update typescript to 3.1.2
1067
1557
 
1068
1558
  ## v3.7.0 (2018-09-21)
1069
1559
 
1070
1560
  ### Features
1071
1561
 
1072
- - eme: add `throwOnLicenseExpiration` boolean to `keySystems` (`loadVideo` option) to allow better expiration management
1073
- - eme: in the `getLicense` property of `keySystems` (`loadVideo` option), it is now possible to resolve with `null` to avoid a license update.
1074
- - eme: in the `onKeyStatusesChange` property of `keySystems` (`loadVideo` option), it is now possible to resolve with `null` to avoid a license update.
1075
- - tools: replace experimental tool `mediaCapabilitiesProber.isDRMSupported` by the more useful `mediaCapabilitiesProber.getCompatibleDRMConfigurations`
1562
+ - eme: add `throwOnLicenseExpiration` boolean to `keySystems` (`loadVideo` option) to
1563
+ allow better expiration management
1564
+ - eme: in the `getLicense` property of `keySystems` (`loadVideo` option), it is now
1565
+ possible to resolve with `null` to avoid a license update.
1566
+ - eme: in the `onKeyStatusesChange` property of `keySystems` (`loadVideo` option), it is
1567
+ now possible to resolve with `null` to avoid a license update.
1568
+ - tools: replace experimental tool `mediaCapabilitiesProber.isDRMSupported` by the more
1569
+ useful `mediaCapabilitiesProber.getCompatibleDRMConfigurations`
1076
1570
 
1077
1571
  ### Deprecated
1078
1572
 
1079
- - smooth: giving a WSX URL instead of the Manifest URL for a smooth content is now deprecated.
1080
- - smooth: giving a _publishing point definition_ URL (.isml) instead of the Manifest URL for a smooth content is now deprecated.
1081
- - smooth: giving a _Smooth Streaming server manifest_ URL (.ism) instead of the Manifest URL for a smooth content is now deprecated.
1573
+ - smooth: giving a WSX URL instead of the Manifest URL for a smooth content is now
1574
+ deprecated.
1575
+ - smooth: giving a _publishing point definition_ URL (.isml) instead of the Manifest URL
1576
+ for a smooth content is now deprecated.
1577
+ - smooth: giving a _Smooth Streaming server manifest_ URL (.ism) instead of the Manifest
1578
+ URL for a smooth content is now deprecated.
1082
1579
 
1083
1580
  ### Bug fixes
1084
1581
 
1085
- - api: switch state to "ENDED" if seeking to the end while the player is in the "LOADED" state.
1086
- - api: switch state to "SEEKING" if seeking in the content while the player is in the "LOADED" state.
1087
- - dash: consider multiple `Role` nodes for an AdaptationSet.
1088
- - typescript: fix typings error when an application build us without the `skipLibCheck` TypeScript option enabled.
1089
- - smooth: fix Manifest URL generation when a ".ism" or a ".isml" URL is given.
1090
- - doc: document deprecation of the `adaptations` property returned from a `Manifest` object (as returned from the `getManifest` method).
1582
+ - api: switch state to "ENDED" if seeking to the end while the player is in the "LOADED"
1583
+ state.
1584
+ - api: switch state to "SEEKING" if seeking in the content while the player is in the
1585
+ "LOADED" state.
1586
+ - dash: consider multiple `Role` nodes for an AdaptationSet.
1587
+ - typescript: fix typings error when an application build us without the `skipLibCheck`
1588
+ TypeScript option enabled.
1589
+ - smooth: fix Manifest URL generation when a ".ism" or a ".isml" URL is given.
1590
+ - doc: document deprecation of the `adaptations` property returned from a `Manifest`
1591
+ object (as returned from the `getManifest` method).
1091
1592
 
1092
1593
  ### Other improvements
1093
1594
 
1094
- - doc: add quick start tutorial.
1095
- - doc: add player states documentation.
1096
- - demo: add possibility to play encrypted contents.
1097
- - demo: update demo page.
1098
- - tests: consolidate our integration tests.
1595
+ - doc: add quick start tutorial.
1596
+ - doc: add player states documentation.
1597
+ - demo: add possibility to play encrypted contents.
1598
+ - demo: update demo page.
1599
+ - tests: consolidate our integration tests.
1099
1600
 
1100
1601
  ## v3.6.1 (2018-09-03)
1101
1602
 
1102
1603
  ### Bug fixes
1103
1604
 
1104
- - directfile: send `LOADED` event again for directfile contents - thanks @Fnatte
1105
- - dash: don't merge "main" AdaptationSet if they are not of a video type
1106
- - eme: fix bug which prevented the `closeSessionsOnStop` keySystem option to work properly
1107
- - typescript: export types compatible with project references
1605
+ - directfile: send `LOADED` event again for directfile contents - thanks @Fnatte
1606
+ - dash: don't merge "main" AdaptationSet if they are not of a video type
1607
+ - eme: fix bug which prevented the `closeSessionsOnStop` keySystem option to work properly
1608
+ - typescript: export types compatible with project references
1108
1609
 
1109
1610
  ### Other improvements
1110
1611
 
1111
- - directfile/tests: add basic directfile integration tests
1112
- - build: update to Babel 7
1113
- - rxjs: update to RxJS 6.3.1
1612
+ - directfile/tests: add basic directfile integration tests
1613
+ - build: update to Babel 7
1614
+ - rxjs: update to RxJS 6.3.1
1114
1615
 
1115
1616
  ## v3.6.0 (2018-08-24)
1116
1617
 
1117
1618
  ### Features
1118
1619
 
1119
- - api: add video track switching
1120
- - dash: add webm support
1121
- - api: Emit warning if autoPlay is blocked on the current browser
1122
- - api: add `getAvailableVideoTracks` method to retrieve every video tracks
1123
- - api: add `getVideoTrack` method to get the active video track
1124
- - api: add `setVideoTrack` method to switch the video track
1125
- - api: add `videoTrackChange` event to know when a video track has been switched
1126
- - api: add `RELOADING` event for cases where the player needs to reload (such as during a video track switch)
1620
+ - api: add video track switching
1621
+ - dash: add webm support
1622
+ - api: Emit warning if autoPlay is blocked on the current browser
1623
+ - api: add `getAvailableVideoTracks` method to retrieve every video tracks
1624
+ - api: add `getVideoTrack` method to get the active video track
1625
+ - api: add `setVideoTrack` method to switch the video track
1626
+ - api: add `videoTrackChange` event to know when a video track has been switched
1627
+ - api: add `RELOADING` event for cases where the player needs to reload (such as during a
1628
+ video track switch)
1127
1629
 
1128
1630
  ### Deprecated
1129
1631
 
1130
- - api: the method `isFullscreen` has been deprecated
1131
- - api: the method `setFullscreen` has been deprecated
1132
- - api: the method `exitFullscreen` has been deprecated
1133
- - api: the method `getNativeTextTrack` has been deprecated
1134
- - api: the event `fullscreenChange` has been deprecated
1135
- - api: the event `nativeTextTrackChange` has been deprecated
1632
+ - api: the method `isFullscreen` has been deprecated
1633
+ - api: the method `setFullscreen` has been deprecated
1634
+ - api: the method `exitFullscreen` has been deprecated
1635
+ - api: the method `getNativeTextTrack` has been deprecated
1636
+ - api: the event `fullscreenChange` has been deprecated
1637
+ - api: the event `nativeTextTrackChange` has been deprecated
1136
1638
 
1137
1639
  ### Bug Fixes
1138
1640
 
1139
- - ttml: display forbidden characters (such as ">") in a `"native"` `textTrackMode`
1140
- - ttml: process `xml:space` even if it is not defined at the top level
1141
- - buffer: perform a better clean-up of previous media in a SourceBuffer when switching audio or text track
1142
- - manifest/dash: throw a MANIFEST_PARSE_ERROR when no AdaptationSet of a given type in a Period is in a compatible codec
1641
+ - ttml: display forbidden characters (such as ">") in a `"native"` `textTrackMode`
1642
+ - ttml: process `xml:space` even if it is not defined at the top level
1643
+ - buffer: perform a better clean-up of previous media in a SourceBuffer when switching
1644
+ audio or text track
1645
+ - manifest/dash: throw a MANIFEST_PARSE_ERROR when no AdaptationSet of a given type in a
1646
+ Period is in a compatible codec
1143
1647
 
1144
1648
  ### Other improvements
1145
1649
 
1146
- - types: export and document main typings used internally such as ILoadVideoOptions (the loadVideo argument)
1147
- - misc: log every fatal errors
1148
- - misc: remove dumb npm inclusion as a project dependency
1149
- - doc: improve architecture documentation
1650
+ - types: export and document main typings used internally such as ILoadVideoOptions (the
1651
+ loadVideo argument)
1652
+ - misc: log every fatal errors
1653
+ - misc: remove dumb npm inclusion as a project dependency
1654
+ - doc: improve architecture documentation
1150
1655
 
1151
1656
  ## v3.5.2 (2018-08-06)
1152
1657
 
1153
1658
  ### Bug fixes
1154
1659
 
1155
- - dash: Manage presentationTimeOffset completely (allow advanced multi-period configurations)
1156
- - dash: Fix Adaptations bug when the first DASH adaptation was a "main" one
1157
- - smooth: Remove the limitation of a minimum bitrate in Smooth Streaming
1158
- - dash: Fix condition which prevented to play audio-only live DASH streams
1660
+ - dash: Manage presentationTimeOffset completely (allow advanced multi-period
1661
+ configurations)
1662
+ - dash: Fix Adaptations bug when the first DASH adaptation was a "main" one
1663
+ - smooth: Remove the limitation of a minimum bitrate in Smooth Streaming
1664
+ - dash: Fix condition which prevented to play audio-only live DASH streams
1159
1665
 
1160
1666
  ### Other improvements
1161
1667
 
1162
- - typescript: add typescript declaration files
1163
- - abr: update ABR mechanisms when the estimated bandtwidth fall suddenly
1164
- - api: warn in the log when the browser reject a wanted autoplay
1165
- - drm: Add keyId information to the internal Manifest structure
1166
- - typescript: update typescript to v3.0.1
1668
+ - typescript: add typescript declaration files
1669
+ - abr: update ABR mechanisms when the estimated bandtwidth fall suddenly
1670
+ - api: warn in the log when the browser reject a wanted autoplay
1671
+ - drm: Add keyId information to the internal Manifest structure
1672
+ - typescript: update typescript to v3.0.1
1167
1673
 
1168
1674
  ## v3.5.1 (2018-07-11)
1169
1675
 
1170
1676
  ### Bug fixes
1171
1677
 
1172
- - parsers: fix wrong computation of segment time in template index
1173
- - abr: get concerned request in starvation mode
1678
+ - parsers: fix wrong computation of segment time in template index
1679
+ - abr: get concerned request in starvation mode
1174
1680
 
1175
1681
  ## v3.5.0 (2018-07-03)
1176
1682
 
1177
1683
  ### Added
1178
1684
 
1179
- - tools: add `mediaCapabilitiesProber` tool as an experimental tool
1180
- - builds: add minimal import with feature selection (allowing cleaner feature switching or lazy-loading)
1181
- - dash: allow multiple "main" adaptation
1182
- - api: add static `version` property to the RxPlayer API
1685
+ - tools: add `mediaCapabilitiesProber` tool as an experimental tool
1686
+ - builds: add minimal import with feature selection (allowing cleaner feature switching or
1687
+ lazy-loading)
1688
+ - dash: allow multiple "main" adaptation
1689
+ - api: add static `version` property to the RxPlayer API
1183
1690
 
1184
1691
  ### Bug fixes
1185
1692
 
1186
- - vtt: fix `line` setting for vtt tracks in `"native"` textTrackMode
1187
- - dash: always play "main" adaptation first
1188
- - misc: don't interfere with a client's RxJS implementation by switching to RxJS 6
1189
- - dash: presentationTimeOffset doesn't have an influence on requested segment anymore
1190
- - smooth/dash: throw a `"MANIFEST_PARSE_ERROR"` if no audio and video adaptations/StreamIndex are available in the current content
1693
+ - vtt: fix `line` setting for vtt tracks in `"native"` textTrackMode
1694
+ - dash: always play "main" adaptation first
1695
+ - misc: don't interfere with a client's RxJS implementation by switching to RxJS 6
1696
+ - dash: presentationTimeOffset doesn't have an influence on requested segment anymore
1697
+ - smooth/dash: throw a `"MANIFEST_PARSE_ERROR"` if no audio and video
1698
+ adaptations/StreamIndex are available in the current content
1191
1699
 
1192
1700
  ### Other improvements
1193
1701
 
1194
- - builds: Reduce size of the builds
1195
- - builds: use uglifyJS instead of Closure-compiler
1196
- - builds: update to typescript 2.9
1197
- - rxjs: update to RxJS version 6 (v6.2.1)
1198
- - code: set complete URL in segment's media property
1199
- - demo: add time indicator on the progress bar
1200
- - demo: update fullscreen mode to also display the text track element
1201
- - misc: moved demo server scripts to the respective demo directories
1202
- - misc: moved manifest parsers to the `src/parsers` directory
1203
- - misc: moved scripts from `./tools` to `./scripts`
1204
- - misc: moved webpack configs to the root of the project
1702
+ - builds: Reduce size of the builds
1703
+ - builds: use uglifyJS instead of Closure-compiler
1704
+ - builds: update to typescript 2.9
1705
+ - rxjs: update to RxJS version 6 (v6.2.1)
1706
+ - code: set complete URL in segment's media property
1707
+ - demo: add time indicator on the progress bar
1708
+ - demo: update fullscreen mode to also display the text track element
1709
+ - misc: moved demo server scripts to the respective demo directories
1710
+ - misc: moved manifest parsers to the `src/parsers` directory
1711
+ - misc: moved scripts from `./tools` to `./scripts`
1712
+ - misc: moved webpack configs to the root of the project
1205
1713
 
1206
1714
  ## v3.4.1 (2018-05-31)
1207
1715
 
1208
1716
  ### Bug fixes
1209
1717
 
1210
- - buffer: fix several bugs happening when calling `endOfStream` to announce the end of the current content. Especially prevalent on Chrome.
1211
- - net: use redirected URL as a base for further requests when the manifest request led to a HTTP redirect.
1212
- - vtt/srt: ignore silently (do not throw) when an unknown block has been detected in a vtt or srt file
1213
- - vtt/srt: support styling spans (like b, i and u XML tags) spanning multiple lines
1214
- - api: `getAvailableTextTracks` and `getAvailableAudioTracks` now always return an array (and never null) as announced in the API documentation
1215
- - api: set default log level to `"NONE"` instead of `"INFO"`
1216
- - misc: remove development-only code from the non-minified code
1718
+ - buffer: fix several bugs happening when calling `endOfStream` to announce the end of the
1719
+ current content. Especially prevalent on Chrome.
1720
+ - net: use redirected URL as a base for further requests when the manifest request led to
1721
+ a HTTP redirect.
1722
+ - vtt/srt: ignore silently (do not throw) when an unknown block has been detected in a vtt
1723
+ or srt file
1724
+ - vtt/srt: support styling spans (like b, i and u XML tags) spanning multiple lines
1725
+ - api: `getAvailableTextTracks` and `getAvailableAudioTracks` now always return an array
1726
+ (and never null) as announced in the API documentation
1727
+ - api: set default log level to `"NONE"` instead of `"INFO"`
1728
+ - misc: remove development-only code from the non-minified code
1217
1729
 
1218
1730
  ### Other improvements
1219
1731
 
1220
- - misc: move some dev dependencies from `dependencies` to `devDependencies` in `package.json`
1732
+ - misc: move some dev dependencies from `dependencies` to `devDependencies` in
1733
+ `package.json`
1221
1734
 
1222
1735
  ## v3.4.0 (2018-05-17)
1223
1736
 
1224
1737
  ### Added
1225
1738
 
1226
- - eme: allow multiple licenses per content
1227
- - eme: allow different MediaKeys to be attached on multiple media elements
1739
+ - eme: allow multiple licenses per content
1740
+ - eme: allow different MediaKeys to be attached on multiple media elements
1228
1741
 
1229
1742
  ### Bug fixes
1230
1743
 
1231
- - eme: limit simultaneous loaded MediaKeySession to 50 by default (configurable)
1232
- - source-buffer: clean properly the text SourceBuffer on deactivation
1233
- - buffer: perform discontinuity seeks only for native source buffers
1744
+ - eme: limit simultaneous loaded MediaKeySession to 50 by default (configurable)
1745
+ - source-buffer: clean properly the text SourceBuffer on deactivation
1746
+ - buffer: perform discontinuity seeks only for native source buffers
1234
1747
 
1235
1748
  ### Other improvements
1236
1749
 
1237
- - doc: generate documentation pages
1238
- - misc: add sonarqube quality pass
1239
- - code: set a clearer private state for the API
1240
- - tools: update to webpack v4.8.3
1241
- - tools: update to typescript v2.8.3
1750
+ - doc: generate documentation pages
1751
+ - misc: add sonarqube quality pass
1752
+ - code: set a clearer private state for the API
1753
+ - tools: update to webpack v4.8.3
1754
+ - tools: update to typescript v2.8.3
1242
1755
 
1243
1756
  ## v3.3.2 (2018-04-17)
1244
1757
 
1245
1758
  ### Bug Fixes
1246
1759
 
1247
- - api: emit SEEKING state instead of BUFFERING when the user seeks to an unbuffered part just after resuming playback
1248
- - api: work around bug found in old versions of Chrome where the ENDED state would never be triggered at the end of the stream
1249
- - api/language: fix bug where an audio or text language would not be switched to on certain conditions in live contents
1250
- - smooth: fix frequent manifest refreshing happening immediately when changing audio/text language
1251
- - eme/error: fix reason string and error message for KEY_STATUS_CHANGE_ERROR
1760
+ - api: emit SEEKING state instead of BUFFERING when the user seeks to an unbuffered part
1761
+ just after resuming playback
1762
+ - api: work around bug found in old versions of Chrome where the ENDED state would never
1763
+ be triggered at the end of the stream
1764
+ - api/language: fix bug where an audio or text language would not be switched to on
1765
+ certain conditions in live contents
1766
+ - smooth: fix frequent manifest refreshing happening immediately when changing audio/text
1767
+ language
1768
+ - eme/error: fix reason string and error message for KEY_STATUS_CHANGE_ERROR
1252
1769
 
1253
1770
  ### Other improvements
1254
1771
 
1255
- - buffer: update download queue immediately when seeking to an already-buffered part, to always prioritize needed segments
1256
- - buffer: schedule segments per level of priority to lower some buffering/seeking/loading time
1257
- - demo: fix "Big Buck Bunny WEBM"'s URL
1772
+ - buffer: update download queue immediately when seeking to an already-buffered part, to
1773
+ always prioritize needed segments
1774
+ - buffer: schedule segments per level of priority to lower some buffering/seeking/loading
1775
+ time
1776
+ - demo: fix "Big Buck Bunny WEBM"'s URL
1258
1777
 
1259
1778
  ## v3.3.1 (2018-03-13)
1260
1779
 
1261
1780
  ### Bug Fixes
1262
1781
 
1263
- - misc: fix missing browser API on IE11
1264
- - buffer: end correctly streams which experienced a custom sourcebuffer (text/image) crash
1782
+ - misc: fix missing browser API on IE11
1783
+ - buffer: end correctly streams which experienced a custom sourcebuffer (text/image) crash
1265
1784
 
1266
1785
  ### Other improvements
1267
1786
 
1268
- - tools: support development on windows
1787
+ - tools: support development on windows
1269
1788
 
1270
1789
  ## v3.3.0 (2018-03-05)
1271
1790
 
1272
1791
  ### Added
1273
1792
 
1274
- - api: add directfile API to allow the playback of files natively managed by the browser
1793
+ - api: add directfile API to allow the playback of files natively managed by the browser
1275
1794
 
1276
1795
  ### Bug Fixes
1277
1796
 
1278
- - api: fix player state when seeking after the video ended
1279
- - text/api: fix getTextTrack API which could return the current audio track instead
1280
- - text: clean-up custom HTML text track SourceBuffer's buffered when the text track is disabled
1797
+ - api: fix player state when seeking after the video ended
1798
+ - text/api: fix getTextTrack API which could return the current audio track instead
1799
+ - text: clean-up custom HTML text track SourceBuffer's buffered when the text track is
1800
+ disabled
1281
1801
 
1282
1802
  ## v3.2.0 (2018-02-23)
1283
1803
 
1284
1804
  ### Added
1285
1805
 
1286
- - dash: Handle multi-periods DASH manifests
1287
- - api: add `periodChange` event
1288
- - api: add `stopAtEnd` option to the constructor, to deactivate automatic content un-loading when it ends
1289
- - api: add `manifestLoader` to the `transportOptions` of a `loadVideo` call
1806
+ - dash: Handle multi-periods DASH manifests
1807
+ - api: add `periodChange` event
1808
+ - api: add `stopAtEnd` option to the constructor, to deactivate automatic content
1809
+ un-loading when it ends
1810
+ - api: add `manifestLoader` to the `transportOptions` of a `loadVideo` call
1290
1811
 
1291
1812
  ### Bug Fixes
1292
1813
 
1293
- - stream: call `endOfStream` for better end detection and to allow the Chrome browser to display the last frames of a video
1294
- - buffer: always play the last possible milliseconds of a content (removed END_OF_PLAY config attribute)
1295
- - eme: workaround a bug found on Chrome where setting a `keySystems` option in `loadVideo` would always throw on HTTP (not HTTPS) pages.
1296
- - vtt: fix WebVTT parsing when the last line of a WebVTT file is not a new line
1297
- - dash: ignore availabilityStartTime settings for a static MPD
1298
- - buffer: ignore segments for a duration inferior to the MINIMUM_SEGMENT_SIZE (200ms by default) to avoid infinite re-downloading
1814
+ - stream: call `endOfStream` for better end detection and to allow the Chrome browser to
1815
+ display the last frames of a video
1816
+ - buffer: always play the last possible milliseconds of a content (removed END_OF_PLAY
1817
+ config attribute)
1818
+ - eme: workaround a bug found on Chrome where setting a `keySystems` option in `loadVideo`
1819
+ would always throw on HTTP (not HTTPS) pages.
1820
+ - vtt: fix WebVTT parsing when the last line of a WebVTT file is not a new line
1821
+ - dash: ignore availabilityStartTime settings for a static MPD
1822
+ - buffer: ignore segments for a duration inferior to the MINIMUM_SEGMENT_SIZE (200ms by
1823
+ default) to avoid infinite re-downloading
1299
1824
 
1300
1825
  ### Other improvements
1301
1826
 
1302
- - update RxJS to v5.5.6
1303
- - update TypeScript to v2.7.2
1827
+ - update RxJS to v5.5.6
1828
+ - update TypeScript to v2.7.2
1304
1829
 
1305
1830
  ## v3.1.0 (2018-01-30)
1306
1831
 
1307
1832
  ### Added
1308
1833
 
1309
- - api: add `networkConfig` to `loadVideo` options
1310
- - eme: add `closeSessionsOnStop` to the `keySystems` `loadVideo` option
1834
+ - api: add `networkConfig` to `loadVideo` options
1835
+ - eme: add `closeSessionsOnStop` to the `keySystems` `loadVideo` option
1311
1836
 
1312
1837
  ### Bug Fixes
1313
1838
 
1314
- - dash: fix Range request ranges for representations based on a SegmentList index
1315
- - smooth: allows smooth Manifests for non-live contents to begin at a timestamp != 0
1839
+ - dash: fix Range request ranges for representations based on a SegmentList index
1840
+ - smooth: allows smooth Manifests for non-live contents to begin at a timestamp != 0
1316
1841
 
1317
1842
  ## v3.0.7 (2018-01-19)
1318
1843
 
1319
1844
  ### Bug fixes
1320
1845
 
1321
- - eme: fix bug which prevented to play encrypted contents on IE11
1846
+ - eme: fix bug which prevented to play encrypted contents on IE11
1322
1847
 
1323
1848
  ## v3.0.6 (2018-01-11)
1324
1849
 
1325
1850
  ### Bug Fixes
1326
1851
 
1327
- - buffer: fix issue which could led to multiple video or audio segments being downloaded at the same time
1328
- - dash/text: support MPD AdaptationSet with a "caption" Role as text Adaptations
1329
- - dash/text: remove offset set for subtitles on live contents, which led to unsynchronized subtitles
1330
- - dash: fix issue which could led to segments being re-downloaded too much in a SegmentTemplate scheme
1852
+ - buffer: fix issue which could led to multiple video or audio segments being downloaded
1853
+ at the same time
1854
+ - dash/text: support MPD AdaptationSet with a "caption" Role as text Adaptations
1855
+ - dash/text: remove offset set for subtitles on live contents, which led to unsynchronized
1856
+ subtitles
1857
+ - dash: fix issue which could led to segments being re-downloaded too much in a
1858
+ SegmentTemplate scheme
1331
1859
 
1332
1860
  ### Other improvements
1333
1861
 
1334
- - demo: set "html" textTrackMode by default to have a better stylization of closed captions.
1862
+ - demo: set "html" textTrackMode by default to have a better stylization of closed
1863
+ captions.
1335
1864
 
1336
1865
  ## v3.0.5 (2017-12-11)
1337
1866
 
1338
1867
  ### Bug Fixes
1339
1868
 
1340
- - eme: consider unknown errors (e.g. errors coming from the user of the library) as fatal eme errors
1869
+ - eme: consider unknown errors (e.g. errors coming from the user of the library) as fatal
1870
+ eme errors
1341
1871
 
1342
1872
  ## v3.0.4 (2017-12-05)
1343
1873
 
1344
1874
  ### Bug Fixes
1345
1875
 
1346
- - text/webvtt: authorize header options without parsing them
1347
- - text/webvtt: authorize timestamps without hours
1876
+ - text/webvtt: authorize header options without parsing them
1877
+ - text/webvtt: authorize timestamps without hours
1348
1878
 
1349
1879
  ### Other improvements
1350
1880
 
1351
- - misc: remove multiple unneeded assertions in DEV mode
1352
- - misc: update DEV mode default debug level from DEBUG to INFO
1881
+ - misc: remove multiple unneeded assertions in DEV mode
1882
+ - misc: update DEV mode default debug level from DEBUG to INFO
1353
1883
 
1354
1884
  ## v3.0.3 (2017-11-24)
1355
1885
 
1356
1886
  ### Bug Fixes
1357
1887
 
1358
- - text/ttml: apply correctly a style if directly set on an attribute
1359
- - eme: load new video even if the last EME clean-up failed
1888
+ - text/ttml: apply correctly a style if directly set on an attribute
1889
+ - eme: load new video even if the last EME clean-up failed
1360
1890
 
1361
1891
  ### Other improvements
1362
1892
 
1363
- - misc: set better work arround for typescript issue [20104](https://github.com/Microsoft/TypeScript/issues/20104) to make building npm scripts usable again
1364
- - tools: update the update-version npm script
1365
- - demo: `npm run start` and `npm run standalone` now build the rx-player in the "development" environment
1366
- - tools: add more logs in DEBUG mode
1893
+ - misc: set better work arround for typescript issue
1894
+ [20104](https://github.com/Microsoft/TypeScript/issues/20104) to make building npm
1895
+ scripts usable again
1896
+ - tools: update the update-version npm script
1897
+ - demo: `npm run start` and `npm run standalone` now build the rx-player in the
1898
+ "development" environment
1899
+ - tools: add more logs in DEBUG mode
1367
1900
 
1368
1901
  ## v3.0.2 (2017-11-17)
1369
1902
 
1370
1903
  ### Bug Fixes
1371
1904
 
1372
- - misc: work around typescript issue [20104](https://github.com/Microsoft/TypeScript/issues/20104) temporarly to launch in Chrome in HTTP
1905
+ - misc: work around typescript issue
1906
+ [20104](https://github.com/Microsoft/TypeScript/issues/20104) temporarly to launch in
1907
+ Chrome in HTTP
1373
1908
 
1374
1909
  ## v3.0.1 (2017-11-17)
1375
1910
 
1376
1911
  ### Bug Fixes
1377
1912
 
1378
- - abr: adopt a less agressive strategy to avoid re-bufferings
1379
- - smooth: avoid most of the manifest refresh requests
1913
+ - abr: adopt a less agressive strategy to avoid re-bufferings
1914
+ - smooth: avoid most of the manifest refresh requests
1380
1915
 
1381
1916
  ### Other improvements
1382
1917
 
1383
- - Switch codebase to TypeScript
1384
- - Add Travis CI
1918
+ - Switch codebase to TypeScript
1919
+ - Add Travis CI
1385
1920
 
1386
1921
  ## v3.0.0 (2017-11-10)
1387
1922
 
1388
1923
  ### Added
1389
1924
 
1390
- - misc: add possibility to do custom builds through environment variables, to remove unwanted features from minified code.
1391
- - languages: add support for segmented VTT subtitles
1392
- - languages/dash: add support for plain text TTML, SAMI, SRT, VTT and MP4-embedded VTT subtitles in DASH manifests
1393
- - languages/smooth: add support for MP4-embedded VTT subtitles in Smooth manifests
1394
- - languages: add possibility to show fragmented or not TTML, SAMI, SRT and VTT text tracks in a <track> element, even for browser that do not support the VTTCue API
1395
- - languages: add possibility to show TTML, SRT, VTT and SAMI text tracks in HTML tags for richer stylisation.
1396
- - api: add `textTrackElement` option to `loadVideo`
1397
- - api: add `textTrackMode` option to `loadVideo`
1398
- - api: add `nativeTextTracksChange` event
1399
- - eme: it is now possible to directly set the reverse domain name of the wanted key system in the `type` property of `loadVideo`'s `keySystems` option.
1400
- - api: add property `percentage` to the `startAt` argument of `loadVideo`.
1401
- - abr: add `bitrateEstimationChange` event
1402
- - api: add `LogLevel` static property
1403
- - api: a Date object can now be given to the `loadVideo` argument `startAt.wallClockTime`. It will be automatically converted into seconds.
1404
- - languages: add `normalizedLanguage` property in manifest-related-APIs to expose the ISO 639-3 language code of the audio and text tracks
1405
- - languages: add `normalized` property in language-related-API to expose the ISO 639-3 language code of the audio and text tracks
1406
- - loadVideo: add `codecs` property to supplementaryTextTracks
1407
- - api: add `wantedBufferAhead` constructor option
1408
- - api: add `maxBufferAhead` constructor option
1409
- - api: add `maxBufferBehind` constructor option
1410
- - api: add `getVideoBufferGap` method
1411
- - api: add `isMute` method
1412
- - api: add `getManualAudioBitrate` method
1413
- - api: add `getManualVideoBitrate` method
1414
- - config: add a global config file (src/config.js) to easily tweak the player behavior
1925
+ - misc: add possibility to do custom builds through environment variables, to remove
1926
+ unwanted features from minified code.
1927
+ - languages: add support for segmented VTT subtitles
1928
+ - languages/dash: add support for plain text TTML, SAMI, SRT, VTT and MP4-embedded VTT
1929
+ subtitles in DASH manifests
1930
+ - languages/smooth: add support for MP4-embedded VTT subtitles in Smooth manifests
1931
+ - languages: add possibility to show fragmented or not TTML, SAMI, SRT and VTT text tracks
1932
+ in a <track> element, even for browser that do not support the VTTCue API
1933
+ - languages: add possibility to show TTML, SRT, VTT and SAMI text tracks in HTML tags for
1934
+ richer stylisation.
1935
+ - api: add `textTrackElement` option to `loadVideo`
1936
+ - api: add `textTrackMode` option to `loadVideo`
1937
+ - api: add `nativeTextTracksChange` event
1938
+ - eme: it is now possible to directly set the reverse domain name of the wanted key system
1939
+ in the `type` property of `loadVideo`'s `keySystems` option.
1940
+ - api: add property `percentage` to the `startAt` argument of `loadVideo`.
1941
+ - abr: add `bitrateEstimationChange` event
1942
+ - api: add `LogLevel` static property
1943
+ - api: a Date object can now be given to the `loadVideo` argument `startAt.wallClockTime`.
1944
+ It will be automatically converted into seconds.
1945
+ - languages: add `normalizedLanguage` property in manifest-related-APIs to expose the ISO
1946
+ 639-3 language code of the audio and text tracks
1947
+ - languages: add `normalized` property in language-related-API to expose the ISO 639-3
1948
+ language code of the audio and text tracks
1949
+ - loadVideo: add `codecs` property to supplementaryTextTracks
1950
+ - api: add `wantedBufferAhead` constructor option
1951
+ - api: add `maxBufferAhead` constructor option
1952
+ - api: add `maxBufferBehind` constructor option
1953
+ - api: add `getVideoBufferGap` method
1954
+ - api: add `isMute` method
1955
+ - api: add `getManualAudioBitrate` method
1956
+ - api: add `getManualVideoBitrate` method
1957
+ - config: add a global config file (src/config.js) to easily tweak the player behavior
1415
1958
 
1416
1959
  ### Changed
1417
1960
 
1418
- - languages: switch from ISO 639-2 to ISO 639-3 language codes in various APIs
1419
- - languages: the `language` property returned by language and manifest related APIs now reflect the exact language as set in the manifest
1420
- - api: `setVideoBitrate` can now be called even when no content is playing
1421
- - api: `setAudioBitrate` can now be called even when no content is playing
1422
- - api: `setVideoBitrate` can now be called even when no video track has the exact same bitrate
1423
- - api: `setAudioBitrate` can now be called even when no audio track has the exact same bitrate
1424
- - api: giving a number to `seekTo` now has the same effect than setting a position option in argument (`seekTo({ position }) === seekTo(position)`)
1425
- - api: `getUrl` now do not throw if no content is playing
1426
- - api: `isLive` now do not throw if no content is playing
1427
- - api: `loadVideo` does not return anything anymore
1428
- - api: private (undocumented) variables have been isolated on a player instance to a `_priv` object.
1429
- - api: the constructor option `throttleWhenHidden` is now set to false by default
1430
- - api: the constructor option `limitVideoWidth` is now set to false by default
1961
+ - languages: switch from ISO 639-2 to ISO 639-3 language codes in various APIs
1962
+ - languages: the `language` property returned by language and manifest related APIs now
1963
+ reflect the exact language as set in the manifest
1964
+ - api: `setVideoBitrate` can now be called even when no content is playing
1965
+ - api: `setAudioBitrate` can now be called even when no content is playing
1966
+ - api: `setVideoBitrate` can now be called even when no video track has the exact same
1967
+ bitrate
1968
+ - api: `setAudioBitrate` can now be called even when no audio track has the exact same
1969
+ bitrate
1970
+ - api: giving a number to `seekTo` now has the same effect than setting a position option
1971
+ in argument (`seekTo({ position }) === seekTo(position)`)
1972
+ - api: `getUrl` now do not throw if no content is playing
1973
+ - api: `isLive` now do not throw if no content is playing
1974
+ - api: `loadVideo` does not return anything anymore
1975
+ - api: private (undocumented) variables have been isolated on a player instance to a
1976
+ `_priv` object.
1977
+ - api: the constructor option `throttleWhenHidden` is now set to false by default
1978
+ - api: the constructor option `limitVideoWidth` is now set to false by default
1431
1979
 
1432
1980
  ### Removed
1433
1981
 
1434
- - api: remove `defaultAudioTrack` constructor option
1435
- - api: remove `defaultTextTrack` constructor option
1436
- - api: remove `transportOptions` constructor option
1437
- - api: remove `transport` constructor option
1438
- - api: remove `nativeTextTrackChange` event in favor of `nativeTextTracksChange` event (notice the "s")
1439
- - api: remove `goToStart` method
1440
- - api: remove `getStartTime` method
1441
- - api: remove `getEndTime` method
1442
- - api: remove `toggleDebug` method
1443
- - api: remove `hideDebug` method
1444
- - api: remove `showDebug` method
1445
- - api: remove `getDebug` method
1446
- - api: remove `getImageTrack` method
1447
- - api: remove `setVideoBufferSize` method in favor of `setWantedBufferAhead` method
1448
- - api: remove `getVideoBufferSize` method in favor of `getWantedBufferAhead` method
1449
- - api: remove `setAudioBufferSize` method in favor of `setWantedBufferAhead` method
1450
- - api: remove `getAudioBufferSize` method in favor of `getWantedBufferAhead` method
1451
- - api: remove `maximumBufferTime` property from `positionUpdate` events
1452
- - api: remove `getCurrentTime` method
1453
- - api: remove `asObservable` method
1454
- - api: remove `loadVideo` option `manifests` in favor of `url` and `keySystems` options
1455
- - api: remove `loadVideo` option `subtitles` in favor of `supplementaryTextTracks` option
1456
- - api: remove `loadVideo` option `images` in favor of `supplementaryImageTracks` option
1457
- - api: remove constructor option `initVideoBitrate` in favor of `initialVideoBitrate` option
1458
- - api: remove constructor option `initAudioBitrate` in favor of `initialVideoBitrate` option
1459
- - api: remove constructor option `defaultLanguage` in favor of `defaultAudioTrack` option
1460
- - api: remove constructor option `defaultSubtitle` in favor of `defaultTextTrack` option
1461
- - position: remove `subtitleChange` event
1462
- - position: remove `languageChange` event
1463
- - position: remove `progress` event
1464
- - position: remove `currentTimeChange` event in favor of `positionUpdate` event
1465
- - adaptive: remove `getMetrics` method
1466
- - adaptive: remove `getAverageBitrates` method
1467
- - adaptive: remove `getVideoMaxBitrate` method in favor of `getMaxVideoBitrate` method
1468
- - adaptive: remove `getAudioMaxBitrate` method in favor of `getMaxAudioBitrate` method
1469
- - errors: remove static method `getErrorTypes` in favor of the static property `errorTypes`
1470
- - errors: remove static method `getErrorCodes` in favor of the static property `errorCodes`
1471
- - languages: remove `normalizeLanguageCode` method
1472
- - languages: remove `getAvailableLanguages` method
1473
- - languages: remove `getAvailableSubtitles` method
1474
- - languages: remove `isLanguageAvailable` method
1475
- - languages: remove `isSubtitleAvailable` method
1476
- - languages: remove `getLanguage` method
1477
- - languages: remove `getSubtitle` method
1478
- - languages: remove `setLanguage` method
1479
- - languages: remove `setSubtitle` method
1982
+ - api: remove `defaultAudioTrack` constructor option
1983
+ - api: remove `defaultTextTrack` constructor option
1984
+ - api: remove `transportOptions` constructor option
1985
+ - api: remove `transport` constructor option
1986
+ - api: remove `nativeTextTrackChange` event in favor of `nativeTextTracksChange` event
1987
+ (notice the "s")
1988
+ - api: remove `goToStart` method
1989
+ - api: remove `getStartTime` method
1990
+ - api: remove `getEndTime` method
1991
+ - api: remove `toggleDebug` method
1992
+ - api: remove `hideDebug` method
1993
+ - api: remove `showDebug` method
1994
+ - api: remove `getDebug` method
1995
+ - api: remove `getImageTrack` method
1996
+ - api: remove `setVideoBufferSize` method in favor of `setWantedBufferAhead` method
1997
+ - api: remove `getVideoBufferSize` method in favor of `getWantedBufferAhead` method
1998
+ - api: remove `setAudioBufferSize` method in favor of `setWantedBufferAhead` method
1999
+ - api: remove `getAudioBufferSize` method in favor of `getWantedBufferAhead` method
2000
+ - api: remove `maximumBufferTime` property from `positionUpdate` events
2001
+ - api: remove `getCurrentTime` method
2002
+ - api: remove `asObservable` method
2003
+ - api: remove `loadVideo` option `manifests` in favor of `url` and `keySystems` options
2004
+ - api: remove `loadVideo` option `subtitles` in favor of `supplementaryTextTracks` option
2005
+ - api: remove `loadVideo` option `images` in favor of `supplementaryImageTracks` option
2006
+ - api: remove constructor option `initVideoBitrate` in favor of `initialVideoBitrate`
2007
+ option
2008
+ - api: remove constructor option `initAudioBitrate` in favor of `initialVideoBitrate`
2009
+ option
2010
+ - api: remove constructor option `defaultLanguage` in favor of `defaultAudioTrack` option
2011
+ - api: remove constructor option `defaultSubtitle` in favor of `defaultTextTrack` option
2012
+ - position: remove `subtitleChange` event
2013
+ - position: remove `languageChange` event
2014
+ - position: remove `progress` event
2015
+ - position: remove `currentTimeChange` event in favor of `positionUpdate` event
2016
+ - adaptive: remove `getMetrics` method
2017
+ - adaptive: remove `getAverageBitrates` method
2018
+ - adaptive: remove `getVideoMaxBitrate` method in favor of `getMaxVideoBitrate` method
2019
+ - adaptive: remove `getAudioMaxBitrate` method in favor of `getMaxAudioBitrate` method
2020
+ - errors: remove static method `getErrorTypes` in favor of the static property
2021
+ `errorTypes`
2022
+ - errors: remove static method `getErrorCodes` in favor of the static property
2023
+ `errorCodes`
2024
+ - languages: remove `normalizeLanguageCode` method
2025
+ - languages: remove `getAvailableLanguages` method
2026
+ - languages: remove `getAvailableSubtitles` method
2027
+ - languages: remove `isLanguageAvailable` method
2028
+ - languages: remove `isSubtitleAvailable` method
2029
+ - languages: remove `getLanguage` method
2030
+ - languages: remove `getSubtitle` method
2031
+ - languages: remove `setLanguage` method
2032
+ - languages: remove `setSubtitle` method
1480
2033
 
1481
2034
  ### Bug Fixes:
1482
2035
 
1483
- - dash: fix bug that prevented to play most dash contents with SegmentTemplate-based manifests
1484
- - dash: it's now possible to play SegmentTimeline-based contents with a numbering scheme
1485
- - dash/text: calculate the text track time offset for dynamic DASH contents (prevented most text tracks from live DASH contents to be displayed)
1486
- - eme: fix EME issues when loading multiple videos in IE/Edge
1487
- - api: The state of the player when ready to play with autoPlay === false is now `"LOADED"` and not `"PAUSED"`
1488
- - api: fix infinite loading bug when a new content is synchronously launched as soon as the previous one is ended or fell on error
1489
- - dash: allow absolute BaseURL in Periods
1490
- - languages: avoid excessive re-downloads if a `supplementaryTextTracks` is provided and either a `maxBufferBehind` or a `maxBufferAhead` is set.
1491
- - eme: the `reason` for the eme error `KEY_STATUS_CHANGE_ERROR` is now correctly filled in
1492
- - eme: do not set widevine robustnesses for non-widevine key systems
1493
- - languages: fix bug which led the text buffer to _crash_ when the `wantedBufferBehind` option is set
1494
- - languages: fix bug which led to TextTracks chunks being re-downloaded multiple times
1495
- - speed: fix playback rate bug when setting it while the player is stalled
1496
- - smooth: fix "fallback" callback in the segmentLoader API for smooth contents.
1497
- - smooth: fix some minor risks of infinite rebuffering for live contents, when the isobmff's tfrf box is not well parsed.
1498
- - buffer: avoid infinite player rebuffering when the manifest is not exactly aligned with the real duration of the content
1499
- - buffer: avoid multiple causes of infinite player rebuffering by managing segment garbage collection
1500
- - languages: getAudioTrack now always returns the currently set audio track
1501
- - languages: getTextTrack now always returns the currently set text track
2036
+ - dash: fix bug that prevented to play most dash contents with SegmentTemplate-based
2037
+ manifests
2038
+ - dash: it's now possible to play SegmentTimeline-based contents with a numbering scheme
2039
+ - dash/text: calculate the text track time offset for dynamic DASH contents (prevented
2040
+ most text tracks from live DASH contents to be displayed)
2041
+ - eme: fix EME issues when loading multiple videos in IE/Edge
2042
+ - api: The state of the player when ready to play with autoPlay === false is now
2043
+ `"LOADED"` and not `"PAUSED"`
2044
+ - api: fix infinite loading bug when a new content is synchronously launched as soon as
2045
+ the previous one is ended or fell on error
2046
+ - dash: allow absolute BaseURL in Periods
2047
+ - languages: avoid excessive re-downloads if a `supplementaryTextTracks` is provided and
2048
+ either a `maxBufferBehind` or a `maxBufferAhead` is set.
2049
+ - eme: the `reason` for the eme error `KEY_STATUS_CHANGE_ERROR` is now correctly filled in
2050
+ - eme: do not set widevine robustnesses for non-widevine key systems
2051
+ - languages: fix bug which led the text buffer to _crash_ when the `wantedBufferBehind`
2052
+ option is set
2053
+ - languages: fix bug which led to TextTracks chunks being re-downloaded multiple times
2054
+ - speed: fix playback rate bug when setting it while the player is stalled
2055
+ - smooth: fix "fallback" callback in the segmentLoader API for smooth contents.
2056
+ - smooth: fix some minor risks of infinite rebuffering for live contents, when the
2057
+ isobmff's tfrf box is not well parsed.
2058
+ - buffer: avoid infinite player rebuffering when the manifest is not exactly aligned with
2059
+ the real duration of the content
2060
+ - buffer: avoid multiple causes of infinite player rebuffering by managing segment garbage
2061
+ collection
2062
+ - languages: getAudioTrack now always returns the currently set audio track
2063
+ - languages: getTextTrack now always returns the currently set text track
1502
2064
 
1503
2065
  ### Other improvements
1504
2066
 
1505
- - manifest: improve manifest refreshing logic, by not downloading it when unnecessary
1506
- - smooth: begin to play arround 10s before the live edge instead of 20 seconds for smooth contents
1507
- - network: the backoff algorithm has been refactored for better network error resilience
1508
- - adaptive: improved ABR management to provide a better, faster and more stable bandwidth estimation
1509
- - adaptive: add strategies for abrupt changes of bandwidth to avoid excessive re-buffering on network fluctuations
1510
- - adaptive: the adaptive algorithm now take into account the current playback rate
1511
- - doc: added file architecture documentation
1512
- - tests: fixed and added integration tests
1513
- - demo: the demo now manages most languages defined by in the ISO 639-3 standard
2067
+ - manifest: improve manifest refreshing logic, by not downloading it when unnecessary
2068
+ - smooth: begin to play arround 10s before the live edge instead of 20 seconds for smooth
2069
+ contents
2070
+ - network: the backoff algorithm has been refactored for better network error resilience
2071
+ - adaptive: improved ABR management to provide a better, faster and more stable bandwidth
2072
+ estimation
2073
+ - adaptive: add strategies for abrupt changes of bandwidth to avoid excessive re-buffering
2074
+ on network fluctuations
2075
+ - adaptive: the adaptive algorithm now take into account the current playback rate
2076
+ - doc: added file architecture documentation
2077
+ - tests: fixed and added integration tests
2078
+ - demo: the demo now manages most languages defined by in the ISO 639-3 standard
1514
2079
 
1515
2080
  ## v2.3.2 (2017-07-25)
1516
2081
 
1517
2082
  ### Bug Fixes
1518
2083
 
1519
- - eme: update EME workflow to improve support (especially chromebooks)
2084
+ - eme: update EME workflow to improve support (especially chromebooks)
1520
2085
 
1521
2086
  ## v2.3.1 (2017-07-10)
1522
2087
 
1523
2088
  ### Bug Fixes
1524
2089
 
1525
- - buffer: improve buffer ranges "bookeeping" logic to avoid re-downloading the same segments
2090
+ - buffer: improve buffer ranges "bookeeping" logic to avoid re-downloading the same
2091
+ segments
1526
2092
 
1527
2093
  ## v2.3.0 (2017-07-07)
1528
2094
 
1529
2095
  ### Added
1530
2096
 
1531
- - eme: add audioRobustnesses to loadVideo's keySystems argument (/!\ undocumented API - can break without official notice)
1532
- - eme: add videoRobustnesses to loadVideo's keySystems argument (/!\ undocumented API - can break without official notice)
1533
- - eme: add serverCertificate to loadVideo's keySystems argument
1534
- - buffer: add {set,get}MaxBufferAhead methods
1535
- - buffer: add {set,get}MaxBufferBehind methods
1536
- - buffer: add {set,get}WantedBufferAhead methods replacing the deprecated buffer size methods
2097
+ - eme: add audioRobustnesses to loadVideo's keySystems argument (/!\ undocumented API -
2098
+ can break without official notice)
2099
+ - eme: add videoRobustnesses to loadVideo's keySystems argument (/!\ undocumented API -
2100
+ can break without official notice)
2101
+ - eme: add serverCertificate to loadVideo's keySystems argument
2102
+ - buffer: add {set,get}MaxBufferAhead methods
2103
+ - buffer: add {set,get}MaxBufferBehind methods
2104
+ - buffer: add {set,get}WantedBufferAhead methods replacing the deprecated buffer size
2105
+ methods
1537
2106
 
1538
2107
  ### Deprecated
1539
2108
 
1540
- - setVideoBufferSize has been deprecated in favor of setWantedBufferAhead
1541
- - getVideoBufferSize has been deprecated in favor of getWantedBufferAhead
1542
- - setAudioBufferSize has been deprecated in favor of setWantedBufferAhead
1543
- - getAudioBufferSize has been deprecated in favor of getWantedBufferAhead
2109
+ - setVideoBufferSize has been deprecated in favor of setWantedBufferAhead
2110
+ - getVideoBufferSize has been deprecated in favor of getWantedBufferAhead
2111
+ - setAudioBufferSize has been deprecated in favor of setWantedBufferAhead
2112
+ - getAudioBufferSize has been deprecated in favor of getWantedBufferAhead
1544
2113
 
1545
2114
  ### Bug Fixes
1546
2115
 
1547
- - buffer: avoid some infinite re-buffering by re-calculating buffer ranges at every tick
1548
- - eme: add eme support for some legacy browser without video or audio capabilities
1549
- - general: add support for older browsers (which does not support array.prototype.{find,findIndex,includes})
1550
- - general: use Object.assign ponyfill instead of the previous polyfill to avoid malicious interferences with other codebases
2116
+ - buffer: avoid some infinite re-buffering by re-calculating buffer ranges at every tick
2117
+ - eme: add eme support for some legacy browser without video or audio capabilities
2118
+ - general: add support for older browsers (which does not support
2119
+ array.prototype.{find,findIndex,includes})
2120
+ - general: use Object.assign ponyfill instead of the previous polyfill to avoid malicious
2121
+ interferences with other codebases
1551
2122
 
1552
2123
  ## v2.2.1 (2017-06-27)
1553
2124
 
1554
2125
  ### Bug fixes
1555
2126
 
1556
- - adaptive: fix width limitation bug. Impacted limitVideoWidth + setMaxVideoBitrate APIs
2127
+ - adaptive: fix width limitation bug. Impacted limitVideoWidth + setMaxVideoBitrate APIs
1557
2128
 
1558
2129
  ## v2.2.0 (2017-06-19)
1559
2130
 
1560
2131
  ### Added
1561
2132
 
1562
- - position: add maximumBufferPosition to the positionUpdate event's payload to replace the previous "liveGap" from currentTimeChange event
2133
+ - position: add maximumBufferPosition to the positionUpdate event's payload to replace the
2134
+ previous "liveGap" from currentTimeChange event
1563
2135
 
1564
2136
  ### Bug fixes
1565
2137
 
1566
- - upgrade to rxjs 5.4.1 to escape memory leak
1567
- - position: "liveGap" from currentTimeChange event now means the difference to the maximum "bufferisable" position to keep compatibility with the old API
2138
+ - upgrade to rxjs 5.4.1 to escape memory leak
2139
+ - position: "liveGap" from currentTimeChange event now means the difference to the maximum
2140
+ "bufferisable" position to keep compatibility with the old API
1568
2141
 
1569
2142
  ## v2.1.3 (2017-06-15)
1570
2143
 
1571
2144
  ### Bug fixes
1572
2145
 
1573
- - api: fix timeFragment.start handling
2146
+ - api: fix timeFragment.start handling
1574
2147
 
1575
2148
  ## v2.1.2 (2017-06-14)
1576
2149
 
1577
2150
  ### Bug fixes
1578
2151
 
1579
- - stream: the BUFFER_APPEND_ERROR error, happening when a SourceBuffer.appendBuffer failed for an unknown reason, is now a fatal error for audio/video segments
1580
- - eme: fix rxjs timeout management which prevented from playing DRM-protected contents
1581
- - api: add securities to avoid useless errors to be thrown when the player (already) encounter an error
1582
- - position: fix bug which prevented to seek at the beginning of the content with the new api
1583
- - position: fix typo which prevented to perform absolute seeks with the new api
1584
- - buffer: automatically seek if there is discontinuity in a live stream
1585
- - adaptive: take the lowest bitrate (instead of the initial/default one) when the player is not displayed/too small
2152
+ - stream: the BUFFER_APPEND_ERROR error, happening when a SourceBuffer.appendBuffer failed
2153
+ for an unknown reason, is now a fatal error for audio/video segments
2154
+ - eme: fix rxjs timeout management which prevented from playing DRM-protected contents
2155
+ - api: add securities to avoid useless errors to be thrown when the player (already)
2156
+ encounter an error
2157
+ - position: fix bug which prevented to seek at the beginning of the content with the new
2158
+ api
2159
+ - position: fix typo which prevented to perform absolute seeks with the new api
2160
+ - buffer: automatically seek if there is discontinuity in a live stream
2161
+ - adaptive: take the lowest bitrate (instead of the initial/default one) when the player
2162
+ is not displayed/too small
1586
2163
 
1587
2164
  ## v2.1.1 (2017-06-02)
1588
2165
 
1589
2166
  ### Bug fixes
1590
2167
 
1591
- - hotfix: fixed rxjs imports
1592
- - hotfix: the player can now be imported through a commonjs require
1593
- - hotfix: the player could not play if the video element's width was too short
1594
- - manifest: segment id were not always the same on a segmentLoader and on the API calls.
1595
- - adaptive: setVideoBitrate now throw a more meaningful error if no content is playing
1596
- - adaptive: setAudioBitrate now throw a more meaningful error if no content is playing
1597
- - language: setSubtitle now throw a more meaningful error if no content is playing
1598
- - language: setLanguage now throw a more meaningful error if no content is playing
1599
- - language: isLanguageAvailable do not throw and return false if no content is playing
1600
- - language: isSubtitleAvailable do not throw and return false if no content is playing
2168
+ - hotfix: fixed rxjs imports
2169
+ - hotfix: the player can now be imported through a commonjs require
2170
+ - hotfix: the player could not play if the video element's width was too short
2171
+ - manifest: segment id were not always the same on a segmentLoader and on the API calls.
2172
+ - adaptive: setVideoBitrate now throw a more meaningful error if no content is playing
2173
+ - adaptive: setAudioBitrate now throw a more meaningful error if no content is playing
2174
+ - language: setSubtitle now throw a more meaningful error if no content is playing
2175
+ - language: setLanguage now throw a more meaningful error if no content is playing
2176
+ - language: isLanguageAvailable do not throw and return false if no content is playing
2177
+ - language: isSubtitleAvailable do not throw and return false if no content is playing
1601
2178
 
1602
2179
  ### Other improvements
1603
2180
 
1604
- - api: deprecated api now only warn once
1605
- - tests: integration tests have been added
1606
- - manifest: the manifest object and the management of its index has been refactored for future improvements
2181
+ - api: deprecated api now only warn once
2182
+ - tests: integration tests have been added
2183
+ - manifest: the manifest object and the management of its index has been refactored for
2184
+ future improvements
1607
2185
 
1608
2186
  ## v2.1.0 (2017-05-29)
1609
2187
 
1610
2188
  ### Added
1611
2189
 
1612
- - images/dash: add BIF support in DASH MPD
1613
- - subtitles/smooth: add support for closed captions in smooth manifest
1614
- - subtitles: add closed caption support in supplementaryTextTracks loadVideo arguments
1615
- - position: add getMinimumPosition and getMaximumPosition methods
1616
- - position: add startAt loadVideo argument (replace the timeFragment API)
1617
- - position: add positionUpdate event
1618
- - images: add getImageTrackData method
1619
- - images: add imageTrackUpdate event
1620
- - position: add possibility to use relative, absolute and wall-clock time on seekTo API
1621
- - transport: add segmentLoader transportOption for constructor and loadVideo API
1622
- - api: add setMaxAudioBitrate and setMaxVideoBitrate method
1623
- - api: add exitFullscreen method
1624
- - api: add ErrorTypes and ErrorCodes static properties
1625
- - api: add getPosition method
1626
- - api: add getWallClockTime method
1627
- - manifest: add getCurrentRepresentations method
1628
- - manifest: add getCurrentAdaptations method
1629
- - api: add throttleWhenHidden option to constructor (to disable throttling when the current page is hidden for an extended time)
1630
- - api: add limitVideoWidth option to constructor (to disable throttling to match the video element's width)
1631
- - api: add initialAudioBitrate and initialVideoBitrate to constructor's options
1632
- - api: add defaultTextTrack and defaultAudioTrack to loadVideo and constructor's options
1633
- - languages: add getAvailableAudioTracks method with audio description support
1634
- - languages: add getAvailableTextTracks method with closed caption support
1635
- - languages: add getAudioTrack method with audio description support
1636
- - languages: add getTextTrack method with closed caption support
1637
- - languages: add setAudioTrack method with audio description support
1638
- - languages: add setTextTrack method with closed caption support
1639
- - audiotrack/dash: add audio description support in DASH MPD
1640
- - subtitles/dash: add closed captions support in DASH MPD
1641
- - subtitles/dash: add subtitles support in DASH MPD (only ttml for now)
2190
+ - images/dash: add BIF support in DASH MPD
2191
+ - subtitles/smooth: add support for closed captions in smooth manifest
2192
+ - subtitles: add closed caption support in supplementaryTextTracks loadVideo arguments
2193
+ - position: add getMinimumPosition and getMaximumPosition methods
2194
+ - position: add startAt loadVideo argument (replace the timeFragment API)
2195
+ - position: add positionUpdate event
2196
+ - images: add getImageTrackData method
2197
+ - images: add imageTrackUpdate event
2198
+ - position: add possibility to use relative, absolute and wall-clock time on seekTo API
2199
+ - transport: add segmentLoader transportOption for constructor and loadVideo API
2200
+ - api: add setMaxAudioBitrate and setMaxVideoBitrate method
2201
+ - api: add exitFullscreen method
2202
+ - api: add ErrorTypes and ErrorCodes static properties
2203
+ - api: add getPosition method
2204
+ - api: add getWallClockTime method
2205
+ - manifest: add getCurrentRepresentations method
2206
+ - manifest: add getCurrentAdaptations method
2207
+ - api: add throttleWhenHidden option to constructor (to disable throttling when the
2208
+ current page is hidden for an extended time)
2209
+ - api: add limitVideoWidth option to constructor (to disable throttling to match the video
2210
+ element's width)
2211
+ - api: add initialAudioBitrate and initialVideoBitrate to constructor's options
2212
+ - api: add defaultTextTrack and defaultAudioTrack to loadVideo and constructor's options
2213
+ - languages: add getAvailableAudioTracks method with audio description support
2214
+ - languages: add getAvailableTextTracks method with closed caption support
2215
+ - languages: add getAudioTrack method with audio description support
2216
+ - languages: add getTextTrack method with closed caption support
2217
+ - languages: add setAudioTrack method with audio description support
2218
+ - languages: add setTextTrack method with closed caption support
2219
+ - audiotrack/dash: add audio description support in DASH MPD
2220
+ - subtitles/dash: add closed captions support in DASH MPD
2221
+ - subtitles/dash: add subtitles support in DASH MPD (only ttml for now)
1642
2222
 
1643
2223
  ### Deprecated
1644
2224
 
1645
- - position: the timeFragment API is deprecated (loadVideo's timeFragment argument, getStartTime, getEndTime and goToStart)
1646
- - api: currentTimeChange event is replaced by the positionUpdate event
1647
- - api: progress event is deprecated and not replaced
1648
- - api: getImageTrack is replaced by the imageTrackUpdate event
1649
- - api: loadVideo parameter subtitles is replaced by supplementaryTextTracks
1650
- - api: loadVideo parameter images is replaced by supplementaryImageTracks
1651
- - api: getVideoMaxBitrate is replaced by getMaxVideoBitrate
1652
- - api: getAudioMaxBitrate is replaced by getMaxAudioBitrate
1653
- - api: toggleDebug is deprecated and not replaced
1654
- - api: hideDebug is deprecated and not replaced
1655
- - api: showDebug is deprecated and not replaced
1656
- - api: getDebug is deprecated and not replaced
1657
- - api: asObservable is deprecated and not replaced
1658
- - api: getAverageBitrates is deprecated and not replaced
1659
- - api: getMetrics is deprecated and not replaced
1660
- - position: using seekTo with a Number argument is deprecated.
1661
- - position: getCurrentTime is deprecated in favor of getWallClockTime
1662
- - api: setVideoMaxBitrate is replaced by setMaxVideoBitrate
1663
- - api: setAudioMaxBitrate is replaced by setMaxAudioBitrate
1664
- - api: using setFullscreen(false) is replaced by exitFullscreen
1665
- - api: getErrorTypes method has been deprecated in favor of the ErrorTypes property
1666
- - api: getErrorCodes method has been deprecated in favor of the ErrorCodes property
1667
- - languages: initAudioBitrate option in constructor is deprecated in favor of initialAudioBitrate
1668
- - languages: initVideoBitrate option in constructor is deprecated in favor of initialVideoBitrate
1669
- - languages: defaultSubtitle option in constructor and loadVideo is deprecated in favor of defaultTextTrack
1670
- - languages: defaultLanguage option in constructor and loadVideo is deprecated in favor of defaultAudioTrack
1671
- - languages: getAvailableLanguages is deprecated in favor of getAvailableAudioTracks
1672
- - languages: getAvailableSubtitles is deprecated in favor of getAvailableTextTracks
1673
- - languages: getLanguage is deprecated in favor of getAudioTrack
1674
- - languages: getSubtitle is deprecated in favor of getTextTrack
1675
- - languages: isLanguageAvailable is deprecated and not replaced
1676
- - languages: isSubtitleAvailable is deprecated and not replaced
1677
- - languages: setLanguage is deprecated in favor of setAudioTrack
1678
- - languages: setSubtitle is deprecated in favor of setTextTrack
2225
+ - position: the timeFragment API is deprecated (loadVideo's timeFragment argument,
2226
+ getStartTime, getEndTime and goToStart)
2227
+ - api: currentTimeChange event is replaced by the positionUpdate event
2228
+ - api: progress event is deprecated and not replaced
2229
+ - api: getImageTrack is replaced by the imageTrackUpdate event
2230
+ - api: loadVideo parameter subtitles is replaced by supplementaryTextTracks
2231
+ - api: loadVideo parameter images is replaced by supplementaryImageTracks
2232
+ - api: getVideoMaxBitrate is replaced by getMaxVideoBitrate
2233
+ - api: getAudioMaxBitrate is replaced by getMaxAudioBitrate
2234
+ - api: toggleDebug is deprecated and not replaced
2235
+ - api: hideDebug is deprecated and not replaced
2236
+ - api: showDebug is deprecated and not replaced
2237
+ - api: getDebug is deprecated and not replaced
2238
+ - api: asObservable is deprecated and not replaced
2239
+ - api: getAverageBitrates is deprecated and not replaced
2240
+ - api: getMetrics is deprecated and not replaced
2241
+ - position: using seekTo with a Number argument is deprecated.
2242
+ - position: getCurrentTime is deprecated in favor of getWallClockTime
2243
+ - api: setVideoMaxBitrate is replaced by setMaxVideoBitrate
2244
+ - api: setAudioMaxBitrate is replaced by setMaxAudioBitrate
2245
+ - api: using setFullscreen(false) is replaced by exitFullscreen
2246
+ - api: getErrorTypes method has been deprecated in favor of the ErrorTypes property
2247
+ - api: getErrorCodes method has been deprecated in favor of the ErrorCodes property
2248
+ - languages: initAudioBitrate option in constructor is deprecated in favor of
2249
+ initialAudioBitrate
2250
+ - languages: initVideoBitrate option in constructor is deprecated in favor of
2251
+ initialVideoBitrate
2252
+ - languages: defaultSubtitle option in constructor and loadVideo is deprecated in favor of
2253
+ defaultTextTrack
2254
+ - languages: defaultLanguage option in constructor and loadVideo is deprecated in favor of
2255
+ defaultAudioTrack
2256
+ - languages: getAvailableLanguages is deprecated in favor of getAvailableAudioTracks
2257
+ - languages: getAvailableSubtitles is deprecated in favor of getAvailableTextTracks
2258
+ - languages: getLanguage is deprecated in favor of getAudioTrack
2259
+ - languages: getSubtitle is deprecated in favor of getTextTrack
2260
+ - languages: isLanguageAvailable is deprecated and not replaced
2261
+ - languages: isSubtitleAvailable is deprecated and not replaced
2262
+ - languages: setLanguage is deprecated in favor of setAudioTrack
2263
+ - languages: setSubtitle is deprecated in favor of setTextTrack
1679
2264
 
1680
2265
  ### Bug fixes
1681
2266
 
1682
- - adaptive: fix a bug where it was impossible to switch between multiple videos representations with the same width
1683
- - languages: fix bug where the user could switch to a closed caption track unknowngly
1684
- - languages: fix bug where the user could switch to an audio description track unknowngly
1685
- - manifest: improved and documented getManifest's return value
1686
- - manifest: defined and documented a generic manifest object structure (slowly replacing the old object).
1687
- - images: image playlists are now not re-fetched if the request failed (no retry)
1688
- - dash: lowered security time raising the startup time for SegmentTemplate-based contents
1689
- - api: getLanguage/getSubtitle returns now the language of the last chunk received, not the last set
1690
- - manifest: fixed manifest-refreshing logic (mainly for live contents)
1691
- - dash: fixed support for dash SegmentTimeline-based contents
1692
- - api: differentiate unset default languages from empty strings
1693
- - languages: handle undefined languages (to an empty string)
1694
- - api: allow the player to be instanciated with no option
1695
- - mp4: fix minor bugs with isobmff parsing
1696
- - images: keep externally-given BIF track when the manifest is refreshed
1697
- - timings: fix timeFragment arguments RegExp
1698
- - subtitles: fix webVTT management for unsupported user agents
1699
- - timings: fix calculation of the position and duration for non-dynamic contetns
2267
+ - adaptive: fix a bug where it was impossible to switch between multiple videos
2268
+ representations with the same width
2269
+ - languages: fix bug where the user could switch to a closed caption track unknowngly
2270
+ - languages: fix bug where the user could switch to an audio description track unknowngly
2271
+ - manifest: improved and documented getManifest's return value
2272
+ - manifest: defined and documented a generic manifest object structure (slowly replacing
2273
+ the old object).
2274
+ - images: image playlists are now not re-fetched if the request failed (no retry)
2275
+ - dash: lowered security time raising the startup time for SegmentTemplate-based contents
2276
+ - api: getLanguage/getSubtitle returns now the language of the last chunk received, not
2277
+ the last set
2278
+ - manifest: fixed manifest-refreshing logic (mainly for live contents)
2279
+ - dash: fixed support for dash SegmentTimeline-based contents
2280
+ - api: differentiate unset default languages from empty strings
2281
+ - languages: handle undefined languages (to an empty string)
2282
+ - api: allow the player to be instanciated with no option
2283
+ - mp4: fix minor bugs with isobmff parsing
2284
+ - images: keep externally-given BIF track when the manifest is refreshed
2285
+ - timings: fix timeFragment arguments RegExp
2286
+ - subtitles: fix webVTT management for unsupported user agents
2287
+ - timings: fix calculation of the position and duration for non-dynamic contetns
1700
2288
 
1701
2289
  ### Other improvements
1702
2290
 
1703
- - documentation: The API documentation has been completely rewritten
1704
- - manifest: The DASH manifest handling has been refactored
1705
- - smooth: Smooth index handling has been completely separated from the DASH logic
1706
- - tests: fix and re-wrote unit tests
1707
- - documentation: Code documentation has been added
1708
- - demo: The Demo has been completely rewritten
1709
- - demo: The bundle has been removed from the code committed.
2291
+ - documentation: The API documentation has been completely rewritten
2292
+ - manifest: The DASH manifest handling has been refactored
2293
+ - smooth: Smooth index handling has been completely separated from the DASH logic
2294
+ - tests: fix and re-wrote unit tests
2295
+ - documentation: Code documentation has been added
2296
+ - demo: The Demo has been completely rewritten
2297
+ - demo: The bundle has been removed from the code committed.
1710
2298
 
1711
2299
  ## v2.0.0-alpha1 (2016-02-09)
1712
2300
 
1713
- - RxJS: use RxJS5.beta1
1714
- - Promise: remove es6-promise dependency and stop relying completely
1715
- on promises
2301
+ - RxJS: use RxJS5.beta1
2302
+ - Promise: remove es6-promise dependency and stop relying completely on promises
1716
2303
 
1717
- - eme: improve IE11 and Edge support on EME
1718
- - smooth: activate patch in place on non IE targets for less memory allocation
1719
- - player: deprecate directFile api and skip MediaSource assert for directfile
1720
- - player: clone array for getAvailableBitrates methods
1721
- - player: fix when no adaptation or no representation
1722
- - player: record subtitle state as empty string
1723
- - buffer: start with buffer infos to cache infos asap
1724
- - stream: start stalling system after having first metadata
1725
- - refacto: clean pipelined objects and POO where needed
2304
+ - eme: improve IE11 and Edge support on EME
2305
+ - smooth: activate patch in place on non IE targets for less memory allocation
2306
+ - player: deprecate directFile api and skip MediaSource assert for directfile
2307
+ - player: clone array for getAvailableBitrates methods
2308
+ - player: fix when no adaptation or no representation
2309
+ - player: record subtitle state as empty string
2310
+ - buffer: start with buffer infos to cache infos asap
2311
+ - stream: start stalling system after having first metadata
2312
+ - refacto: clean pipelined objects and POO where needed
1726
2313
 
1727
- - lint: add new rules (no-var, prefer-const, enforce brackets)
2314
+ - lint: add new rules (no-var, prefer-const, enforce brackets)
1728
2315
 
1729
2316
  ## v1.4.0 (2016-01-26)
1730
2317
 
1731
2318
  ### Added
1732
2319
 
1733
- - buffer: add garbage collector
1734
- - player: emit currentTimeChange synchronously
1735
- - player: add {defaultLanguage,defaultSubtitle} api
1736
- - log: warn to info for some logs
2320
+ - buffer: add garbage collector
2321
+ - player: emit currentTimeChange synchronously
2322
+ - player: add {defaultLanguage,defaultSubtitle} api
2323
+ - log: warn to info for some logs
1737
2324
 
1738
2325
  ### Bug fixes
1739
2326
 
1740
- - player: fix getAvailable\* for direct files
1741
- - player: fix subtle race on loadedmetadata after retry
1742
- - eme: remove compat code for old chrome versions with eme flags
1743
- - eme: always ask for temporary session type
1744
- - eme: fix template error message
1745
- - eme: improve persistent license support and compat
1746
- - smooth: fix index timeline if no duration
2327
+ - player: fix getAvailable\* for direct files
2328
+ - player: fix subtle race on loadedmetadata after retry
2329
+ - eme: remove compat code for old chrome versions with eme flags
2330
+ - eme: always ask for temporary session type
2331
+ - eme: fix template error message
2332
+ - eme: improve persistent license support and compat
2333
+ - smooth: fix index timeline if no duration
1747
2334
 
1748
2335
  ## Demo
1749
2336
 
1750
- - allow to pass query parameters
2337
+ - allow to pass query parameters
1751
2338
 
1752
2339
  ## v1.3.1 (2015-10-14)
1753
2340
 
1754
2341
  ### Bug fixes
1755
2342
 
1756
- - smooth: fix parseBoolean causing isLive to be always true
2343
+ - smooth: fix parseBoolean causing isLive to be always true
1757
2344
 
1758
2345
  ## v1.3.0 (2015-10-14)
1759
2346
 
1760
2347
  ### Added
1761
2348
 
1762
- - eme: license persistency support
1763
- - timings: add progress sampling
1764
- - compat: add firefox workaround for autoplay
2349
+ - eme: license persistency support
2350
+ - timings: add progress sampling
2351
+ - compat: add firefox workaround for autoplay
1765
2352
 
1766
2353
  ## v1.2.1 (2015-09-23)
1767
2354
 
1768
2355
  ### Bug fixes
1769
2356
 
1770
- - stream: do not stall on loadedmetadata event
2357
+ - stream: do not stall on loadedmetadata event
1771
2358
 
1772
2359
  ## v1.2.0 (2015-09-23)
1773
2360
 
1774
- This release introduces the use of ES6 classes for all modules that
1775
- depends on a sort of class hierarchy. It comes with an upgrade of
1776
- RxJSv3.1.1.
2361
+ This release introduces the use of ES6 classes for all modules that depends on a sort of
2362
+ class hierarchy. It comes with an upgrade of RxJSv3.1.1.
1777
2363
 
1778
2364
  We also started using eslint as our main linter instead of jshint.
1779
2365
 
1780
2366
  ### Added
1781
2367
 
1782
- - smooth: customizable parser (7b50ce9)
1783
- - smooth: add application/smil as SAMI content-type (e0aa2bb)
1784
- - improve video start time by ticking on loadedmetadata (27bd43c)
1785
- - dash: incremental id from adaptations/representations (c24fecb)
1786
- - stream: discontinuity check on each stalled tick (3a5b796)
2368
+ - smooth: customizable parser (7b50ce9)
2369
+ - smooth: add application/smil as SAMI content-type (e0aa2bb)
2370
+ - improve video start time by ticking on loadedmetadata (27bd43c)
2371
+ - dash: incremental id from adaptations/representations (c24fecb)
2372
+ - stream: discontinuity check on each stalled tick (3a5b796)
1787
2373
 
1788
2374
  ### Bug fixes
1789
2375
 
1790
- - fix missing new on Promise (4679632)
1791
- - compat: fix IE11 compat for setMediaKeys (2ccb11f)
1792
- - player: fix synchronous dispose on loadVideo (dc79bd1)
1793
- - pipelines: fix audio/video init segment caches (ea3422f)
1794
- - stream: remove initial seek hack (ae0ac23)
1795
- - player: fix getVideoLoaded/PlayedTime (63bf304)
1796
- - player: fix getUrl (577ce87)
1797
- - manifest: enforce id setting to parsers (927d275)
2376
+ - fix missing new on Promise (4679632)
2377
+ - compat: fix IE11 compat for setMediaKeys (2ccb11f)
2378
+ - player: fix synchronous dispose on loadVideo (dc79bd1)
2379
+ - pipelines: fix audio/video init segment caches (ea3422f)
2380
+ - stream: remove initial seek hack (ae0ac23)
2381
+ - player: fix getVideoLoaded/PlayedTime (63bf304)
2382
+ - player: fix getUrl (577ce87)
2383
+ - manifest: enforce id setting to parsers (927d275)
1798
2384
 
1799
2385
  ## v1.1.0 (2015-08-14)
1800
2386
 
1801
2387
  ### Added
1802
2388
 
1803
- - smoothstreaming transport support
1804
- - api for initial aubio/video bitrate choice
1805
- - simplify WebVTT support and implementation
1806
- - allow percentage values on start/end time values
2389
+ - smoothstreaming transport support
2390
+ - api for initial aubio/video bitrate choice
2391
+ - simplify WebVTT support and implementation
2392
+ - allow percentage values on start/end time values
1807
2393
 
1808
2394
  ### Bug fixes
1809
2395
 
1810
- - fix local buffer representation out-of-sync with native ones
1811
- - fix no retry for > 500 http codes
1812
- - fix no MediaKeySession reuse on Chrome
1813
- - fix quota error with MediaKeys attached to multiple video elements on Chrome
2396
+ - fix local buffer representation out-of-sync with native ones
2397
+ - fix no retry for > 500 http codes
2398
+ - fix no MediaKeySession reuse on Chrome
2399
+ - fix quota error with MediaKeys attached to multiple video elements on Chrome
1814
2400
 
1815
2401
  ## v1.0.0 (2015-06-16)
1816
2402