rx-player 3.26.2 → 3.27.0-dev.20220317
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/.github/workflows/perfs.yml +22 -0
- package/CHANGELOG.md +33 -1
- package/FILES.md +5 -4
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/browser_detection.d.ts +4 -2
- package/dist/_esm5.processed/compat/browser_detection.js +4 -2
- package/dist/_esm5.processed/compat/eme/close_session.d.ts +11 -5
- package/dist/_esm5.processed/compat/eme/close_session.js +144 -36
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -5
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +27 -24
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +53 -34
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +43 -41
- package/dist/_esm5.processed/compat/eme/generate_key_request.d.ts +2 -3
- package/dist/_esm5.processed/compat/eme/generate_key_request.js +22 -26
- package/dist/_esm5.processed/compat/eme/load_session.d.ts +1 -2
- package/dist/_esm5.processed/compat/eme/load_session.js +68 -17
- package/dist/_esm5.processed/compat/event_listeners.js +2 -1
- package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +2 -2
- package/dist/_esm5.processed/config.d.ts +166 -1080
- package/dist/_esm5.processed/config.js +17 -1119
- package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +4 -1
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +28 -6
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
- package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +1 -1
- package/dist/_esm5.processed/core/abr/network_analyzer.js +2 -1
- package/dist/_esm5.processed/core/abr/pending_requests_store.js +3 -5
- package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +1 -1
- package/dist/_esm5.processed/core/abr/representation_estimator.js +2 -2
- package/dist/_esm5.processed/core/api/get_player_state.js +1 -1
- package/dist/_esm5.processed/core/api/index.d.ts +2 -1
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +6 -0
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +22 -4
- package/dist/_esm5.processed/core/api/option_utils.d.ts +3 -1
- package/dist/_esm5.processed/core/api/option_utils.js +19 -6
- package/dist/_esm5.processed/core/api/playback_observer.js +5 -1
- package/dist/_esm5.processed/core/api/public_api.d.ts +82 -71
- package/dist/_esm5.processed/core/api/public_api.js +72 -33
- package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +6 -6
- package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.d.ts +7 -51
- package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.js +30 -75
- package/dist/_esm5.processed/core/{eme → decrypt}/attach_media_keys.d.ts +12 -12
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +104 -0
- package/dist/_esm5.processed/core/{eme/clear_eme_session.d.ts → decrypt/clear_on_stop.d.ts} +3 -4
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +41 -0
- package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +216 -0
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +866 -0
- package/dist/_esm5.processed/core/{eme/get_session.d.ts → decrypt/create_or_load_session.d.ts} +28 -26
- package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +124 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/create_session.d.ts +22 -19
- package/dist/_esm5.processed/core/decrypt/create_session.js +174 -0
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.d.ts +21 -0
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +81 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/find_key_system.d.ts +11 -14
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +300 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.d.ts +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.js +1 -1
- package/dist/_esm5.processed/core/{eme → decrypt}/get_media_keys.d.ts +13 -5
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +153 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/index.d.ts +5 -6
- package/dist/_esm5.processed/core/{eme → decrypt}/index.js +5 -5
- package/dist/_esm5.processed/core/{eme → decrypt}/init_media_keys.d.ts +6 -4
- package/dist/_esm5.processed/core/decrypt/init_media_keys.js +82 -0
- package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +77 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/session_events_listener.js +25 -24
- package/dist/_esm5.processed/core/{eme → decrypt}/set_server_certificate.d.ts +15 -6
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +141 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/types.d.ts +120 -242
- package/dist/_esm5.processed/core/{eme → decrypt}/types.js +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.d.ts +3 -3
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.js +5 -5
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.d.ts +2 -2
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.js +4 -3
- package/dist/_esm5.processed/core/{eme/utils/close_session.d.ts → decrypt/utils/clean_old_loaded_sessions.d.ts} +8 -7
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +85 -0
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.d.ts +1 -1
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.js +2 -2
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.d.ts +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.js +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.d.ts +69 -0
- package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +99 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.d.ts +0 -1
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.js +4 -5
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.d.ts +44 -0
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +77 -0
- package/dist/_esm5.processed/core/decrypt/utils/key_session_record.d.ts +104 -0
- package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +155 -0
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +108 -0
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +303 -0
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.d.ts +4 -4
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.js +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.d.ts +8 -18
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.js +119 -97
- package/dist/_esm5.processed/core/{eme/utils/init_data_container.d.ts → decrypt/utils/serializable_bytes.d.ts} +8 -5
- package/dist/_esm5.processed/core/{eme/utils/init_data_container.js → decrypt/utils/serializable_bytes.js} +9 -9
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.d.ts +1 -1
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.js +1 -1
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +4 -4
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +3 -3
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +6 -2
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
- package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +1 -1
- package/dist/_esm5.processed/core/init/get_initial_time.js +1 -1
- package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +3 -3
- package/dist/_esm5.processed/core/init/initialize_directfile.js +11 -17
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +5 -3
- package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -69
- package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +61 -0
- package/dist/_esm5.processed/core/init/link_drm_and_content.js +94 -0
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +4 -4
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +2 -1
- package/dist/_esm5.processed/core/init/stall_avoider.js +1 -1
- package/dist/_esm5.processed/core/init/stream_events_emitter/are_same_stream_events.d.ts +4 -4
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +1 -1
- package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
- package/dist/_esm5.processed/core/init/types.d.ts +2 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +3 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +32 -31
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +4 -4
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +17 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +22 -5
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +2 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +6 -3
- package/dist/_esm5.processed/core/stream/events_generators.d.ts +8 -3
- package/dist/_esm5.processed/core/stream/events_generators.js +3 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +1 -0
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +3 -3
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +2 -1
- package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.js +1 -1
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +2 -1
- package/dist/_esm5.processed/core/stream/period/period_stream.js +3 -3
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +5 -6
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +6 -1
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +12 -9
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +19 -14
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +86 -10
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +1 -1
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -3
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +6 -0
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +19 -8
- package/dist/_esm5.processed/core/stream/types.d.ts +1 -1
- package/dist/_esm5.processed/default_config.d.ts +1114 -0
- package/dist/_esm5.processed/default_config.js +1145 -0
- package/dist/_esm5.processed/errors/request_error.js +3 -1
- package/dist/_esm5.processed/experimental/index.d.ts +2 -0
- package/dist/_esm5.processed/experimental/index.js +2 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +1 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +2 -4
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
- package/dist/_esm5.processed/features/features_object.js +1 -1
- package/dist/_esm5.processed/features/initialize_features.js +1 -1
- package/dist/_esm5.processed/features/list/eme.d.ts +3 -3
- package/dist/_esm5.processed/features/list/eme.js +5 -5
- package/dist/_esm5.processed/features/types.d.ts +3 -3
- package/dist/_esm5.processed/manifest/adaptation.d.ts +2 -2
- package/dist/_esm5.processed/manifest/adaptation.js +3 -1
- package/dist/_esm5.processed/manifest/manifest.d.ts +10 -23
- package/dist/_esm5.processed/manifest/manifest.js +10 -74
- package/dist/_esm5.processed/manifest/period.d.ts +3 -3
- package/dist/_esm5.processed/manifest/representation.d.ts +37 -5
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +18 -18
- package/dist/_esm5.processed/manifest/types.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +6 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/is_period_fulfilled.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +14 -14
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +17 -17
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +28 -20
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +20 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -35
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +109 -96
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +8 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +18 -27
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +25 -23
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +21 -15
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +19 -19
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -38
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +8 -8
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +30 -30
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -0
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +15 -5
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +31 -19
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
- package/dist/_esm5.processed/public_types.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +2 -1
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +4 -1
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +1 -1
- package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +1 -1
- package/dist/_esm5.processed/transports/dash/segment_parser.js +6 -3
- package/dist/_esm5.processed/transports/dash/text_loader.d.ts +1 -1
- package/dist/_esm5.processed/transports/dash/text_loader.js +1 -1
- package/dist/_esm5.processed/transports/dash/text_parser.d.ts +1 -1
- package/dist/_esm5.processed/transports/dash/text_parser.js +8 -2
- package/dist/_esm5.processed/transports/local/segment_loader.d.ts +1 -2
- package/dist/_esm5.processed/transports/local/segment_loader.js +1 -1
- package/dist/_esm5.processed/transports/local/segment_parser.js +4 -1
- package/dist/_esm5.processed/transports/local/text_parser.js +8 -2
- package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +1 -1
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
- package/dist/_esm5.processed/transports/smooth/pipelines.js +69 -11
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +0 -1
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/types.d.ts +58 -30
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +1 -1
- package/dist/_esm5.processed/utils/cancellable_sleep.js +1 -1
- package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
- package/dist/_esm5.processed/utils/cast_to_observable.js +1 -1
- package/dist/_esm5.processed/utils/deep_merge.d.ts +12 -0
- package/dist/_esm5.processed/utils/deep_merge.js +53 -0
- package/dist/_esm5.processed/utils/reference.d.ts +29 -0
- package/dist/_esm5.processed/utils/reference.js +72 -24
- package/dist/_esm5.processed/utils/request/fetch.d.ts +4 -5
- package/dist/_esm5.processed/utils/request/fetch.js +8 -6
- package/dist/_esm5.processed/utils/request/xhr.d.ts +6 -6
- package/dist/_esm5.processed/utils/request/xhr.js +3 -2
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +1 -2
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +7 -2
- package/dist/_esm5.processed/utils/task_canceller.d.ts +5 -3
- package/dist/_esm5.processed/utils/task_canceller.js +3 -3
- package/dist/rx-player.js +5242 -3190
- package/dist/rx-player.min.js +1 -1
- package/dummy +1 -0
- package/{dist/_esm5.processed/core/eme/dispose_eme.d.ts → experimental/index.d.ts} +1 -4
- package/{dist/_esm5.processed/core/eme/dispose_media_keys.d.ts → experimental/index.js} +1 -6
- package/package.json +33 -36
- package/scripts/build/templates/experimental/index.d.ts +16 -0
- package/scripts/build/templates/experimental/index.js +16 -0
- package/scripts/doc-generator/generate_header_html.js +6 -7
- package/scripts/doc-generator/generate_page_html.js +3 -4
- package/scripts/doc-generator/generate_page_list_html.js +4 -5
- package/scripts/doc-generator/generate_sidebar_html.js +4 -7
- package/scripts/doc-generator/utils.js +0 -11
- package/scripts/generate_demo_list.js +3 -3
- package/scripts/generate_documentation_list.js +3 -3
- package/scripts/launch_static_server.js +127 -67
- package/scripts/run_standalone_demo.js +1 -0
- package/scripts/start_demo_web_server.js +1 -0
- package/sonar-project.properties +1 -1
- package/src/README.md +6 -6
- package/src/compat/__tests__/fullscreen.test.ts +7 -7
- package/src/compat/__tests__/is_vtt_cue.test.ts +1 -1
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +45 -5
- package/src/compat/browser_detection.ts +4 -2
- package/src/compat/eme/close_session.ts +90 -56
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
- package/src/compat/eme/custom_media_keys/index.ts +28 -41
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +63 -46
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +51 -49
- package/src/compat/eme/generate_key_request.ts +25 -33
- package/src/compat/eme/load_session.ts +29 -31
- package/src/compat/event_listeners.ts +2 -1
- package/src/compat/should_favour_custom_safari_EME.ts +5 -2
- package/src/config.ts +17 -1210
- package/src/core/README.md +1 -1
- package/src/core/abr/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
- package/src/core/abr/bandwidth_estimator.ts +4 -4
- package/src/core/abr/buffer_based_chooser.ts +85 -20
- package/src/core/abr/network_analyzer.ts +6 -7
- package/src/core/abr/pending_requests_store.ts +3 -5
- package/src/core/abr/representation_estimator.ts +6 -3
- package/src/core/api/__tests__/get_player_state.test.ts +3 -3
- package/src/core/api/__tests__/option_utils.test.ts +17 -17
- package/src/core/api/get_player_state.ts +1 -1
- package/src/core/api/index.ts +3 -0
- package/src/core/api/media_element_track_choice_manager.ts +22 -3
- package/src/core/api/option_utils.ts +37 -20
- package/src/core/api/playback_observer.ts +12 -8
- package/src/core/api/public_api.ts +152 -112
- package/src/core/api/track_choice_manager.ts +10 -9
- package/src/core/decrypt/README.md +22 -0
- package/src/core/decrypt/__tests__/__global__/get_license.test.ts +418 -0
- package/src/core/decrypt/__tests__/__global__/init_data.test.ts +675 -0
- package/src/core/{eme → decrypt}/__tests__/__global__/media_key_system_access.test.ts +99 -92
- package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +156 -0
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +262 -0
- package/src/core/{eme → decrypt}/__tests__/__global__/utils.ts +36 -103
- package/src/core/{eme → decrypt}/attach_media_keys.ts +49 -56
- package/src/core/decrypt/clear_on_stop.ts +48 -0
- package/src/core/decrypt/content_decryptor.ts +1158 -0
- package/src/core/decrypt/create_or_load_session.ts +130 -0
- package/src/core/decrypt/create_session.ts +175 -0
- package/src/core/decrypt/dispose_decryption_resources.ts +39 -0
- package/src/core/{eme → decrypt}/find_key_system.ts +126 -134
- package/src/core/{eme → decrypt}/get_current_key_system.ts +1 -1
- package/src/core/decrypt/get_media_keys.ts +145 -0
- package/src/core/{eme → decrypt}/index.ts +11 -8
- package/src/core/decrypt/init_media_keys.ts +51 -0
- package/src/core/{eme → decrypt}/session_events_listener.ts +93 -55
- package/src/core/decrypt/set_server_certificate.ts +104 -0
- package/src/core/{eme → decrypt}/types.ts +129 -259
- package/src/core/{eme → decrypt}/utils/__tests__/are_init_values_compatible.test.ts +1 -1
- package/src/core/{eme → decrypt/utils}/__tests__/clean_old_loaded_sessions.test.ts +29 -71
- package/src/core/{eme → decrypt/utils}/__tests__/clean_old_stored_persistent_info.test.ts +6 -6
- package/src/core/{eme → decrypt}/utils/are_init_values_compatible.ts +9 -9
- package/src/core/{eme → decrypt/utils}/check_key_statuses.ts +6 -5
- package/{dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js → src/core/decrypt/utils/clean_old_loaded_sessions.ts} +20 -20
- package/src/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.ts +3 -3
- package/src/core/{eme → decrypt/utils}/get_drm_system_id.ts +1 -1
- package/src/core/decrypt/utils/init_data_values_container.ts +119 -0
- package/src/core/{eme → decrypt}/utils/is_session_usable.ts +4 -5
- package/src/core/decrypt/utils/key_id_comparison.ts +82 -0
- package/src/core/decrypt/utils/key_session_record.ts +175 -0
- package/src/core/decrypt/utils/loaded_sessions_store.ts +318 -0
- package/src/core/{eme → decrypt/utils}/media_keys_infos_store.ts +4 -4
- package/src/core/{eme → decrypt}/utils/persistent_sessions_store.ts +122 -104
- package/src/core/{eme/utils/init_data_container.ts → decrypt/utils/serializable_bytes.ts} +8 -5
- package/src/core/{eme → decrypt/utils}/server_certificate_store.ts +2 -2
- package/src/core/fetchers/manifest/manifest_fetcher.ts +9 -9
- package/src/core/fetchers/segment/segment_fetcher.ts +10 -7
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +2 -2
- package/src/core/fetchers/utils/try_urls_with_backoff.ts +1 -1
- package/src/core/init/.initialize_media_source.ts.un~ +0 -0
- package/src/core/init/get_initial_time.ts +2 -1
- package/src/core/init/initialize_directfile.ts +19 -22
- package/src/core/init/initialize_media_source.ts +43 -106
- package/src/core/init/link_drm_and_content.ts +176 -0
- package/src/core/init/manifest_update_scheduler.ts +12 -10
- package/src/core/init/stall_avoider.ts +6 -5
- package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +2 -1
- package/src/core/init/stream_events_emitter/types.ts +2 -2
- package/src/core/init/types.ts +1 -39
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -1
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +6 -7
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +32 -31
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -4
- package/src/core/segment_buffers/inventory/segment_inventory.ts +42 -8
- package/src/core/stream/adaptation/adaptation_stream.ts +7 -1
- package/src/core/stream/events_generators.ts +9 -4
- package/src/core/stream/orchestrator/stream_orchestrator.ts +9 -4
- package/src/core/stream/period/create_empty_adaptation_stream.ts +2 -1
- package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -1
- package/src/core/stream/period/period_stream.ts +5 -2
- package/src/core/stream/representation/force_garbage_collection.ts +5 -7
- package/src/core/stream/representation/get_buffer_status.ts +28 -16
- package/src/core/stream/representation/get_needed_segments.ts +124 -28
- package/src/core/stream/representation/get_segment_priority.ts +1 -2
- package/src/core/stream/representation/push_media_segment.ts +3 -2
- package/src/core/stream/representation/representation_stream.ts +30 -7
- package/src/core/stream/types.ts +1 -1
- package/src/default_config.ts +1241 -0
- package/src/errors/request_error.ts +4 -1
- package/src/experimental/index.ts +5 -0
- package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +1 -0
- package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +5 -7
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +3 -10
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +4 -4
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +1 -1
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
- package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +1 -2
- package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +1 -2
- package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
- package/src/features/__tests__/initialize_features.test.ts +2 -2
- package/src/features/features_object.ts +1 -1
- package/src/features/initialize_features.ts +1 -1
- package/src/features/list/__tests__/eme.test.ts +5 -5
- package/src/features/list/eme.ts +5 -5
- package/src/features/types.ts +3 -10
- package/src/manifest/adaptation.ts +6 -4
- package/src/manifest/manifest.ts +16 -86
- package/src/manifest/period.ts +3 -3
- package/src/manifest/representation.ts +38 -5
- package/src/manifest/representation_index/types.ts +18 -18
- package/src/manifest/types.ts +3 -3
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
- package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
- package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
- package/src/parsers/manifest/dash/common/indexes/base.ts +6 -6
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +4 -2
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +2 -2
- package/src/parsers/manifest/dash/common/indexes/is_period_fulfilled.ts +1 -2
- package/src/parsers/manifest/dash/common/indexes/list.ts +14 -14
- package/src/parsers/manifest/dash/common/indexes/template.ts +18 -18
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +51 -23
- package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +167 -134
- package/src/parsers/manifest/dash/common/parse_mpd.ts +9 -10
- package/src/parsers/manifest/dash/common/parse_periods.ts +80 -79
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +83 -75
- package/src/parsers/manifest/dash/common/parse_representations.ts +44 -63
- package/src/parsers/manifest/dash/node_parser_types.ts +30 -30
- package/src/parsers/manifest/dash/parsers_types.ts +3 -3
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -1
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +4 -4
- package/src/parsers/manifest/smooth/create_parser.ts +24 -21
- package/src/parsers/manifest/smooth/representation_index.ts +14 -14
- package/src/parsers/manifest/types.ts +28 -28
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +31 -33
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +15 -6
- package/src/parsers/manifest/utils/index_helpers.ts +2 -2
- package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
- package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +1 -0
- package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
- package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
- package/src/public_types.ts +5 -1
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +2 -2
- package/src/transports/dash/image_pipelines.ts +4 -1
- package/src/transports/dash/init_segment_loader.ts +1 -1
- package/src/transports/dash/manifest_parser.ts +1 -1
- package/src/transports/dash/segment_loader.ts +7 -7
- package/src/transports/dash/segment_parser.ts +8 -1
- package/src/transports/dash/text_loader.ts +2 -2
- package/src/transports/dash/text_parser.ts +11 -1
- package/src/transports/local/segment_loader.ts +4 -4
- package/src/transports/local/segment_parser.ts +4 -0
- package/src/transports/local/text_parser.ts +8 -0
- package/src/transports/metaplaylist/manifest_loader.ts +1 -1
- package/src/transports/metaplaylist/pipelines.ts +1 -1
- package/src/transports/smooth/pipelines.ts +29 -16
- package/src/transports/smooth/segment_loader.ts +8 -8
- package/src/transports/types.ts +59 -30
- package/src/transports/utils/call_custom_manifest_loader.ts +6 -6
- package/src/transports/utils/generate_manifest_loader.ts +1 -1
- package/src/utils/__tests__/deep_merge.test.ts +48 -0
- package/src/utils/__tests__/flat_map.test.ts +12 -7
- package/src/utils/cancellable_sleep.ts +1 -1
- package/src/utils/cast_to_observable.ts +1 -2
- package/src/utils/deep_merge.ts +46 -0
- package/src/utils/reference.ts +116 -23
- package/src/utils/request/fetch.ts +17 -15
- package/src/utils/request/xhr.ts +11 -8
- package/src/utils/rx-from_cancellable_promise.ts +8 -4
- package/src/utils/task_canceller.ts +6 -4
- package/tsconfig.json +1 -2
- package/tsconfig.modules.json +1 -2
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
- package/dist/_esm5.processed/core/eme/attach_media_keys.js +0 -57
- package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.d.ts +0 -59
- package/dist/_esm5.processed/core/eme/clear_eme_session.js +0 -50
- package/dist/_esm5.processed/core/eme/create_session.js +0 -126
- package/dist/_esm5.processed/core/eme/dispose_eme.js +0 -23
- package/dist/_esm5.processed/core/eme/dispose_media_keys.js +0 -36
- package/dist/_esm5.processed/core/eme/eme_manager.d.ts +0 -31
- package/dist/_esm5.processed/core/eme/eme_manager.js +0 -278
- package/dist/_esm5.processed/core/eme/find_key_system.js +0 -243
- package/dist/_esm5.processed/core/eme/get_media_keys.js +0 -85
- package/dist/_esm5.processed/core/eme/get_session.js +0 -68
- package/dist/_esm5.processed/core/eme/init_media_keys.js +0 -66
- package/dist/_esm5.processed/core/eme/session_events_listener.d.ts +0 -41
- package/dist/_esm5.processed/core/eme/set_server_certificate.js +0 -85
- package/dist/_esm5.processed/core/eme/utils/close_session.js +0 -81
- package/dist/_esm5.processed/core/eme/utils/init_data_store.d.ts +0 -115
- package/dist/_esm5.processed/core/eme/utils/init_data_store.js +0 -181
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.d.ts +0 -123
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +0 -173
- package/dist/_esm5.processed/core/init/create_eme_manager.d.ts +0 -34
- package/dist/_esm5.processed/core/init/create_eme_manager.js +0 -52
- package/src/core/abr/get_estimate_from_buffer_levels.ts +0 -85
- package/src/core/eme/README.md +0 -26
- package/src/core/eme/__tests__/__global__/get_license.test.ts +0 -414
- package/src/core/eme/__tests__/__global__/init_data.test.ts +0 -908
- package/src/core/eme/__tests__/__global__/media_keys.test.ts +0 -266
- package/src/core/eme/__tests__/__global__/server_certificate.test.ts +0 -364
- package/src/core/eme/__tests__/init_media_keys.test.ts +0 -182
- package/src/core/eme/clean_old_loaded_sessions.ts +0 -96
- package/src/core/eme/clear_eme_session.ts +0 -62
- package/src/core/eme/create_session.ts +0 -187
- package/src/core/eme/dispose_eme.ts +0 -25
- package/src/core/eme/dispose_media_keys.ts +0 -46
- package/src/core/eme/eme_manager.ts +0 -387
- package/src/core/eme/get_media_keys.ts +0 -141
- package/src/core/eme/get_session.ts +0 -135
- package/src/core/eme/init_media_keys.ts +0 -106
- package/src/core/eme/set_server_certificate.ts +0 -115
- package/src/core/eme/utils/close_session.ts +0 -113
- package/src/core/eme/utils/init_data_store.ts +0 -234
- package/src/core/eme/utils/loaded_sessions_store.ts +0 -235
- package/src/core/init/create_eme_manager.ts +0 -95
|
@@ -17,25 +17,32 @@
|
|
|
17
17
|
* Remove segments which starts before the given `firstAvailablePosition` from
|
|
18
18
|
* the timeline. `firstAvailablePosition` has to be time scaled.
|
|
19
19
|
* @param {Array.<Object>}
|
|
20
|
-
* @returns {number}
|
|
20
|
+
* @returns {number} - Returns the number of removed segments. This includes
|
|
21
|
+
* potential implicit segment from decremented `repeatCount` attributes.
|
|
21
22
|
*/
|
|
22
23
|
export default function clearTimelineFromPosition(timeline, firstAvailablePosition) {
|
|
24
|
+
var nbEltsRemoved = 0;
|
|
23
25
|
while (timeline.length > 0) {
|
|
24
26
|
var firstElt = timeline[0];
|
|
25
27
|
if (firstElt.start >= firstAvailablePosition) {
|
|
26
|
-
return; // all clear
|
|
28
|
+
return nbEltsRemoved; // all clear
|
|
27
29
|
}
|
|
28
|
-
if (firstElt.repeatCount
|
|
30
|
+
if (firstElt.repeatCount === -1) {
|
|
31
|
+
return nbEltsRemoved;
|
|
32
|
+
}
|
|
33
|
+
else if (firstElt.repeatCount === 0) {
|
|
29
34
|
timeline.shift();
|
|
35
|
+
nbEltsRemoved += 1;
|
|
30
36
|
}
|
|
31
37
|
else { // we have a segment repetition
|
|
32
38
|
var nextElt = timeline[1];
|
|
33
39
|
if (nextElt !== undefined && nextElt.start <= firstAvailablePosition) {
|
|
34
40
|
timeline.shift();
|
|
41
|
+
nbEltsRemoved += 1;
|
|
35
42
|
}
|
|
36
43
|
else { // no next segment or next segment is available
|
|
37
44
|
if (firstElt.duration <= 0) {
|
|
38
|
-
return;
|
|
45
|
+
return nbEltsRemoved;
|
|
39
46
|
}
|
|
40
47
|
var nextStart = firstElt.start + firstElt.duration;
|
|
41
48
|
var nextRepeat = 1;
|
|
@@ -46,14 +53,17 @@ export default function clearTimelineFromPosition(timeline, firstAvailablePositi
|
|
|
46
53
|
}
|
|
47
54
|
if (nextRepeat > firstElt.repeatCount) { // every start is before
|
|
48
55
|
timeline.shift();
|
|
56
|
+
nbEltsRemoved = firstElt.repeatCount + 1;
|
|
49
57
|
}
|
|
50
58
|
else { // some repetitions start after and some before
|
|
51
59
|
var newRepeat = firstElt.repeatCount - nextRepeat;
|
|
52
60
|
firstElt.start = nextStart;
|
|
53
61
|
firstElt.repeatCount = newRepeat;
|
|
54
|
-
|
|
62
|
+
nbEltsRemoved += nextRepeat;
|
|
63
|
+
return nbEltsRemoved;
|
|
55
64
|
}
|
|
56
65
|
}
|
|
57
66
|
}
|
|
58
67
|
}
|
|
68
|
+
return nbEltsRemoved;
|
|
59
69
|
}
|
|
@@ -25,7 +25,7 @@ export interface IIndexSegment {
|
|
|
25
25
|
*/
|
|
26
26
|
repeatCount: number;
|
|
27
27
|
/** Optional byte-range the segment is available at when requested. */
|
|
28
|
-
range?: [number, number];
|
|
28
|
+
range?: [number, number] | undefined;
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* Calculate the number of times a timeline element repeats based on the next
|
|
@@ -35,7 +35,7 @@ export interface IIndexSegment {
|
|
|
35
35
|
* @param {number|undefined} maxPosition
|
|
36
36
|
* @returns {Number}
|
|
37
37
|
*/
|
|
38
|
-
export declare function calculateRepeat(element: IIndexSegment, nextElement?: IIndexSegment | null | undefined, maxPosition?: number): number;
|
|
38
|
+
export declare function calculateRepeat(element: IIndexSegment, nextElement?: IIndexSegment | null | undefined, maxPosition?: number | undefined): number;
|
|
39
39
|
/**
|
|
40
40
|
* Returns end of the segment given, in index time.
|
|
41
41
|
* @param {Object} segment
|
|
@@ -17,7 +17,17 @@ import { IIndexSegment } from "./index_helpers";
|
|
|
17
17
|
/**
|
|
18
18
|
* Update a complete array of segments in a given timeline with a [generally]
|
|
19
19
|
* smaller but [generally] newer set of segments.
|
|
20
|
+
*
|
|
21
|
+
* Returns a boolean:
|
|
22
|
+
* - If set to `true`, the old timeline was emptied and completely replaced by
|
|
23
|
+
* the content of the newer timeline.
|
|
24
|
+
* This could happen either if a problem happened while trying to update or
|
|
25
|
+
* when the update is actually bigger than what it is updating.
|
|
26
|
+
* - If set to `false`, the older timeline was either updated to add the newer
|
|
27
|
+
* segments, or untouched.
|
|
28
|
+
*
|
|
20
29
|
* @param {Array.<Object>} oldTimeline
|
|
21
30
|
* @param {Array.<Object>} newTimeline
|
|
31
|
+
* @returns {boolean}
|
|
22
32
|
*/
|
|
23
|
-
export default function updateSegmentTimeline(oldTimeline: IIndexSegment[], newTimeline: IIndexSegment[]):
|
|
33
|
+
export default function updateSegmentTimeline(oldTimeline: IIndexSegment[], newTimeline: IIndexSegment[]): boolean;
|
|
@@ -28,18 +28,28 @@ import { getIndexSegmentEnd, } from "./index_helpers";
|
|
|
28
28
|
/**
|
|
29
29
|
* Update a complete array of segments in a given timeline with a [generally]
|
|
30
30
|
* smaller but [generally] newer set of segments.
|
|
31
|
+
*
|
|
32
|
+
* Returns a boolean:
|
|
33
|
+
* - If set to `true`, the old timeline was emptied and completely replaced by
|
|
34
|
+
* the content of the newer timeline.
|
|
35
|
+
* This could happen either if a problem happened while trying to update or
|
|
36
|
+
* when the update is actually bigger than what it is updating.
|
|
37
|
+
* - If set to `false`, the older timeline was either updated to add the newer
|
|
38
|
+
* segments, or untouched.
|
|
39
|
+
*
|
|
31
40
|
* @param {Array.<Object>} oldTimeline
|
|
32
41
|
* @param {Array.<Object>} newTimeline
|
|
42
|
+
* @returns {boolean}
|
|
33
43
|
*/
|
|
34
44
|
export default function updateSegmentTimeline(oldTimeline, newTimeline) {
|
|
35
|
-
var prevTimelineLength = oldTimeline.length;
|
|
36
45
|
if (oldTimeline.length === 0) {
|
|
37
|
-
oldTimeline.
|
|
38
|
-
return;
|
|
46
|
+
oldTimeline.push.apply(oldTimeline, newTimeline);
|
|
47
|
+
return true;
|
|
39
48
|
}
|
|
40
|
-
if (newTimeline.length === 0) {
|
|
41
|
-
return;
|
|
49
|
+
else if (newTimeline.length === 0) {
|
|
50
|
+
return false;
|
|
42
51
|
}
|
|
52
|
+
var prevTimelineLength = oldTimeline.length;
|
|
43
53
|
var newIndexStart = newTimeline[0].start;
|
|
44
54
|
var oldLastElt = oldTimeline[prevTimelineLength - 1];
|
|
45
55
|
var oldIndexEnd = getIndexSegmentEnd(oldLastElt, newTimeline[0]);
|
|
@@ -50,16 +60,18 @@ export default function updateSegmentTimeline(oldTimeline, newTimeline) {
|
|
|
50
60
|
var currStart = oldTimeline[i].start;
|
|
51
61
|
if (currStart === newIndexStart) {
|
|
52
62
|
// replace that one and those after it
|
|
53
|
-
|
|
54
|
-
|
|
63
|
+
var nbEltsToRemove = prevTimelineLength - i;
|
|
64
|
+
oldTimeline.splice.apply(oldTimeline, __spreadArray([i, nbEltsToRemove], newTimeline, false));
|
|
65
|
+
return false;
|
|
55
66
|
}
|
|
56
67
|
else if (currStart < newIndexStart) { // first to be before
|
|
57
68
|
var currElt = oldTimeline[i];
|
|
58
69
|
if (currElt.start + currElt.duration > newIndexStart) {
|
|
59
|
-
//
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
70
|
+
// The new Manifest overlaps a previous segment (weird)
|
|
71
|
+
// In that improbable case, we'll just completely replace segments
|
|
72
|
+
log.warn("RepresentationIndex: Manifest update removed all previous segments");
|
|
73
|
+
oldTimeline.splice.apply(oldTimeline, __spreadArray([0, prevTimelineLength], newTimeline, false));
|
|
74
|
+
return true;
|
|
63
75
|
}
|
|
64
76
|
else if (currElt.repeatCount === undefined || currElt.repeatCount <= 0) {
|
|
65
77
|
if (currElt.repeatCount < 0) {
|
|
@@ -67,7 +79,7 @@ export default function updateSegmentTimeline(oldTimeline, newTimeline) {
|
|
|
67
79
|
currElt.duration) - 1;
|
|
68
80
|
}
|
|
69
81
|
oldTimeline.splice.apply(oldTimeline, __spreadArray([i + 1, prevTimelineLength - (i + 1)], newTimeline, false));
|
|
70
|
-
return;
|
|
82
|
+
return false;
|
|
71
83
|
}
|
|
72
84
|
// else, there is a positive repeat we might want to update
|
|
73
85
|
var eltLastTime = currElt.start + currElt.duration * (currElt.repeatCount + 1);
|
|
@@ -75,7 +87,7 @@ export default function updateSegmentTimeline(oldTimeline, newTimeline) {
|
|
|
75
87
|
// put it after this one
|
|
76
88
|
oldTimeline.splice.apply(// our new index comes directly after
|
|
77
89
|
oldTimeline, __spreadArray([i + 1, prevTimelineLength - (i + 1)], newTimeline, false));
|
|
78
|
-
return;
|
|
90
|
+
return false;
|
|
79
91
|
}
|
|
80
92
|
var newCurrRepeat = ((newIndexStart - currElt.start) / currElt.duration) - 1;
|
|
81
93
|
if (newCurrRepeat % 1 === 0 && currElt.duration === newTimeline[0].duration) {
|
|
@@ -86,13 +98,13 @@ export default function updateSegmentTimeline(oldTimeline, newTimeline) {
|
|
|
86
98
|
oldTimeline.splice.apply(oldTimeline, __spreadArray([i, prevTimelineLength - i], newTimeline, false));
|
|
87
99
|
oldTimeline[i].start = currElt.start;
|
|
88
100
|
oldTimeline[i].repeatCount = newRepeatCount;
|
|
89
|
-
return;
|
|
101
|
+
return false;
|
|
90
102
|
}
|
|
91
103
|
log.warn("RepresentationIndex: Manifest update removed previous segments");
|
|
92
104
|
oldTimeline[i].repeatCount = Math.floor(newCurrRepeat);
|
|
93
105
|
// put it after this one
|
|
94
106
|
oldTimeline.splice.apply(oldTimeline, __spreadArray([i + 1, prevTimelineLength - (i + 1)], newTimeline, false));
|
|
95
|
-
return;
|
|
107
|
+
return false;
|
|
96
108
|
}
|
|
97
109
|
}
|
|
98
110
|
// if we got here, it means that every segments in the previous manifest are
|
|
@@ -103,12 +115,12 @@ export default function updateSegmentTimeline(oldTimeline, newTimeline) {
|
|
|
103
115
|
if (prevLastElt.repeatCount !== undefined && prevLastElt.repeatCount < 0) {
|
|
104
116
|
if (prevLastElt.start > newLastElt.start) {
|
|
105
117
|
log.warn("RepresentationIndex: The new index is older than the previous one");
|
|
106
|
-
return;
|
|
118
|
+
return false;
|
|
107
119
|
}
|
|
108
120
|
else { // the new has more depth
|
|
109
121
|
log.warn("RepresentationIndex: The new index is \"bigger\" than the previous one");
|
|
110
122
|
oldTimeline.splice.apply(oldTimeline, __spreadArray([0, prevTimelineLength], newTimeline, false));
|
|
111
|
-
return;
|
|
123
|
+
return true;
|
|
112
124
|
}
|
|
113
125
|
}
|
|
114
126
|
var prevLastTime = prevLastElt.start + prevLastElt.duration *
|
|
@@ -117,10 +129,10 @@ export default function updateSegmentTimeline(oldTimeline, newTimeline) {
|
|
|
117
129
|
(newLastElt.repeatCount + 1);
|
|
118
130
|
if (prevLastTime >= newLastTime) {
|
|
119
131
|
log.warn("RepresentationIndex: The new index is older than the previous one");
|
|
120
|
-
return;
|
|
132
|
+
return false;
|
|
121
133
|
}
|
|
122
134
|
// the new one has more depth. full update
|
|
123
135
|
log.warn("RepresentationIndex: The new index is \"bigger\" than the previous one");
|
|
124
136
|
oldTimeline.splice.apply(oldTimeline, __spreadArray([0, prevTimelineLength], newTimeline, false));
|
|
125
|
-
return;
|
|
137
|
+
return true;
|
|
126
138
|
}
|
|
@@ -35,9 +35,9 @@ export default function toHTML(cueObj: {
|
|
|
35
35
|
start: number;
|
|
36
36
|
end: number;
|
|
37
37
|
settings: Partial<Record<string, string>>;
|
|
38
|
-
header?: string;
|
|
38
|
+
header?: string | undefined;
|
|
39
39
|
payload: string[];
|
|
40
40
|
}, styling: {
|
|
41
41
|
classes: IStyleElements;
|
|
42
|
-
global?: string;
|
|
42
|
+
global?: string | undefined;
|
|
43
43
|
}): IVTTHTMLCue;
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
* This file exports types we want to expose to library users.
|
|
18
18
|
* Those types are considered as part of the API.
|
|
19
19
|
*/
|
|
20
|
-
export { IConstructorOptions, ILoadVideoOptions, ITransportOptions, IKeySystemOption, ISupplementaryTextTrackOption, ISupplementaryImageTrackOption, IDefaultAudioTrackOption, IDefaultTextTrackOption, INetworkConfigOption, IStartAtOption, ITMAudioTrackListItem as IAvailableAudioTrack, ITMTextTrackListItem as IAvailableTextTrack, ITMVideoTrackListItem as IAvailableVideoTrack, ITMAudioTrack as IAudioTrack, ITMTextTrack as ITextTrack, ITMVideoTrack as IVideoTrack, IAudioTrackPreference, ITextTrackPreference, IVideoTrackPreference, IStreamEvent, IStreamEventData, } from "./core/api";
|
|
21
|
-
export { IPersistentSessionInfo, IPersistentSessionStorage, } from "./core/
|
|
20
|
+
export { IConstructorOptions, ILoadVideoOptions, ITransportOptions, IKeySystemOption, ISupplementaryTextTrackOption, ISupplementaryImageTrackOption, IDefaultAudioTrackOption, IDefaultTextTrackOption, INetworkConfigOption, IStartAtOption, ITMAudioTrackListItem as IAvailableAudioTrack, ITMTextTrackListItem as IAvailableTextTrack, ITMVideoTrackListItem as IAvailableVideoTrack, ITMAudioTrack as IAudioTrack, ITMTextTrack as ITextTrack, ITMVideoTrack as IVideoTrack, IAudioTrackPreference, ITextTrackPreference, IVideoTrackPreference, IBitrateEstimate, IPositionUpdateItem as IPositionUpdate, IPlayerState, IStreamEvent, IStreamEventData, } from "./core/api";
|
|
21
|
+
export { IPersistentSessionInfo, IPersistentSessionStorage, } from "./core/decrypt";
|
|
22
22
|
export { ICustomError as IPlayerError } from "./errors";
|
|
23
23
|
export { IExposedAdaptation as IAdaptation, IExposedManifest as IManifest, IExposedPeriod as IPeriod, IExposedRepresentation as IRepresentation, IExposedSegment as ISegment, IRepresentationFilter, IRepresentationInfos, } from "./manifest";
|
|
24
24
|
export { ICustomSegmentLoader as ISegmentLoader, ICustomManifestLoader as IManifestLoader, } from "./transports";
|
|
@@ -24,6 +24,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
24
24
|
};
|
|
25
25
|
return __assign.apply(this, arguments);
|
|
26
26
|
};
|
|
27
|
+
import PPromise from "../../utils/promise";
|
|
27
28
|
import TaskCanceller from "../../utils/task_canceller";
|
|
28
29
|
import checkISOBMFFIntegrity from "../utils/check_isobmff_integrity";
|
|
29
30
|
import inferSegmentContainer from "../utils/infer_segment_container";
|
|
@@ -36,7 +37,7 @@ import inferSegmentContainer from "../utils/infer_segment_container";
|
|
|
36
37
|
*/
|
|
37
38
|
export default function addSegmentIntegrityChecks(segmentLoader) {
|
|
38
39
|
return function (url, content, initialCancelSignal, callbacks) {
|
|
39
|
-
return new
|
|
40
|
+
return new PPromise(function (res, rej) {
|
|
40
41
|
var canceller = new TaskCanceller();
|
|
41
42
|
var unregisterCancelLstnr = initialCancelSignal
|
|
42
43
|
.register(function onCheckCancellation(err) {
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import PPromise from "pinkie";
|
|
17
16
|
import features from "../../features";
|
|
17
|
+
import PPromise from "../../utils/promise";
|
|
18
18
|
import request from "../../utils/request";
|
|
19
19
|
import takeFirstSet from "../../utils/take_first_set";
|
|
20
20
|
/**
|
|
@@ -47,6 +47,7 @@ export function imageParser(loadedSegment, content) {
|
|
|
47
47
|
if (content.segment.isInit) { // image init segment has no use
|
|
48
48
|
return { segmentType: "init",
|
|
49
49
|
initializationData: null,
|
|
50
|
+
initializationDataSize: 0,
|
|
50
51
|
protectionDataUpdate: false,
|
|
51
52
|
initTimescale: undefined };
|
|
52
53
|
}
|
|
@@ -58,6 +59,7 @@ export function imageParser(loadedSegment, content) {
|
|
|
58
59
|
if (data === null || features.imageParser === null) {
|
|
59
60
|
return { segmentType: "media",
|
|
60
61
|
chunkData: null,
|
|
62
|
+
chunkSize: 0,
|
|
61
63
|
chunkInfos: { duration: segment.duration,
|
|
62
64
|
time: segment.time }, chunkOffset: chunkOffset, protectionDataUpdate: false,
|
|
63
65
|
appendWindow: [period.start, period.end] };
|
|
@@ -70,6 +72,7 @@ export function imageParser(loadedSegment, content) {
|
|
|
70
72
|
end: Number.MAX_VALUE,
|
|
71
73
|
timescale: 1,
|
|
72
74
|
type: "bif" },
|
|
75
|
+
chunkSize: undefined,
|
|
73
76
|
chunkInfos: { time: 0,
|
|
74
77
|
duration: Number.MAX_VALUE }, chunkOffset: chunkOffset, protectionDataUpdate: false,
|
|
75
78
|
appendWindow: [period.start, period.end] };
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import PPromise from "pinkie";
|
|
17
16
|
import { concat } from "../../utils/byte_parsing";
|
|
17
|
+
import PPromise from "../../utils/promise";
|
|
18
18
|
import request from "../../utils/request";
|
|
19
19
|
import byteRange from "../utils/byte_range";
|
|
20
20
|
/**
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import PPromise from "pinkie";
|
|
17
16
|
import { formatError } from "../../errors";
|
|
18
17
|
import features from "../../features";
|
|
19
18
|
import log from "../../log";
|
|
20
19
|
import Manifest from "../../manifest";
|
|
21
20
|
import objectAssign from "../../utils/object_assign";
|
|
21
|
+
import PPromise from "../../utils/promise";
|
|
22
22
|
import request from "../../utils/request";
|
|
23
23
|
import { strToUtf8, utf8ToStr, } from "../../utils/string_parsing";
|
|
24
24
|
export default function generateManifestParser(options) {
|
|
@@ -31,6 +31,6 @@ export declare function regularSegmentLoader(url: string, content: ISegmentConte
|
|
|
31
31
|
*/
|
|
32
32
|
export default function generateSegmentLoader({ lowLatencyMode, segmentLoader: customSegmentLoader, checkMediaSegmentIntegrity }: {
|
|
33
33
|
lowLatencyMode: boolean;
|
|
34
|
-
segmentLoader?: ICustomSegmentLoader;
|
|
35
|
-
checkMediaSegmentIntegrity?: boolean;
|
|
34
|
+
segmentLoader?: ICustomSegmentLoader | undefined;
|
|
35
|
+
checkMediaSegmentIntegrity?: boolean | undefined;
|
|
36
36
|
}): ISegmentLoader<Uint8Array | ArrayBuffer | null>;
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import PPromise from "pinkie";
|
|
17
16
|
import { CustomLoaderError } from "../../errors";
|
|
17
|
+
import PPromise from "../../utils/promise";
|
|
18
18
|
import request, { fetchIsSupported, } from "../../utils/request";
|
|
19
19
|
import warnOnce from "../../utils/warn_once";
|
|
20
20
|
import byteRange from "../utils/byte_range";
|
|
@@ -79,7 +79,7 @@ export default function generateSegmentLoader(_a) {
|
|
|
79
79
|
representation: content.representation,
|
|
80
80
|
segment: content.segment,
|
|
81
81
|
transport: "dash", url: url };
|
|
82
|
-
return new
|
|
82
|
+
return new PPromise(function (res, rej) {
|
|
83
83
|
/** `true` when the custom segmentLoader should not be active anymore. */
|
|
84
84
|
var hasFinished = false;
|
|
85
85
|
/**
|
|
@@ -19,5 +19,5 @@ import { ISegmentParser } from "../types";
|
|
|
19
19
|
* @returns {Function}
|
|
20
20
|
*/
|
|
21
21
|
export default function generateAudioVideoSegmentParser({ __priv_patchLastSegmentInSidx }: {
|
|
22
|
-
__priv_patchLastSegmentInSidx?: boolean;
|
|
22
|
+
__priv_patchLastSegmentInSidx?: boolean | undefined;
|
|
23
23
|
}): ISegmentParser<ArrayBuffer | Uint8Array | null, ArrayBuffer | Uint8Array | null>;
|
|
@@ -36,11 +36,13 @@ export default function generateAudioVideoSegmentParser(_a) {
|
|
|
36
36
|
if (segment.isInit) {
|
|
37
37
|
return { segmentType: "init",
|
|
38
38
|
initializationData: null,
|
|
39
|
+
initializationDataSize: 0,
|
|
39
40
|
protectionDataUpdate: false,
|
|
40
41
|
initTimescale: undefined };
|
|
41
42
|
}
|
|
42
43
|
return { segmentType: "media",
|
|
43
44
|
chunkData: null,
|
|
45
|
+
chunkSize: 0,
|
|
44
46
|
chunkInfos: null,
|
|
45
47
|
chunkOffset: 0,
|
|
46
48
|
protectionDataUpdate: false, appendWindow: appendWindow };
|
|
@@ -74,11 +76,11 @@ export default function generateAudioVideoSegmentParser(_a) {
|
|
|
74
76
|
var events = getEventsOutOfEMSGs(whitelistedEMSGs, manifest.publishTime);
|
|
75
77
|
if (events !== undefined) {
|
|
76
78
|
var needsManifestRefresh = events.needsManifestRefresh, inbandEvents = events.inbandEvents;
|
|
77
|
-
return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: chunkOffset, appendWindow: appendWindow, inbandEvents: inbandEvents, protectionDataUpdate: protectionDataUpdate, needsManifestRefresh: needsManifestRefresh };
|
|
79
|
+
return { segmentType: "media", chunkData: chunkData, chunkSize: chunkData.length, chunkInfos: chunkInfos, chunkOffset: chunkOffset, appendWindow: appendWindow, inbandEvents: inbandEvents, protectionDataUpdate: protectionDataUpdate, needsManifestRefresh: needsManifestRefresh };
|
|
78
80
|
}
|
|
79
81
|
}
|
|
80
82
|
}
|
|
81
|
-
return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: protectionDataUpdate, appendWindow: appendWindow };
|
|
83
|
+
return { segmentType: "media", chunkData: chunkData, chunkSize: chunkData.length, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: protectionDataUpdate, appendWindow: appendWindow };
|
|
82
84
|
}
|
|
83
85
|
// we're handling an initialization segment
|
|
84
86
|
var indexRange = segment.indexRange;
|
|
@@ -117,6 +119,7 @@ export default function generateAudioVideoSegmentParser(_a) {
|
|
|
117
119
|
var parsedTimescale = isNullOrUndefined(timescale) ? undefined :
|
|
118
120
|
timescale;
|
|
119
121
|
return { segmentType: "init",
|
|
120
|
-
initializationData: chunkData,
|
|
122
|
+
initializationData: chunkData,
|
|
123
|
+
initializationDataSize: chunkData.length, protectionDataUpdate: protectionDataUpdate, initTimescale: parsedTimescale };
|
|
121
124
|
};
|
|
122
125
|
}
|
|
@@ -21,5 +21,5 @@ import { ISegmentLoader } from "../types";
|
|
|
21
21
|
*/
|
|
22
22
|
export default function generateTextTrackLoader({ lowLatencyMode, checkMediaSegmentIntegrity }: {
|
|
23
23
|
lowLatencyMode: boolean;
|
|
24
|
-
checkMediaSegmentIntegrity?: boolean;
|
|
24
|
+
checkMediaSegmentIntegrity?: boolean | undefined;
|
|
25
25
|
}): ISegmentLoader<Uint8Array | ArrayBuffer | string | null>;
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import PPromise from "
|
|
16
|
+
import PPromise from "../../utils/promise";
|
|
17
17
|
import request, { fetchIsSupported, } from "../../utils/request";
|
|
18
18
|
import warnOnce from "../../utils/warn_once";
|
|
19
19
|
import byteRange from "../utils/byte_range";
|
|
@@ -21,5 +21,5 @@ import { ISegmentParser, ITextTrackSegmentData } from "../types";
|
|
|
21
21
|
* @returns {Function}
|
|
22
22
|
*/
|
|
23
23
|
export default function generateTextTrackParser({ __priv_patchLastSegmentInSidx }: {
|
|
24
|
-
__priv_patchLastSegmentInSidx?: boolean;
|
|
24
|
+
__priv_patchLastSegmentInSidx?: boolean | undefined;
|
|
25
25
|
}): ISegmentParser<ArrayBuffer | Uint8Array | string | null, ITextTrackSegmentData | null>;
|
|
@@ -71,13 +71,14 @@ function parseISOBMFFEmbeddedTextTrack(data, isChunked, content, initTimescale,
|
|
|
71
71
|
}
|
|
72
72
|
return { segmentType: "init",
|
|
73
73
|
initializationData: null,
|
|
74
|
+
initializationDataSize: 0,
|
|
74
75
|
protectionDataUpdate: false,
|
|
75
76
|
initTimescale: mdhdTimescale };
|
|
76
77
|
}
|
|
77
78
|
var chunkInfos = getISOBMFFTimingInfos(chunkBytes, isChunked, segment, initTimescale);
|
|
78
79
|
var chunkData = getISOBMFFEmbeddedTextTrackData(content, chunkBytes, chunkInfos, isChunked);
|
|
79
80
|
var chunkOffset = takeFirstSet(segment.timestampOffset, 0);
|
|
80
|
-
return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
|
|
81
|
+
return { segmentType: "media", chunkData: chunkData, chunkSize: chunkBytes.length, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
|
|
81
82
|
appendWindow: [period.start, period.end] };
|
|
82
83
|
}
|
|
83
84
|
/**
|
|
@@ -97,20 +98,23 @@ function parsePlainTextTrack(data, isChunked, content) {
|
|
|
97
98
|
if (segment.isInit) {
|
|
98
99
|
return { segmentType: "init",
|
|
99
100
|
initializationData: null,
|
|
101
|
+
initializationDataSize: 0,
|
|
100
102
|
protectionDataUpdate: false,
|
|
101
103
|
initTimescale: undefined };
|
|
102
104
|
}
|
|
103
105
|
var textTrackData;
|
|
106
|
+
var chunkSize;
|
|
104
107
|
if (typeof data !== "string") {
|
|
105
108
|
var bytesData = data instanceof Uint8Array ? data :
|
|
106
109
|
new Uint8Array(data);
|
|
107
110
|
textTrackData = utf8ToStr(bytesData);
|
|
111
|
+
chunkSize = bytesData.length;
|
|
108
112
|
}
|
|
109
113
|
else {
|
|
110
114
|
textTrackData = data;
|
|
111
115
|
}
|
|
112
116
|
var chunkData = getPlainTextTrackData(content, textTrackData, isChunked);
|
|
113
|
-
return { segmentType: "media", chunkData: chunkData, chunkInfos: null,
|
|
117
|
+
return { segmentType: "media", chunkData: chunkData, chunkSize: chunkSize, chunkInfos: null,
|
|
114
118
|
chunkOffset: timestampOffset,
|
|
115
119
|
protectionDataUpdate: false,
|
|
116
120
|
appendWindow: [period.start, period.end] };
|
|
@@ -136,10 +140,12 @@ export default function generateTextTrackParser(_a) {
|
|
|
136
140
|
// No data, just return an empty placeholder object
|
|
137
141
|
return segment.isInit ? { segmentType: "init",
|
|
138
142
|
initializationData: null,
|
|
143
|
+
initializationDataSize: 0,
|
|
139
144
|
protectionDataUpdate: false,
|
|
140
145
|
initTimescale: undefined } :
|
|
141
146
|
{ segmentType: "media",
|
|
142
147
|
chunkData: null,
|
|
148
|
+
chunkSize: 0,
|
|
143
149
|
chunkInfos: null,
|
|
144
150
|
chunkOffset: (_a = segment.timestampOffset) !== null && _a !== void 0 ? _a : 0,
|
|
145
151
|
protectionDataUpdate: false,
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import PPromise from "pinkie";
|
|
17
16
|
import { CancellationSignal } from "../../utils/task_canceller";
|
|
18
17
|
import { ISegmentContext, ISegmentLoaderCallbacks, ISegmentLoaderResultSegmentLoaded } from "../types";
|
|
19
18
|
/**
|
|
@@ -24,4 +23,4 @@ import { ISegmentContext, ISegmentLoaderCallbacks, ISegmentLoaderResultSegmentLo
|
|
|
24
23
|
* @param {Object} _callbacks
|
|
25
24
|
* @returns {Promise}
|
|
26
25
|
*/
|
|
27
|
-
export default function segmentLoader(_url: string | null, content: ISegmentContext, cancelSignal: CancellationSignal, _callbacks: ISegmentLoaderCallbacks<ArrayBuffer | null>):
|
|
26
|
+
export default function segmentLoader(_url: string | null, content: ISegmentContext, cancelSignal: CancellationSignal, _callbacks: ISegmentLoaderCallbacks<ArrayBuffer | null>): Promise<ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>>;
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import PPromise from "pinkie";
|
|
17
16
|
import { CustomLoaderError } from "../../errors";
|
|
18
17
|
import isNullOrUndefined from "../../utils/is_null_or_undefined";
|
|
18
|
+
import PPromise from "../../utils/promise";
|
|
19
19
|
/**
|
|
20
20
|
* @param {Function} customSegmentLoader
|
|
21
21
|
* @param {Object} cancelSignal
|
|
@@ -26,11 +26,13 @@ export default function segmentParser(loadedSegment, content, initTimescale) {
|
|
|
26
26
|
if (segment.isInit) {
|
|
27
27
|
return { segmentType: "init",
|
|
28
28
|
initializationData: null,
|
|
29
|
+
initializationDataSize: 0,
|
|
29
30
|
protectionDataUpdate: false,
|
|
30
31
|
initTimescale: undefined };
|
|
31
32
|
}
|
|
32
33
|
return { segmentType: "media",
|
|
33
34
|
chunkData: null,
|
|
35
|
+
chunkSize: 0,
|
|
34
36
|
chunkInfos: null,
|
|
35
37
|
chunkOffset: 0,
|
|
36
38
|
protectionDataUpdate: false, appendWindow: appendWindow };
|
|
@@ -52,10 +54,11 @@ export default function segmentParser(loadedSegment, content, initTimescale) {
|
|
|
52
54
|
getMDHDTimescale(chunkData);
|
|
53
55
|
return { segmentType: "init",
|
|
54
56
|
initializationData: chunkData,
|
|
57
|
+
initializationDataSize: 0,
|
|
55
58
|
initTimescale: timescale !== null && timescale !== void 0 ? timescale : undefined, protectionDataUpdate: protectionDataUpdate };
|
|
56
59
|
}
|
|
57
60
|
var chunkInfos = seemsToBeMP4 ? getISOBMFFTimingInfos(chunkData, false, segment, initTimescale) :
|
|
58
61
|
null; // TODO extract time info from webm
|
|
59
62
|
var chunkOffset = takeFirstSet(segment.timestampOffset, 0);
|
|
60
|
-
return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false, appendWindow: appendWindow };
|
|
63
|
+
return { segmentType: "media", chunkData: chunkData, chunkSize: chunkData.length, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false, appendWindow: appendWindow };
|
|
61
64
|
}
|
|
@@ -43,13 +43,14 @@ function parseISOBMFFEmbeddedTextTrack(data, isChunked, content, initTimescale)
|
|
|
43
43
|
var mdhdTimescale = getMDHDTimescale(chunkBytes);
|
|
44
44
|
return { segmentType: "init",
|
|
45
45
|
initializationData: null,
|
|
46
|
+
initializationDataSize: 0,
|
|
46
47
|
initTimescale: mdhdTimescale,
|
|
47
48
|
protectionDataUpdate: false };
|
|
48
49
|
}
|
|
49
50
|
var chunkInfos = getISOBMFFTimingInfos(chunkBytes, isChunked, segment, initTimescale);
|
|
50
51
|
var chunkData = getISOBMFFEmbeddedTextTrackData(content, chunkBytes, chunkInfos, isChunked);
|
|
51
52
|
var chunkOffset = takeFirstSet(segment.timestampOffset, 0);
|
|
52
|
-
return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
|
|
53
|
+
return { segmentType: "media", chunkData: chunkData, chunkSize: chunkBytes.length, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
|
|
53
54
|
appendWindow: [period.start, period.end] };
|
|
54
55
|
}
|
|
55
56
|
/**
|
|
@@ -67,21 +68,24 @@ function parsePlainTextTrack(data, isChunked, content) {
|
|
|
67
68
|
if (segment.isInit) {
|
|
68
69
|
return { segmentType: "init",
|
|
69
70
|
initializationData: null,
|
|
71
|
+
initializationDataSize: 0,
|
|
70
72
|
initTimescale: undefined,
|
|
71
73
|
protectionDataUpdate: false };
|
|
72
74
|
}
|
|
73
75
|
var textTrackData;
|
|
76
|
+
var chunkSize;
|
|
74
77
|
if (typeof data !== "string") {
|
|
75
78
|
var bytesData = data instanceof Uint8Array ? data :
|
|
76
79
|
new Uint8Array(data);
|
|
77
80
|
textTrackData = utf8ToStr(bytesData);
|
|
81
|
+
chunkSize = bytesData.length;
|
|
78
82
|
}
|
|
79
83
|
else {
|
|
80
84
|
textTrackData = data;
|
|
81
85
|
}
|
|
82
86
|
var chunkData = getPlainTextTrackData(content, textTrackData, isChunked);
|
|
83
87
|
var chunkOffset = takeFirstSet(segment.timestampOffset, 0);
|
|
84
|
-
return { segmentType: "media", chunkData: chunkData, chunkInfos: null, chunkOffset: chunkOffset, protectionDataUpdate: false,
|
|
88
|
+
return { segmentType: "media", chunkData: chunkData, chunkSize: chunkSize, chunkInfos: null, chunkOffset: chunkOffset, protectionDataUpdate: false,
|
|
85
89
|
appendWindow: [period.start, period.end] };
|
|
86
90
|
}
|
|
87
91
|
/**
|
|
@@ -100,12 +104,14 @@ export default function textTrackParser(loadedSegment, content, initTimescale) {
|
|
|
100
104
|
if (segment.isInit) {
|
|
101
105
|
return { segmentType: "init",
|
|
102
106
|
initializationData: null,
|
|
107
|
+
initializationDataSize: 0,
|
|
103
108
|
protectionDataUpdate: false,
|
|
104
109
|
initTimescale: undefined };
|
|
105
110
|
}
|
|
106
111
|
var chunkOffset = (_a = segment.timestampOffset) !== null && _a !== void 0 ? _a : 0;
|
|
107
112
|
return { segmentType: "media",
|
|
108
113
|
chunkData: null,
|
|
114
|
+
chunkSize: 0,
|
|
109
115
|
chunkInfos: null, chunkOffset: chunkOffset, protectionDataUpdate: false,
|
|
110
116
|
appendWindow: [period.start, period.end] };
|
|
111
117
|
}
|
|
@@ -21,5 +21,5 @@ import { ICustomManifestLoader, ILoadedManifestFormat, IRequestedData } from "..
|
|
|
21
21
|
* @returns {Function}
|
|
22
22
|
*/
|
|
23
23
|
export default function generateManifestLoader({ customManifestLoader }: {
|
|
24
|
-
customManifestLoader?: ICustomManifestLoader;
|
|
24
|
+
customManifestLoader?: ICustomManifestLoader | undefined;
|
|
25
25
|
}): (url: string | undefined, cancelSignal: CancellationSignal) => Promise<IRequestedData<ILoadedManifestFormat>>;
|
|
@@ -24,12 +24,12 @@ var __assign = (this && this.__assign) || function () {
|
|
|
24
24
|
};
|
|
25
25
|
return __assign.apply(this, arguments);
|
|
26
26
|
};
|
|
27
|
-
import PPromise from "pinkie";
|
|
28
27
|
import features from "../../features";
|
|
29
28
|
import Manifest from "../../manifest";
|
|
30
29
|
import parseMetaPlaylist from "../../parsers/manifest/metaplaylist";
|
|
31
30
|
import isNullOrUndefined from "../../utils/is_null_or_undefined";
|
|
32
31
|
import objectAssign from "../../utils/object_assign";
|
|
32
|
+
import PPromise from "../../utils/promise";
|
|
33
33
|
import generateManifestLoader from "./manifest_loader";
|
|
34
34
|
/**
|
|
35
35
|
* Get base - real - content from an offseted metaplaylist content.
|