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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. package/CHANGELOG.md +18 -226
  2. package/FILES.md +1 -1
  3. package/VERSION +1 -1
  4. package/dist/_esm5.processed/compat/add_text_track.d.ts +1 -3
  5. package/dist/_esm5.processed/compat/add_text_track.js +4 -7
  6. package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +0 -7
  7. package/dist/_esm5.processed/compat/event_listeners.d.ts +2 -15
  8. package/dist/_esm5.processed/compat/event_listeners.js +2 -37
  9. package/dist/_esm5.processed/compat/index.d.ts +1 -3
  10. package/dist/_esm5.processed/compat/index.js +1 -3
  11. package/dist/_esm5.processed/config.d.ts +9 -21
  12. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.d.ts +0 -58
  13. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +14 -54
  14. package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.d.ts +2 -8
  15. package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +2 -11
  16. package/dist/_esm5.processed/core/api/debug/buffer_graph.js +2 -6
  17. package/dist/_esm5.processed/core/api/debug/modules/general_info.js +13 -32
  18. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +3 -3
  19. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +1 -1
  20. package/dist/_esm5.processed/core/api/option_utils.d.ts +14 -35
  21. package/dist/_esm5.processed/core/api/option_utils.js +47 -230
  22. package/dist/_esm5.processed/core/api/public_api.d.ts +92 -266
  23. package/dist/_esm5.processed/core/api/public_api.js +451 -807
  24. package/dist/_esm5.processed/core/{segment_buffers/implementations/image → api/track_management}/index.d.ts +3 -2
  25. package/dist/_esm5.processed/core/{segment_buffers/implementations/image → api/track_management}/index.js +3 -2
  26. package/dist/_esm5.processed/core/api/{tracks_management/media_element_track_choice_manager.d.ts → track_management/media_element_tracks_store.d.ts} +15 -75
  27. package/dist/_esm5.processed/core/api/{tracks_management/media_element_track_choice_manager.js → track_management/media_element_tracks_store.js} +74 -193
  28. package/dist/_esm5.processed/core/api/track_management/track_dispatcher.d.ts +84 -0
  29. package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +158 -0
  30. package/dist/_esm5.processed/core/api/track_management/tracks_store.d.ts +406 -0
  31. package/dist/_esm5.processed/core/api/track_management/tracks_store.js +932 -0
  32. package/dist/_esm5.processed/core/api/utils.d.ts +1 -0
  33. package/dist/_esm5.processed/core/api/utils.js +28 -11
  34. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +3 -3
  35. package/dist/_esm5.processed/core/decrypt/find_key_system.js +83 -71
  36. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +6 -5
  37. package/dist/_esm5.processed/core/decrypt/session_events_listener.js +10 -72
  38. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +4 -4
  39. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +6 -4
  40. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +1 -3
  41. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +7 -26
  42. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +3 -9
  43. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +16 -9
  44. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -3
  45. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
  46. package/dist/_esm5.processed/core/fetchers/utils/schedule_request.d.ts +1 -6
  47. package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +4 -41
  48. package/dist/_esm5.processed/core/init/directfile_content_initializer.js +1 -1
  49. package/dist/_esm5.processed/core/init/media_source_content_initializer.d.ts +1 -8
  50. package/dist/_esm5.processed/core/init/media_source_content_initializer.js +5 -19
  51. package/dist/_esm5.processed/core/init/types.d.ts +5 -15
  52. package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +2 -36
  53. package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +2 -82
  54. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +54 -6
  55. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.d.ts +2 -1
  56. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.js +19 -2
  57. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +1 -2
  58. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +2 -3
  59. package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +2 -2
  60. package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
  61. package/dist/_esm5.processed/core/segment_buffers/index.js +2 -1
  62. package/dist/_esm5.processed/core/segment_buffers/inventory/index.d.ts +1 -0
  63. package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +1 -0
  64. package/dist/_esm5.processed/core/segment_buffers/inventory/utils.d.ts +33 -0
  65. package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +49 -0
  66. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +0 -1
  67. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +2 -16
  68. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +0 -15
  69. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +183 -93
  70. package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.d.ts +39 -0
  71. package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +133 -0
  72. package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +27 -13
  73. package/dist/_esm5.processed/core/stream/index.d.ts +2 -3
  74. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +2 -0
  75. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +5 -7
  76. package/dist/_esm5.processed/core/stream/period/period_stream.js +13 -12
  77. package/dist/_esm5.processed/core/stream/period/types.d.ts +5 -14
  78. package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +2 -4
  79. package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +10 -46
  80. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +29 -23
  81. package/dist/_esm5.processed/core/stream/representation/types.d.ts +11 -1
  82. package/dist/_esm5.processed/default_config.d.ts +35 -98
  83. package/dist/_esm5.processed/default_config.js +36 -113
  84. package/dist/_esm5.processed/errors/custom_loader_error.d.ts +1 -3
  85. package/dist/_esm5.processed/errors/custom_loader_error.js +1 -3
  86. package/dist/_esm5.processed/errors/media_error.js +2 -2
  87. package/dist/_esm5.processed/errors/network_error.d.ts +0 -1
  88. package/dist/_esm5.processed/errors/network_error.js +0 -1
  89. package/dist/_esm5.processed/errors/request_error.d.ts +2 -3
  90. package/dist/_esm5.processed/errors/request_error.js +2 -5
  91. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -3
  92. package/dist/_esm5.processed/features/features_object.js +0 -2
  93. package/dist/_esm5.processed/features/list/directfile.js +2 -5
  94. package/dist/_esm5.processed/features/list/index.d.ts +0 -2
  95. package/dist/_esm5.processed/features/list/index.js +0 -2
  96. package/dist/_esm5.processed/features/types.d.ts +3 -27
  97. package/dist/_esm5.processed/manifest/adaptation.d.ts +9 -11
  98. package/dist/_esm5.processed/manifest/adaptation.js +41 -30
  99. package/dist/_esm5.processed/manifest/index.d.ts +3 -4
  100. package/dist/_esm5.processed/manifest/manifest.d.ts +5 -54
  101. package/dist/_esm5.processed/manifest/manifest.js +5 -110
  102. package/dist/_esm5.processed/manifest/period.d.ts +4 -5
  103. package/dist/_esm5.processed/manifest/representation.d.ts +10 -5
  104. package/dist/_esm5.processed/manifest/representation.js +33 -10
  105. package/dist/_esm5.processed/manifest/representation_index/index.d.ts +2 -2
  106. package/dist/_esm5.processed/manifest/representation_index/static.d.ts +2 -0
  107. package/dist/_esm5.processed/manifest/representation_index/static.js +6 -0
  108. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +42 -21
  109. package/dist/_esm5.processed/manifest/types.d.ts +0 -2
  110. package/dist/_esm5.processed/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +17 -0
  111. package/dist/_esm5.processed/parsers/manifest/dash/common/convert_supplemental_codecs.js +26 -0
  112. package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +5 -0
  113. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +17 -31
  114. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +26 -19
  115. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +2 -0
  116. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +7 -1
  117. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +2 -6
  118. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +11 -8
  119. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +2 -0
  120. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +6 -0
  121. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
  122. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.js +1 -6
  123. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +3 -5
  124. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +0 -2
  125. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -1
  126. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +2 -2
  127. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +0 -2
  128. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +2 -2
  129. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +29 -17
  130. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +13 -6
  131. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +7 -2
  132. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.d.ts +10 -1
  133. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +18 -2
  134. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +6 -4
  135. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +7 -6
  136. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +5 -2
  137. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  138. package/dist/_esm5.processed/parsers/manifest/local/representation_index.d.ts +2 -0
  139. package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +6 -0
  140. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +6 -6
  141. package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.d.ts +12 -3
  142. package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +11 -2
  143. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +0 -1
  144. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +11 -17
  145. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +21 -83
  146. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +53 -125
  147. package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.d.ts +119 -0
  148. package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +159 -0
  149. package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.d.ts +3 -6
  150. package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +4 -4
  151. package/dist/_esm5.processed/parsers/manifest/types.d.ts +4 -3
  152. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_extent.js +1 -8
  153. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +1 -9
  154. package/dist/_esm5.processed/public_types.d.ts +396 -308
  155. package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.d.ts +5 -4
  156. package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +5 -4
  157. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +4 -4
  158. package/dist/_esm5.processed/transports/dash/manifest_parser.js +2 -3
  159. package/dist/_esm5.processed/transports/dash/pipelines.js +1 -4
  160. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
  161. package/dist/_esm5.processed/transports/dash/segment_loader.js +26 -20
  162. package/dist/_esm5.processed/transports/dash/segment_parser.js +19 -24
  163. package/dist/_esm5.processed/transports/dash/text_loader.js +5 -5
  164. package/dist/_esm5.processed/transports/dash/text_parser.js +28 -33
  165. package/dist/_esm5.processed/transports/local/pipelines.js +1 -10
  166. package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
  167. package/dist/_esm5.processed/transports/local/segment_parser.d.ts +1 -1
  168. package/dist/_esm5.processed/transports/local/segment_parser.js +10 -10
  169. package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
  170. package/dist/_esm5.processed/transports/local/text_parser.js +23 -23
  171. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +34 -52
  172. package/dist/_esm5.processed/{utils/list_to_map.d.ts → transports/smooth/is_mp4_embedded_track.d.ts} +5 -5
  173. package/dist/_esm5.processed/{features/list/image_buffer.d.ts → transports/smooth/is_mp4_embedded_track.js} +7 -6
  174. package/dist/_esm5.processed/transports/smooth/pipelines.js +33 -190
  175. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +1 -1
  176. package/dist/_esm5.processed/transports/smooth/segment_loader.js +28 -22
  177. package/dist/_esm5.processed/transports/smooth/utils.d.ts +1 -26
  178. package/dist/_esm5.processed/transports/smooth/utils.js +1 -55
  179. package/dist/_esm5.processed/transports/types.d.ts +94 -89
  180. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +3 -3
  181. package/dist/_esm5.processed/transports/utils/infer_segment_container.d.ts +3 -3
  182. package/dist/_esm5.processed/transports/utils/infer_segment_container.js +5 -7
  183. package/dist/_esm5.processed/transports/utils/parse_text_track.d.ts +8 -12
  184. package/dist/_esm5.processed/transports/utils/parse_text_track.js +19 -21
  185. package/dist/_esm5.processed/utils/array_includes.d.ts +2 -1
  186. package/dist/_esm5.processed/utils/array_includes.js +30 -28
  187. package/dist/_esm5.processed/utils/request/xhr.js +5 -5
  188. package/dist/commonjs/compat/is_codec_supported.js +22 -1
  189. package/dist/commonjs/compat/patch_webkit_source_buffer.js +2 -2
  190. package/dist/commonjs/config.d.ts +1 -0
  191. package/dist/commonjs/core/api/debug/buffer_graph.js +2 -6
  192. package/dist/commonjs/core/api/debug/modules/general_info.js +17 -10
  193. package/dist/commonjs/core/api/option_utils.d.ts +4 -0
  194. package/dist/commonjs/core/api/option_utils.js +8 -3
  195. package/dist/commonjs/core/api/public_api.d.ts +11 -1
  196. package/dist/commonjs/core/api/public_api.js +46 -11
  197. package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
  198. package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.js +11 -3
  199. package/dist/commonjs/core/fetchers/segment/segment_fetcher.d.ts +8 -1
  200. package/dist/commonjs/core/fetchers/segment/segment_fetcher.js +8 -4
  201. package/dist/commonjs/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
  202. package/dist/commonjs/core/fetchers/utils/schedule_request.js +1 -1
  203. package/dist/commonjs/core/init/directfile_content_initializer.js +24 -7
  204. package/dist/commonjs/core/init/media_source_content_initializer.d.ts +6 -0
  205. package/dist/commonjs/core/init/media_source_content_initializer.js +4 -6
  206. package/dist/commonjs/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
  207. package/dist/commonjs/core/init/utils/content_time_boundaries_observer.js +16 -17
  208. package/dist/commonjs/core/init/utils/get_initial_time.d.ts +17 -3
  209. package/dist/commonjs/core/init/utils/get_initial_time.js +9 -7
  210. package/dist/commonjs/core/segment_buffers/implementations/text/html/text_track_cues_store.js +54 -6
  211. package/dist/commonjs/core/segment_buffers/implementations/text/html/utils.d.ts +2 -1
  212. package/dist/commonjs/core/segment_buffers/implementations/text/html/utils.js +19 -2
  213. package/dist/commonjs/core/stream/adaptation/adaptation_stream.js +2 -2
  214. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +3 -3
  215. package/dist/commonjs/core/stream/period/period_stream.js +2 -2
  216. package/dist/commonjs/core/stream/representation/utils/get_buffer_status.js +3 -3
  217. package/dist/commonjs/core/stream/representation/utils/get_needed_segments.js +1 -1
  218. package/dist/commonjs/default_config.d.ts +5 -0
  219. package/dist/commonjs/default_config.js +5 -0
  220. package/dist/commonjs/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
  221. package/dist/commonjs/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
  222. package/dist/commonjs/manifest/representation.js +18 -5
  223. package/dist/commonjs/manifest/representation_index/static.d.ts +1 -1
  224. package/dist/commonjs/manifest/representation_index/static.js +2 -2
  225. package/dist/commonjs/manifest/representation_index/types.d.ts +4 -4
  226. package/dist/commonjs/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +17 -0
  227. package/dist/commonjs/parsers/manifest/dash/common/convert_supplemental_codecs.js +30 -0
  228. package/dist/commonjs/parsers/manifest/dash/common/flatten_overlapping_periods.js +5 -0
  229. package/dist/commonjs/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
  230. package/dist/commonjs/parsers/manifest/dash/common/indexes/base.js +4 -3
  231. package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
  232. package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
  233. package/dist/commonjs/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
  234. package/dist/commonjs/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
  235. package/dist/commonjs/parsers/manifest/dash/common/indexes/list.js +2 -2
  236. package/dist/commonjs/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
  237. package/dist/commonjs/parsers/manifest/dash/common/indexes/template.js +42 -29
  238. package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
  239. package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
  240. package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +250 -51
  241. package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
  242. package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
  243. package/dist/commonjs/parsers/manifest/dash/common/parse_adaptation_sets.js +13 -10
  244. package/dist/commonjs/parsers/manifest/dash/common/parse_mpd.js +27 -14
  245. package/dist/commonjs/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
  246. package/dist/commonjs/parsers/manifest/dash/common/parse_periods.js +17 -18
  247. package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
  248. package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.js +21 -8
  249. package/dist/commonjs/parsers/manifest/dash/common/parse_representations.js +36 -20
  250. package/dist/commonjs/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +3 -0
  251. package/dist/commonjs/parsers/manifest/dash/js-parser/node_parsers/Representation.js +3 -0
  252. package/dist/commonjs/parsers/manifest/dash/node_parser_types.d.ts +2 -0
  253. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +4 -0
  254. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +4 -0
  255. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  256. package/dist/commonjs/parsers/manifest/local/representation_index.d.ts +1 -1
  257. package/dist/commonjs/parsers/manifest/local/representation_index.js +3 -3
  258. package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
  259. package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.js +2 -2
  260. package/dist/commonjs/parsers/manifest/smooth/representation_index.d.ts +5 -5
  261. package/dist/commonjs/parsers/manifest/smooth/representation_index.js +25 -9
  262. package/dist/commonjs/parsers/manifest/types.d.ts +1 -0
  263. package/dist/commonjs/parsers/manifest/utils/index_helpers.js +1 -1
  264. package/dist/commonjs/public_types.d.ts +78 -34
  265. package/dist/commonjs/transports/dash/init_segment_loader.js +10 -5
  266. package/dist/commonjs/transports/dash/manifest_parser.js +5 -2
  267. package/dist/commonjs/transports/dash/segment_loader.js +2 -1
  268. package/dist/commonjs/transports/dash/text_loader.js +2 -0
  269. package/dist/commonjs/transports/metaplaylist/manifest_loader.js +2 -1
  270. package/dist/commonjs/transports/metaplaylist/pipelines.js +4 -1
  271. package/dist/commonjs/transports/smooth/pipelines.js +4 -2
  272. package/dist/commonjs/transports/smooth/segment_loader.js +2 -1
  273. package/dist/commonjs/transports/types.d.ts +12 -0
  274. package/dist/commonjs/transports/utils/generate_manifest_loader.js +6 -3
  275. package/dist/commonjs/utils/queue_microtask.d.ts +2 -0
  276. package/dist/commonjs/utils/queue_microtask.js +7 -0
  277. package/dist/commonjs/utils/request/fetch.d.ts +6 -0
  278. package/dist/commonjs/utils/request/fetch.js +29 -8
  279. package/dist/commonjs/utils/request/xhr.d.ts +11 -5
  280. package/dist/commonjs/utils/request/xhr.js +29 -8
  281. package/dist/es2017/compat/is_codec_supported.js +22 -1
  282. package/dist/es2017/compat/patch_webkit_source_buffer.js +2 -2
  283. package/dist/es2017/config.d.ts +1 -0
  284. package/dist/es2017/core/api/debug/buffer_graph.js +2 -6
  285. package/dist/es2017/core/api/debug/modules/general_info.js +17 -10
  286. package/dist/es2017/core/api/option_utils.d.ts +4 -0
  287. package/dist/es2017/core/api/option_utils.js +8 -3
  288. package/dist/es2017/core/api/public_api.d.ts +11 -1
  289. package/dist/es2017/core/api/public_api.js +44 -9
  290. package/dist/es2017/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
  291. package/dist/es2017/core/fetchers/manifest/manifest_fetcher.js +11 -3
  292. package/dist/es2017/core/fetchers/segment/segment_fetcher.d.ts +8 -1
  293. package/dist/es2017/core/fetchers/segment/segment_fetcher.js +8 -4
  294. package/dist/es2017/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
  295. package/dist/es2017/core/fetchers/utils/schedule_request.js +1 -1
  296. package/dist/es2017/core/init/directfile_content_initializer.js +24 -7
  297. package/dist/es2017/core/init/media_source_content_initializer.d.ts +6 -0
  298. package/dist/es2017/core/init/media_source_content_initializer.js +4 -6
  299. package/dist/es2017/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
  300. package/dist/es2017/core/init/utils/content_time_boundaries_observer.js +16 -15
  301. package/dist/es2017/core/init/utils/get_initial_time.d.ts +17 -3
  302. package/dist/es2017/core/init/utils/get_initial_time.js +9 -7
  303. package/dist/es2017/core/segment_buffers/implementations/text/html/text_track_cues_store.js +54 -6
  304. package/dist/es2017/core/segment_buffers/implementations/text/html/utils.d.ts +2 -1
  305. package/dist/es2017/core/segment_buffers/implementations/text/html/utils.js +18 -2
  306. package/dist/es2017/core/stream/adaptation/adaptation_stream.js +2 -2
  307. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +3 -3
  308. package/dist/es2017/core/stream/period/period_stream.js +2 -2
  309. package/dist/es2017/core/stream/representation/utils/get_buffer_status.js +3 -3
  310. package/dist/es2017/core/stream/representation/utils/get_needed_segments.js +1 -1
  311. package/dist/es2017/default_config.d.ts +5 -0
  312. package/dist/es2017/default_config.js +5 -0
  313. package/dist/es2017/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
  314. package/dist/es2017/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
  315. package/dist/es2017/manifest/representation.js +18 -5
  316. package/dist/es2017/manifest/representation_index/static.d.ts +1 -1
  317. package/dist/es2017/manifest/representation_index/static.js +2 -2
  318. package/dist/es2017/manifest/representation_index/types.d.ts +4 -4
  319. package/dist/es2017/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +17 -0
  320. package/dist/es2017/parsers/manifest/dash/common/convert_supplemental_codecs.js +26 -0
  321. package/dist/es2017/parsers/manifest/dash/common/flatten_overlapping_periods.js +5 -0
  322. package/dist/es2017/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
  323. package/dist/es2017/parsers/manifest/dash/common/indexes/base.js +4 -3
  324. package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
  325. package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
  326. package/dist/es2017/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
  327. package/dist/es2017/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
  328. package/dist/es2017/parsers/manifest/dash/common/indexes/list.js +2 -2
  329. package/dist/es2017/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
  330. package/dist/es2017/parsers/manifest/dash/common/indexes/template.js +40 -27
  331. package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
  332. package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
  333. package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +246 -51
  334. package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
  335. package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
  336. package/dist/es2017/parsers/manifest/dash/common/parse_adaptation_sets.js +11 -8
  337. package/dist/es2017/parsers/manifest/dash/common/parse_mpd.js +27 -13
  338. package/dist/es2017/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
  339. package/dist/es2017/parsers/manifest/dash/common/parse_periods.js +13 -16
  340. package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
  341. package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.js +10 -8
  342. package/dist/es2017/parsers/manifest/dash/common/parse_representations.js +36 -20
  343. package/dist/es2017/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +3 -0
  344. package/dist/es2017/parsers/manifest/dash/js-parser/node_parsers/Representation.js +3 -0
  345. package/dist/es2017/parsers/manifest/dash/node_parser_types.d.ts +2 -0
  346. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +4 -0
  347. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +4 -0
  348. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  349. package/dist/es2017/parsers/manifest/local/representation_index.d.ts +1 -1
  350. package/dist/es2017/parsers/manifest/local/representation_index.js +3 -3
  351. package/dist/es2017/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
  352. package/dist/es2017/parsers/manifest/metaplaylist/representation_index.js +2 -2
  353. package/dist/es2017/parsers/manifest/smooth/representation_index.d.ts +5 -5
  354. package/dist/es2017/parsers/manifest/smooth/representation_index.js +25 -9
  355. package/dist/es2017/parsers/manifest/types.d.ts +1 -0
  356. package/dist/es2017/parsers/manifest/utils/index_helpers.js +1 -1
  357. package/dist/es2017/public_types.d.ts +78 -34
  358. package/dist/es2017/transports/dash/init_segment_loader.js +5 -0
  359. package/dist/es2017/transports/dash/manifest_parser.js +3 -0
  360. package/dist/es2017/transports/dash/segment_loader.js +1 -0
  361. package/dist/es2017/transports/dash/text_loader.js +2 -0
  362. package/dist/es2017/transports/metaplaylist/manifest_loader.js +1 -0
  363. package/dist/es2017/transports/metaplaylist/pipelines.js +4 -1
  364. package/dist/es2017/transports/smooth/pipelines.js +2 -0
  365. package/dist/es2017/transports/smooth/segment_loader.js +1 -0
  366. package/dist/es2017/transports/types.d.ts +12 -0
  367. package/dist/es2017/transports/utils/generate_manifest_loader.js +3 -0
  368. package/dist/es2017/utils/queue_microtask.d.ts +2 -0
  369. package/dist/es2017/utils/queue_microtask.js +5 -0
  370. package/dist/es2017/utils/request/fetch.d.ts +6 -0
  371. package/dist/es2017/utils/request/fetch.js +29 -8
  372. package/dist/es2017/utils/request/xhr.d.ts +11 -5
  373. package/dist/es2017/utils/request/xhr.js +30 -9
  374. package/dist/mpd-parser.wasm +0 -0
  375. package/dist/rx-player.js +900 -492
  376. package/dist/rx-player.min.js +1 -1
  377. package/package.json +3 -7
  378. package/scripts/update-version +2 -0
  379. package/sonar-project.properties +1 -1
  380. package/src/compat/is_codec_supported.ts +23 -1
  381. package/src/compat/patch_webkit_source_buffer.ts +2 -2
  382. package/src/core/api/debug/buffer_graph.ts +2 -5
  383. package/src/core/api/debug/modules/general_info.ts +15 -10
  384. package/src/core/api/option_utils.ts +11 -3
  385. package/src/core/api/public_api.ts +48 -8
  386. package/src/core/fetchers/manifest/manifest_fetcher.ts +21 -3
  387. package/src/core/fetchers/segment/segment_fetcher.ts +19 -5
  388. package/src/core/fetchers/segment/segment_fetcher_creator.ts +1 -0
  389. package/src/core/fetchers/utils/schedule_request.ts +1 -1
  390. package/src/core/init/directfile_content_initializer.ts +23 -7
  391. package/src/core/init/media_source_content_initializer.ts +13 -7
  392. package/src/core/init/utils/content_time_boundaries_observer.ts +23 -22
  393. package/src/core/init/utils/get_initial_time.ts +25 -12
  394. package/src/core/segment_buffers/implementations/text/html/__tests__/utils.test.ts +15 -0
  395. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +57 -6
  396. package/src/core/segment_buffers/implementations/text/html/utils.ts +19 -2
  397. package/src/core/stream/adaptation/adaptation_stream.ts +2 -2
  398. package/src/core/stream/orchestrator/stream_orchestrator.ts +3 -3
  399. package/src/core/stream/period/period_stream.ts +2 -2
  400. package/src/core/stream/representation/utils/get_buffer_status.ts +3 -3
  401. package/src/core/stream/representation/utils/get_needed_segments.ts +2 -2
  402. package/src/default_config.ts +5 -0
  403. package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +3 -1
  404. package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +2 -0
  405. package/src/manifest/representation.ts +19 -6
  406. package/src/manifest/representation_index/static.ts +2 -2
  407. package/src/manifest/representation_index/types.ts +4 -4
  408. package/src/parsers/manifest/dash/common/__tests__/convert_supplemental_codecs.test.ts +37 -0
  409. package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +20 -0
  410. package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +182 -36
  411. package/src/parsers/manifest/dash/common/convert_supplemental_codecs.ts +32 -0
  412. package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +5 -0
  413. package/src/parsers/manifest/dash/common/indexes/base.ts +12 -4
  414. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +19 -5
  415. package/src/parsers/manifest/dash/common/indexes/index.ts +16 -4
  416. package/src/parsers/manifest/dash/common/indexes/list.ts +2 -2
  417. package/src/parsers/manifest/dash/common/indexes/template.ts +52 -31
  418. package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +4 -1
  419. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +366 -60
  420. package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +63 -25
  421. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +10 -4
  422. package/src/parsers/manifest/dash/common/parse_mpd.ts +28 -15
  423. package/src/parsers/manifest/dash/common/parse_periods.ts +12 -17
  424. package/src/parsers/manifest/dash/common/parse_representation_index.ts +50 -26
  425. package/src/parsers/manifest/dash/common/parse_representations.ts +39 -20
  426. package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +4 -0
  427. package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +4 -0
  428. package/src/parsers/manifest/dash/node_parser_types.ts +2 -0
  429. package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +2 -0
  430. package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +2 -0
  431. package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +4 -0
  432. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +4 -0
  433. package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +2 -0
  434. package/src/parsers/manifest/local/representation_index.ts +3 -3
  435. package/src/parsers/manifest/metaplaylist/representation_index.ts +2 -2
  436. package/src/parsers/manifest/smooth/representation_index.ts +23 -9
  437. package/src/parsers/manifest/types.ts +2 -0
  438. package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +1 -1
  439. package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +1 -1
  440. package/src/parsers/manifest/utils/index_helpers.ts +1 -1
  441. package/src/public_types.ts +79 -34
  442. package/src/transports/dash/init_segment_loader.ts +5 -0
  443. package/src/transports/dash/manifest_parser.ts +6 -0
  444. package/src/transports/dash/segment_loader.ts +1 -0
  445. package/src/transports/dash/text_loader.ts +2 -0
  446. package/src/transports/metaplaylist/manifest_loader.ts +1 -0
  447. package/src/transports/metaplaylist/pipelines.ts +4 -1
  448. package/src/transports/smooth/pipelines.ts +2 -0
  449. package/src/transports/smooth/segment_loader.ts +1 -0
  450. package/src/transports/types.ts +12 -0
  451. package/src/transports/utils/generate_manifest_loader.ts +3 -0
  452. package/src/utils/queue_microtask.ts +7 -0
  453. package/src/utils/request/fetch.ts +35 -8
  454. package/src/utils/request/xhr.ts +45 -14
  455. package/dist/_esm5.processed/compat/fullscreen.d.ts +0 -32
  456. package/dist/_esm5.processed/compat/fullscreen.js +0 -78
  457. package/dist/_esm5.processed/compat/is_offline.d.ts +0 -39
  458. package/dist/_esm5.processed/compat/is_offline.js +0 -43
  459. package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.d.ts +0 -258
  460. package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.js +0 -989
  461. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +0 -75
  462. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +0 -133
  463. package/dist/_esm5.processed/features/list/bif_parser.d.ts +0 -23
  464. package/dist/_esm5.processed/features/list/bif_parser.js +0 -27
  465. package/dist/_esm5.processed/features/list/image_buffer.js +0 -25
  466. package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +0 -38
  467. package/dist/_esm5.processed/transports/dash/image_pipelines.js +0 -129
  468. package/dist/_esm5.processed/utils/list_to_map.js +0 -28
  469. package/dist/_esm5.processed/utils/simple_set.d.ts +0 -51
  470. package/dist/_esm5.processed/utils/simple_set.js +0 -57
  471. package/dist/_esm5.processed/utils/uniq.d.ts +0 -36
  472. package/dist/_esm5.processed/utils/uniq.js +0 -43
  473. package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
  474. package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.js +0 -54
  475. package/dist/es2017/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
  476. package/dist/es2017/parsers/manifest/utils/is_segment_still_available.js +0 -51
  477. package/src/parsers/manifest/utils/is_segment_still_available.ts +0 -58
  478. package/src/typings/next-tick.d.ts +0 -23
  479. package/src/typings/object-assign.d.ts +0 -48
