rx-player 3.29.0 → 3.30.0-dev.2023011800
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 +23 -0
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/can_reuse_media_keys.d.ts +3 -2
- package/dist/_esm5.processed/compat/can_reuse_media_keys.js +5 -4
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +16 -7
- package/dist/_esm5.processed/compat/event_listeners.d.ts +33 -56
- package/dist/_esm5.processed/compat/event_listeners.js +66 -116
- package/dist/_esm5.processed/compat/index.d.ts +1 -4
- package/dist/_esm5.processed/compat/index.js +1 -4
- package/dist/_esm5.processed/compat/on_height_width_change.d.ts +1 -1
- package/dist/_esm5.processed/compat/on_height_width_change.js +2 -2
- package/dist/_esm5.processed/config.d.ts +1 -0
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.d.ts +3 -1
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +27 -6
- package/dist/_esm5.processed/core/api/playback_observer.d.ts +8 -9
- package/dist/_esm5.processed/core/api/playback_observer.js +6 -7
- package/dist/_esm5.processed/core/api/public_api.d.ts +39 -41
- package/dist/_esm5.processed/core/api/public_api.js +569 -578
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.d.ts +9 -14
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.js +73 -43
- package/dist/_esm5.processed/core/api/utils.d.ts +15 -10
- package/dist/_esm5.processed/core/api/utils.js +84 -19
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.d.ts +22 -5
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +97 -25
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.d.ts +3 -2
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +3 -2
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +1 -1
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +12 -20
- package/dist/_esm5.processed/core/decrypt/create_session.js +1 -1
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +35 -13
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +1 -1
- package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +32 -31
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +291 -160
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +1 -1
- package/dist/_esm5.processed/core/decrypt/types.d.ts +0 -6
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +1 -1
- package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/manifest/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +153 -89
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +419 -144
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +0 -24
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +0 -24
- package/dist/_esm5.processed/core/init/{initialize_directfile.d.ts → directfile_content_initializer.d.ts} +13 -16
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +196 -0
- package/dist/_esm5.processed/core/init/index.d.ts +2 -2
- package/dist/_esm5.processed/core/init/index.js +2 -2
- package/dist/_esm5.processed/core/init/media_source_content_initializer.d.ts +181 -0
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +576 -0
- package/dist/_esm5.processed/core/init/types.d.ts +203 -64
- package/dist/_esm5.processed/core/init/types.js +36 -1
- package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.d.ts +164 -0
- package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.js +484 -0
- package/dist/_esm5.processed/core/init/{create_media_source.d.ts → utils/create_media_source.d.ts} +8 -4
- package/dist/_esm5.processed/core/init/utils/create_media_source.js +118 -0
- package/dist/_esm5.processed/core/init/{create_stream_playback_observer.d.ts → utils/create_stream_playback_observer.d.ts} +4 -4
- package/dist/_esm5.processed/core/init/{create_stream_playback_observer.js → utils/create_stream_playback_observer.js} +2 -5
- package/dist/_esm5.processed/core/init/{end_of_stream.d.ts → utils/end_of_stream.d.ts} +5 -5
- package/dist/_esm5.processed/core/init/utils/end_of_stream.js +85 -0
- package/dist/_esm5.processed/core/init/{get_initial_time.d.ts → utils/get_initial_time.d.ts} +1 -1
- package/dist/_esm5.processed/core/init/{get_initial_time.js → utils/get_initial_time.js} +3 -3
- package/dist/_esm5.processed/core/init/{emit_loaded_event.d.ts → utils/get_loaded_reference.d.ts} +9 -9
- package/dist/_esm5.processed/core/init/{emit_loaded_event.js → utils/get_loaded_reference.js} +23 -17
- package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.d.ts +63 -0
- package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +124 -0
- package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.d.ts +80 -0
- package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.js +111 -0
- package/dist/_esm5.processed/core/init/{media_duration_updater.d.ts → utils/media_duration_updater.d.ts} +3 -3
- package/dist/_esm5.processed/core/init/{media_duration_updater.js → utils/media_duration_updater.js} +115 -41
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +113 -0
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +483 -0
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/are_same_stream_events.d.ts +0 -0
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/are_same_stream_events.js +0 -0
- package/dist/_esm5.processed/core/{stream/types.js → init/utils/stream_events_emitter/index.d.ts} +3 -1
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/index.js +0 -0
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/refresh_scheduled_events_list.d.ts +1 -1
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/refresh_scheduled_events_list.js +0 -0
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.d.ts +30 -0
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.js +155 -0
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/types.d.ts +1 -13
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/types.js +0 -0
- package/dist/_esm5.processed/core/init/{throw_on_media_error.d.ts → utils/throw_on_media_error.d.ts} +5 -5
- package/dist/_esm5.processed/core/init/{throw_on_media_error.js → utils/throw_on_media_error.js} +19 -15
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +0 -1
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +0 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.d.ts +0 -5
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +0 -5
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +3 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +3 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +25 -130
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +188 -117
- package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/adaptation/index.js +1 -0
- package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +172 -0
- package/dist/_esm5.processed/core/stream/adaptation/types.js +1 -0
- package/dist/_esm5.processed/core/stream/adaptation/{create_representation_estimator.d.ts → utils/create_representation_estimator.d.ts} +6 -6
- package/dist/_esm5.processed/core/stream/adaptation/{create_representation_estimator.js → utils/create_representation_estimator.js} +3 -4
- package/dist/_esm5.processed/core/stream/index.d.ts +4 -3
- package/dist/_esm5.processed/core/stream/index.js +0 -1
- package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +142 -17
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +303 -229
- package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -3
- package/dist/_esm5.processed/core/stream/period/index.js +1 -0
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +27 -62
- package/dist/_esm5.processed/core/stream/period/period_stream.js +278 -105
- package/dist/_esm5.processed/core/stream/period/types.d.ts +110 -0
- package/dist/_esm5.processed/core/stream/period/types.js +1 -0
- package/dist/_esm5.processed/core/stream/period/{get_adaptation_switch_strategy.d.ts → utils/get_adaptation_switch_strategy.d.ts} +3 -3
- package/dist/_esm5.processed/core/stream/period/{get_adaptation_switch_strategy.js → utils/get_adaptation_switch_strategy.js} +3 -3
- package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/representation/index.js +1 -0
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +32 -121
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +210 -136
- package/dist/_esm5.processed/core/stream/representation/types.d.ts +267 -0
- package/dist/_esm5.processed/core/stream/representation/types.js +1 -0
- package/dist/_esm5.processed/core/stream/representation/{append_segment_to_buffer.d.ts → utils/append_segment_to_buffer.d.ts} +5 -5
- package/dist/_esm5.processed/core/stream/representation/{append_segment_to_buffer.js → utils/append_segment_to_buffer.js} +8 -3
- package/dist/_esm5.processed/core/stream/representation/{check_for_discontinuity.d.ts → utils/check_for_discontinuity.d.ts} +2 -2
- package/dist/_esm5.processed/core/stream/representation/{check_for_discontinuity.js → utils/check_for_discontinuity.js} +1 -1
- package/dist/_esm5.processed/core/stream/representation/{downloading_queue.d.ts → utils/downloading_queue.d.ts} +85 -80
- package/dist/_esm5.processed/core/stream/representation/utils/downloading_queue.js +378 -0
- package/dist/_esm5.processed/core/stream/representation/{force_garbage_collection.d.ts → utils/force_garbage_collection.d.ts} +2 -2
- package/dist/_esm5.processed/core/stream/representation/{force_garbage_collection.js → utils/force_garbage_collection.js} +3 -3
- package/dist/_esm5.processed/core/stream/representation/{get_buffer_status.d.ts → utils/get_buffer_status.d.ts} +3 -3
- package/dist/_esm5.processed/core/stream/representation/{get_buffer_status.js → utils/get_buffer_status.js} +3 -3
- package/dist/_esm5.processed/core/stream/representation/{get_needed_segments.d.ts → utils/get_needed_segments.d.ts} +3 -3
- package/dist/_esm5.processed/core/stream/representation/{get_needed_segments.js → utils/get_needed_segments.js} +4 -5
- package/dist/_esm5.processed/core/stream/representation/{get_segment_priority.d.ts → utils/get_segment_priority.d.ts} +0 -0
- package/dist/_esm5.processed/core/stream/representation/{get_segment_priority.js → utils/get_segment_priority.js} +1 -1
- package/dist/_esm5.processed/core/stream/representation/{push_init_segment.d.ts → utils/push_init_segment.d.ts} +9 -12
- package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.js +85 -0
- package/dist/_esm5.processed/core/stream/representation/{push_media_segment.d.ts → utils/push_media_segment.d.ts} +9 -12
- package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.js +109 -0
- package/dist/_esm5.processed/default_config.d.ts +10 -0
- package/dist/_esm5.processed/default_config.js +12 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.js +1 -1
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.d.ts +2 -3
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +107 -59
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +6 -7
- package/dist/_esm5.processed/features/initialize_features.js +1 -1
- package/dist/_esm5.processed/features/list/directfile.js +1 -1
- package/dist/_esm5.processed/features/types.d.ts +2 -3
- package/dist/_esm5.processed/manifest/adaptation.d.ts +7 -0
- package/dist/_esm5.processed/manifest/adaptation.js +3 -0
- package/dist/_esm5.processed/manifest/manifest.d.ts +2 -1
- package/dist/_esm5.processed/manifest/manifest.js +4 -3
- package/dist/_esm5.processed/manifest/update_period_in_place.d.ts +26 -1
- package/dist/_esm5.processed/manifest/update_period_in_place.js +58 -7
- package/dist/_esm5.processed/manifest/update_periods.d.ts +19 -2
- package/dist/_esm5.processed/manifest/update_periods.js +62 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +3 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +1 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +1 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +7 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +16 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +63 -25
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +3 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +60 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +39 -13
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +7 -3
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +3 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.d.ts +0 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +0 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +13 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +7 -0
- package/dist/_esm5.processed/public_types.d.ts +2 -0
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +2 -2
- package/dist/_esm5.processed/transports/dash/segment_loader.js +1 -1
- package/dist/_esm5.processed/transports/dash/text_parser.js +3 -3
- package/dist/_esm5.processed/transports/local/segment_loader.js +1 -1
- package/dist/_esm5.processed/utils/event_emitter.d.ts +3 -13
- package/dist/_esm5.processed/utils/event_emitter.js +0 -19
- package/dist/_esm5.processed/utils/reference.d.ts +46 -67
- package/dist/_esm5.processed/utils/reference.js +63 -93
- package/dist/_esm5.processed/utils/request/xhr.d.ts +3 -68
- package/dist/_esm5.processed/utils/{rx-retry_with_backoff.d.ts → retry_promise_with_backoff.d.ts} +19 -34
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +119 -0
- package/dist/_esm5.processed/utils/sleep.d.ts +10 -0
- package/dist/_esm5.processed/utils/sleep.js +14 -0
- package/dist/_esm5.processed/utils/sorted_list.d.ts +1 -0
- package/dist/_esm5.processed/utils/sorted_list.js +3 -0
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +8116 -11600
- package/dist/rx-player.min.js +1 -1
- package/dist/rx-player.min.js.LICENSE.txt +0 -15
- package/manifest.mpd +149 -0
- package/package.json +26 -26
- package/scripts/build/generate_build.js +1 -8
- package/sonar-project.properties +1 -1
- package/src/README.md +2 -2
- package/src/compat/__tests__/can_reuse_media_keys.test.ts +4 -27
- package/src/compat/can_reuse_media_keys.ts +5 -7
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +14 -15
- package/src/compat/event_listeners.ts +84 -148
- package/src/compat/index.ts +0 -6
- package/src/compat/on_height_width_change.ts +2 -2
- package/src/core/README.md +1 -1
- package/src/core/adaptive/adaptive_representation_selector.ts +36 -7
- package/src/core/api/README.md +0 -33
- package/src/core/api/playback_observer.ts +20 -11
- package/src/core/api/public_api.ts +826 -815
- package/src/core/api/tracks_management/track_choice_manager.ts +97 -57
- package/src/core/api/utils.ts +112 -42
- package/src/core/decrypt/__tests__/__global__/get_license.test.ts +42 -38
- package/src/core/decrypt/__tests__/__global__/init_data.test.ts +15 -20
- package/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +35 -47
- package/src/core/decrypt/__tests__/__global__/utils.ts +116 -17
- package/src/core/decrypt/attach_media_keys.ts +3 -2
- package/src/core/decrypt/clear_on_stop.ts +1 -1
- package/src/core/decrypt/content_decryptor.ts +19 -27
- package/src/core/decrypt/create_session.ts +1 -1
- package/src/core/decrypt/find_key_system.ts +31 -11
- package/src/core/decrypt/get_media_keys.ts +1 -1
- package/src/core/decrypt/session_events_listener.ts +259 -277
- package/src/core/decrypt/set_server_certificate.ts +1 -1
- package/src/core/decrypt/types.ts +0 -5
- package/src/core/decrypt/utils/clean_old_loaded_sessions.ts +1 -1
- package/src/core/decrypt/utils/loaded_sessions_store.ts +1 -1
- package/src/core/fetchers/README.md +3 -0
- package/src/core/fetchers/index.ts +6 -6
- package/src/core/fetchers/manifest/index.ts +7 -7
- package/src/core/fetchers/manifest/manifest_fetcher.ts +646 -295
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +0 -24
- package/src/core/init/README.md +31 -45
- package/src/core/init/directfile_content_initializer.ts +229 -0
- package/src/core/init/index.ts +3 -3
- package/src/core/init/media_source_content_initializer.ts +819 -0
- package/src/core/init/types.ts +220 -132
- package/src/core/init/{__tests__ → utils/__tests__}/are_same_stream_events.test.ts +0 -0
- package/src/core/init/{__tests__ → utils/__tests__}/refresh_scheduled_events_list.test.ts +0 -0
- package/src/core/init/utils/content_time_boundaries_observer.ts +609 -0
- package/src/core/init/{create_media_source.ts → utils/create_media_source.ts} +60 -55
- package/src/core/init/{create_stream_playback_observer.ts → utils/create_stream_playback_observer.ts} +7 -11
- package/src/core/init/utils/end_of_stream.ts +104 -0
- package/src/core/init/{get_initial_time.ts → utils/get_initial_time.ts} +4 -4
- package/src/core/init/utils/get_loaded_reference.ts +76 -0
- package/src/core/init/utils/initial_seek_and_play.ts +179 -0
- package/src/core/init/utils/initialize_content_decryption.ts +178 -0
- package/src/core/init/{media_duration_updater.ts → utils/media_duration_updater.ts} +166 -84
- package/src/core/init/{rebuffering_controller.ts → utils/rebuffering_controller.ts} +247 -226
- package/src/core/init/{stream_events_emitter → utils/stream_events_emitter}/are_same_stream_events.ts +0 -0
- package/src/core/init/{stream_events_emitter → utils/stream_events_emitter}/index.ts +1 -13
- package/src/core/init/{stream_events_emitter → utils/stream_events_emitter}/refresh_scheduled_events_list.ts +1 -1
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +210 -0
- package/src/core/init/{stream_events_emitter → utils/stream_events_emitter}/types.ts +1 -19
- package/src/core/init/utils/throw_on_media_error.ts +74 -0
- package/src/core/segment_buffers/README.md +5 -4
- package/src/core/segment_buffers/garbage_collector.ts +0 -1
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -8
- package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +3 -3
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +1 -1
- package/src/core/stream/README.md +1 -1
- package/src/core/stream/adaptation/adaptation_stream.ts +265 -330
- package/src/core/stream/adaptation/index.ts +2 -12
- package/src/core/stream/adaptation/types.ts +193 -0
- package/src/core/stream/adaptation/{create_representation_estimator.ts → utils/create_representation_estimator.ts} +10 -9
- package/src/core/stream/index.ts +9 -1
- package/src/core/stream/orchestrator/README.md +1 -4
- package/src/core/stream/orchestrator/index.ts +2 -0
- package/src/core/stream/orchestrator/stream_orchestrator.ts +423 -326
- package/src/core/stream/period/index.ts +2 -12
- package/src/core/stream/period/period_stream.ts +301 -238
- package/src/core/stream/period/types.ts +132 -0
- package/src/core/stream/period/{get_adaptation_switch_strategy.ts → utils/get_adaptation_switch_strategy.ts} +6 -6
- package/src/core/stream/representation/README.md +2 -23
- package/src/core/stream/representation/index.ts +2 -12
- package/src/core/stream/representation/representation_stream.ts +315 -415
- package/src/core/stream/representation/types.ts +292 -0
- package/src/core/stream/representation/{append_segment_to_buffer.ts → utils/append_segment_to_buffer.ts} +11 -7
- package/src/core/stream/representation/{check_for_discontinuity.ts → utils/check_for_discontinuity.ts} +3 -3
- package/src/core/stream/representation/utils/downloading_queue.ts +592 -0
- package/src/core/stream/representation/{force_garbage_collection.ts → utils/force_garbage_collection.ts} +5 -6
- package/src/core/stream/representation/{get_buffer_status.ts → utils/get_buffer_status.ts} +5 -5
- package/src/core/stream/representation/{get_needed_segments.ts → utils/get_needed_segments.ts} +6 -7
- package/src/core/stream/representation/{get_segment_priority.ts → utils/get_segment_priority.ts} +1 -2
- package/src/core/stream/representation/utils/push_init_segment.ts +80 -0
- package/src/core/stream/representation/utils/push_media_segment.ts +113 -0
- package/src/default_config.ts +13 -1
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +1 -1
- package/src/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.ts +1 -1
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +58 -66
- package/src/experimental/tools/createMetaplaylist/index.ts +29 -38
- package/src/features/__tests__/initialize_features.test.ts +1 -1
- package/src/features/initialize_features.ts +2 -1
- package/src/features/list/__tests__/directfile.test.ts +3 -2
- package/src/features/list/directfile.ts +1 -1
- package/src/features/types.ts +2 -7
- package/src/manifest/__tests__/manifest.test.ts +14 -365
- package/src/manifest/__tests__/update_period_in_place.test.ts +522 -57
- package/src/manifest/__tests__/update_periods.test.ts +254 -40
- package/src/manifest/adaptation.ts +11 -0
- package/src/manifest/manifest.ts +6 -4
- package/src/manifest/update_period_in_place.ts +84 -14
- package/src/manifest/update_periods.ts +93 -33
- package/src/parsers/manifest/dash/common/indexes/base.ts +4 -0
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +8 -1
- package/src/parsers/manifest/dash/common/indexes/template.ts +76 -25
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +61 -3
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +46 -15
- package/src/parsers/manifest/dash/common/parse_representations.ts +7 -3
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.ts +6 -0
- package/src/parsers/manifest/dash/node_parser_types.ts +3 -0
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +3 -0
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +4 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.ts +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +3 -0
- package/src/parsers/manifest/types.ts +13 -2
- package/src/parsers/texttracks/ttml/html/create_element.ts +8 -0
- package/src/public_types.ts +2 -0
- package/src/transports/README.md +15 -54
- package/src/transports/dash/manifest_parser.ts +2 -2
- package/src/transports/dash/segment_loader.ts +1 -1
- package/src/transports/dash/text_parser.ts +3 -3
- package/src/transports/local/segment_loader.ts +1 -1
- package/src/utils/__tests__/event_emitter.test.ts +1 -76
- package/src/utils/event_emitter.ts +6 -30
- package/src/utils/reference.ts +112 -169
- package/src/utils/request/xhr.ts +3 -68
- package/src/utils/retry_promise_with_backoff.ts +95 -0
- package/src/utils/sleep.ts +14 -0
- package/src/utils/sorted_list.ts +4 -0
- package/dist/_esm5.processed/compat/play.d.ts +0 -23
- package/dist/_esm5.processed/compat/play.js +0 -32
- package/dist/_esm5.processed/compat/set_element_src.d.ts +0 -26
- package/dist/_esm5.processed/compat/set_element_src.js +0 -37
- package/dist/_esm5.processed/compat/when_loaded_metadata.d.ts +0 -23
- package/dist/_esm5.processed/compat/when_loaded_metadata.js +0 -33
- package/dist/_esm5.processed/core/init/content_time_boundaries_observer.d.ts +0 -45
- package/dist/_esm5.processed/core/init/content_time_boundaries_observer.js +0 -295
- package/dist/_esm5.processed/core/init/create_media_source.js +0 -107
- package/dist/_esm5.processed/core/init/end_of_stream.js +0 -74
- package/dist/_esm5.processed/core/init/events_generators.d.ts +0 -88
- package/dist/_esm5.processed/core/init/events_generators.js +0 -87
- package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +0 -81
- package/dist/_esm5.processed/core/init/initial_seek_and_play.js +0 -114
- package/dist/_esm5.processed/core/init/initialize_directfile.js +0 -120
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +0 -122
- package/dist/_esm5.processed/core/init/initialize_media_source.js +0 -201
- package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +0 -62
- package/dist/_esm5.processed/core/init/link_drm_and_content.js +0 -94
- package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +0 -46
- package/dist/_esm5.processed/core/init/load_on_media_source.js +0 -122
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +0 -65
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +0 -233
- package/dist/_esm5.processed/core/init/rebuffering_controller.d.ts +0 -81
- package/dist/_esm5.processed/core/init/rebuffering_controller.js +0 -439
- package/dist/_esm5.processed/core/init/stream_events_emitter/index.d.ts +0 -19
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.d.ts +0 -27
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +0 -126
- package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +0 -0
- package/dist/_esm5.processed/core/init/update_playback_rate.js +0 -1
- package/dist/_esm5.processed/core/stream/events_generators.d.ts +0 -67
- package/dist/_esm5.processed/core/stream/events_generators.js +0 -112
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.d.ts +0 -53
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +0 -124
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.d.ts +0 -35
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.js +0 -53
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +0 -36
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +0 -46
- package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +0 -47
- package/dist/_esm5.processed/core/stream/reload_after_switch.js +0 -56
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +0 -371
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +0 -49
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +0 -76
- package/dist/_esm5.processed/core/stream/types.d.ts +0 -437
- package/dist/_esm5.processed/utils/cast_to_observable.d.ts +0 -24
- package/dist/_esm5.processed/utils/cast_to_observable.js +0 -35
- package/dist/_esm5.processed/utils/concat_map_latest.d.ts +0 -23
- package/dist/_esm5.processed/utils/concat_map_latest.js +0 -48
- package/dist/_esm5.processed/utils/defer_subscriptions.d.ts +0 -79
- package/dist/_esm5.processed/utils/defer_subscriptions.js +0 -89
- package/dist/_esm5.processed/utils/filter_map.d.ts +0 -28
- package/dist/_esm5.processed/utils/filter_map.js +0 -32
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +0 -39
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +0 -63
- package/dist/_esm5.processed/utils/rx-next-tick.d.ts +0 -27
- package/dist/_esm5.processed/utils/rx-next-tick.js +0 -41
- package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +0 -70
- package/dist/_esm5.processed/utils/rx-throttle.d.ts +0 -40
- package/dist/_esm5.processed/utils/rx-throttle.js +0 -47
- package/dist/_esm5.processed/utils/rx-try_catch.d.ts +0 -23
- package/dist/_esm5.processed/utils/rx-try_catch.js +0 -30
- package/src/compat/__tests__/play.test.ts +0 -73
- package/src/compat/__tests__/set_element_src.test.ts +0 -71
- package/src/compat/__tests__/when_loaded_metadata.test.ts +0 -109
- package/src/compat/play.ts +0 -37
- package/src/compat/set_element_src.ts +0 -47
- package/src/compat/when_loaded_metadata.ts +0 -40
- package/src/core/init/content_time_boundaries_observer.ts +0 -382
- package/src/core/init/emit_loaded_event.ts +0 -71
- package/src/core/init/end_of_stream.ts +0 -104
- package/src/core/init/events_generators.ts +0 -140
- package/src/core/init/initial_seek_and_play.ts +0 -208
- package/src/core/init/initialize_directfile.ts +0 -191
- package/src/core/init/initialize_media_source.ts +0 -389
- package/src/core/init/link_drm_and_content.ts +0 -176
- package/src/core/init/load_on_media_source.ts +0 -237
- package/src/core/init/manifest_update_scheduler.ts +0 -362
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +0 -182
- package/src/core/init/throw_on_media_error.ts +0 -68
- package/src/core/init/update_playback_rate.ts +0 -0
- package/src/core/stream/events_generators.ts +0 -217
- package/src/core/stream/orchestrator/active_period_emitter.ts +0 -146
- package/src/core/stream/orchestrator/are_streams_complete.ts +0 -70
- package/src/core/stream/period/create_empty_adaptation_stream.ts +0 -70
- package/src/core/stream/reload_after_switch.ts +0 -76
- package/src/core/stream/representation/downloading_queue.ts +0 -632
- package/src/core/stream/representation/push_init_segment.ts +0 -87
- package/src/core/stream/representation/push_media_segment.ts +0 -125
- package/src/core/stream/types.ts +0 -558
- package/src/utils/__tests__/cast_to_observable.test.ts +0 -93
- package/src/utils/__tests__/concat_map_latest.test.ts +0 -221
- package/src/utils/__tests__/defer_subscriptions.test.ts +0 -50
- package/src/utils/__tests__/filter_map.test.ts +0 -87
- package/src/utils/__tests__/rx-throttle.test.ts +0 -252
- package/src/utils/__tests__/rx-try_catch.test.ts +0 -100
- package/src/utils/cast_to_observable.ts +0 -48
- package/src/utils/concat_map_latest.ts +0 -61
- package/src/utils/defer_subscriptions.ts +0 -96
- package/src/utils/filter_map.ts +0 -43
- package/src/utils/rx-from_cancellable_promise.ts +0 -71
- package/src/utils/rx-next-tick.ts +0 -43
- package/src/utils/rx-retry_with_backoff.ts +0 -101
- package/src/utils/rx-throttle.ts +0 -84
- package/src/utils/rx-try_catch.ts +0 -37
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v3.30.0-dev.2023011700 (2023-01-17)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- Add `updateContentUrls` API, allowing to update the Manifest's URL during playback [#1182]
|
|
8
|
+
- DASH: implement forced-subtitles, adding the `forced` property to the audio tracks API and selecting by default a forced text track linked to the audio track's language if present [#1187]
|
|
9
|
+
|
|
10
|
+
### Bug fixes
|
|
11
|
+
|
|
12
|
+
- Fix segment requesting error when playing a DASH content without an url and without BaseURL elements [#1192]
|
|
13
|
+
- API: Stop sending events if the content is stopped due to a side-effect of one of the event handler [#1197]
|
|
14
|
+
- text-tracks/ttml: fix inconsistent line spacing when resizing the `textTrackElement` [#1191]
|
|
15
|
+
- DRM: Fix race condition leading to a JS error instead of a `NO_PLAYABLE_REPRESENTATION` [#1201]
|
|
16
|
+
- DRM/Compat: Renew MediaKeys at each `loadVideo` on all WebOS (LG TV) platforms to work around issues [#1188]
|
|
17
|
+
|
|
18
|
+
### Other improvements
|
|
19
|
+
|
|
20
|
+
- DASH: handle `endNumber` DASH attribute [#1186]
|
|
21
|
+
- API: send available...TracksChange events in the very unlikely scenario where tracks are added after a manifest update [#1197]
|
|
22
|
+
- Completely remove RxJS dependency from the RxPlayer's source code [#1193]
|
|
23
|
+
- DRM: Request PR recommendation when PlayReady is asked and try default recommendation robustnesses [#1189]
|
|
24
|
+
|
|
25
|
+
|
|
3
26
|
## v3.29.0 (2022-11-16)
|
|
4
27
|
|
|
5
28
|
### Features
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.30.0-dev.2023011800
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
*
|
|
5
5
|
* This should usually be the case but we found rare devices where this would
|
|
6
6
|
* cause problem:
|
|
7
|
-
* - (2022-
|
|
8
|
-
* when loading a content already-loaded on the
|
|
7
|
+
* - (2022-11-21): WebOS (LG TVs), for some encrypted contents, just
|
|
8
|
+
* rebuffered indefinitely when loading a content already-loaded on the
|
|
9
|
+
* HTMLMediaElement.
|
|
9
10
|
*
|
|
10
11
|
* @returns {boolean}
|
|
11
12
|
*/
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isWebOs } from "./browser_detection";
|
|
2
2
|
/**
|
|
3
3
|
* Returns `true` if a `MediaKeys` instance (the `Encrypted Media Extension`
|
|
4
4
|
* concept) can be reused between contents.
|
|
5
5
|
*
|
|
6
6
|
* This should usually be the case but we found rare devices where this would
|
|
7
7
|
* cause problem:
|
|
8
|
-
* - (2022-
|
|
9
|
-
* when loading a content already-loaded on the
|
|
8
|
+
* - (2022-11-21): WebOS (LG TVs), for some encrypted contents, just
|
|
9
|
+
* rebuffered indefinitely when loading a content already-loaded on the
|
|
10
|
+
* HTMLMediaElement.
|
|
10
11
|
*
|
|
11
12
|
* @returns {boolean}
|
|
12
13
|
*/
|
|
13
14
|
export default function canReuseMediaKeys() {
|
|
14
|
-
return !
|
|
15
|
+
return !isWebOs;
|
|
15
16
|
}
|
|
@@ -28,8 +28,8 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
28
28
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
29
29
|
};
|
|
30
30
|
})();
|
|
31
|
-
import { merge as observableMerge, Subject, takeUntil, } from "rxjs";
|
|
32
31
|
import EventEmitter from "../../../utils/event_emitter";
|
|
32
|
+
import TaskCanceller from "../../../utils/task_canceller";
|
|
33
33
|
import * as events from "../../event_listeners";
|
|
34
34
|
import { MSMediaKeysConstructor, } from "./ms_media_keys_constructor";
|
|
35
35
|
var IE11MediaKeySession = /** @class */ (function (_super) {
|
|
@@ -39,9 +39,9 @@ var IE11MediaKeySession = /** @class */ (function (_super) {
|
|
|
39
39
|
_this.expiration = NaN;
|
|
40
40
|
_this.keyStatuses = new Map();
|
|
41
41
|
_this._mk = mk;
|
|
42
|
-
_this.
|
|
42
|
+
_this._sessionClosingCanceller = new TaskCanceller();
|
|
43
43
|
_this.closed = new Promise(function (resolve) {
|
|
44
|
-
_this.
|
|
44
|
+
_this._sessionClosingCanceller.signal.register(function () { return resolve(); });
|
|
45
45
|
});
|
|
46
46
|
_this.update = function (license) {
|
|
47
47
|
return new Promise(function (resolve, reject) {
|
|
@@ -65,8 +65,18 @@ var IE11MediaKeySession = /** @class */ (function (_super) {
|
|
|
65
65
|
initData instanceof ArrayBuffer ? new Uint8Array(initData) :
|
|
66
66
|
new Uint8Array(initData.buffer);
|
|
67
67
|
_this._ss = _this._mk.createSession("video/mp4", initDataU8);
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
events.onKeyMessage(_this._ss, function (evt) {
|
|
69
|
+
var _a;
|
|
70
|
+
_this.trigger((_a = evt.type) !== null && _a !== void 0 ? _a : "message", evt);
|
|
71
|
+
}, _this._sessionClosingCanceller.signal);
|
|
72
|
+
events.onKeyAdded(_this._ss, function (evt) {
|
|
73
|
+
var _a;
|
|
74
|
+
_this.trigger((_a = evt.type) !== null && _a !== void 0 ? _a : "keyadded", evt);
|
|
75
|
+
}, _this._sessionClosingCanceller.signal);
|
|
76
|
+
events.onKeyError(_this._ss, function (evt) {
|
|
77
|
+
var _a;
|
|
78
|
+
_this.trigger((_a = evt.type) !== null && _a !== void 0 ? _a : "keyerror", evt);
|
|
79
|
+
}, _this._sessionClosingCanceller.signal);
|
|
70
80
|
resolve();
|
|
71
81
|
});
|
|
72
82
|
};
|
|
@@ -77,8 +87,7 @@ var IE11MediaKeySession = /** @class */ (function (_super) {
|
|
|
77
87
|
_this._ss.close();
|
|
78
88
|
_this._ss = undefined;
|
|
79
89
|
}
|
|
80
|
-
_this.
|
|
81
|
-
_this._closeSession$.complete();
|
|
90
|
+
_this._sessionClosingCanceller.cancel();
|
|
82
91
|
resolve();
|
|
83
92
|
});
|
|
84
93
|
};
|
|
@@ -13,11 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
/**
|
|
17
|
-
* This file provides browser-agnostic event listeners under the form of
|
|
18
|
-
* RxJS Observables
|
|
19
|
-
*/
|
|
20
|
-
import { Observable } from "rxjs";
|
|
21
16
|
import { IEventEmitter } from "../utils/event_emitter";
|
|
22
17
|
import { IReadOnlySharedReference } from "../utils/reference";
|
|
23
18
|
import { CancellationSignal } from "../utils/task_canceller";
|
|
@@ -44,7 +39,7 @@ export interface IPictureInPictureEvent {
|
|
|
44
39
|
* Emit when video enters and leaves Picture-In-Picture mode.
|
|
45
40
|
* @param {HTMLMediaElement} elt
|
|
46
41
|
* @param {Object} stopListening
|
|
47
|
-
* @returns {
|
|
42
|
+
* @returns {Object}
|
|
48
43
|
*/
|
|
49
44
|
declare function getPictureOnPictureStateRef(elt: HTMLMediaElement, stopListening: CancellationSignal): IReadOnlySharedReference<IPictureInPictureEvent>;
|
|
50
45
|
/**
|
|
@@ -55,7 +50,7 @@ declare function getPictureOnPictureStateRef(elt: HTMLMediaElement, stopListenin
|
|
|
55
50
|
* @param {Object} pipStatus
|
|
56
51
|
* @param {Object} stopListening - `CancellationSignal` allowing to free the
|
|
57
52
|
* resources reserved to listen to video visibility change.
|
|
58
|
-
* @returns {
|
|
53
|
+
* @returns {Object}
|
|
59
54
|
*/
|
|
60
55
|
declare function getVideoVisibilityRef(pipStatus: IReadOnlySharedReference<IPictureInPictureEvent>, stopListening: CancellationSignal): IReadOnlySharedReference<boolean>;
|
|
61
56
|
/**
|
|
@@ -69,102 +64,84 @@ declare function getVideoVisibilityRef(pipStatus: IReadOnlySharedReference<IPict
|
|
|
69
64
|
declare function getVideoWidthRef(mediaElement: HTMLMediaElement, pipStatusRef: IReadOnlySharedReference<IPictureInPictureEvent>, stopListening: CancellationSignal): IReadOnlySharedReference<number>;
|
|
70
65
|
/**
|
|
71
66
|
* @param {HTMLMediaElement} mediaElement
|
|
72
|
-
* @returns {Observable}
|
|
73
|
-
*/
|
|
74
|
-
declare const onLoadedMetadata$: (element: IEventTargetLike) => Observable<Event>;
|
|
75
|
-
/**
|
|
76
|
-
* @param {HTMLMediaElement} mediaElement
|
|
77
|
-
* @returns {Observable}
|
|
78
|
-
*/
|
|
79
|
-
declare const onSeeking$: (element: IEventTargetLike) => Observable<Event>;
|
|
80
|
-
/**
|
|
81
|
-
* @param {HTMLMediaElement} mediaElement
|
|
82
|
-
* @returns {Observable}
|
|
83
67
|
*/
|
|
84
|
-
declare const
|
|
68
|
+
declare const onLoadedMetadata: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
85
69
|
/**
|
|
86
70
|
* @param {HTMLMediaElement} mediaElement
|
|
87
|
-
* @returns {Observable}
|
|
88
71
|
*/
|
|
89
|
-
declare const
|
|
72
|
+
declare const onTimeUpdate: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
90
73
|
/**
|
|
91
|
-
* @param {
|
|
92
|
-
* @returns {Observable}
|
|
74
|
+
* @param {HTMLElement} element
|
|
93
75
|
*/
|
|
94
|
-
declare const
|
|
76
|
+
declare const onFullscreenChange: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
95
77
|
/**
|
|
96
|
-
* @param {
|
|
97
|
-
* @returns {Observable}
|
|
78
|
+
* @param {TextTrackList} textTrackList
|
|
98
79
|
*/
|
|
99
|
-
declare const
|
|
80
|
+
declare const onTextTrackAdded: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
100
81
|
/**
|
|
101
|
-
* @param {
|
|
102
|
-
* @returns {Observable}
|
|
82
|
+
* @param {TextTrackList} textTrackList
|
|
103
83
|
*/
|
|
104
|
-
declare const
|
|
84
|
+
declare const onTextTrackRemoved: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
105
85
|
/**
|
|
106
86
|
* @param {MediaSource} mediaSource
|
|
107
|
-
* @
|
|
87
|
+
* @param {Function} listener
|
|
88
|
+
* @param {Object} cancelSignal
|
|
108
89
|
*/
|
|
109
|
-
declare const onSourceOpen
|
|
90
|
+
declare const onSourceOpen: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
110
91
|
/**
|
|
111
92
|
* @param {MediaSource} mediaSource
|
|
112
|
-
* @
|
|
93
|
+
* @param {Function} listener
|
|
94
|
+
* @param {Object} cancelSignal
|
|
113
95
|
*/
|
|
114
|
-
declare const onSourceClose
|
|
96
|
+
declare const onSourceClose: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
115
97
|
/**
|
|
116
98
|
* @param {MediaSource} mediaSource
|
|
117
|
-
* @
|
|
99
|
+
* @param {Function} listener
|
|
100
|
+
* @param {Object} cancelSignal
|
|
118
101
|
*/
|
|
119
|
-
declare const onSourceEnded
|
|
102
|
+
declare const onSourceEnded: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
120
103
|
/**
|
|
121
|
-
* @param {
|
|
122
|
-
* @
|
|
104
|
+
* @param {MediaSource} mediaSource
|
|
105
|
+
* @param {Function} listener
|
|
106
|
+
* @param {Object} cancelSignal
|
|
123
107
|
*/
|
|
124
|
-
declare const
|
|
108
|
+
declare const onSourceBufferUpdate: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
125
109
|
/**
|
|
126
|
-
* @param {
|
|
127
|
-
* @
|
|
110
|
+
* @param {SourceBufferList} sourceBuffers
|
|
111
|
+
* @param {Function} listener
|
|
112
|
+
* @param {Object} cancelSignal
|
|
128
113
|
*/
|
|
129
|
-
declare const onRemoveSourceBuffers
|
|
114
|
+
declare const onRemoveSourceBuffers: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
130
115
|
/**
|
|
131
116
|
* @param {HTMLMediaElement} mediaElement
|
|
132
|
-
* @returns {Observable}
|
|
133
117
|
*/
|
|
134
|
-
declare const onEncrypted
|
|
118
|
+
declare const onEncrypted: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
135
119
|
/**
|
|
136
120
|
* @param {MediaKeySession} mediaKeySession
|
|
137
|
-
* @returns {Observable}
|
|
138
121
|
*/
|
|
139
|
-
declare const onKeyMessage
|
|
122
|
+
declare const onKeyMessage: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
140
123
|
/**
|
|
141
124
|
* @param {MediaKeySession} mediaKeySession
|
|
142
|
-
* @returns {Observable}
|
|
143
125
|
*/
|
|
144
|
-
declare const onKeyAdded
|
|
126
|
+
declare const onKeyAdded: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
145
127
|
/**
|
|
146
128
|
* @param {MediaKeySession} mediaKeySession
|
|
147
|
-
* @returns {Observable}
|
|
148
129
|
*/
|
|
149
|
-
declare const onKeyError
|
|
130
|
+
declare const onKeyError: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
150
131
|
/**
|
|
151
132
|
* @param {MediaKeySession} mediaKeySession
|
|
152
|
-
* @returns {Observable}
|
|
153
133
|
*/
|
|
154
|
-
declare const onKeyStatusesChange
|
|
134
|
+
declare const onKeyStatusesChange: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
155
135
|
/**
|
|
156
136
|
* @param {HTMLMediaElement} mediaElement
|
|
157
|
-
* @returns {Observable}
|
|
158
137
|
*/
|
|
159
138
|
declare const onSeeking: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
160
139
|
/**
|
|
161
140
|
* @param {HTMLMediaElement} mediaElement
|
|
162
|
-
* @returns {Observable}
|
|
163
141
|
*/
|
|
164
142
|
declare const onSeeked: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
165
143
|
/**
|
|
166
144
|
* @param {HTMLMediaElement} mediaElement
|
|
167
|
-
* @returns {Observable}
|
|
168
145
|
*/
|
|
169
146
|
declare const onEnded: (element: IEventTargetLike, listener: (event?: unknown) => void, cancelSignal: CancellationSignal) => void;
|
|
170
147
|
/**
|
|
@@ -178,4 +155,4 @@ declare const onEnded: (element: IEventTargetLike, listener: (event?: unknown) =
|
|
|
178
155
|
* emits
|
|
179
156
|
*/
|
|
180
157
|
declare function addEventListener(elt: IEventEmitterLike, evt: string, listener: (x?: unknown) => void, stopListening: CancellationSignal): void;
|
|
181
|
-
export { addEventListener, getPageActivityRef, getPictureOnPictureStateRef, getVideoVisibilityRef, getVideoWidthRef, onEncrypted
|
|
158
|
+
export { addEventListener, getPageActivityRef, getPictureOnPictureStateRef, getVideoVisibilityRef, getVideoWidthRef, onEncrypted, onEnded, onFullscreenChange, onKeyAdded, onKeyError, onKeyMessage, onKeyStatusesChange, onLoadedMetadata, onRemoveSourceBuffers, onSeeked, onSeeking, onSourceClose, onSourceEnded, onSourceOpen, onTimeUpdate, onSourceBufferUpdate, onTextTrackAdded, onTextTrackRemoved, };
|
|
@@ -13,11 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
/**
|
|
17
|
-
* This file provides browser-agnostic event listeners under the form of
|
|
18
|
-
* RxJS Observables
|
|
19
|
-
*/
|
|
20
|
-
import { NEVER, fromEvent as observableFromEvent, merge as observableMerge, } from "rxjs";
|
|
21
16
|
import config from "../config";
|
|
22
17
|
import log from "../log";
|
|
23
18
|
import isNonEmptyString from "../utils/is_non_empty_string";
|
|
@@ -65,7 +60,7 @@ function findSupportedEvent(element, eventNames) {
|
|
|
65
60
|
*/
|
|
66
61
|
function eventPrefixed(eventNames, prefixes) {
|
|
67
62
|
return eventNames.reduce(function (parent, name) {
|
|
68
|
-
return parent.concat((prefixes
|
|
63
|
+
return parent.concat((prefixes === undefined ? BROWSER_PREFIXES :
|
|
69
64
|
prefixes)
|
|
70
65
|
.map(function (p) { return p + name; }));
|
|
71
66
|
}, []);
|
|
@@ -75,12 +70,15 @@ function eventPrefixed(eventNames, prefixes) {
|
|
|
75
70
|
* optionally automatically adding browser prefixes if needed.
|
|
76
71
|
* @param {Array.<string>} eventNames - The event(s) to listen to. If multiple
|
|
77
72
|
* events are set, the event listener will be triggered when any of them emits.
|
|
73
|
+
* @param {Array.<string>|undefined} [prefixes] - Optional vendor prefixes with
|
|
74
|
+
* which the event might also be sent. If not defined, default prefixes might be
|
|
75
|
+
* tested.
|
|
78
76
|
* @returns {Function} - Returns function allowing to easily add a callback to
|
|
79
77
|
* be triggered when that event is emitted on a given event target.
|
|
80
78
|
*/
|
|
81
|
-
function createCompatibleEventListener(eventNames) {
|
|
79
|
+
function createCompatibleEventListener(eventNames, prefixes) {
|
|
82
80
|
var mem;
|
|
83
|
-
var prefixedEvents = eventPrefixed(eventNames);
|
|
81
|
+
var prefixedEvents = eventPrefixed(eventNames, prefixes);
|
|
84
82
|
return function (element, listener, cancelSignal) {
|
|
85
83
|
if (cancelSignal.isCancelled) {
|
|
86
84
|
return;
|
|
@@ -109,45 +107,29 @@ function createCompatibleEventListener(eventNames) {
|
|
|
109
107
|
}
|
|
110
108
|
}
|
|
111
109
|
prefixedEvents.forEach(function (eventName) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
element.
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* @param {Array.<string>} eventNames
|
|
121
|
-
* @param {Array.<string>|undefined} prefixes
|
|
122
|
-
* @returns {Observable}
|
|
123
|
-
*/
|
|
124
|
-
function compatibleListener(eventNames, prefixes) {
|
|
125
|
-
var mem;
|
|
126
|
-
var prefixedEvents = eventPrefixed(eventNames, prefixes);
|
|
127
|
-
return function (element) {
|
|
128
|
-
// if the element is a HTMLElement we can detect
|
|
129
|
-
// the supported event, and memoize it in `mem`
|
|
130
|
-
if (element instanceof HTMLElement) {
|
|
131
|
-
if (typeof mem === "undefined") {
|
|
132
|
-
mem = findSupportedEvent(element, prefixedEvents);
|
|
133
|
-
}
|
|
134
|
-
if (isNonEmptyString(mem)) {
|
|
135
|
-
return observableFromEvent(element, mem);
|
|
110
|
+
var hasSetOnFn = false;
|
|
111
|
+
if (typeof element.addEventListener === "function") {
|
|
112
|
+
element.addEventListener(eventName, listener);
|
|
136
113
|
}
|
|
137
114
|
else {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
return NEVER;
|
|
115
|
+
hasSetOnFn = true;
|
|
116
|
+
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
117
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
118
|
+
element["on" + eventName] = listener;
|
|
119
|
+
/* eslint-enable @typescript-eslint/no-unsafe-member-access */
|
|
144
120
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
121
|
+
cancelSignal.register(function () {
|
|
122
|
+
if (typeof element.removeEventListener === "function") {
|
|
123
|
+
element.removeEventListener(eventName, listener);
|
|
124
|
+
}
|
|
125
|
+
if (hasSetOnFn) {
|
|
126
|
+
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
127
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
128
|
+
delete element["on" + eventName];
|
|
129
|
+
/* eslint-enable @typescript-eslint/no-unsafe-member-access */
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
});
|
|
151
133
|
};
|
|
152
134
|
}
|
|
153
135
|
/**
|
|
@@ -178,14 +160,11 @@ function getDocumentVisibilityRef(stopListening) {
|
|
|
178
160
|
var visibilityChangeEvent = isNonEmptyString(prefix) ? prefix + "visibilitychange" :
|
|
179
161
|
"visibilitychange";
|
|
180
162
|
var isHidden = document[hidden];
|
|
181
|
-
var ref = createSharedReference(!isHidden);
|
|
163
|
+
var ref = createSharedReference(!isHidden, stopListening);
|
|
182
164
|
addEventListener(document, visibilityChangeEvent, function () {
|
|
183
165
|
var isVisible = !(document[hidden]);
|
|
184
166
|
ref.setValueIfChanged(isVisible);
|
|
185
167
|
}, stopListening);
|
|
186
|
-
stopListening.register(function () {
|
|
187
|
-
ref.finish();
|
|
188
|
-
});
|
|
189
168
|
return ref;
|
|
190
169
|
}
|
|
191
170
|
/**
|
|
@@ -199,11 +178,10 @@ function getDocumentVisibilityRef(stopListening) {
|
|
|
199
178
|
function getPageActivityRef(stopListening) {
|
|
200
179
|
var isDocVisibleRef = getDocumentVisibilityRef(stopListening);
|
|
201
180
|
var currentTimeout;
|
|
202
|
-
var ref = createSharedReference(true);
|
|
181
|
+
var ref = createSharedReference(true, stopListening);
|
|
203
182
|
stopListening.register(function () {
|
|
204
183
|
clearTimeout(currentTimeout);
|
|
205
184
|
currentTimeout = undefined;
|
|
206
|
-
ref.finish();
|
|
207
185
|
});
|
|
208
186
|
isDocVisibleRef.onUpdate(function onDocVisibilityChange(isVisible) {
|
|
209
187
|
clearTimeout(currentTimeout); // clear potential previous timeout
|
|
@@ -234,7 +212,7 @@ function getVideoWidthFromPIPWindow(mediaElement, pipWindow) {
|
|
|
234
212
|
* Emit when video enters and leaves Picture-In-Picture mode.
|
|
235
213
|
* @param {HTMLMediaElement} elt
|
|
236
214
|
* @param {Object} stopListening
|
|
237
|
-
* @returns {
|
|
215
|
+
* @returns {Object}
|
|
238
216
|
*/
|
|
239
217
|
function getPictureOnPictureStateRef(elt, stopListening) {
|
|
240
218
|
var mediaElement = elt;
|
|
@@ -244,19 +222,16 @@ function getPictureOnPictureStateRef(elt, stopListening) {
|
|
|
244
222
|
var ref_1 = createSharedReference({
|
|
245
223
|
isEnabled: isWebKitPIPEnabled,
|
|
246
224
|
pipWindow: null,
|
|
247
|
-
});
|
|
225
|
+
}, stopListening);
|
|
248
226
|
addEventListener(mediaElement, "webkitpresentationmodechanged", function () {
|
|
249
227
|
var isEnabled = mediaElement.webkitPresentationMode === "picture-in-picture";
|
|
250
228
|
ref_1.setValue({ isEnabled: isEnabled, pipWindow: null });
|
|
251
229
|
}, stopListening);
|
|
252
|
-
stopListening.register(function () {
|
|
253
|
-
ref_1.finish();
|
|
254
|
-
});
|
|
255
230
|
return ref_1;
|
|
256
231
|
}
|
|
257
232
|
var isPIPEnabled = (document.pictureInPictureElement === mediaElement);
|
|
258
233
|
var ref = createSharedReference({ isEnabled: isPIPEnabled,
|
|
259
|
-
pipWindow: null });
|
|
234
|
+
pipWindow: null }, stopListening);
|
|
260
235
|
addEventListener(mediaElement, "enterpictureinpicture", function (evt) {
|
|
261
236
|
var _a;
|
|
262
237
|
ref.setValue({
|
|
@@ -267,9 +242,6 @@ function getPictureOnPictureStateRef(elt, stopListening) {
|
|
|
267
242
|
addEventListener(mediaElement, "leavepictureinpicture", function () {
|
|
268
243
|
ref.setValue({ isEnabled: false, pipWindow: null });
|
|
269
244
|
}, stopListening);
|
|
270
|
-
stopListening.register(function () {
|
|
271
|
-
ref.finish();
|
|
272
|
-
});
|
|
273
245
|
return ref;
|
|
274
246
|
}
|
|
275
247
|
/**
|
|
@@ -280,16 +252,15 @@ function getPictureOnPictureStateRef(elt, stopListening) {
|
|
|
280
252
|
* @param {Object} pipStatus
|
|
281
253
|
* @param {Object} stopListening - `CancellationSignal` allowing to free the
|
|
282
254
|
* resources reserved to listen to video visibility change.
|
|
283
|
-
* @returns {
|
|
255
|
+
* @returns {Object}
|
|
284
256
|
*/
|
|
285
257
|
function getVideoVisibilityRef(pipStatus, stopListening) {
|
|
286
258
|
var isDocVisibleRef = getDocumentVisibilityRef(stopListening);
|
|
287
259
|
var currentTimeout;
|
|
288
|
-
var ref = createSharedReference(true);
|
|
260
|
+
var ref = createSharedReference(true, stopListening);
|
|
289
261
|
stopListening.register(function () {
|
|
290
262
|
clearTimeout(currentTimeout);
|
|
291
263
|
currentTimeout = undefined;
|
|
292
|
-
ref.finish();
|
|
293
264
|
});
|
|
294
265
|
isDocVisibleRef.onUpdate(checkCurrentVisibility, { clearSignal: stopListening });
|
|
295
266
|
pipStatus.onUpdate(checkCurrentVisibility, { clearSignal: stopListening });
|
|
@@ -318,7 +289,7 @@ function getVideoVisibilityRef(pipStatus, stopListening) {
|
|
|
318
289
|
* @returns {Object}
|
|
319
290
|
*/
|
|
320
291
|
function getVideoWidthRef(mediaElement, pipStatusRef, stopListening) {
|
|
321
|
-
var ref = createSharedReference(mediaElement.clientWidth * pixelRatio);
|
|
292
|
+
var ref = createSharedReference(mediaElement.clientWidth * pixelRatio, stopListening);
|
|
322
293
|
var clearPreviousEventListener = noop;
|
|
323
294
|
pipStatusRef.onUpdate(checkVideoWidth, { clearSignal: stopListening });
|
|
324
295
|
addEventListener(window, "resize", checkVideoWidth, stopListening);
|
|
@@ -327,7 +298,6 @@ function getVideoWidthRef(mediaElement, pipStatusRef, stopListening) {
|
|
|
327
298
|
stopListening.register(function stopUpdatingVideoWidthRef() {
|
|
328
299
|
clearPreviousEventListener();
|
|
329
300
|
clearInterval(interval);
|
|
330
|
-
ref.finish();
|
|
331
301
|
});
|
|
332
302
|
return ref;
|
|
333
303
|
function checkVideoWidth() {
|
|
@@ -356,107 +326,87 @@ function getVideoWidthRef(mediaElement, pipStatusRef, stopListening) {
|
|
|
356
326
|
}
|
|
357
327
|
/**
|
|
358
328
|
* @param {HTMLMediaElement} mediaElement
|
|
359
|
-
* @returns {Observable}
|
|
360
329
|
*/
|
|
361
|
-
var onLoadedMetadata
|
|
330
|
+
var onLoadedMetadata = createCompatibleEventListener(["loadedmetadata"]);
|
|
362
331
|
/**
|
|
363
332
|
* @param {HTMLMediaElement} mediaElement
|
|
364
|
-
* @returns {Observable}
|
|
365
333
|
*/
|
|
366
|
-
var
|
|
367
|
-
/**
|
|
368
|
-
* @param {HTMLMediaElement} mediaElement
|
|
369
|
-
* @returns {Observable}
|
|
370
|
-
*/
|
|
371
|
-
var onSeeked$ = compatibleListener(["seeked"]);
|
|
372
|
-
/**
|
|
373
|
-
* @param {HTMLMediaElement} mediaElement
|
|
374
|
-
* @returns {Observable}
|
|
375
|
-
*/
|
|
376
|
-
var onEnded$ = compatibleListener(["ended"]);
|
|
377
|
-
/**
|
|
378
|
-
* @param {HTMLMediaElement} mediaElement
|
|
379
|
-
* @returns {Observable}
|
|
380
|
-
*/
|
|
381
|
-
var onTimeUpdate$ = compatibleListener(["timeupdate"]);
|
|
334
|
+
var onTimeUpdate = createCompatibleEventListener(["timeupdate"]);
|
|
382
335
|
/**
|
|
383
336
|
* @param {HTMLElement} element
|
|
384
|
-
* @returns {Observable}
|
|
385
337
|
*/
|
|
386
|
-
var onFullscreenChange
|
|
338
|
+
var onFullscreenChange = createCompatibleEventListener(["fullscreenchange", "FullscreenChange"],
|
|
387
339
|
// On IE11, fullscreen change events is called MSFullscreenChange
|
|
388
340
|
BROWSER_PREFIXES.concat("MS"));
|
|
389
341
|
/**
|
|
390
|
-
* @param {
|
|
391
|
-
* @returns {Observable}
|
|
342
|
+
* @param {TextTrackList} textTrackList
|
|
392
343
|
*/
|
|
393
|
-
var
|
|
394
|
-
return observableMerge(compatibleListener(["addtrack"])(textTrackList), compatibleListener(["removetrack"])(textTrackList));
|
|
395
|
-
};
|
|
344
|
+
var onTextTrackAdded = createCompatibleEventListener(["addtrack"]);
|
|
396
345
|
/**
|
|
397
|
-
* @param {
|
|
398
|
-
* @returns {Observable}
|
|
346
|
+
* @param {TextTrackList} textTrackList
|
|
399
347
|
*/
|
|
400
|
-
var
|
|
348
|
+
var onTextTrackRemoved = createCompatibleEventListener(["removetrack"]);
|
|
401
349
|
/**
|
|
402
350
|
* @param {MediaSource} mediaSource
|
|
403
|
-
* @
|
|
351
|
+
* @param {Function} listener
|
|
352
|
+
* @param {Object} cancelSignal
|
|
404
353
|
*/
|
|
405
|
-
var
|
|
354
|
+
var onSourceOpen = createCompatibleEventListener(["sourceopen", "webkitsourceopen"]);
|
|
406
355
|
/**
|
|
407
356
|
* @param {MediaSource} mediaSource
|
|
408
|
-
* @
|
|
357
|
+
* @param {Function} listener
|
|
358
|
+
* @param {Object} cancelSignal
|
|
409
359
|
*/
|
|
410
|
-
var
|
|
360
|
+
var onSourceClose = createCompatibleEventListener(["sourceclose", "webkitsourceclose"]);
|
|
411
361
|
/**
|
|
412
|
-
* @param {
|
|
413
|
-
* @
|
|
362
|
+
* @param {MediaSource} mediaSource
|
|
363
|
+
* @param {Function} listener
|
|
364
|
+
* @param {Object} cancelSignal
|
|
414
365
|
*/
|
|
415
|
-
var
|
|
366
|
+
var onSourceEnded = createCompatibleEventListener(["sourceended", "webkitsourceended"]);
|
|
416
367
|
/**
|
|
417
368
|
* @param {MediaSource} mediaSource
|
|
418
|
-
* @
|
|
369
|
+
* @param {Function} listener
|
|
370
|
+
* @param {Object} cancelSignal
|
|
371
|
+
*/
|
|
372
|
+
var onSourceBufferUpdate = createCompatibleEventListener(["update"]);
|
|
373
|
+
/**
|
|
374
|
+
* @param {SourceBufferList} sourceBuffers
|
|
375
|
+
* @param {Function} listener
|
|
376
|
+
* @param {Object} cancelSignal
|
|
419
377
|
*/
|
|
420
|
-
var onRemoveSourceBuffers
|
|
378
|
+
var onRemoveSourceBuffers = createCompatibleEventListener(["removesourcebuffer"]);
|
|
421
379
|
/**
|
|
422
380
|
* @param {HTMLMediaElement} mediaElement
|
|
423
|
-
* @returns {Observable}
|
|
424
381
|
*/
|
|
425
|
-
var onEncrypted
|
|
382
|
+
var onEncrypted = createCompatibleEventListener(shouldFavourCustomSafariEME() ? ["needkey"] :
|
|
426
383
|
["encrypted", "needkey"]);
|
|
427
384
|
/**
|
|
428
385
|
* @param {MediaKeySession} mediaKeySession
|
|
429
|
-
* @returns {Observable}
|
|
430
386
|
*/
|
|
431
|
-
var onKeyMessage
|
|
387
|
+
var onKeyMessage = createCompatibleEventListener(["keymessage", "message"]);
|
|
432
388
|
/**
|
|
433
389
|
* @param {MediaKeySession} mediaKeySession
|
|
434
|
-
* @returns {Observable}
|
|
435
390
|
*/
|
|
436
|
-
var onKeyAdded
|
|
391
|
+
var onKeyAdded = createCompatibleEventListener(["keyadded", "ready"]);
|
|
437
392
|
/**
|
|
438
393
|
* @param {MediaKeySession} mediaKeySession
|
|
439
|
-
* @returns {Observable}
|
|
440
394
|
*/
|
|
441
|
-
var onKeyError
|
|
395
|
+
var onKeyError = createCompatibleEventListener(["keyerror", "error"]);
|
|
442
396
|
/**
|
|
443
397
|
* @param {MediaKeySession} mediaKeySession
|
|
444
|
-
* @returns {Observable}
|
|
445
398
|
*/
|
|
446
|
-
var onKeyStatusesChange
|
|
399
|
+
var onKeyStatusesChange = createCompatibleEventListener(["keystatuseschange"]);
|
|
447
400
|
/**
|
|
448
401
|
* @param {HTMLMediaElement} mediaElement
|
|
449
|
-
* @returns {Observable}
|
|
450
402
|
*/
|
|
451
403
|
var onSeeking = createCompatibleEventListener(["seeking"]);
|
|
452
404
|
/**
|
|
453
405
|
* @param {HTMLMediaElement} mediaElement
|
|
454
|
-
* @returns {Observable}
|
|
455
406
|
*/
|
|
456
407
|
var onSeeked = createCompatibleEventListener(["seeked"]);
|
|
457
408
|
/**
|
|
458
409
|
* @param {HTMLMediaElement} mediaElement
|
|
459
|
-
* @returns {Observable}
|
|
460
410
|
*/
|
|
461
411
|
var onEnded = createCompatibleEventListener(["ended"]);
|
|
462
412
|
/**
|
|
@@ -475,4 +425,4 @@ function addEventListener(elt, evt, listener, stopListening) {
|
|
|
475
425
|
elt.removeEventListener(evt, listener);
|
|
476
426
|
});
|
|
477
427
|
}
|
|
478
|
-
export { addEventListener, getPageActivityRef, getPictureOnPictureStateRef, getVideoVisibilityRef, getVideoWidthRef, onEncrypted
|
|
428
|
+
export { addEventListener, getPageActivityRef, getPictureOnPictureStateRef, getVideoVisibilityRef, getVideoWidthRef, onEncrypted, onEnded, onFullscreenChange, onKeyAdded, onKeyError, onKeyMessage, onKeyStatusesChange, onLoadedMetadata, onRemoveSourceBuffers, onSeeked, onSeeking, onSourceClose, onSourceEnded, onSourceOpen, onTimeUpdate, onSourceBufferUpdate, onTextTrackAdded, onTextTrackRemoved, };
|