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
|
@@ -15,79 +15,29 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { IRepresentationIndex, ISegment } from "../../../manifest";
|
|
17
17
|
import { IPlayerError } from "../../../public_types";
|
|
18
|
-
|
|
19
|
-
* Object describing information about one segment or several consecutive
|
|
20
|
-
* segments.
|
|
21
|
-
*/
|
|
22
|
-
export interface IIndexSegment {
|
|
23
|
-
/** Time (timescaled) at which the segment starts. */
|
|
24
|
-
start: number;
|
|
25
|
-
/** Duration (timescaled) of the segment. */
|
|
26
|
-
duration: number;
|
|
27
|
-
/**
|
|
28
|
-
* Amount of consecutive segments with that duration.
|
|
29
|
-
*
|
|
30
|
-
* For example let's consider the following IIndexSegment:
|
|
31
|
-
* ```
|
|
32
|
-
* { start: 10, duration: 2, repeatCount: 2 }
|
|
33
|
-
* ```
|
|
34
|
-
* Here, because `repeatCount` is set to `2`, this object actually defines 3
|
|
35
|
-
* segments:
|
|
36
|
-
* 1. one starting at `10` and ending at `12` (10 + 2)
|
|
37
|
-
* 2. another one starting at `12` (the previous one's end) and ending at
|
|
38
|
-
* `14` (12 + 2)
|
|
39
|
-
* 3. another one starting at `14` (the previous one's end) and ending at
|
|
40
|
-
* `16` (14 +2)
|
|
41
|
-
*/
|
|
42
|
-
repeatCount: number;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Object containing information about the segments available in a
|
|
46
|
-
* `SmoothRepresentationIndex`.
|
|
47
|
-
*/
|
|
48
|
-
interface ITimelineIndex {
|
|
49
|
-
/**
|
|
50
|
-
* "Timescale" used here allowing to convert the time in this object into
|
|
51
|
-
* seconds (by doing `time / timescale`).
|
|
52
|
-
*/
|
|
53
|
-
timescale: number;
|
|
54
|
-
/**
|
|
55
|
-
* Generic tokenized (e.g. with placeholders for time information) URL for
|
|
56
|
-
* every segments anounced here.
|
|
57
|
-
*/
|
|
58
|
-
media: string;
|
|
59
|
-
/** Contains information about all segments available here. */
|
|
60
|
-
timeline: IIndexSegment[];
|
|
61
|
-
}
|
|
18
|
+
import SharedSmoothSegmentTimeline from "./shared_smooth_segment_timeline";
|
|
62
19
|
/**
|
|
63
20
|
* Supplementary options taken by a SmoothRepresentationIndex bringing the
|
|
64
21
|
* context the segments are in.
|
|
65
22
|
*/
|
|
66
23
|
export interface ISmoothRepresentationIndexContextInformation {
|
|
67
|
-
/**
|
|
68
|
-
* if `true`, the `SmoothRepresentationIndex` will return segments even if
|
|
69
|
-
* we're not sure they had time to be generated on the server side.
|
|
70
|
-
*
|
|
71
|
-
* TODO(Paul B.) This is a somewhat ugly option, only here for very specific
|
|
72
|
-
* Canal+ use-cases for now (most of all for Peer-to-Peer efficiency),
|
|
73
|
-
* scheduled to be removed in a next major version.
|
|
74
|
-
*/
|
|
75
|
-
aggressiveMode: boolean;
|
|
76
24
|
/**
|
|
77
25
|
* If `true` the corresponding Smooth Manifest was announced as a live
|
|
78
26
|
* content.
|
|
79
27
|
* `false` otherwise.
|
|
80
28
|
*/
|
|
81
29
|
isLive: boolean;
|
|
82
|
-
/**
|
|
83
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Generic tokenized (e.g. with placeholders for time information) URL for
|
|
32
|
+
* every segments anounced here.
|
|
33
|
+
*/
|
|
34
|
+
media: string;
|
|
84
35
|
/**
|
|
85
36
|
* Contains information allowing to generate the corresponding initialization
|
|
86
37
|
* segment.
|
|
87
38
|
*/
|
|
88
39
|
segmentPrivateInfos: ISmoothInitSegmentPrivateInfos;
|
|
89
|
-
|
|
90
|
-
timeShiftBufferDepth: number | undefined;
|
|
40
|
+
sharedSmoothTimeline: SharedSmoothSegmentTimeline;
|
|
91
41
|
}
|
|
92
42
|
/** Information allowing to generate a Smooth initialization segment. */
|
|
93
43
|
interface ISmoothInitSegmentPrivateInfos {
|
|
@@ -99,6 +49,8 @@ interface ISmoothInitSegmentPrivateInfos {
|
|
|
99
49
|
protection?: {
|
|
100
50
|
keyId: Uint8Array;
|
|
101
51
|
} | undefined;
|
|
52
|
+
height?: number | undefined;
|
|
53
|
+
width?: number | undefined;
|
|
102
54
|
}
|
|
103
55
|
/**
|
|
104
56
|
* RepresentationIndex implementation for Smooth Manifests.
|
|
@@ -113,15 +65,6 @@ export default class SmoothRepresentationIndex implements IRepresentationIndex {
|
|
|
113
65
|
* Taken from the Manifest.
|
|
114
66
|
*/
|
|
115
67
|
private _initSegmentInfos;
|
|
116
|
-
/**
|
|
117
|
-
* if `true`, this class will return segments even if we're not sure they had
|
|
118
|
-
* time to be generated on the server side.
|
|
119
|
-
*
|
|
120
|
-
* This is a somewhat ugly option, only here for very specific Canal+
|
|
121
|
-
* use-cases for now (most of all for Peer-to-Peer efficiency), scheduled to
|
|
122
|
-
* be removed in a next major version.
|
|
123
|
-
*/
|
|
124
|
-
private _isAggressiveMode;
|
|
125
68
|
/**
|
|
126
69
|
* Value only calculated for live contents.
|
|
127
70
|
*
|
|
@@ -137,13 +80,6 @@ export default class SmoothRepresentationIndex implements IRepresentationIndex {
|
|
|
137
80
|
* be valid, in the index's timescale.
|
|
138
81
|
*/
|
|
139
82
|
private _initialScaledLastPosition;
|
|
140
|
-
/**
|
|
141
|
-
* Defines the earliest time when this index was known to be valid (that is, when
|
|
142
|
-
* all segments declared in it are available). This means either:
|
|
143
|
-
* - the manifest downloading time, if known
|
|
144
|
-
* - else, the time of creation of this RepresentationIndex, as the best guess
|
|
145
|
-
*/
|
|
146
|
-
private _indexValidityTime;
|
|
147
83
|
/**
|
|
148
84
|
* If `true` the corresponding Smooth Manifest was announced as a live
|
|
149
85
|
* content.
|
|
@@ -154,15 +90,18 @@ export default class SmoothRepresentationIndex implements IRepresentationIndex {
|
|
|
154
90
|
* Contains information on the list of segments available in this
|
|
155
91
|
* SmoothRepresentationIndex.
|
|
156
92
|
*/
|
|
157
|
-
private
|
|
158
|
-
/**
|
|
159
|
-
|
|
93
|
+
private _sharedSmoothTimeline;
|
|
94
|
+
/**
|
|
95
|
+
* Generic tokenized (e.g. with placeholders for time information) URL for
|
|
96
|
+
* every segments anounced here.
|
|
97
|
+
*/
|
|
98
|
+
private _media;
|
|
160
99
|
/**
|
|
161
100
|
* Creates a new `SmoothRepresentationIndex`.
|
|
162
101
|
* @param {Object} index
|
|
163
102
|
* @param {Object} options
|
|
164
103
|
*/
|
|
165
|
-
constructor(
|
|
104
|
+
constructor(options: ISmoothRepresentationIndexContextInformation);
|
|
166
105
|
/**
|
|
167
106
|
* Construct init Segment compatible with a Smooth Manifest.
|
|
168
107
|
* @returns {Object}
|
|
@@ -265,20 +204,19 @@ export default class SmoothRepresentationIndex implements IRepresentationIndex {
|
|
|
265
204
|
* @returns {Boolean}
|
|
266
205
|
*/
|
|
267
206
|
isInitialized(): true;
|
|
207
|
+
initialize(): void;
|
|
268
208
|
/**
|
|
269
|
-
* Add
|
|
209
|
+
* Add segments to a `SharedSmoothSegmentTimeline` that were predicted to come
|
|
210
|
+
* after `currentSegment`.
|
|
270
211
|
* @param {Array.<Object>} nextSegments - The segment information parsed.
|
|
271
212
|
* @param {Object} segment - Information on the segment which contained that
|
|
272
213
|
* new segment information.
|
|
273
214
|
*/
|
|
274
|
-
|
|
215
|
+
addPredictedSegments(nextSegments: Array<{
|
|
275
216
|
duration: number;
|
|
276
217
|
time: number;
|
|
277
218
|
timescale: number;
|
|
278
|
-
}>, currentSegment:
|
|
279
|
-
duration: number;
|
|
280
|
-
time: number;
|
|
281
|
-
}): void;
|
|
219
|
+
}>, currentSegment: ISegment): void;
|
|
282
220
|
/**
|
|
283
221
|
* Clean-up timeline to remove segment information which should not be
|
|
284
222
|
* available due to the timeshift window
|
|
@@ -16,11 +16,8 @@
|
|
|
16
16
|
import { NetworkError } from "../../../errors";
|
|
17
17
|
import log from "../../../log";
|
|
18
18
|
import assert from "../../../utils/assert";
|
|
19
|
-
import clearTimelineFromPosition from "../utils/clear_timeline_from_position";
|
|
20
19
|
import { checkDiscontinuity, getIndexSegmentEnd, } from "../utils/index_helpers";
|
|
21
20
|
import isSegmentStillAvailable from "../utils/is_segment_still_available";
|
|
22
|
-
import updateSegmentTimeline from "../utils/update_segment_timeline";
|
|
23
|
-
import addSegmentInfos from "./utils/add_segment_infos";
|
|
24
21
|
import { replaceSegmentSmoothTokens } from "./utils/tokens";
|
|
25
22
|
/**
|
|
26
23
|
* @param {Number} start
|
|
@@ -43,12 +40,12 @@ function getSegmentNumber(start, up, duration) {
|
|
|
43
40
|
* - up {Number}: timescaled timestamp of the beginning time
|
|
44
41
|
* - to {Number}: timescaled timestamp of the end time (start time + duration)
|
|
45
42
|
*/
|
|
46
|
-
function normalizeRange(
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return { up: start *
|
|
51
|
-
to: (start + duration) *
|
|
43
|
+
function normalizeRange(timescale, start, duration) {
|
|
44
|
+
var ts = timescale === undefined ||
|
|
45
|
+
timescale === 0 ? 1 :
|
|
46
|
+
timescale;
|
|
47
|
+
return { up: start * ts,
|
|
48
|
+
to: (start + duration) * ts };
|
|
52
49
|
}
|
|
53
50
|
/**
|
|
54
51
|
* Calculate the number of times a segment repeat based on the next segment.
|
|
@@ -63,7 +60,7 @@ function calculateRepeat(segment, nextSegment) {
|
|
|
63
60
|
// start of the next S element, the end of the Period or until the
|
|
64
61
|
// next MPD update.
|
|
65
62
|
// TODO Also for SMOOTH????
|
|
66
|
-
if (segment.duration
|
|
63
|
+
if (segment.duration !== undefined && repeatCount < 0) {
|
|
67
64
|
var repeatEnd = nextSegment !== undefined ? nextSegment.start :
|
|
68
65
|
Infinity;
|
|
69
66
|
repeatCount = Math.ceil((repeatEnd - segment.start) / segment.duration) - 1;
|
|
@@ -83,31 +80,27 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
83
80
|
* @param {Object} index
|
|
84
81
|
* @param {Object} options
|
|
85
82
|
*/
|
|
86
|
-
function SmoothRepresentationIndex(
|
|
87
|
-
var
|
|
88
|
-
|
|
89
|
-
performance.now() :
|
|
90
|
-
options.manifestReceivedTime;
|
|
91
|
-
this._index = index;
|
|
92
|
-
this._indexValidityTime = estimatedReceivedTime;
|
|
93
|
-
this._timeShiftBufferDepth = timeShiftBufferDepth;
|
|
83
|
+
function SmoothRepresentationIndex(options) {
|
|
84
|
+
var isLive = options.isLive, segmentPrivateInfos = options.segmentPrivateInfos, media = options.media, sharedSmoothTimeline = options.sharedSmoothTimeline;
|
|
85
|
+
this._sharedSmoothTimeline = sharedSmoothTimeline;
|
|
94
86
|
this._initSegmentInfos = { bitsPerSample: segmentPrivateInfos.bitsPerSample,
|
|
95
87
|
channels: segmentPrivateInfos.channels,
|
|
96
88
|
codecPrivateData: segmentPrivateInfos.codecPrivateData,
|
|
97
89
|
packetSize: segmentPrivateInfos.packetSize,
|
|
98
90
|
samplingRate: segmentPrivateInfos.samplingRate,
|
|
99
|
-
timescale:
|
|
91
|
+
timescale: sharedSmoothTimeline.timescale,
|
|
92
|
+
height: segmentPrivateInfos.height,
|
|
93
|
+
width: segmentPrivateInfos.width,
|
|
100
94
|
protection: segmentPrivateInfos.protection };
|
|
101
|
-
this._isAggressiveMode = aggressiveMode;
|
|
102
95
|
this._isLive = isLive;
|
|
103
|
-
|
|
104
|
-
|
|
96
|
+
this._media = media;
|
|
97
|
+
if (sharedSmoothTimeline.timeline.length !== 0 && isLive) {
|
|
98
|
+
var timeline = sharedSmoothTimeline.timeline, validityTime = sharedSmoothTimeline.validityTime;
|
|
99
|
+
var lastItem = timeline[timeline.length - 1];
|
|
105
100
|
var scaledEnd = getIndexSegmentEnd(lastItem, null);
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
this._scaledLiveGap = scaledReceivedTime - scaledEnd;
|
|
110
|
-
}
|
|
101
|
+
var scaledTimelineValidityTime = (validityTime / 1000) *
|
|
102
|
+
sharedSmoothTimeline.timescale;
|
|
103
|
+
this._scaledLiveGap = scaledTimelineValidityTime - scaledEnd;
|
|
111
104
|
}
|
|
112
105
|
}
|
|
113
106
|
/**
|
|
@@ -134,13 +127,13 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
134
127
|
*/
|
|
135
128
|
SmoothRepresentationIndex.prototype.getSegments = function (from, dur) {
|
|
136
129
|
this._refreshTimeline();
|
|
137
|
-
var _a =
|
|
138
|
-
var _b =
|
|
139
|
-
var
|
|
130
|
+
var _a = this._sharedSmoothTimeline, timescale = _a.timescale, timeline = _a.timeline;
|
|
131
|
+
var _b = normalizeRange(timescale, from, dur), up = _b.up, to = _b.to;
|
|
132
|
+
var media = this._media;
|
|
140
133
|
var currentNumber;
|
|
141
134
|
var segments = [];
|
|
142
135
|
var timelineLength = timeline.length;
|
|
143
|
-
var maxPosition = this._scaledLiveGap
|
|
136
|
+
var maxPosition = this._scaledLiveGap === undefined ?
|
|
144
137
|
undefined :
|
|
145
138
|
((performance.now() / 1000) * timescale) - this._scaledLiveGap;
|
|
146
139
|
for (var i = 0; i < timelineLength; i++) {
|
|
@@ -149,14 +142,13 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
149
142
|
var repeat = calculateRepeat(segmentRange, timeline[i + 1]);
|
|
150
143
|
var segmentNumberInCurrentRange = getSegmentNumber(start, up, duration);
|
|
151
144
|
var segmentTime = start + segmentNumberInCurrentRange * duration;
|
|
152
|
-
var timeToAddToCheckMaxPosition =
|
|
153
|
-
duration;
|
|
145
|
+
var timeToAddToCheckMaxPosition = duration;
|
|
154
146
|
while (segmentTime < to &&
|
|
155
147
|
segmentNumberInCurrentRange <= repeat &&
|
|
156
|
-
(maxPosition
|
|
148
|
+
(maxPosition === undefined ||
|
|
157
149
|
(segmentTime + timeToAddToCheckMaxPosition) <= maxPosition)) {
|
|
158
150
|
var time = segmentTime;
|
|
159
|
-
var number = currentNumber
|
|
151
|
+
var number = currentNumber !== undefined ?
|
|
160
152
|
currentNumber + segmentNumberInCurrentRange :
|
|
161
153
|
undefined;
|
|
162
154
|
var segment = { id: String(segmentTime),
|
|
@@ -176,7 +168,7 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
176
168
|
// we reached ``to``, we're done
|
|
177
169
|
return segments;
|
|
178
170
|
}
|
|
179
|
-
if (currentNumber
|
|
171
|
+
if (currentNumber !== undefined) {
|
|
180
172
|
currentNumber += repeat + 1;
|
|
181
173
|
}
|
|
182
174
|
}
|
|
@@ -194,7 +186,7 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
194
186
|
if (!this._isLive) {
|
|
195
187
|
return false;
|
|
196
188
|
}
|
|
197
|
-
var _a = this.
|
|
189
|
+
var _a = this._sharedSmoothTimeline, timeline = _a.timeline, timescale = _a.timescale;
|
|
198
190
|
var lastSegmentInCurrentTimeline = timeline[timeline.length - 1];
|
|
199
191
|
if (lastSegmentInCurrentTimeline === undefined) {
|
|
200
192
|
return false;
|
|
@@ -219,11 +211,11 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
219
211
|
*/
|
|
220
212
|
SmoothRepresentationIndex.prototype.getFirstAvailablePosition = function () {
|
|
221
213
|
this._refreshTimeline();
|
|
222
|
-
var
|
|
223
|
-
if (
|
|
214
|
+
var _a = this._sharedSmoothTimeline, timeline = _a.timeline, timescale = _a.timescale;
|
|
215
|
+
if (timeline.length === 0) {
|
|
224
216
|
return null;
|
|
225
217
|
}
|
|
226
|
-
return
|
|
218
|
+
return timeline[0].start / timescale;
|
|
227
219
|
};
|
|
228
220
|
/**
|
|
229
221
|
* Returns last position available in the index.
|
|
@@ -231,21 +223,20 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
231
223
|
*/
|
|
232
224
|
SmoothRepresentationIndex.prototype.getLastAvailablePosition = function () {
|
|
233
225
|
this._refreshTimeline();
|
|
234
|
-
var
|
|
235
|
-
if (this._scaledLiveGap
|
|
236
|
-
var lastTimelineElement =
|
|
237
|
-
return getIndexSegmentEnd(lastTimelineElement, null) /
|
|
226
|
+
var _a = this._sharedSmoothTimeline, timeline = _a.timeline, timescale = _a.timescale;
|
|
227
|
+
if (this._scaledLiveGap === undefined) {
|
|
228
|
+
var lastTimelineElement = timeline[timeline.length - 1];
|
|
229
|
+
return getIndexSegmentEnd(lastTimelineElement, null) / timescale;
|
|
238
230
|
}
|
|
239
|
-
for (var i =
|
|
240
|
-
var timelineElt =
|
|
241
|
-
var timescaledNow = (performance.now() / 1000) *
|
|
231
|
+
for (var i = timeline.length - 1; i >= 0; i--) {
|
|
232
|
+
var timelineElt = timeline[i];
|
|
233
|
+
var timescaledNow = (performance.now() / 1000) * timescale;
|
|
242
234
|
var start = timelineElt.start, duration = timelineElt.duration, repeatCount = timelineElt.repeatCount;
|
|
243
235
|
for (var j = repeatCount; j >= 0; j--) {
|
|
244
236
|
var end = start + (duration * (j + 1));
|
|
245
|
-
var positionToReach =
|
|
246
|
-
end;
|
|
237
|
+
var positionToReach = end;
|
|
247
238
|
if (positionToReach <= timescaledNow - this._scaledLiveGap) {
|
|
248
|
-
return end /
|
|
239
|
+
return end / timescale;
|
|
249
240
|
}
|
|
250
241
|
}
|
|
251
242
|
}
|
|
@@ -297,7 +288,7 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
297
288
|
*/
|
|
298
289
|
SmoothRepresentationIndex.prototype.checkDiscontinuity = function (timeSec) {
|
|
299
290
|
this._refreshTimeline();
|
|
300
|
-
return checkDiscontinuity(this.
|
|
291
|
+
return checkDiscontinuity(this._sharedSmoothTimeline, timeSec, undefined);
|
|
301
292
|
};
|
|
302
293
|
/**
|
|
303
294
|
* Returns `true` if a Segment returned by this index is still considered
|
|
@@ -312,7 +303,7 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
312
303
|
return true;
|
|
313
304
|
}
|
|
314
305
|
this._refreshTimeline();
|
|
315
|
-
var _a = this.
|
|
306
|
+
var _a = this._sharedSmoothTimeline, timeline = _a.timeline, timescale = _a.timescale;
|
|
316
307
|
return isSegmentStillAvailable(segment, timeline, timescale, 0);
|
|
317
308
|
};
|
|
318
309
|
/**
|
|
@@ -333,57 +324,9 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
333
324
|
* @param {Object} newIndex
|
|
334
325
|
*/
|
|
335
326
|
SmoothRepresentationIndex.prototype._replace = function (newIndex) {
|
|
336
|
-
var oldTimeline = this._index.timeline;
|
|
337
|
-
var newTimeline = newIndex._index.timeline;
|
|
338
|
-
var oldTimescale = this._index.timescale;
|
|
339
|
-
var newTimescale = newIndex._index.timescale;
|
|
340
|
-
this._index = newIndex._index;
|
|
341
327
|
this._initialScaledLastPosition = newIndex._initialScaledLastPosition;
|
|
342
|
-
this._indexValidityTime = newIndex._indexValidityTime;
|
|
343
328
|
this._scaledLiveGap = newIndex._scaledLiveGap;
|
|
344
|
-
|
|
345
|
-
newTimeline.length === 0 ||
|
|
346
|
-
oldTimescale !== newTimescale) {
|
|
347
|
-
return; // don't take risk, if something is off, take the new one
|
|
348
|
-
}
|
|
349
|
-
var lastOldTimelineElement = oldTimeline[oldTimeline.length - 1];
|
|
350
|
-
var lastNewTimelineElement = newTimeline[newTimeline.length - 1];
|
|
351
|
-
var newEnd = getIndexSegmentEnd(lastNewTimelineElement, null);
|
|
352
|
-
if (getIndexSegmentEnd(lastOldTimelineElement, null) <= newEnd) {
|
|
353
|
-
return;
|
|
354
|
-
}
|
|
355
|
-
for (var i = 0; i < oldTimeline.length; i++) {
|
|
356
|
-
var oldTimelineRange = oldTimeline[i];
|
|
357
|
-
var oldEnd = getIndexSegmentEnd(oldTimelineRange, null);
|
|
358
|
-
if (oldEnd === newEnd) { // just add the supplementary segments
|
|
359
|
-
this._index.timeline = this._index.timeline.concat(oldTimeline.slice(i + 1));
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
if (oldEnd > newEnd) { // adjust repeatCount + add supplementary segments
|
|
363
|
-
if (oldTimelineRange.duration !== lastNewTimelineElement.duration) {
|
|
364
|
-
return;
|
|
365
|
-
}
|
|
366
|
-
var rangeDuration = newEnd - oldTimelineRange.start;
|
|
367
|
-
if (rangeDuration === 0) {
|
|
368
|
-
log.warn("Smooth Parser: a discontinuity detected in the previous manifest" +
|
|
369
|
-
" has been resolved.");
|
|
370
|
-
this._index.timeline = this._index.timeline.concat(oldTimeline.slice(i));
|
|
371
|
-
return;
|
|
372
|
-
}
|
|
373
|
-
if (rangeDuration < 0 || rangeDuration % oldTimelineRange.duration !== 0) {
|
|
374
|
-
return;
|
|
375
|
-
}
|
|
376
|
-
var repeatWithOld = (rangeDuration / oldTimelineRange.duration) - 1;
|
|
377
|
-
var relativeRepeat = oldTimelineRange.repeatCount - repeatWithOld;
|
|
378
|
-
if (relativeRepeat < 0) {
|
|
379
|
-
return;
|
|
380
|
-
}
|
|
381
|
-
lastNewTimelineElement.repeatCount += relativeRepeat;
|
|
382
|
-
var supplementarySegments = oldTimeline.slice(i + 1);
|
|
383
|
-
this._index.timeline = this._index.timeline.concat(supplementarySegments);
|
|
384
|
-
return;
|
|
385
|
-
}
|
|
386
|
-
}
|
|
329
|
+
this._sharedSmoothTimeline.replace(newIndex._sharedSmoothTimeline);
|
|
387
330
|
};
|
|
388
331
|
/**
|
|
389
332
|
* Update the current index with a new, partial, version.
|
|
@@ -391,10 +334,8 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
391
334
|
* @param {Object} newIndex
|
|
392
335
|
*/
|
|
393
336
|
SmoothRepresentationIndex.prototype._update = function (newIndex) {
|
|
394
|
-
updateSegmentTimeline(this._index.timeline, newIndex._index.timeline);
|
|
395
|
-
this._initialScaledLastPosition = newIndex._initialScaledLastPosition;
|
|
396
|
-
this._indexValidityTime = newIndex._indexValidityTime;
|
|
397
337
|
this._scaledLiveGap = newIndex._scaledLiveGap;
|
|
338
|
+
this._sharedSmoothTimeline.update(newIndex._sharedSmoothTimeline);
|
|
398
339
|
};
|
|
399
340
|
/**
|
|
400
341
|
* Returns `true` if the last segments in this index have already been
|
|
@@ -416,38 +357,25 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
416
357
|
SmoothRepresentationIndex.prototype.isInitialized = function () {
|
|
417
358
|
return true;
|
|
418
359
|
};
|
|
360
|
+
SmoothRepresentationIndex.prototype.initialize = function () {
|
|
361
|
+
log.error("A `SmoothRepresentationIndex` does not need to be initialized");
|
|
362
|
+
};
|
|
419
363
|
/**
|
|
420
|
-
* Add
|
|
364
|
+
* Add segments to a `SharedSmoothSegmentTimeline` that were predicted to come
|
|
365
|
+
* after `currentSegment`.
|
|
421
366
|
* @param {Array.<Object>} nextSegments - The segment information parsed.
|
|
422
367
|
* @param {Object} segment - Information on the segment which contained that
|
|
423
368
|
* new segment information.
|
|
424
369
|
*/
|
|
425
|
-
SmoothRepresentationIndex.prototype.
|
|
426
|
-
this.
|
|
427
|
-
for (var i = 0; i < nextSegments.length; i++) {
|
|
428
|
-
addSegmentInfos(this._index, nextSegments[i], currentSegment);
|
|
429
|
-
}
|
|
370
|
+
SmoothRepresentationIndex.prototype.addPredictedSegments = function (nextSegments, currentSegment) {
|
|
371
|
+
this._sharedSmoothTimeline.addPredictedSegments(nextSegments, currentSegment);
|
|
430
372
|
};
|
|
431
373
|
/**
|
|
432
374
|
* Clean-up timeline to remove segment information which should not be
|
|
433
375
|
* available due to the timeshift window
|
|
434
376
|
*/
|
|
435
377
|
SmoothRepresentationIndex.prototype._refreshTimeline = function () {
|
|
436
|
-
|
|
437
|
-
if (this._initialScaledLastPosition == null) {
|
|
438
|
-
return;
|
|
439
|
-
}
|
|
440
|
-
var index = this._index;
|
|
441
|
-
var timeShiftBufferDepth = this._timeShiftBufferDepth;
|
|
442
|
-
var timeSinceLastRealUpdate = (performance.now() -
|
|
443
|
-
this._indexValidityTime) / 1000;
|
|
444
|
-
var lastPositionEstimate = timeSinceLastRealUpdate +
|
|
445
|
-
this._initialScaledLastPosition / index.timescale;
|
|
446
|
-
if (timeShiftBufferDepth != null) {
|
|
447
|
-
var minimumPosition = (lastPositionEstimate - timeShiftBufferDepth) *
|
|
448
|
-
index.timescale;
|
|
449
|
-
clearTimelineFromPosition(index.timeline, minimumPosition);
|
|
450
|
-
}
|
|
378
|
+
this._sharedSmoothTimeline.refresh();
|
|
451
379
|
};
|
|
452
380
|
return SmoothRepresentationIndex;
|
|
453
381
|
}());
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2015 CANAL+ Group
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { ISegment } from "../../../manifest";
|
|
17
|
+
/**
|
|
18
|
+
* Smooth contents provide the index of segments under a "StreamIndex", the
|
|
19
|
+
* smooth equivalent of an AdaptationSet.
|
|
20
|
+
*
|
|
21
|
+
* This means that multiple "QualityLevel" (smooth's Representation) are going
|
|
22
|
+
* to rely on the exact same list of segments. This also means that all
|
|
23
|
+
* mutations on that timeline (whether it is to evict old segments or to add
|
|
24
|
+
* new ones) should presumably happen for all of them at the same time.
|
|
25
|
+
*
|
|
26
|
+
* The `SharedSmoothSegmentTimeline` is an abstraction over that index of
|
|
27
|
+
* segments whose goal is to explicitely provide a data structure that can be
|
|
28
|
+
* shared to every `RepresentationIndex` linked to Representations being part
|
|
29
|
+
* of the same smooth Adaptation, thus allowing to mutualize any side-effect
|
|
30
|
+
* done to it automatically.
|
|
31
|
+
*
|
|
32
|
+
* @class SharedSmoothSegmentTimeline
|
|
33
|
+
*/
|
|
34
|
+
export default class SharedSmoothSegmentTimeline {
|
|
35
|
+
/**
|
|
36
|
+
* Array describing the list of segments available.
|
|
37
|
+
* Note that this same list might be shared by multiple `RepresentationIndex`
|
|
38
|
+
* (as they link to the same timeline in the Manifest).
|
|
39
|
+
*/
|
|
40
|
+
timeline: IIndexSegment[];
|
|
41
|
+
/** Timescale allowing to convert time values in `timeline` into seconds. */
|
|
42
|
+
timescale: number;
|
|
43
|
+
/**
|
|
44
|
+
* Defines the earliest time - in terms of `performance.now()` - when the
|
|
45
|
+
* timeline was known to be valid (that is, when all segments declared in it
|
|
46
|
+
* are available).
|
|
47
|
+
*
|
|
48
|
+
* This is either:
|
|
49
|
+
* - the Manifest downloading time, if known
|
|
50
|
+
* - else, the time of creation of this SharedSmoothSegmentTimeline, as a
|
|
51
|
+
* guess
|
|
52
|
+
*/
|
|
53
|
+
validityTime: number;
|
|
54
|
+
private _timeShiftBufferDepth;
|
|
55
|
+
private _initialScaledLastPosition;
|
|
56
|
+
constructor(args: ISharedSmoothSegmentTimelineArguments);
|
|
57
|
+
/**
|
|
58
|
+
* Clean-up timeline to remove segment information which should not be
|
|
59
|
+
* available due to the timeshift window
|
|
60
|
+
*/
|
|
61
|
+
refresh(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Replace this SharedSmoothSegmentTimeline by a newly downloaded one.
|
|
64
|
+
* Check if the old timeline had more information about new segments and re-add
|
|
65
|
+
* them if that's the case.
|
|
66
|
+
* @param {Object} newSmoothTimeline
|
|
67
|
+
*/
|
|
68
|
+
replace(newSmoothTimeline: SharedSmoothSegmentTimeline): void;
|
|
69
|
+
/**
|
|
70
|
+
* Update the current SharedSmoothSegmentTimeline with a new, partial, version.
|
|
71
|
+
* This method might be use to only add information about new segments.
|
|
72
|
+
* @param {Object} newSmoothTimeline
|
|
73
|
+
*/
|
|
74
|
+
update(newSmoothTimeline: SharedSmoothSegmentTimeline): void;
|
|
75
|
+
/**
|
|
76
|
+
* Add segments to a `SharedSmoothSegmentTimeline` that were predicted to come
|
|
77
|
+
* after `currentSegment`.
|
|
78
|
+
* @param {Array.<Object>} nextSegments - The segment information parsed.
|
|
79
|
+
* @param {Object} segment - Information on the segment which contained that
|
|
80
|
+
* new segment information.
|
|
81
|
+
*/
|
|
82
|
+
addPredictedSegments(nextSegments: Array<{
|
|
83
|
+
duration: number;
|
|
84
|
+
time: number;
|
|
85
|
+
timescale: number;
|
|
86
|
+
}>, currentSegment: ISegment): void;
|
|
87
|
+
}
|
|
88
|
+
export interface ISharedSmoothSegmentTimelineArguments {
|
|
89
|
+
timeline: IIndexSegment[];
|
|
90
|
+
timescale: number;
|
|
91
|
+
timeShiftBufferDepth: number | undefined;
|
|
92
|
+
manifestReceivedTime: number | undefined;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Object describing information about one segment or several consecutive
|
|
96
|
+
* segments.
|
|
97
|
+
*/
|
|
98
|
+
export interface IIndexSegment {
|
|
99
|
+
/** Time (timescaled) at which the segment starts. */
|
|
100
|
+
start: number;
|
|
101
|
+
/** Duration (timescaled) of the segment. */
|
|
102
|
+
duration: number;
|
|
103
|
+
/**
|
|
104
|
+
* Amount of consecutive segments with that duration.
|
|
105
|
+
*
|
|
106
|
+
* For example let's consider the following IIndexSegment:
|
|
107
|
+
* ```
|
|
108
|
+
* { start: 10, duration: 2, repeatCount: 2 }
|
|
109
|
+
* ```
|
|
110
|
+
* Here, because `repeatCount` is set to `2`, this object actually defines 3
|
|
111
|
+
* segments:
|
|
112
|
+
* 1. one starting at `10` and ending at `12` (10 + 2)
|
|
113
|
+
* 2. another one starting at `12` (the previous one's end) and ending at
|
|
114
|
+
* `14` (12 + 2)
|
|
115
|
+
* 3. another one starting at `14` (the previous one's end) and ending at
|
|
116
|
+
* `16` (14 +2)
|
|
117
|
+
*/
|
|
118
|
+
repeatCount: number;
|
|
119
|
+
}
|