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.
- package/CHANGELOG.md +18 -226
- package/FILES.md +1 -1
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/add_text_track.d.ts +1 -3
- package/dist/_esm5.processed/compat/add_text_track.js +4 -7
- package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +0 -7
- package/dist/_esm5.processed/compat/event_listeners.d.ts +2 -15
- package/dist/_esm5.processed/compat/event_listeners.js +2 -37
- package/dist/_esm5.processed/compat/index.d.ts +1 -3
- package/dist/_esm5.processed/compat/index.js +1 -3
- package/dist/_esm5.processed/config.d.ts +9 -21
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.d.ts +0 -58
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +14 -54
- package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.d.ts +2 -8
- package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +2 -11
- package/dist/_esm5.processed/core/api/debug/buffer_graph.js +2 -6
- package/dist/_esm5.processed/core/api/debug/modules/general_info.js +13 -32
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +3 -3
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +1 -1
- package/dist/_esm5.processed/core/api/option_utils.d.ts +14 -35
- package/dist/_esm5.processed/core/api/option_utils.js +47 -230
- package/dist/_esm5.processed/core/api/public_api.d.ts +92 -266
- package/dist/_esm5.processed/core/api/public_api.js +451 -807
- package/dist/_esm5.processed/core/{segment_buffers/implementations/image → api/track_management}/index.d.ts +3 -2
- package/dist/_esm5.processed/core/{segment_buffers/implementations/image → api/track_management}/index.js +3 -2
- 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
- package/dist/_esm5.processed/core/api/{tracks_management/media_element_track_choice_manager.js → track_management/media_element_tracks_store.js} +74 -193
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.d.ts +84 -0
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +158 -0
- package/dist/_esm5.processed/core/api/track_management/tracks_store.d.ts +406 -0
- package/dist/_esm5.processed/core/api/track_management/tracks_store.js +932 -0
- package/dist/_esm5.processed/core/api/utils.d.ts +1 -0
- package/dist/_esm5.processed/core/api/utils.js +28 -11
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +3 -3
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +83 -71
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +6 -5
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +10 -72
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +4 -4
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +6 -4
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +1 -3
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +7 -26
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +3 -9
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +16 -9
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -3
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.d.ts +1 -6
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +4 -41
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +1 -1
- package/dist/_esm5.processed/core/init/media_source_content_initializer.d.ts +1 -8
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +5 -19
- package/dist/_esm5.processed/core/init/types.d.ts +5 -15
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +2 -36
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +2 -82
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +54 -6
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.d.ts +2 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.js +19 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +1 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +2 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/index.js +2 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.d.ts +1 -0
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +1 -0
- package/dist/_esm5.processed/core/segment_buffers/inventory/utils.d.ts +33 -0
- package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +49 -0
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +0 -1
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +2 -16
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +0 -15
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +183 -93
- package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.d.ts +39 -0
- package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +133 -0
- package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +27 -13
- package/dist/_esm5.processed/core/stream/index.d.ts +2 -3
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +2 -0
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +5 -7
- package/dist/_esm5.processed/core/stream/period/period_stream.js +13 -12
- package/dist/_esm5.processed/core/stream/period/types.d.ts +5 -14
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +2 -4
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +10 -46
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +29 -23
- package/dist/_esm5.processed/core/stream/representation/types.d.ts +11 -1
- package/dist/_esm5.processed/default_config.d.ts +35 -98
- package/dist/_esm5.processed/default_config.js +36 -113
- package/dist/_esm5.processed/errors/custom_loader_error.d.ts +1 -3
- package/dist/_esm5.processed/errors/custom_loader_error.js +1 -3
- package/dist/_esm5.processed/errors/media_error.js +2 -2
- package/dist/_esm5.processed/errors/network_error.d.ts +0 -1
- package/dist/_esm5.processed/errors/network_error.js +0 -1
- package/dist/_esm5.processed/errors/request_error.d.ts +2 -3
- package/dist/_esm5.processed/errors/request_error.js +2 -5
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -3
- package/dist/_esm5.processed/features/features_object.js +0 -2
- package/dist/_esm5.processed/features/list/directfile.js +2 -5
- package/dist/_esm5.processed/features/list/index.d.ts +0 -2
- package/dist/_esm5.processed/features/list/index.js +0 -2
- package/dist/_esm5.processed/features/types.d.ts +3 -27
- package/dist/_esm5.processed/manifest/adaptation.d.ts +9 -11
- package/dist/_esm5.processed/manifest/adaptation.js +41 -30
- package/dist/_esm5.processed/manifest/index.d.ts +3 -4
- package/dist/_esm5.processed/manifest/manifest.d.ts +5 -54
- package/dist/_esm5.processed/manifest/manifest.js +5 -110
- package/dist/_esm5.processed/manifest/period.d.ts +4 -5
- package/dist/_esm5.processed/manifest/representation.d.ts +10 -5
- package/dist/_esm5.processed/manifest/representation.js +33 -10
- package/dist/_esm5.processed/manifest/representation_index/index.d.ts +2 -2
- package/dist/_esm5.processed/manifest/representation_index/static.d.ts +2 -0
- package/dist/_esm5.processed/manifest/representation_index/static.js +6 -0
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +42 -21
- package/dist/_esm5.processed/manifest/types.d.ts +0 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +17 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/convert_supplemental_codecs.js +26 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +17 -31
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +26 -19
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +7 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +2 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +11 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.js +1 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +3 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +0 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +0 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +29 -17
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +13 -6
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +7 -2
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.d.ts +10 -1
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +18 -2
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +6 -4
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +7 -6
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +5 -2
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +6 -6
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.d.ts +12 -3
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +11 -2
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +0 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +11 -17
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +21 -83
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +53 -125
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.d.ts +119 -0
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +159 -0
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.d.ts +3 -6
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +4 -4
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +4 -3
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_extent.js +1 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +1 -9
- package/dist/_esm5.processed/public_types.d.ts +396 -308
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.d.ts +5 -4
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +5 -4
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +4 -4
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +2 -3
- package/dist/_esm5.processed/transports/dash/pipelines.js +1 -4
- package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/segment_loader.js +26 -20
- package/dist/_esm5.processed/transports/dash/segment_parser.js +19 -24
- package/dist/_esm5.processed/transports/dash/text_loader.js +5 -5
- package/dist/_esm5.processed/transports/dash/text_parser.js +28 -33
- package/dist/_esm5.processed/transports/local/pipelines.js +1 -10
- package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/local/segment_parser.d.ts +1 -1
- package/dist/_esm5.processed/transports/local/segment_parser.js +10 -10
- package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
- package/dist/_esm5.processed/transports/local/text_parser.js +23 -23
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +34 -52
- package/dist/_esm5.processed/{utils/list_to_map.d.ts → transports/smooth/is_mp4_embedded_track.d.ts} +5 -5
- package/dist/_esm5.processed/{features/list/image_buffer.d.ts → transports/smooth/is_mp4_embedded_track.js} +7 -6
- package/dist/_esm5.processed/transports/smooth/pipelines.js +33 -190
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +1 -1
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +28 -22
- package/dist/_esm5.processed/transports/smooth/utils.d.ts +1 -26
- package/dist/_esm5.processed/transports/smooth/utils.js +1 -55
- package/dist/_esm5.processed/transports/types.d.ts +94 -89
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +3 -3
- package/dist/_esm5.processed/transports/utils/infer_segment_container.d.ts +3 -3
- package/dist/_esm5.processed/transports/utils/infer_segment_container.js +5 -7
- package/dist/_esm5.processed/transports/utils/parse_text_track.d.ts +8 -12
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +19 -21
- package/dist/_esm5.processed/utils/array_includes.d.ts +2 -1
- package/dist/_esm5.processed/utils/array_includes.js +30 -28
- package/dist/_esm5.processed/utils/request/xhr.js +5 -5
- package/dist/commonjs/compat/is_codec_supported.js +22 -1
- package/dist/commonjs/compat/patch_webkit_source_buffer.js +2 -2
- package/dist/commonjs/config.d.ts +1 -0
- package/dist/commonjs/core/api/debug/buffer_graph.js +2 -6
- package/dist/commonjs/core/api/debug/modules/general_info.js +17 -10
- package/dist/commonjs/core/api/option_utils.d.ts +4 -0
- package/dist/commonjs/core/api/option_utils.js +8 -3
- package/dist/commonjs/core/api/public_api.d.ts +11 -1
- package/dist/commonjs/core/api/public_api.js +46 -11
- package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
- package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.js +11 -3
- package/dist/commonjs/core/fetchers/segment/segment_fetcher.d.ts +8 -1
- package/dist/commonjs/core/fetchers/segment/segment_fetcher.js +8 -4
- package/dist/commonjs/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
- package/dist/commonjs/core/fetchers/utils/schedule_request.js +1 -1
- package/dist/commonjs/core/init/directfile_content_initializer.js +24 -7
- package/dist/commonjs/core/init/media_source_content_initializer.d.ts +6 -0
- package/dist/commonjs/core/init/media_source_content_initializer.js +4 -6
- package/dist/commonjs/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
- package/dist/commonjs/core/init/utils/content_time_boundaries_observer.js +16 -17
- package/dist/commonjs/core/init/utils/get_initial_time.d.ts +17 -3
- package/dist/commonjs/core/init/utils/get_initial_time.js +9 -7
- package/dist/commonjs/core/segment_buffers/implementations/text/html/text_track_cues_store.js +54 -6
- package/dist/commonjs/core/segment_buffers/implementations/text/html/utils.d.ts +2 -1
- package/dist/commonjs/core/segment_buffers/implementations/text/html/utils.js +19 -2
- package/dist/commonjs/core/stream/adaptation/adaptation_stream.js +2 -2
- package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +3 -3
- package/dist/commonjs/core/stream/period/period_stream.js +2 -2
- package/dist/commonjs/core/stream/representation/utils/get_buffer_status.js +3 -3
- package/dist/commonjs/core/stream/representation/utils/get_needed_segments.js +1 -1
- package/dist/commonjs/default_config.d.ts +5 -0
- package/dist/commonjs/default_config.js +5 -0
- package/dist/commonjs/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
- package/dist/commonjs/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
- package/dist/commonjs/manifest/representation.js +18 -5
- package/dist/commonjs/manifest/representation_index/static.d.ts +1 -1
- package/dist/commonjs/manifest/representation_index/static.js +2 -2
- package/dist/commonjs/manifest/representation_index/types.d.ts +4 -4
- package/dist/commonjs/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +17 -0
- package/dist/commonjs/parsers/manifest/dash/common/convert_supplemental_codecs.js +30 -0
- package/dist/commonjs/parsers/manifest/dash/common/flatten_overlapping_periods.js +5 -0
- package/dist/commonjs/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
- package/dist/commonjs/parsers/manifest/dash/common/indexes/base.js +4 -3
- package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
- package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
- package/dist/commonjs/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
- package/dist/commonjs/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/dash/common/indexes/list.js +2 -2
- package/dist/commonjs/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
- package/dist/commonjs/parsers/manifest/dash/common/indexes/template.js +42 -29
- package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
- package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
- package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +250 -51
- package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
- package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
- package/dist/commonjs/parsers/manifest/dash/common/parse_adaptation_sets.js +13 -10
- package/dist/commonjs/parsers/manifest/dash/common/parse_mpd.js +27 -14
- package/dist/commonjs/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/dash/common/parse_periods.js +17 -18
- package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
- package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.js +21 -8
- package/dist/commonjs/parsers/manifest/dash/common/parse_representations.js +36 -20
- package/dist/commonjs/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +3 -0
- package/dist/commonjs/parsers/manifest/dash/js-parser/node_parsers/Representation.js +3 -0
- package/dist/commonjs/parsers/manifest/dash/node_parser_types.d.ts +2 -0
- package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +4 -0
- package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +4 -0
- package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
- package/dist/commonjs/parsers/manifest/local/representation_index.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/local/representation_index.js +3 -3
- package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.js +2 -2
- package/dist/commonjs/parsers/manifest/smooth/representation_index.d.ts +5 -5
- package/dist/commonjs/parsers/manifest/smooth/representation_index.js +25 -9
- package/dist/commonjs/parsers/manifest/types.d.ts +1 -0
- package/dist/commonjs/parsers/manifest/utils/index_helpers.js +1 -1
- package/dist/commonjs/public_types.d.ts +78 -34
- package/dist/commonjs/transports/dash/init_segment_loader.js +10 -5
- package/dist/commonjs/transports/dash/manifest_parser.js +5 -2
- package/dist/commonjs/transports/dash/segment_loader.js +2 -1
- package/dist/commonjs/transports/dash/text_loader.js +2 -0
- package/dist/commonjs/transports/metaplaylist/manifest_loader.js +2 -1
- package/dist/commonjs/transports/metaplaylist/pipelines.js +4 -1
- package/dist/commonjs/transports/smooth/pipelines.js +4 -2
- package/dist/commonjs/transports/smooth/segment_loader.js +2 -1
- package/dist/commonjs/transports/types.d.ts +12 -0
- package/dist/commonjs/transports/utils/generate_manifest_loader.js +6 -3
- package/dist/commonjs/utils/queue_microtask.d.ts +2 -0
- package/dist/commonjs/utils/queue_microtask.js +7 -0
- package/dist/commonjs/utils/request/fetch.d.ts +6 -0
- package/dist/commonjs/utils/request/fetch.js +29 -8
- package/dist/commonjs/utils/request/xhr.d.ts +11 -5
- package/dist/commonjs/utils/request/xhr.js +29 -8
- package/dist/es2017/compat/is_codec_supported.js +22 -1
- package/dist/es2017/compat/patch_webkit_source_buffer.js +2 -2
- package/dist/es2017/config.d.ts +1 -0
- package/dist/es2017/core/api/debug/buffer_graph.js +2 -6
- package/dist/es2017/core/api/debug/modules/general_info.js +17 -10
- package/dist/es2017/core/api/option_utils.d.ts +4 -0
- package/dist/es2017/core/api/option_utils.js +8 -3
- package/dist/es2017/core/api/public_api.d.ts +11 -1
- package/dist/es2017/core/api/public_api.js +44 -9
- package/dist/es2017/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
- package/dist/es2017/core/fetchers/manifest/manifest_fetcher.js +11 -3
- package/dist/es2017/core/fetchers/segment/segment_fetcher.d.ts +8 -1
- package/dist/es2017/core/fetchers/segment/segment_fetcher.js +8 -4
- package/dist/es2017/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
- package/dist/es2017/core/fetchers/utils/schedule_request.js +1 -1
- package/dist/es2017/core/init/directfile_content_initializer.js +24 -7
- package/dist/es2017/core/init/media_source_content_initializer.d.ts +6 -0
- package/dist/es2017/core/init/media_source_content_initializer.js +4 -6
- package/dist/es2017/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
- package/dist/es2017/core/init/utils/content_time_boundaries_observer.js +16 -15
- package/dist/es2017/core/init/utils/get_initial_time.d.ts +17 -3
- package/dist/es2017/core/init/utils/get_initial_time.js +9 -7
- package/dist/es2017/core/segment_buffers/implementations/text/html/text_track_cues_store.js +54 -6
- package/dist/es2017/core/segment_buffers/implementations/text/html/utils.d.ts +2 -1
- package/dist/es2017/core/segment_buffers/implementations/text/html/utils.js +18 -2
- package/dist/es2017/core/stream/adaptation/adaptation_stream.js +2 -2
- package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +3 -3
- package/dist/es2017/core/stream/period/period_stream.js +2 -2
- package/dist/es2017/core/stream/representation/utils/get_buffer_status.js +3 -3
- package/dist/es2017/core/stream/representation/utils/get_needed_segments.js +1 -1
- package/dist/es2017/default_config.d.ts +5 -0
- package/dist/es2017/default_config.js +5 -0
- package/dist/es2017/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
- package/dist/es2017/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
- package/dist/es2017/manifest/representation.js +18 -5
- package/dist/es2017/manifest/representation_index/static.d.ts +1 -1
- package/dist/es2017/manifest/representation_index/static.js +2 -2
- package/dist/es2017/manifest/representation_index/types.d.ts +4 -4
- package/dist/es2017/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +17 -0
- package/dist/es2017/parsers/manifest/dash/common/convert_supplemental_codecs.js +26 -0
- package/dist/es2017/parsers/manifest/dash/common/flatten_overlapping_periods.js +5 -0
- package/dist/es2017/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
- package/dist/es2017/parsers/manifest/dash/common/indexes/base.js +4 -3
- package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
- package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
- package/dist/es2017/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
- package/dist/es2017/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
- package/dist/es2017/parsers/manifest/dash/common/indexes/list.js +2 -2
- package/dist/es2017/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
- package/dist/es2017/parsers/manifest/dash/common/indexes/template.js +40 -27
- package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
- package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
- package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +246 -51
- package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
- package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
- package/dist/es2017/parsers/manifest/dash/common/parse_adaptation_sets.js +11 -8
- package/dist/es2017/parsers/manifest/dash/common/parse_mpd.js +27 -13
- package/dist/es2017/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
- package/dist/es2017/parsers/manifest/dash/common/parse_periods.js +13 -16
- package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
- package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.js +10 -8
- package/dist/es2017/parsers/manifest/dash/common/parse_representations.js +36 -20
- package/dist/es2017/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +3 -0
- package/dist/es2017/parsers/manifest/dash/js-parser/node_parsers/Representation.js +3 -0
- package/dist/es2017/parsers/manifest/dash/node_parser_types.d.ts +2 -0
- package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +4 -0
- package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +4 -0
- package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
- package/dist/es2017/parsers/manifest/local/representation_index.d.ts +1 -1
- package/dist/es2017/parsers/manifest/local/representation_index.js +3 -3
- package/dist/es2017/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
- package/dist/es2017/parsers/manifest/metaplaylist/representation_index.js +2 -2
- package/dist/es2017/parsers/manifest/smooth/representation_index.d.ts +5 -5
- package/dist/es2017/parsers/manifest/smooth/representation_index.js +25 -9
- package/dist/es2017/parsers/manifest/types.d.ts +1 -0
- package/dist/es2017/parsers/manifest/utils/index_helpers.js +1 -1
- package/dist/es2017/public_types.d.ts +78 -34
- package/dist/es2017/transports/dash/init_segment_loader.js +5 -0
- package/dist/es2017/transports/dash/manifest_parser.js +3 -0
- package/dist/es2017/transports/dash/segment_loader.js +1 -0
- package/dist/es2017/transports/dash/text_loader.js +2 -0
- package/dist/es2017/transports/metaplaylist/manifest_loader.js +1 -0
- package/dist/es2017/transports/metaplaylist/pipelines.js +4 -1
- package/dist/es2017/transports/smooth/pipelines.js +2 -0
- package/dist/es2017/transports/smooth/segment_loader.js +1 -0
- package/dist/es2017/transports/types.d.ts +12 -0
- package/dist/es2017/transports/utils/generate_manifest_loader.js +3 -0
- package/dist/es2017/utils/queue_microtask.d.ts +2 -0
- package/dist/es2017/utils/queue_microtask.js +5 -0
- package/dist/es2017/utils/request/fetch.d.ts +6 -0
- package/dist/es2017/utils/request/fetch.js +29 -8
- package/dist/es2017/utils/request/xhr.d.ts +11 -5
- package/dist/es2017/utils/request/xhr.js +30 -9
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +900 -492
- package/dist/rx-player.min.js +1 -1
- package/package.json +3 -7
- package/scripts/update-version +2 -0
- package/sonar-project.properties +1 -1
- package/src/compat/is_codec_supported.ts +23 -1
- package/src/compat/patch_webkit_source_buffer.ts +2 -2
- package/src/core/api/debug/buffer_graph.ts +2 -5
- package/src/core/api/debug/modules/general_info.ts +15 -10
- package/src/core/api/option_utils.ts +11 -3
- package/src/core/api/public_api.ts +48 -8
- package/src/core/fetchers/manifest/manifest_fetcher.ts +21 -3
- package/src/core/fetchers/segment/segment_fetcher.ts +19 -5
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +1 -0
- package/src/core/fetchers/utils/schedule_request.ts +1 -1
- package/src/core/init/directfile_content_initializer.ts +23 -7
- package/src/core/init/media_source_content_initializer.ts +13 -7
- package/src/core/init/utils/content_time_boundaries_observer.ts +23 -22
- package/src/core/init/utils/get_initial_time.ts +25 -12
- package/src/core/segment_buffers/implementations/text/html/__tests__/utils.test.ts +15 -0
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +57 -6
- package/src/core/segment_buffers/implementations/text/html/utils.ts +19 -2
- package/src/core/stream/adaptation/adaptation_stream.ts +2 -2
- package/src/core/stream/orchestrator/stream_orchestrator.ts +3 -3
- package/src/core/stream/period/period_stream.ts +2 -2
- package/src/core/stream/representation/utils/get_buffer_status.ts +3 -3
- package/src/core/stream/representation/utils/get_needed_segments.ts +2 -2
- package/src/default_config.ts +5 -0
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +3 -1
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +2 -0
- package/src/manifest/representation.ts +19 -6
- package/src/manifest/representation_index/static.ts +2 -2
- package/src/manifest/representation_index/types.ts +4 -4
- package/src/parsers/manifest/dash/common/__tests__/convert_supplemental_codecs.test.ts +37 -0
- package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +20 -0
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +182 -36
- package/src/parsers/manifest/dash/common/convert_supplemental_codecs.ts +32 -0
- package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +5 -0
- package/src/parsers/manifest/dash/common/indexes/base.ts +12 -4
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +19 -5
- package/src/parsers/manifest/dash/common/indexes/index.ts +16 -4
- package/src/parsers/manifest/dash/common/indexes/list.ts +2 -2
- package/src/parsers/manifest/dash/common/indexes/template.ts +52 -31
- package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +4 -1
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +366 -60
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +63 -25
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +10 -4
- package/src/parsers/manifest/dash/common/parse_mpd.ts +28 -15
- package/src/parsers/manifest/dash/common/parse_periods.ts +12 -17
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +50 -26
- package/src/parsers/manifest/dash/common/parse_representations.ts +39 -20
- package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +4 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +4 -0
- package/src/parsers/manifest/dash/node_parser_types.ts +2 -0
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +2 -0
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +2 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +4 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +4 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +2 -0
- package/src/parsers/manifest/local/representation_index.ts +3 -3
- package/src/parsers/manifest/metaplaylist/representation_index.ts +2 -2
- package/src/parsers/manifest/smooth/representation_index.ts +23 -9
- package/src/parsers/manifest/types.ts +2 -0
- package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +1 -1
- package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +1 -1
- package/src/parsers/manifest/utils/index_helpers.ts +1 -1
- package/src/public_types.ts +79 -34
- package/src/transports/dash/init_segment_loader.ts +5 -0
- package/src/transports/dash/manifest_parser.ts +6 -0
- package/src/transports/dash/segment_loader.ts +1 -0
- package/src/transports/dash/text_loader.ts +2 -0
- package/src/transports/metaplaylist/manifest_loader.ts +1 -0
- package/src/transports/metaplaylist/pipelines.ts +4 -1
- package/src/transports/smooth/pipelines.ts +2 -0
- package/src/transports/smooth/segment_loader.ts +1 -0
- package/src/transports/types.ts +12 -0
- package/src/transports/utils/generate_manifest_loader.ts +3 -0
- package/src/utils/queue_microtask.ts +7 -0
- package/src/utils/request/fetch.ts +35 -8
- package/src/utils/request/xhr.ts +45 -14
- package/dist/_esm5.processed/compat/fullscreen.d.ts +0 -32
- package/dist/_esm5.processed/compat/fullscreen.js +0 -78
- package/dist/_esm5.processed/compat/is_offline.d.ts +0 -39
- package/dist/_esm5.processed/compat/is_offline.js +0 -43
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.d.ts +0 -258
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.js +0 -989
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +0 -75
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +0 -133
- package/dist/_esm5.processed/features/list/bif_parser.d.ts +0 -23
- package/dist/_esm5.processed/features/list/bif_parser.js +0 -27
- package/dist/_esm5.processed/features/list/image_buffer.js +0 -25
- package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +0 -38
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +0 -129
- package/dist/_esm5.processed/utils/list_to_map.js +0 -28
- package/dist/_esm5.processed/utils/simple_set.d.ts +0 -51
- package/dist/_esm5.processed/utils/simple_set.js +0 -57
- package/dist/_esm5.processed/utils/uniq.d.ts +0 -36
- package/dist/_esm5.processed/utils/uniq.js +0 -43
- package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
- package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.js +0 -54
- package/dist/es2017/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
- package/dist/es2017/parsers/manifest/utils/is_segment_still_available.js +0 -51
- package/src/parsers/manifest/utils/is_segment_still_available.ts +0 -58
- package/src/typings/next-tick.d.ts +0 -23
- package/src/typings/object-assign.d.ts +0 -48
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rx-player",
|
|
3
3
|
"author": "Canal+",
|
|
4
|
-
"version": "4.0.0-dev.
|
|
4
|
+
"version": "4.0.0-dev.2023120600",
|
|
5
5
|
"description": "Canal+ HTML5 Video Player",
|
|
6
6
|
"main": "./dist/commonjs/index.js",
|
|
7
7
|
"module": "./dist/es2017/index.js",
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
"demo": "node ./scripts/build_demo.mjs --production-mode",
|
|
139
139
|
"demo:min": "node ./scripts/build_demo.mjs --production-mode --minify",
|
|
140
140
|
"demo:watch": "node ./scripts/build_demo.mjs --watch --production-mode",
|
|
141
|
-
"doc": "
|
|
141
|
+
"doc": "readme.doc doc/ doc/generated \"$(cat VERSION)\"",
|
|
142
142
|
"lint": "eslint src -c .eslintrc.js",
|
|
143
143
|
"lint:demo": "eslint -c demo/full/.eslintrc.js demo/full/scripts",
|
|
144
144
|
"lint:tests": "eslint tests/**/*.js --ignore-pattern '/tests/performance/bundle*'",
|
|
@@ -167,14 +167,12 @@
|
|
|
167
167
|
"type": "git",
|
|
168
168
|
"url": "git://github.com/canalplus/rx-player.git"
|
|
169
169
|
},
|
|
170
|
-
"dependencies": {
|
|
171
|
-
"next-tick": "1.1.0"
|
|
172
|
-
},
|
|
173
170
|
"devDependencies": {
|
|
174
171
|
"@babel/core": "7.23.0",
|
|
175
172
|
"@babel/plugin-transform-runtime": "7.22.15",
|
|
176
173
|
"@babel/preset-env": "7.22.20",
|
|
177
174
|
"@babel/preset-react": "7.22.15",
|
|
175
|
+
"@canalplus/readme.doc": "^0.3.0",
|
|
178
176
|
"@types/chai": "4.3.6",
|
|
179
177
|
"@types/jest": "29.5.5",
|
|
180
178
|
"@types/mocha": "10.0.1",
|
|
@@ -188,7 +186,6 @@
|
|
|
188
186
|
"babel-loader": "9.1.3",
|
|
189
187
|
"chai": "4.3.8",
|
|
190
188
|
"core-js": "3.32.2",
|
|
191
|
-
"docgen.ico": "^0.2.3",
|
|
192
189
|
"esbuild": "0.19.3",
|
|
193
190
|
"eslint": "8.50.0",
|
|
194
191
|
"eslint-plugin-ban": "1.6.0",
|
|
@@ -218,7 +215,6 @@
|
|
|
218
215
|
"terser-webpack-plugin": "5.3.9",
|
|
219
216
|
"ts-jest": "29.1.1",
|
|
220
217
|
"ts-loader": "9.4.4",
|
|
221
|
-
"tslint": "6.1.3",
|
|
222
218
|
"typescript": "5.2.2",
|
|
223
219
|
"webpack": "5.88.2",
|
|
224
220
|
"webpack-cli": "5.1.4"
|
package/scripts/update-version
CHANGED
|
@@ -22,7 +22,9 @@
|
|
|
22
22
|
set -e
|
|
23
23
|
|
|
24
24
|
version=$1
|
|
25
|
+
date_iso=$(date "+%Y-%m-%d")
|
|
25
26
|
|
|
27
|
+
sed -i.bak -e "s/^\#\# Unreleased/\#\# v${version} \(${date_iso}\)/gi" CHANGELOG.md && rm CHANGELOG.md.bak
|
|
26
28
|
sed -i.bak -e "s/\/\\* PLAYER_VERSION \\*\/\"\(.*\)\";/\/* PLAYER_VERSION *\/\"${version}\";/g" src/core/api/public_api.ts && rm src/core/api/public_api.ts.bak
|
|
27
29
|
sed -i.bak -e "s/\"version\":\s*\"[0-9]\+\.[0-9]\+\.[0-9]\+[^\"]*\"/\"version\": \"${version}\"/g" package.json && rm package.json.bak
|
|
28
30
|
sed -i.bak -e "s/sonar\.projectVersion= *.*/sonar.projectVersion=${version}/g" sonar-project.properties && rm sonar-project.properties.bak
|
package/sonar-project.properties
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
sonar.projectKey=rx-player
|
|
2
2
|
sonar.organization=rx-player
|
|
3
3
|
sonar.projectName=rx-player
|
|
4
|
-
sonar.projectVersion=4.0.0-dev.
|
|
4
|
+
sonar.projectVersion=4.0.0-dev.2023120600
|
|
5
5
|
sonar.sources=./src,./demo,./tests
|
|
6
6
|
sonar.exclusions=demo/full/bundle.js,demo/standalone/lib.js,demo/bundle.js
|
|
7
7
|
sonar.host.url=https://sonarcloud.io
|
|
@@ -16,6 +16,17 @@
|
|
|
16
16
|
|
|
17
17
|
import { MediaSource_ } from "./browser_compatibility_types";
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Setting this value limit the number of entries in the support map
|
|
21
|
+
* preventing important memory usage, value is arbitrary
|
|
22
|
+
*/
|
|
23
|
+
const MAX_SUPPORT_MAP_ENTRIES = 200;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* caching the codec support reduce the amount of call to `isTypeSupported`
|
|
27
|
+
* and help for performance especially on low-end devices.
|
|
28
|
+
*/
|
|
29
|
+
const supportMap: Map<string, boolean> = new Map();
|
|
19
30
|
/**
|
|
20
31
|
* Returns true if the given codec is supported by the browser's MediaSource
|
|
21
32
|
* implementation.
|
|
@@ -33,7 +44,18 @@ export default function isCodecSupported(mimeType : string) : boolean {
|
|
|
33
44
|
/* eslint-disable @typescript-eslint/unbound-method */
|
|
34
45
|
if (typeof MediaSource_.isTypeSupported === "function") {
|
|
35
46
|
/* eslint-enable @typescript-eslint/unbound-method */
|
|
36
|
-
|
|
47
|
+
const cachedSupport = supportMap.get(mimeType);
|
|
48
|
+
if (cachedSupport !== undefined) {
|
|
49
|
+
return cachedSupport;
|
|
50
|
+
} else {
|
|
51
|
+
const isSupported = MediaSource_.isTypeSupported(mimeType);
|
|
52
|
+
if (supportMap.size >= MAX_SUPPORT_MAP_ENTRIES) {
|
|
53
|
+
supportMap.clear();
|
|
54
|
+
}
|
|
55
|
+
supportMap.set(mimeType, isSupported);
|
|
56
|
+
return isSupported;
|
|
57
|
+
}
|
|
58
|
+
|
|
37
59
|
}
|
|
38
60
|
|
|
39
61
|
return true;
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import nextTick from "next-tick";
|
|
18
17
|
import EventEmitter from "../utils/event_emitter";
|
|
18
|
+
import queueMicrotask from "../utils/queue_microtask";
|
|
19
19
|
import globalScope from "./global_scope";
|
|
20
20
|
import isNode from "./is_node";
|
|
21
21
|
|
|
@@ -57,7 +57,7 @@ export default function patchWebkitSourceBuffer() : void {
|
|
|
57
57
|
|
|
58
58
|
sourceBufferWebkitProto._emitUpdate =
|
|
59
59
|
function(eventName : string, val : unknown) {
|
|
60
|
-
|
|
60
|
+
queueMicrotask(() => {
|
|
61
61
|
/* eslint-disable no-invalid-this */
|
|
62
62
|
this.trigger(eventName, val);
|
|
63
63
|
this.updating = false;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Representation } from "../../../manifest";
|
|
2
2
|
import { IBufferedChunk } from "../../segment_buffers";
|
|
3
3
|
|
|
4
|
-
const BUFFER_WIDTH_IN_SECONDS =
|
|
4
|
+
const BUFFER_WIDTH_IN_SECONDS = 30 * 60;
|
|
5
5
|
|
|
6
6
|
const COLORS = [
|
|
7
7
|
"#2ab7ca",
|
|
@@ -95,10 +95,7 @@ export default class SegmentBufferGraph {
|
|
|
95
95
|
let minimumPosition;
|
|
96
96
|
let maximumPosition;
|
|
97
97
|
if (maximumPoint - minimumPoint > BUFFER_WIDTH_IN_SECONDS) {
|
|
98
|
-
if (currentTime
|
|
99
|
-
minimumPosition = minimumPoint;
|
|
100
|
-
maximumPosition = maximumPoint;
|
|
101
|
-
} else if (maximumPoint - currentTime < BUFFER_WIDTH_IN_SECONDS / 2) {
|
|
98
|
+
if (maximumPoint - currentTime < BUFFER_WIDTH_IN_SECONDS / 2) {
|
|
102
99
|
maximumPosition = maximumPoint;
|
|
103
100
|
minimumPosition = maximumPoint - BUFFER_WIDTH_IN_SECONDS;
|
|
104
101
|
} else if (currentTime - minimumPoint < BUFFER_WIDTH_IN_SECONDS / 2) {
|
|
@@ -157,23 +157,28 @@ export default function constructDebugGeneralInfo(
|
|
|
157
157
|
]);
|
|
158
158
|
adaptationsElt.appendChild(textAdaps);
|
|
159
159
|
}
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
})
|
|
160
|
+
const adaptations = instance.__priv_getCurrentAdaptation();
|
|
161
|
+
const videoBitratesStr = adaptations?.video?.representations.map((r) => {
|
|
162
|
+
return String(r.bitrate ?? "N/A") +
|
|
163
|
+
(r.isSupported ? "" : " U!") +
|
|
164
|
+
(r.decipherable !== false ? "" : " E!");
|
|
165
|
+
}) ?? [];
|
|
166
|
+
const audioBitratesStr = adaptations?.video?.representations.map((r) => {
|
|
167
|
+
return String(r.bitrate ?? "N/A") +
|
|
168
|
+
(r.isSupported ? "" : " U!") +
|
|
169
|
+
(r.decipherable !== false ? "" : " E!");
|
|
170
|
+
}) ?? [];
|
|
166
171
|
representationsElt.innerHTML = "";
|
|
167
|
-
if (
|
|
172
|
+
if (videoBitratesStr.length > 0) {
|
|
168
173
|
representationsElt.appendChild(createMetricTitle("vb"));
|
|
169
174
|
representationsElt.appendChild(createElement("span", {
|
|
170
|
-
textContent:
|
|
175
|
+
textContent: videoBitratesStr.join(" ") + " ",
|
|
171
176
|
}));
|
|
172
177
|
}
|
|
173
|
-
if (
|
|
178
|
+
if (audioBitratesStr.length > 0) {
|
|
174
179
|
representationsElt.appendChild(createMetricTitle("ab"));
|
|
175
180
|
representationsElt.appendChild(createElement("span", {
|
|
176
|
-
textContent:
|
|
181
|
+
textContent: audioBitratesStr.join(" ") + " ",
|
|
177
182
|
}));
|
|
178
183
|
}
|
|
179
184
|
} else {
|
|
@@ -42,6 +42,7 @@ export type IParsedStartAtOption = { position : number } |
|
|
|
42
42
|
{ wallClockTime : number } |
|
|
43
43
|
{ percentage : number } |
|
|
44
44
|
{ fromLastPosition : number } |
|
|
45
|
+
{ fromLivePosition : number } |
|
|
45
46
|
{ fromFirstPosition : number };
|
|
46
47
|
|
|
47
48
|
/** Options of the RxPlayer's constructor once parsed. */
|
|
@@ -226,6 +227,8 @@ function parseConstructorOptions(
|
|
|
226
227
|
*/
|
|
227
228
|
function checkReloadOptions(options?: {
|
|
228
229
|
reloadAt?: { position?: number; relative?: number };
|
|
230
|
+
keySystems?: IKeySystemOption[];
|
|
231
|
+
autoPlay?: boolean;
|
|
229
232
|
}): void {
|
|
230
233
|
if (options === null ||
|
|
231
234
|
(typeof options !== "object" && options !== undefined)) {
|
|
@@ -243,6 +246,12 @@ function checkReloadOptions(options?: {
|
|
|
243
246
|
options?.reloadAt?.relative !== undefined) {
|
|
244
247
|
throw new Error("API: reload - Invalid 'reloadAt.relative' option format.");
|
|
245
248
|
}
|
|
249
|
+
if (!Array.isArray(options?.keySystems) && options?.keySystems !== undefined) {
|
|
250
|
+
throw new Error("API: reload - Invalid 'keySystems' option format.");
|
|
251
|
+
}
|
|
252
|
+
if (options?.autoPlay !== undefined && typeof options.autoPlay !== "boolean") {
|
|
253
|
+
throw new Error("API: reload - Invalid 'autoPlay' option format.");
|
|
254
|
+
}
|
|
246
255
|
}
|
|
247
256
|
|
|
248
257
|
/**
|
|
@@ -375,9 +384,8 @@ function parseLoadVideoOptions(
|
|
|
375
384
|
}
|
|
376
385
|
|
|
377
386
|
if (!isNullOrUndefined(options.startAt)) {
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
instanceof Date
|
|
387
|
+
if ("wallClockTime" in options.startAt
|
|
388
|
+
&& options.startAt.wallClockTime instanceof Date
|
|
381
389
|
) {
|
|
382
390
|
const wallClockTime = (options.startAt as { wallClockTime : Date })
|
|
383
391
|
.wallClockTime.getTime() / 1000;
|
|
@@ -56,6 +56,7 @@ import {
|
|
|
56
56
|
IBrokenRepresentationsLockContext,
|
|
57
57
|
IConstructorOptions,
|
|
58
58
|
IKeySystemConfigurationOutput,
|
|
59
|
+
IKeySystemOption,
|
|
59
60
|
ILoadVideoOptions,
|
|
60
61
|
ILockedAudioRepresentationsSettings,
|
|
61
62
|
ILockedVideoRepresentationsSettings,
|
|
@@ -345,7 +346,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
345
346
|
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
|
|
346
347
|
videoElement.preload = "auto";
|
|
347
348
|
|
|
348
|
-
this.version = /* PLAYER_VERSION */"4.0.0-dev.
|
|
349
|
+
this.version = /* PLAYER_VERSION */"4.0.0-dev.2023120600";
|
|
349
350
|
this.log = log;
|
|
350
351
|
this.state = "STOPPED";
|
|
351
352
|
this.videoElement = videoElement;
|
|
@@ -471,6 +472,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
471
472
|
*/
|
|
472
473
|
reload(reloadOpts?: {
|
|
473
474
|
reloadAt?: { position?: number; relative?: number };
|
|
475
|
+
keySystems?: IKeySystemOption[];
|
|
474
476
|
autoPlay?: boolean;
|
|
475
477
|
}): void {
|
|
476
478
|
const { options,
|
|
@@ -503,6 +505,13 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
503
505
|
autoPlay = !reloadInPause;
|
|
504
506
|
}
|
|
505
507
|
|
|
508
|
+
let keySystems : IKeySystemOption[] | undefined;
|
|
509
|
+
if (reloadOpts?.keySystems !== undefined) {
|
|
510
|
+
keySystems = reloadOpts.keySystems;
|
|
511
|
+
} else if (this._priv_reloadingMetadata.options?.keySystems !== undefined) {
|
|
512
|
+
keySystems = this._priv_reloadingMetadata.options.keySystems;
|
|
513
|
+
}
|
|
514
|
+
|
|
506
515
|
const newOptions = { ...options,
|
|
507
516
|
initialManifest: manifest };
|
|
508
517
|
if (startAt !== undefined) {
|
|
@@ -511,6 +520,9 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
511
520
|
if (autoPlay !== undefined) {
|
|
512
521
|
newOptions.autoPlay = autoPlay;
|
|
513
522
|
}
|
|
523
|
+
if (keySystems !== undefined) {
|
|
524
|
+
newOptions.keySystems = keySystems;
|
|
525
|
+
}
|
|
514
526
|
this._priv_initializeContentPlayback(newOptions);
|
|
515
527
|
}
|
|
516
528
|
|
|
@@ -520,7 +532,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
520
532
|
if (features.createDebugElement === null) {
|
|
521
533
|
throw new Error("Feature `DEBUG_ELEMENT` not added to the RxPlayer");
|
|
522
534
|
}
|
|
523
|
-
const canceller = new TaskCanceller()
|
|
535
|
+
const canceller = new TaskCanceller();
|
|
524
536
|
features.createDebugElement(element, this, canceller.signal);
|
|
525
537
|
return {
|
|
526
538
|
dispose() {
|
|
@@ -598,6 +610,8 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
598
610
|
const manifestRequestSettings = { lowLatencyMode,
|
|
599
611
|
maxRetry : requestConfig.manifest?.maxRetry,
|
|
600
612
|
requestTimeout: requestConfig.manifest?.timeout,
|
|
613
|
+
connectionTimeout:
|
|
614
|
+
requestConfig.manifest?.connectionTimeout,
|
|
601
615
|
minimumManifestUpdateInterval,
|
|
602
616
|
initialManifest };
|
|
603
617
|
|
|
@@ -655,8 +669,9 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
655
669
|
|
|
656
670
|
const segmentRequestOptions = { lowLatencyMode,
|
|
657
671
|
maxRetry: requestConfig.segment?.maxRetry,
|
|
658
|
-
requestTimeout: requestConfig.segment?.timeout
|
|
659
|
-
|
|
672
|
+
requestTimeout: requestConfig.segment?.timeout,
|
|
673
|
+
connectionTimeout:
|
|
674
|
+
requestConfig.segment?.connectionTimeout };
|
|
660
675
|
initializer = new features.mediaSourceInit({
|
|
661
676
|
adaptiveOptions,
|
|
662
677
|
autoPlay,
|
|
@@ -1946,6 +1961,29 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1946
1961
|
return null;
|
|
1947
1962
|
}
|
|
1948
1963
|
|
|
1964
|
+
/**
|
|
1965
|
+
* Returns the current position for live contents.
|
|
1966
|
+
*
|
|
1967
|
+
* Returns `null` if no content is loaded or if the current loaded content is
|
|
1968
|
+
* not considered as a live content.
|
|
1969
|
+
* Returns `undefined` if that live position is currently unknown.
|
|
1970
|
+
* @returns {number}
|
|
1971
|
+
*/
|
|
1972
|
+
getLivePosition() : number | undefined |null {
|
|
1973
|
+
if (this._priv_contentInfos === null) {
|
|
1974
|
+
return null;
|
|
1975
|
+
}
|
|
1976
|
+
|
|
1977
|
+
const { isDirectFile, manifest } = this._priv_contentInfos;
|
|
1978
|
+
if (isDirectFile) {
|
|
1979
|
+
return undefined;
|
|
1980
|
+
}
|
|
1981
|
+
if (manifest?.isLive !== true) {
|
|
1982
|
+
return null;
|
|
1983
|
+
}
|
|
1984
|
+
return manifest.getLivePosition();
|
|
1985
|
+
}
|
|
1986
|
+
|
|
1949
1987
|
/**
|
|
1950
1988
|
* Get maximum seek-able position.
|
|
1951
1989
|
* @returns {number}
|
|
@@ -1996,9 +2034,11 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1996
2034
|
}
|
|
1997
2035
|
const segmentBufferStatus = this._priv_contentInfos
|
|
1998
2036
|
.segmentBuffersStore.getStatus(bufferType);
|
|
1999
|
-
|
|
2000
|
-
segmentBufferStatus.value.
|
|
2001
|
-
|
|
2037
|
+
if (segmentBufferStatus.type === "initialized") {
|
|
2038
|
+
segmentBufferStatus.value.synchronizeInventory();
|
|
2039
|
+
return segmentBufferStatus.value.getInventory();
|
|
2040
|
+
}
|
|
2041
|
+
return null;
|
|
2002
2042
|
}
|
|
2003
2043
|
|
|
2004
2044
|
/**
|
|
@@ -2772,7 +2812,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
2772
2812
|
}
|
|
2773
2813
|
}
|
|
2774
2814
|
}
|
|
2775
|
-
Player.version = /* PLAYER_VERSION */"4.0.0-dev.
|
|
2815
|
+
Player.version = /* PLAYER_VERSION */"4.0.0-dev.2023120600";
|
|
2776
2816
|
|
|
2777
2817
|
/** Every events sent by the RxPlayer's public API. */
|
|
2778
2818
|
interface IPublicAPIEvent {
|
|
@@ -29,7 +29,6 @@ import {
|
|
|
29
29
|
ITransportPipelines,
|
|
30
30
|
} from "../../../transports";
|
|
31
31
|
import EventEmitter from "../../../utils/event_emitter";
|
|
32
|
-
import isNullOrUndefined from "../../../utils/is_null_or_undefined";
|
|
33
32
|
import getMonotonicTimeStamp from "../../../utils/monotonic_timestamp";
|
|
34
33
|
import noop from "../../../utils/noop";
|
|
35
34
|
import TaskCanceller from "../../../utils/task_canceller";
|
|
@@ -231,14 +230,27 @@ export default class ManifestFetcher extends EventEmitter<IManifestFetcherEvent>
|
|
|
231
230
|
) : Promise<IRequestedData<ILoadedManifestFormat>> {
|
|
232
231
|
const { loadManifest } = pipelines;
|
|
233
232
|
let requestTimeout : number | undefined =
|
|
234
|
-
|
|
233
|
+
(settings.requestTimeout === undefined) ?
|
|
235
234
|
config.getCurrent().DEFAULT_REQUEST_TIMEOUT :
|
|
236
235
|
settings.requestTimeout;
|
|
236
|
+
|
|
237
|
+
let connectionTimeout: number | undefined =
|
|
238
|
+
(settings.connectionTimeout === undefined) ?
|
|
239
|
+
config.getCurrent().DEFAULT_CONNECTION_TIMEOUT :
|
|
240
|
+
settings.connectionTimeout;
|
|
241
|
+
|
|
237
242
|
if (requestTimeout < 0) {
|
|
238
243
|
requestTimeout = undefined;
|
|
239
244
|
}
|
|
245
|
+
|
|
246
|
+
if (connectionTimeout < 0) {
|
|
247
|
+
connectionTimeout = undefined;
|
|
248
|
+
}
|
|
240
249
|
const callLoader = () => loadManifest(manifestUrl,
|
|
241
|
-
{
|
|
250
|
+
{
|
|
251
|
+
timeout: requestTimeout,
|
|
252
|
+
connectionTimeout,
|
|
253
|
+
},
|
|
242
254
|
cancelSignal);
|
|
243
255
|
return scheduleRequestPromise(callLoader, backoffSettings, cancelSignal);
|
|
244
256
|
}
|
|
@@ -722,6 +734,12 @@ export interface IManifestFetcherSettings {
|
|
|
722
734
|
* `undefined` will lead to a default, large, timeout being used.
|
|
723
735
|
*/
|
|
724
736
|
requestTimeout : number | undefined;
|
|
737
|
+
/**
|
|
738
|
+
* Connection timeout, in milliseconds, after which the request is canceled
|
|
739
|
+
* if the responses headers has not being received.
|
|
740
|
+
* Do not set or set to "undefined" to disable it.
|
|
741
|
+
*/
|
|
742
|
+
connectionTimeout: number | undefined;
|
|
725
743
|
/** Limit the frequency of Manifest updates. */
|
|
726
744
|
minimumManifestUpdateInterval : number;
|
|
727
745
|
/**
|
|
@@ -93,6 +93,8 @@ export default function createSegmentFetcher<TLoadedFormat, TSegmentDataType>(
|
|
|
93
93
|
const requestOptions = {
|
|
94
94
|
timeout: options.requestTimeout < 0 ? undefined :
|
|
95
95
|
options.requestTimeout,
|
|
96
|
+
connectionTimeout: options.connectionTimeout === undefined ? undefined :
|
|
97
|
+
options.connectionTimeout < 0 ? undefined : options.connectionTimeout,
|
|
96
98
|
};
|
|
97
99
|
|
|
98
100
|
/**
|
|
@@ -457,6 +459,12 @@ export interface ISegmentFetcherOptions {
|
|
|
457
459
|
* To set to `-1` for no timeout.
|
|
458
460
|
*/
|
|
459
461
|
requestTimeout : number;
|
|
462
|
+
/**
|
|
463
|
+
* Connection timeout, in milliseconds, after which the request is canceled
|
|
464
|
+
* if the responses headers has not being received.
|
|
465
|
+
* Do not set or set to "undefined" to disable it.
|
|
466
|
+
*/
|
|
467
|
+
connectionTimeout: number | undefined;
|
|
460
468
|
}
|
|
461
469
|
|
|
462
470
|
/**
|
|
@@ -467,12 +475,15 @@ export interface ISegmentFetcherOptions {
|
|
|
467
475
|
export function getSegmentFetcherOptions(
|
|
468
476
|
{ maxRetry,
|
|
469
477
|
lowLatencyMode,
|
|
470
|
-
requestTimeout
|
|
471
|
-
|
|
472
|
-
|
|
478
|
+
requestTimeout,
|
|
479
|
+
connectionTimeout } : { maxRetry? : number | undefined;
|
|
480
|
+
requestTimeout? : number | undefined;
|
|
481
|
+
connectionTimeout? : number | undefined;
|
|
482
|
+
lowLatencyMode : boolean; }
|
|
473
483
|
) : ISegmentFetcherOptions {
|
|
474
484
|
const { DEFAULT_MAX_REQUESTS_RETRY_ON_ERROR,
|
|
475
485
|
DEFAULT_REQUEST_TIMEOUT,
|
|
486
|
+
DEFAULT_CONNECTION_TIMEOUT,
|
|
476
487
|
INITIAL_BACKOFF_DELAY_BASE,
|
|
477
488
|
MAX_BACKOFF_DELAY_BASE } = config.getCurrent();
|
|
478
489
|
return { maxRetry: maxRetry ?? DEFAULT_MAX_REQUESTS_RETRY_ON_ERROR,
|
|
@@ -480,6 +491,9 @@ export function getSegmentFetcherOptions(
|
|
|
480
491
|
INITIAL_BACKOFF_DELAY_BASE.REGULAR,
|
|
481
492
|
maxDelay: lowLatencyMode ? MAX_BACKOFF_DELAY_BASE.LOW_LATENCY :
|
|
482
493
|
MAX_BACKOFF_DELAY_BASE.REGULAR,
|
|
483
|
-
requestTimeout:
|
|
484
|
-
|
|
494
|
+
requestTimeout: (requestTimeout === undefined) ? DEFAULT_REQUEST_TIMEOUT :
|
|
495
|
+
requestTimeout,
|
|
496
|
+
connectionTimeout: (connectionTimeout === undefined) ?
|
|
497
|
+
DEFAULT_CONNECTION_TIMEOUT : connectionTimeout,
|
|
498
|
+
};
|
|
485
499
|
}
|
|
@@ -352,7 +352,7 @@ export async function scheduleRequestWithCdns<T>(
|
|
|
352
352
|
* attempts already done for that resource.
|
|
353
353
|
*
|
|
354
354
|
* Returns `undefined` if there's no Cdn left to request the resource.
|
|
355
|
-
* @param {Array.<Object>}
|
|
355
|
+
* @param {Array.<Object>} sortedCdns
|
|
356
356
|
* @returns {Object|undefined}
|
|
357
357
|
*/
|
|
358
358
|
function getPrioritaryRequestableCdnFromSortedList(
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
IPlayerError,
|
|
28
28
|
} from "../../public_types";
|
|
29
29
|
import assert from "../../utils/assert";
|
|
30
|
+
import isNullOrUndefined from "../../utils/is_null_or_undefined";
|
|
30
31
|
import SharedReference, {
|
|
31
32
|
IReadOnlySharedReference,
|
|
32
33
|
} from "../../utils/reference";
|
|
@@ -241,11 +242,11 @@ function getDirectFileInitialTime(
|
|
|
241
242
|
mediaElement : HTMLMediaElement,
|
|
242
243
|
startAt? : IInitialTimeOptions
|
|
243
244
|
) : number {
|
|
244
|
-
if (startAt
|
|
245
|
+
if (isNullOrUndefined(startAt)) {
|
|
245
246
|
return 0;
|
|
246
247
|
}
|
|
247
248
|
|
|
248
|
-
if (startAt.position
|
|
249
|
+
if (!isNullOrUndefined(startAt.position)) {
|
|
249
250
|
return startAt.position;
|
|
250
251
|
} else if (startAt.wallClockTime != null) {
|
|
251
252
|
return startAt.wallClockTime;
|
|
@@ -254,15 +255,30 @@ function getDirectFileInitialTime(
|
|
|
254
255
|
}
|
|
255
256
|
|
|
256
257
|
const duration = mediaElement.duration;
|
|
257
|
-
if (duration == null || !isFinite(duration)) {
|
|
258
|
-
log.warn("startAt.fromLastPosition set but no known duration, " +
|
|
259
|
-
"beginning at 0.");
|
|
260
|
-
return 0;
|
|
261
|
-
}
|
|
262
258
|
|
|
263
259
|
if (typeof startAt.fromLastPosition === "number") {
|
|
260
|
+
if (isNullOrUndefined(duration) || !isFinite(duration)) {
|
|
261
|
+
log.warn("startAt.fromLastPosition set but no known duration, " +
|
|
262
|
+
"beginning at 0.");
|
|
263
|
+
return 0;
|
|
264
|
+
}
|
|
264
265
|
return Math.max(0, duration + startAt.fromLastPosition);
|
|
266
|
+
} else if (typeof startAt.fromLivePosition === "number") {
|
|
267
|
+
const livePosition = mediaElement.seekable.length > 0 ?
|
|
268
|
+
mediaElement.seekable.end(0) :
|
|
269
|
+
duration;
|
|
270
|
+
if (isNullOrUndefined(livePosition)) {
|
|
271
|
+
log.warn("startAt.fromLivePosition set but no known live position, " +
|
|
272
|
+
"beginning at 0.");
|
|
273
|
+
return 0;
|
|
274
|
+
}
|
|
275
|
+
return Math.max(0, livePosition + startAt.fromLivePosition);
|
|
265
276
|
} else if (startAt.percentage != null) {
|
|
277
|
+
if (isNullOrUndefined(duration) || !isFinite(duration)) {
|
|
278
|
+
log.warn("startAt.percentage set but no known duration, " +
|
|
279
|
+
"beginning at 0.");
|
|
280
|
+
return 0;
|
|
281
|
+
}
|
|
266
282
|
const { percentage } = startAt;
|
|
267
283
|
if (percentage >= 100) {
|
|
268
284
|
return duration;
|
|
@@ -541,7 +541,7 @@ export default class MediaSourceContentInitializer extends ContentInitializer {
|
|
|
541
541
|
if (
|
|
542
542
|
// Data is buffered around the current position
|
|
543
543
|
obs.currentRange !== null ||
|
|
544
|
-
// Or, for whatever reason,
|
|
544
|
+
// Or, for whatever reason, we have no buffer but we're already advancing
|
|
545
545
|
obs.position > seekedTime + 0.1
|
|
546
546
|
) {
|
|
547
547
|
stopListening();
|
|
@@ -728,9 +728,10 @@ export default class MediaSourceContentInitializer extends ContentInitializer {
|
|
|
728
728
|
contentTimeBoundariesObserver.addEventListener("periodChange", (period) => {
|
|
729
729
|
this.trigger("activePeriodChanged", { period });
|
|
730
730
|
});
|
|
731
|
-
contentTimeBoundariesObserver.addEventListener(
|
|
732
|
-
|
|
733
|
-
|
|
731
|
+
contentTimeBoundariesObserver.addEventListener(
|
|
732
|
+
"endingPositionChange",
|
|
733
|
+
(x) => mediaSourceDurationUpdater.updateDuration(x.endingPosition, x.isEnd)
|
|
734
|
+
);
|
|
734
735
|
contentTimeBoundariesObserver.addEventListener("endOfStream", () => {
|
|
735
736
|
if (endOfStreamCanceller === null) {
|
|
736
737
|
endOfStreamCanceller = new TaskCanceller();
|
|
@@ -746,9 +747,8 @@ export default class MediaSourceContentInitializer extends ContentInitializer {
|
|
|
746
747
|
endOfStreamCanceller = null;
|
|
747
748
|
}
|
|
748
749
|
});
|
|
749
|
-
const
|
|
750
|
-
mediaSourceDurationUpdater.updateDuration(
|
|
751
|
-
currentDuration.isEnd);
|
|
750
|
+
const endInfo = contentTimeBoundariesObserver.getCurrentEndingTime();
|
|
751
|
+
mediaSourceDurationUpdater.updateDuration(endInfo.endingPosition, endInfo.isEnd);
|
|
752
752
|
return contentTimeBoundariesObserver;
|
|
753
753
|
}
|
|
754
754
|
|
|
@@ -835,6 +835,12 @@ export interface IInitializeArguments {
|
|
|
835
835
|
* `-1` indicates no timeout.
|
|
836
836
|
*/
|
|
837
837
|
requestTimeout : number | undefined;
|
|
838
|
+
/**
|
|
839
|
+
* Amount of time, in milliseconds, after which a request that hasn't receive
|
|
840
|
+
* the headers and status code should be aborted and optionnaly retried,
|
|
841
|
+
* depending on the maxRetry configuration.
|
|
842
|
+
*/
|
|
843
|
+
connectionTimeout : number | undefined;
|
|
838
844
|
/** Maximum number of time a request on error will be retried. */
|
|
839
845
|
maxRetry : number | undefined;
|
|
840
846
|
};
|