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