@@ -208,7 +208,7 @@ function getAdaptationSetSwitchingIDs(adaptation) {
208
208
  */
209
209
  function parseAdaptationSets(adaptationsIR, context) {
210
210
  var e_2, _a;
211
- var _b, _c, _d, _e, _f, _g;
211
+ var _b, _c, _d, _e, _f, _g, _h;
212
212
  var parsedAdaptations = { video: [],
213
213
  audio: [],
214
214
  text: [] };
@@ -224,8 +224,12 @@ function parseAdaptationSets(adaptationsIR, context) {
224
224
  roles.some(function (role) { return role.schemeIdUri === "urn:mpeg:dash:role:2011"; });
225
225
  var representationsIR = adaptation.children.representations;
226
226
  var availabilityTimeComplete = (_b = adaptation.attributes.availabilityTimeComplete) !== null && _b !== void 0 ? _b : context.availabilityTimeComplete;
227
- var availabilityTimeOffset = ((_c = adaptation.attributes.availabilityTimeOffset) !== null && _c !== void 0 ? _c : 0) +
228
- context.availabilityTimeOffset;
227
+ var availabilityTimeOffset = void 0;
228
+ if (adaptation.attributes.availabilityTimeOffset !== undefined ||
229
+ context.availabilityTimeOffset !== undefined) {
230
+ availabilityTimeOffset = ((_c = adaptation.attributes.availabilityTimeOffset) !== null && _c !== void 0 ? _c : 0) +
231
+ ((_d = context.availabilityTimeOffset) !== null && _d !== void 0 ? _d : 0);
232
+ }
229
233
  var adaptationMimeType = adaptation.attributes.mimeType;
230
234
  var adaptationCodecs = adaptation.attributes.codecs;
231
235
  var type = (0, infer_adaptation_type_1.default)(representationsIR, (0, is_non_empty_string_1.default)(adaptationMimeType) ?
@@ -238,7 +242,7 @@ function parseAdaptationSets(adaptationsIR, context) {
238
242
  if (type === undefined) {
239
243
  continue;
240
244
  }
241
- var priority = (_d = adaptation.attributes.selectionPriority) !== null && _d !== void 0 ? _d : 1;
245
+ var priority = (_e = adaptation.attributes.selectionPriority) !== null && _e !== void 0 ? _e : 1;
242
246
  var originalID = adaptation.attributes.id;
243
247
  var adaptationSetSwitchingIDs = getAdaptationSetSwitchingIDs(adaptation);
244
248
  var parentSegmentTemplates = [];
@@ -260,14 +264,13 @@ function parseAdaptationSets(adaptationsIR, context) {
260
264
  parentSegmentTemplates: parentSegmentTemplates,
261
265
  receivedTime: context.receivedTime,
262
266
  start: context.start,
263
- timeShiftBufferDepth: context.timeShiftBufferDepth,
264
267
  unsafelyBaseOnPreviousAdaptation: null,
265
268
  };
266
269
  var trickModeProperty = Array.isArray(essentialProperties) ?
267
270
  (0, array_find_1.default)(essentialProperties, function (scheme) {
268
271
  return scheme.schemeIdUri === "http://dashif.org/guidelines/trickmode";
269
272
  }) : undefined;
270
- var trickModeAttachedAdaptationIds = (_e = trickModeProperty === null || trickModeProperty === void 0 ? void 0 : trickModeProperty.value) === null || _e === void 0 ? void 0 : _e.split(" ");
273
+ var trickModeAttachedAdaptationIds = (_f = trickModeProperty === null || trickModeProperty === void 0 ? void 0 : trickModeProperty.value) === null || _f === void 0 ? void 0 : _f.split(" ");
271
274
  var isTrickModeTrack = trickModeAttachedAdaptationIds !== undefined;
272
275
  var accessibilities = adaptationChildren.accessibilities;
273
276
  var isDub = void 0;
@@ -310,8 +313,8 @@ function parseAdaptationSets(adaptationsIR, context) {
310
313
  }
311
314
  var newID = adaptationID;
312
315
  parsedAdaptationsIDs.push(adaptationID);
313
- reprCtxt.unsafelyBaseOnPreviousAdaptation = (_g = (_f = context
314
- .unsafelyBaseOnPreviousPeriod) === null || _f === void 0 ? void 0 : _f.getAdaptation(adaptationID)) !== null && _g !== void 0 ? _g : null;
316
+ reprCtxt.unsafelyBaseOnPreviousAdaptation = (_h = (_g = context
317
+ .unsafelyBaseOnPreviousPeriod) === null || _g === void 0 ? void 0 : _g.getAdaptation(adaptationID)) !== null && _h !== void 0 ? _h : null;
315
318
  var representations = (0, parse_representations_1.default)(representationsIR, adaptation, reprCtxt);
316
319
  var parsedAdaptationSet = { id: adaptationID, representations: representations, type: type, isTrickModeTrack: isTrickModeTrack };
317
320
  if (adaptation.attributes.language != null) {
@@ -342,7 +345,7 @@ function parseAdaptationSets(adaptationsIR, context) {
342
345
  // look if we have to merge this into another Adaptation
343
346
  var mergedIntoIdx = -1;
344
347
  var _loop_1 = function (id) {
345
- var _h;
348
+ var _j;
346
349
  var switchingInfos = adaptationSwitchingInfos[id];
347
350
  if (switchingInfos !== undefined &&
348
351
  switchingInfos.newID !== newID &&
@@ -356,7 +359,7 @@ function parseAdaptationSets(adaptationsIR, context) {
356
359
  parsedAdaptationSet.closedCaption &&
357
360
  mergedInto[0].language === parsedAdaptationSet.language) {
358
361
  log_1.default.info("DASH Parser: merging \"switchable\" AdaptationSets", originalID, id);
359
- (_h = mergedInto[0].representations).push.apply(_h, __spreadArray([], __read(parsedAdaptationSet.representations), false));
362
+ (_j = mergedInto[0].representations).push.apply(_j, __spreadArray([], __read(parsedAdaptationSet.representations), false));
360
363
  mergedInto[1] = {
361
364
  priority: Math.max(priority, mergedInto[1].priority),
362
365
  isMainAdaptation: isMainAdaptation ||
@@ -60,6 +60,7 @@ var resolve_url_1 = require("../../../../utils/resolve_url");
60
60
  var get_clock_offset_1 = require("./get_clock_offset");
61
61
  var get_http_utc_timing_url_1 = require("./get_http_utc-timing_url");
62
62
  var get_minimum_and_maximum_positions_1 = require("./get_minimum_and_maximum_positions");
63
+ var manifest_bounds_calculator_1 = require("./manifest_bounds_calculator");
63
64
  var parse_availability_start_time_1 = require("./parse_availability_start_time");
64
65
  var parse_periods_1 = require("./parse_periods");
65
66
  var resolve_base_urls_1 = require("./resolve_base_urls");
@@ -183,7 +184,14 @@ function parseCompleteIntermediateRepresentation(mpdIR, args, warnings, xlinkInf
183
184
  var availabilityStartTime = (0, parse_availability_start_time_1.default)(rootAttributes, args.referenceDateTime);
184
185
  var timeShiftBufferDepth = rootAttributes.timeShiftBufferDepth;
185
186
  var clockOffset = args.externalClockOffset, unsafelyBaseOnPreviousManifest = args.unsafelyBaseOnPreviousManifest;
186
- var manifestInfos = { availabilityStartTime: availabilityStartTime, baseURLs: mpdBaseUrls, clockOffset: clockOffset, duration: rootAttributes.duration, isDynamic: isDynamic, manifestProfiles: mpdIR.attributes.profiles,
187
+ var externalClockOffset = args.externalClockOffset;
188
+ var manifestBoundsCalculator = new manifest_bounds_calculator_1.default({
189
+ availabilityStartTime: availabilityStartTime,
190
+ isDynamic: isDynamic,
191
+ timeShiftBufferDepth: timeShiftBufferDepth,
192
+ serverTimestampOffset: externalClockOffset,
193
+ });
194
+ var manifestInfos = { availabilityStartTime: availabilityStartTime, baseURLs: mpdBaseUrls, clockOffset: clockOffset, duration: rootAttributes.duration, isDynamic: isDynamic, manifestBoundsCalculator: manifestBoundsCalculator, manifestProfiles: mpdIR.attributes.profiles,
187
195
  receivedTime: args.manifestReceivedTime, timeShiftBufferDepth: timeShiftBufferDepth, unsafelyBaseOnPreviousManifest: unsafelyBaseOnPreviousManifest, xlinkInfos: xlinkInfos, xmlNamespaces: mpdIR.attributes.namespaces };
188
196
  var parsedPeriods = (0, parse_periods_1.default)(rootChildren.periods, manifestInfos);
189
197
  var mediaPresentationDuration = rootAttributes.duration;
@@ -223,38 +231,43 @@ function parseCompleteIntermediateRepresentation(mpdIR, args, warnings, xlinkInf
223
231
  time: now };
224
232
  }
225
233
  else {
226
- minimumTime = minimumSafePosition;
227
- timeshiftDepth = timeShiftBufferDepth !== null && timeShiftBufferDepth !== void 0 ? timeShiftBufferDepth : null;
234
+ // Determine the maximum seekable position
228
235
  var finalMaximumSafePosition = void 0;
229
- var livePosition = void 0;
230
- if (maximumUnsafePosition !== undefined) {
231
- livePosition = maximumUnsafePosition;
232
- }
233
236
  if (maximumSafePosition !== undefined) {
234
237
  finalMaximumSafePosition = maximumSafePosition;
235
238
  }
236
239
  else {
237
- var ast = availabilityStartTime !== null && availabilityStartTime !== void 0 ? availabilityStartTime : 0;
238
- var externalClockOffset = args.externalClockOffset;
239
240
  if (externalClockOffset === undefined) {
240
241
  log_1.default.warn("DASH Parser: use system clock to define maximum position");
241
- finalMaximumSafePosition = (Date.now() / 1000) - ast;
242
+ finalMaximumSafePosition = (Date.now() / 1000) - availabilityStartTime;
242
243
  }
243
244
  else {
244
245
  var serverTime = (0, monotonic_timestamp_1.default)() + externalClockOffset;
245
- finalMaximumSafePosition = (serverTime / 1000) - ast;
246
+ finalMaximumSafePosition = (serverTime / 1000) - availabilityStartTime;
246
247
  }
247
248
  }
249
+ // Determine live edge (what position corresponds to live content, can be
250
+ // inferior or superior to the maximum anounced position in some specific
251
+ // scenarios). However, the `timeShiftBufferDepth` should be based on it.
252
+ var livePosition = manifestBoundsCalculator.getEstimatedLiveEdge();
248
253
  if (livePosition === undefined) {
249
- livePosition = finalMaximumSafePosition;
254
+ if (maximumUnsafePosition !== undefined) {
255
+ livePosition = maximumUnsafePosition;
256
+ }
257
+ else {
258
+ livePosition = finalMaximumSafePosition;
259
+ }
260
+ // manifestBoundsCalculator.forceLiveEdge(livePosition);
250
261
  }
251
262
  maximumTimeData = { isLinear: true,
252
263
  maximumSafePosition: finalMaximumSafePosition, livePosition: livePosition, time: now };
253
264
  // if the minimum calculated time is even below the buffer depth, perhaps we
254
265
  // can go even lower in terms of depth
266
+ minimumTime = minimumSafePosition;
267
+ timeshiftDepth = timeShiftBufferDepth !== null && timeShiftBufferDepth !== void 0 ? timeShiftBufferDepth : null;
255
268
  if (timeshiftDepth !== null && minimumTime !== undefined &&
256
- finalMaximumSafePosition - minimumTime > timeshiftDepth) {
257
- timeshiftDepth = finalMaximumSafePosition - minimumTime;
269
+ livePosition - minimumTime > timeshiftDepth) {
270
+ timeshiftDepth = livePosition - minimumTime;
258
271
  }
259
272
  }
260
273
  // `isLastPeriodKnown` should be `true` in two cases for DASH contents:
@@ -63,5 +63,5 @@ export interface IPeriodContext extends IInheritedAdaptationContext {
63
63
  value: string;
64
64
  }> | undefined;
65
65
  }
66
- type IInheritedAdaptationContext = Omit<IAdaptationSetContext, "availabilityTimeComplete" | "availabilityTimeOffset" | "duration" | "isLastPeriod" | "manifestBoundsCalculator" | "start" | "unsafelyBaseOnPreviousPeriod">;
66
+ type IInheritedAdaptationContext = Omit<IAdaptationSetContext, "availabilityTimeComplete" | "availabilityTimeOffset" | "duration" | "isLastPeriod" | "start" | "unsafelyBaseOnPreviousPeriod">;
67
67
  export {};
@@ -45,13 +45,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
45
45
  var log_1 = require("../../../../log");
46
46
  var flat_map_1 = require("../../../../utils/flat_map");
47
47
  var id_generator_1 = require("../../../../utils/id_generator");
48
+ var is_null_or_undefined_1 = require("../../../../utils/is_null_or_undefined");
48
49
  var monotonic_timestamp_1 = require("../../../../utils/monotonic_timestamp");
49
50
  var object_values_1 = require("../../../../utils/object_values");
50
51
  var string_parsing_1 = require("../../../../utils/string_parsing");
51
52
  // eslint-disable-next-line max-len
52
53
  var flatten_overlapping_periods_1 = require("./flatten_overlapping_periods");
53
54
  var get_periods_time_infos_1 = require("./get_periods_time_infos");
54
- var manifest_bounds_calculator_1 = require("./manifest_bounds_calculator");
55
55
  var parse_adaptation_sets_1 = require("./parse_adaptation_sets");
56
56
  var resolve_base_urls_1 = require("./resolve_base_urls");
57
57
  var generatePeriodID = (0, id_generator_1.default)();
@@ -62,15 +62,14 @@ var generatePeriodID = (0, id_generator_1.default)();
62
62
  * @returns {Array.<Object>}
63
63
  */
64
64
  function parsePeriods(periodsIR, context) {
65
- var _a, _b, _c, _d, _e, _f;
65
+ var _a, _b, _c, _d;
66
66
  var parsedPeriods = [];
67
67
  var periodsTimeInformation = (0, get_periods_time_infos_1.default)(periodsIR, context);
68
68
  if (periodsTimeInformation.length !== periodsIR.length) {
69
69
  throw new Error("MPD parsing error: the time information are incoherent.");
70
70
  }
71
- var isDynamic = context.isDynamic, timeShiftBufferDepth = context.timeShiftBufferDepth;
72
- var manifestBoundsCalculator = new manifest_bounds_calculator_1.default({ isDynamic: isDynamic, timeShiftBufferDepth: timeShiftBufferDepth });
73
- if (!isDynamic && context.duration != null) {
71
+ var isDynamic = context.isDynamic, manifestBoundsCalculator = context.manifestBoundsCalculator;
72
+ if (!isDynamic && !(0, is_null_or_undefined_1.default)(context.duration)) {
74
73
  manifestBoundsCalculator.setLastPosition(context.duration);
75
74
  }
76
75
  var _loop_1 = function (i) {
@@ -78,9 +77,9 @@ function parsePeriods(periodsIR, context) {
78
77
  var periodIR = periodsIR[i];
79
78
  var xlinkInfos = context.xlinkInfos.get(periodIR);
80
79
  var periodBaseURLs = (0, resolve_base_urls_1.default)(context.baseURLs, periodIR.children.baseURLs);
81
- var _h = periodsTimeInformation[i], periodStart = _h.periodStart, periodDuration = _h.periodDuration, periodEnd = _h.periodEnd;
80
+ var _f = periodsTimeInformation[i], periodStart = _f.periodStart, periodDuration = _f.periodDuration, periodEnd = _f.periodEnd;
82
81
  var periodID;
83
- if (periodIR.attributes.id == null) {
82
+ if ((0, is_null_or_undefined_1.default)(periodIR.attributes.id)) {
84
83
  log_1.default.warn("DASH: No usable id found in the Period. Generating one.");
85
84
  periodID = "gen-dash-period-" + generatePeriodID();
86
85
  }
@@ -95,14 +94,14 @@ function parsePeriods(periodsIR, context) {
95
94
  context.receivedTime;
96
95
  var unsafelyBaseOnPreviousPeriod = (_b = (_a = context
97
96
  .unsafelyBaseOnPreviousManifest) === null || _a === void 0 ? void 0 : _a.getPeriod(periodID)) !== null && _b !== void 0 ? _b : null;
98
- var availabilityTimeComplete = (_c = periodIR.attributes.availabilityTimeComplete) !== null && _c !== void 0 ? _c : true;
99
- var availabilityTimeOffset = (_d = periodIR.attributes.availabilityTimeOffset) !== null && _d !== void 0 ? _d : 0;
97
+ var availabilityTimeComplete = periodIR.attributes.availabilityTimeComplete;
98
+ var availabilityTimeOffset = periodIR.attributes.availabilityTimeOffset;
100
99
  var manifestProfiles = context.manifestProfiles;
101
100
  var segmentTemplate = periodIR.children.segmentTemplate;
102
- var adapCtxt = { availabilityTimeComplete: availabilityTimeComplete, availabilityTimeOffset: availabilityTimeOffset, baseURLs: periodBaseURLs, manifestBoundsCalculator: manifestBoundsCalculator, end: periodEnd, isDynamic: isDynamic, isLastPeriod: isLastPeriod, manifestProfiles: manifestProfiles, receivedTime: receivedTime, segmentTemplate: segmentTemplate, start: periodStart, timeShiftBufferDepth: timeShiftBufferDepth, unsafelyBaseOnPreviousPeriod: unsafelyBaseOnPreviousPeriod };
101
+ var adapCtxt = { availabilityTimeComplete: availabilityTimeComplete, availabilityTimeOffset: availabilityTimeOffset, baseURLs: periodBaseURLs, manifestBoundsCalculator: manifestBoundsCalculator, end: periodEnd, isDynamic: isDynamic, isLastPeriod: isLastPeriod, manifestProfiles: manifestProfiles, receivedTime: receivedTime, segmentTemplate: segmentTemplate, start: periodStart, unsafelyBaseOnPreviousPeriod: unsafelyBaseOnPreviousPeriod };
103
102
  var adaptations = (0, parse_adaptation_sets_1.default)(periodIR.children.adaptations, adapCtxt);
104
- var namespaces = ((_e = context.xmlNamespaces) !== null && _e !== void 0 ? _e : [])
105
- .concat((_f = periodIR.attributes.namespaces) !== null && _f !== void 0 ? _f : []);
103
+ var namespaces = ((_c = context.xmlNamespaces) !== null && _c !== void 0 ? _c : [])
104
+ .concat((_d = periodIR.attributes.namespaces) !== null && _d !== void 0 ? _d : []);
106
105
  var streamEvents = generateStreamEvents(periodIR.children.eventStreams, periodStart, namespaces);
107
106
  var parsedPeriod = { id: periodID,
108
107
  start: periodStart,
@@ -124,7 +123,7 @@ function parsePeriods(periodsIR, context) {
124
123
  else {
125
124
  var guessedLastPositionFromClock = guessLastPositionFromClock(context, periodStart);
126
125
  if (guessedLastPositionFromClock !== undefined) {
127
- var _j = __read(guessedLastPositionFromClock, 2), guessedLastPosition = _j[0], guessedPositionTime = _j[1];
126
+ var _g = __read(guessedLastPositionFromClock, 2), guessedLastPosition = _g[0], guessedPositionTime = _g[1];
128
127
  manifestBoundsCalculator.setLastPosition(guessedLastPosition, guessedPositionTime);
129
128
  }
130
129
  }
@@ -140,7 +139,7 @@ function parsePeriods(periodsIR, context) {
140
139
  // Guess a last time the last position
141
140
  var guessedLastPositionFromClock = guessLastPositionFromClock(context, 0);
142
141
  if (guessedLastPositionFromClock !== undefined) {
143
- var _g = __read(guessedLastPositionFromClock, 2), lastPosition = _g[0], positionTime = _g[1];
142
+ var _e = __read(guessedLastPositionFromClock, 2), lastPosition = _e[0], positionTime = _e[1];
144
143
  manifestBoundsCalculator.setLastPosition(lastPosition, positionTime);
145
144
  }
146
145
  }
@@ -176,7 +175,7 @@ exports.default = parsePeriods;
176
175
  * @returns {Array.<number|undefined>}
177
176
  */
178
177
  function guessLastPositionFromClock(context, minimumTime) {
179
- if (context.clockOffset != null) {
178
+ if (!(0, is_null_or_undefined_1.default)(context.clockOffset)) {
180
179
  var lastPosition = context.clockOffset / 1000 -
181
180
  context.availabilityStartTime;
182
181
  var positionTime = (0, monotonic_timestamp_1.default)() / 1000;
@@ -212,7 +211,7 @@ function getMaximumLastPosition(adaptationsPerType) {
212
211
  var maxEncounteredPosition = null;
213
212
  var allIndexAreEmpty = true;
214
213
  var adaptationsVal = (0, object_values_1.default)(adaptationsPerType)
215
- .filter(function (ada) { return ada != null; });
214
+ .filter(function (ada) { return !(0, is_null_or_undefined_1.default)(ada); });
216
215
  var allAdaptations = (0, flat_map_1.default)(adaptationsVal, function (adaptationsForType) { return adaptationsForType; });
217
216
  try {
218
217
  for (var allAdaptations_1 = __values(allAdaptations), allAdaptations_1_1 = allAdaptations_1.next(); !allAdaptations_1_1.done; allAdaptations_1_1 = allAdaptations_1.next()) {
@@ -226,7 +225,7 @@ function getMaximumLastPosition(adaptationsPerType) {
226
225
  allIndexAreEmpty = false;
227
226
  if (typeof position === "number") {
228
227
  maxEncounteredPosition =
229
- maxEncounteredPosition == null ? position :
228
+ (0, is_null_or_undefined_1.default)(maxEncounteredPosition) ? position :
230
229
  Math.max(maxEncounteredPosition, position);
231
230
  }
232
231
  }
@@ -248,7 +247,7 @@ function getMaximumLastPosition(adaptationsPerType) {
248
247
  }
249
248
  finally { if (e_1) throw e_1.error; }
250
249
  }
251
- if (maxEncounteredPosition != null) {
250
+ if (!(0, is_null_or_undefined_1.default)(maxEncounteredPosition)) {
252
251
  return maxEncounteredPosition;
253
252
  }
254
253
  else if (allIndexAreEmpty) {
@@ -29,10 +29,25 @@ export default function parseRepresentationIndex(representation: IRepresentation
29
29
  export interface IRepresentationIndexContext {
30
30
  /** Parsed AdaptationSet which contains the Representation. */
31
31
  adaptation: IAdaptationSetIntermediateRepresentation;
32
- /** If false, declared segments in the MPD might still be not completely generated. */
33
- availabilityTimeComplete: boolean;
34
- /** availability time offset of the concerned Adaptation. */
35
- availabilityTimeOffset: number;
32
+ /**
33
+ * If `false`, declared segments in the MPD might still be not completely generated.
34
+ * If `true`, they are completely generated.
35
+ *
36
+ * If `undefined`, the corresponding property was not set in the MPD and it is
37
+ * thus assumed that they are all generated.
38
+ * It might however be semantically different than `true` in the RxPlayer as it
39
+ * means that the packager didn't include that information in the MPD.
40
+ */
41
+ availabilityTimeComplete: boolean | undefined;
42
+ /**
43
+ * availability time offset of the concerned Adaptation.
44
+ *
45
+ * If `undefined`, the corresponding property was not set in the MPD and it is
46
+ * thus assumed to be equal to `0`.
47
+ * It might however be semantically different than `0` in the RxPlayer as it
48
+ * means that the packager didn't include that information in the MPD.
49
+ */
50
+ availabilityTimeOffset: number | undefined;
36
51
  /** Eventual URLs from which every relative URL will be based on. */
37
52
  baseURLs: IResolvedBaseUrl[];
38
53
  /** End time of the current Period, in seconds. */
@@ -61,8 +76,6 @@ export interface IRepresentationIndexContext {
61
76
  receivedTime?: number | undefined;
62
77
  /** Start time of the current period, in seconds. */
63
78
  start: number;
64
- /** Depth of the buffer for the whole content, in seconds. */
65
- timeShiftBufferDepth?: number | undefined;
66
79
  /**
67
80
  * The parser should take this Representation - which is the same as this one
68
81
  * parsed at an earlier time - as a base to speed-up the parsing process.
@@ -51,7 +51,7 @@ var indexes_1 = require("./indexes");
51
51
  */
52
52
  function parseRepresentationIndex(representation, context) {
53
53
  var _a, _b;
54
- var availabilityTimeOffset = context.availabilityTimeOffset, manifestBoundsCalculator = context.manifestBoundsCalculator, isDynamic = context.isDynamic, periodEnd = context.end, periodStart = context.start, receivedTime = context.receivedTime, timeShiftBufferDepth = context.timeShiftBufferDepth, unsafelyBaseOnPreviousRepresentation = context.unsafelyBaseOnPreviousRepresentation, inbandEventStreams = context.inbandEventStreams, isLastPeriod = context.isLastPeriod;
54
+ var availabilityTimeOffset = context.availabilityTimeOffset, manifestBoundsCalculator = context.manifestBoundsCalculator, isDynamic = context.isDynamic, periodEnd = context.end, periodStart = context.start, receivedTime = context.receivedTime, unsafelyBaseOnPreviousRepresentation = context.unsafelyBaseOnPreviousRepresentation, inbandEventStreams = context.inbandEventStreams, isLastPeriod = context.isLastPeriod;
55
55
  var isEMSGWhitelisted = function (inbandEvent) {
56
56
  if (inbandEventStreams === undefined) {
57
57
  return false;
@@ -62,8 +62,20 @@ function parseRepresentationIndex(representation, context) {
62
62
  return schemeIdUri === inbandEvent.schemeIdUri;
63
63
  });
64
64
  };
65
- var reprIndexCtxt = { availabilityTimeComplete: true, availabilityTimeOffset: availabilityTimeOffset, unsafelyBaseOnPreviousRepresentation: unsafelyBaseOnPreviousRepresentation, isEMSGWhitelisted: isEMSGWhitelisted, isLastPeriod: isLastPeriod, manifestBoundsCalculator: manifestBoundsCalculator, isDynamic: isDynamic, periodEnd: periodEnd, periodStart: periodStart, receivedTime: receivedTime, representationBitrate: representation.attributes.bitrate,
66
- representationId: representation.attributes.id, timeShiftBufferDepth: timeShiftBufferDepth };
65
+ var reprIndexCtxt = {
66
+ availabilityTimeComplete: undefined,
67
+ availabilityTimeOffset: availabilityTimeOffset,
68
+ unsafelyBaseOnPreviousRepresentation: unsafelyBaseOnPreviousRepresentation,
69
+ isEMSGWhitelisted: isEMSGWhitelisted,
70
+ isLastPeriod: isLastPeriod,
71
+ manifestBoundsCalculator: manifestBoundsCalculator,
72
+ isDynamic: isDynamic,
73
+ periodEnd: periodEnd,
74
+ periodStart: periodStart,
75
+ receivedTime: receivedTime,
76
+ representationBitrate: representation.attributes.bitrate,
77
+ representationId: representation.attributes.id,
78
+ };
67
79
  var representationIndex;
68
80
  if (representation.children.segmentBase !== undefined) {
69
81
  var segmentBase = representation.children.segmentBase;
@@ -81,11 +93,12 @@ function parseRepresentationIndex(representation, context) {
81
93
  segmentTemplates.push(childSegmentTemplate);
82
94
  }
83
95
  var segmentTemplate = object_assign_1.default.apply(void 0, __spreadArray([{}], __read(segmentTemplates /* Ugly TS Hack */), false));
84
- reprIndexCtxt.availabilityTimeComplete =
85
- (_a = segmentTemplate.availabilityTimeComplete) !== null && _a !== void 0 ? _a : context.availabilityTimeComplete;
86
- reprIndexCtxt.availabilityTimeOffset =
87
- ((_b = segmentTemplate.availabilityTimeOffset) !== null && _b !== void 0 ? _b : 0) +
88
- context.availabilityTimeOffset;
96
+ if (segmentTemplate.availabilityTimeOffset !== undefined ||
97
+ context.availabilityTimeOffset !== undefined) {
98
+ reprIndexCtxt.availabilityTimeOffset =
99
+ ((_a = segmentTemplate.availabilityTimeOffset) !== null && _a !== void 0 ? _a : 0) +
100
+ ((_b = context.availabilityTimeOffset) !== null && _b !== void 0 ? _b : 0);
101
+ }
89
102
  representationIndex = indexes_1.TimelineRepresentationIndex
90
103
  .isTimelineIndexArgument(segmentTemplate) ?
91
104
  new indexes_1.TimelineRepresentationIndex(segmentTemplate, reprIndexCtxt) :
@@ -54,6 +54,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
54
54
  var log_1 = require("../../../../log");
55
55
  var array_find_1 = require("../../../../utils/array_find");
56
56
  var object_assign_1 = require("../../../../utils/object_assign");
57
+ var convert_supplemental_codecs_1 = require("./convert_supplemental_codecs");
57
58
  var get_hdr_information_1 = require("./get_hdr_information");
58
59
  var parse_representation_index_1 = require("./parse_representation_index");
59
60
  var resolve_base_urls_1 = require("./resolve_base_urls");
@@ -116,23 +117,23 @@ function getHDRInformation(_a) {
116
117
  */
117
118
  function parseRepresentations(representationsIR, adaptation, context) {
118
119
  var e_1, _a;
119
- var _b, _c, _d, _e;
120
+ var _b, _c, _d, _e, _f;
120
121
  var parsedRepresentations = [];
121
122
  var _loop_1 = function (representation) {
122
123
  // Compute Representation ID
123
- var representationID = representation.attributes.id != null ?
124
+ var representationID = representation.attributes.id !== undefined ?
124
125
  representation.attributes.id :
125
126
  (String(representation.attributes.bitrate) +
126
- (representation.attributes.height != null ?
127
+ (representation.attributes.height !== undefined ?
127
128
  ("-".concat(representation.attributes.height)) :
128
129
  "") +
129
- (representation.attributes.width != null ?
130
+ (representation.attributes.width !== undefined ?
130
131
  ("-".concat(representation.attributes.width)) :
131
132
  "") +
132
- (representation.attributes.mimeType != null ?
133
+ (representation.attributes.mimeType !== undefined ?
133
134
  ("-".concat(representation.attributes.mimeType)) :
134
135
  "") +
135
- (representation.attributes.codecs != null ?
136
+ (representation.attributes.codecs !== undefined ?
136
137
  ("-".concat(representation.attributes.codecs)) :
137
138
  ""));
138
139
  // Avoid duplicate IDs
@@ -144,13 +145,17 @@ function parseRepresentations(representationsIR, adaptation, context) {
144
145
  .unsafelyBaseOnPreviousAdaptation) === null || _b === void 0 ? void 0 : _b.getRepresentation(representationID)) !== null && _c !== void 0 ? _c : null;
145
146
  var inbandEventStreams = combineInbandEventStreams(representation, adaptation);
146
147
  var availabilityTimeComplete = (_d = representation.attributes.availabilityTimeComplete) !== null && _d !== void 0 ? _d : context.availabilityTimeComplete;
147
- var availabilityTimeOffset = ((_e = representation.attributes.availabilityTimeOffset) !== null && _e !== void 0 ? _e : 0) +
148
- context.availabilityTimeOffset;
148
+ var availabilityTimeOffset = void 0;
149
+ if (representation.attributes.availabilityTimeOffset !== undefined ||
150
+ context.availabilityTimeOffset !== undefined) {
151
+ availabilityTimeOffset = ((_e = representation.attributes.availabilityTimeOffset) !== null && _e !== void 0 ? _e : 0) +
152
+ ((_f = context.availabilityTimeOffset) !== null && _f !== void 0 ? _f : 0);
153
+ }
149
154
  var reprIndexCtxt = (0, object_assign_1.default)({}, context, { availabilityTimeOffset: availabilityTimeOffset, availabilityTimeComplete: availabilityTimeComplete, unsafelyBaseOnPreviousRepresentation: unsafelyBaseOnPreviousRepresentation, adaptation: adaptation, inbandEventStreams: inbandEventStreams });
150
155
  var representationIndex = (0, parse_representation_index_1.default)(representation, reprIndexCtxt);
151
156
  // Find bitrate
152
157
  var representationBitrate = void 0;
153
- if (representation.attributes.bitrate == null) {
158
+ if (representation.attributes.bitrate === undefined) {
154
159
  log_1.default.warn("DASH: No usable bitrate found in the Representation.");
155
160
  representationBitrate = 0;
156
161
  }
@@ -177,45 +182,56 @@ function parseRepresentations(representationsIR, adaptation, context) {
177
182
  }
178
183
  // Add optional attributes
179
184
  var codecs = void 0;
180
- if (representation.attributes.codecs != null) {
185
+ if (representation.attributes.codecs !== undefined) {
181
186
  codecs = representation.attributes.codecs;
182
187
  }
183
- else if (adaptation.attributes.codecs != null) {
188
+ else if (adaptation.attributes.codecs !== undefined) {
184
189
  codecs = adaptation.attributes.codecs;
185
190
  }
186
- if (codecs != null) {
191
+ if (codecs !== undefined) {
187
192
  codecs = codecs === "mp4a.40.02" ? "mp4a.40.2" : codecs;
188
193
  parsedRepresentation.codecs = codecs;
189
194
  }
190
- if (representation.attributes.frameRate != null) {
195
+ var supplementalCodecs = void 0;
196
+ if (representation.attributes.supplementalCodecs !== undefined) {
197
+ supplementalCodecs = representation.attributes.supplementalCodecs;
198
+ }
199
+ else if (adaptation.attributes.supplementalCodecs !== undefined) {
200
+ supplementalCodecs = adaptation.attributes.supplementalCodecs;
201
+ }
202
+ if (supplementalCodecs !== undefined) {
203
+ parsedRepresentation.supplementalCodecs =
204
+ (0, convert_supplemental_codecs_1.convertSupplementalCodecsToRFC6381)(supplementalCodecs);
205
+ }
206
+ if (representation.attributes.frameRate !== undefined) {
191
207
  parsedRepresentation.frameRate =
192
208
  representation.attributes.frameRate;
193
209
  }
194
- else if (adaptation.attributes.frameRate != null) {
210
+ else if (adaptation.attributes.frameRate !== undefined) {
195
211
  parsedRepresentation.frameRate =
196
212
  adaptation.attributes.frameRate;
197
213
  }
198
- if (representation.attributes.height != null) {
214
+ if (representation.attributes.height !== undefined) {
199
215
  parsedRepresentation.height =
200
216
  representation.attributes.height;
201
217
  }
202
- else if (adaptation.attributes.height != null) {
218
+ else if (adaptation.attributes.height !== undefined) {
203
219
  parsedRepresentation.height =
204
220
  adaptation.attributes.height;
205
221
  }
206
- if (representation.attributes.mimeType != null) {
222
+ if (representation.attributes.mimeType !== undefined) {
207
223
  parsedRepresentation.mimeType =
208
224
  representation.attributes.mimeType;
209
225
  }
210
- else if (adaptation.attributes.mimeType != null) {
226
+ else if (adaptation.attributes.mimeType !== undefined) {
211
227
  parsedRepresentation.mimeType =
212
228
  adaptation.attributes.mimeType;
213
229
  }
214
- if (representation.attributes.width != null) {
230
+ if (representation.attributes.width !== undefined) {
215
231
  parsedRepresentation.width =
216
232
  representation.attributes.width;
217
233
  }
218
- else if (adaptation.attributes.width != null) {
234
+ else if (adaptation.attributes.width !== undefined) {
219
235
  parsedRepresentation.width =
220
236
  adaptation.attributes.width;
221
237
  }
@@ -259,6 +259,9 @@ function parseAdaptationSetAttributes(root) {
259
259
  case "codecs":
260
260
  parsedAdaptation.codecs = attribute.value;
261
261
  break;
262
+ case "scte214:supplementalCodecs":
263
+ parsedAdaptation.supplementalCodecs = attribute.value;
264
+ break;
262
265
  case "codingDependency":
263
266
  parseValue(attribute.value, { asKey: "codingDependency",
264
267
  parser: utils_1.parseBoolean,
@@ -168,6 +168,9 @@ function parseRepresentationAttributes(representationElement) {
168
168
  parser: utils_1.parseMPDInteger,
169
169
  dashName: "qualityRanking" });
170
170
  break;
171
+ case "scte214:supplementalCodecs":
172
+ attributes.supplementalCodecs = attr.value;
173
+ break;
171
174
  case "segmentProfiles":
172
175
  attributes.segmentProfiles = attr.value;
173
176
  break;
@@ -217,6 +217,7 @@ export interface IAdaptationSetAttributes {
217
217
  segmentAlignment?: number | boolean;
218
218
  segmentProfiles?: string;
219
219
  subsegmentAlignment?: number | boolean;
220
+ supplementalCodecs?: string;
220
221
  width?: number;
221
222
  availabilityTimeComplete?: boolean;
222
223
  availabilityTimeOffset?: number;
@@ -249,6 +250,7 @@ export interface IRepresentationAttributes {
249
250
  profiles?: string;
250
251
  qualityRanking?: number;
251
252
  segmentProfiles?: string;
253
+ supplementalCodecs?: string;
252
254
  width?: number;
253
255
  availabilityTimeComplete?: boolean;
254
256
  availabilityTimeOffset?: number;
@@ -226,6 +226,10 @@ function generateAdaptationSetAttrParser(adaptationAttrs, linearMemory) {
226
226
  adaptationAttrs.codecs =
227
227
  (0, utils_1.parseString)(textDecoder, linearMemory.buffer, ptr, len);
228
228
  break;
229
+ case 77 /* AttributeName.SupplementalCodecs */:
230
+ adaptationAttrs.supplementalCodecs =
231
+ (0, utils_1.parseString)(textDecoder, linearMemory.buffer, ptr, len);
232
+ break;
229
233
  case 2 /* AttributeName.Profiles */:
230
234
  adaptationAttrs.profiles =
231
235
  (0, utils_1.parseString)(textDecoder, linearMemory.buffer, ptr, len);
@@ -126,6 +126,10 @@ function generateRepresentationAttrParser(representationAttrs, linearMemory) {
126
126
  representationAttrs.codecs =
127
127
  (0, utils_1.parseString)(textDecoder, linearMemory.buffer, ptr, len);
128
128
  break;
129
+ case 77 /* AttributeName.SupplementalCodecs */:
130
+ representationAttrs.supplementalCodecs =
131
+ (0, utils_1.parseString)(textDecoder, linearMemory.buffer, ptr, len);
132
+ break;
129
133
  case 5 /* AttributeName.CodingDependency */:
130
134
  representationAttrs.codingDependency =
131
135
  new DataView(linearMemory.buffer).getUint8(0) === 0;
@@ -140,5 +140,6 @@ export declare const enum AttributeName {
140
140
  QueryBeforeStart = 73,
141
141
  ProxyServerUrl = 74,
142
142
  DefaultServiceLocation = 75,
143
- EndNumber = 76
143
+ EndNumber = 76,
144
+ SupplementalCodecs = 77
144
145
  }
@@ -63,7 +63,7 @@ export default class LocalRepresentationIndex implements IRepresentationIndex {
63
63
  * @returns {Boolean}
64
64
  */
65
65
  isSegmentStillAvailable(): true;
66
- isFinished(): boolean;
66
+ isStillAwaitingFutureSegments(): boolean;
67
67
  /**
68
68
  * @returns {Boolean}
69
69
  */
@@ -158,7 +158,7 @@ var LocalRepresentationIndex = /** @class */ (function () {
158
158
  * @returns {boolean|undefined}
159
159
  */
160
160
  LocalRepresentationIndex.prototype.awaitSegmentBetween = function (start, end) {
161
- if (this.isFinished()) {
161
+ if (this.isStillAwaitingFutureSegments()) {
162
162
  return false;
163
163
  }
164
164
  if (this._index.incomingRanges === undefined) {
@@ -180,8 +180,8 @@ var LocalRepresentationIndex = /** @class */ (function () {
180
180
  LocalRepresentationIndex.prototype.isSegmentStillAvailable = function () {
181
181
  return true;
182
182
  };
183
- LocalRepresentationIndex.prototype.isFinished = function () {
184
- return this._index.isFinished;
183
+ LocalRepresentationIndex.prototype.isStillAwaitingFutureSegments = function () {
184
+ return !this._index.isFinished;
185
185
  };
186
186
  /**
187
187
  * @returns {Boolean}
@@ -128,7 +128,7 @@ export default class MetaRepresentationIndex implements IRepresentationIndex {
128
128
  /**
129
129
  * @returns {Boolean}
130
130
  */
131
- isFinished(): boolean;
131
+ isStillAwaitingFutureSegments(): boolean;
132
132
  /**
133
133
  * @returns {Boolean}
134
134
  */
@@ -165,8 +165,8 @@ var MetaRepresentationIndex = /** @class */ (function () {
165
165
  /**
166
166
  * @returns {Boolean}
167
167
  */
168
- MetaRepresentationIndex.prototype.isFinished = function () {
169
- return this._wrappedIndex.isFinished();
168
+ MetaRepresentationIndex.prototype.isStillAwaitingFutureSegments = function () {
169
+ return this._wrappedIndex.isStillAwaitingFutureSegments();
170
170
  };
171
171
  /**
172
172
  * @returns {Boolean}