rx-player 4.4.1-dev.2025101500 → 4.4.1
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 +3 -1
- package/README.md +111 -50
- package/VERSION +1 -1
- package/dist/commonjs/__GENERATED_CODE/embedded_dash_wasm.d.ts.map +1 -1
- package/dist/commonjs/__GENERATED_CODE/embedded_dash_wasm.js +1 -1
- package/dist/commonjs/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
- package/dist/commonjs/__GENERATED_CODE/embedded_worker.js +1 -1
- package/dist/commonjs/core/{entry → main/common}/FreezeResolver.d.ts +3 -3
- package/dist/commonjs/core/main/common/FreezeResolver.d.ts.map +1 -0
- package/dist/commonjs/core/{entry → main/common}/FreezeResolver.js +3 -3
- package/dist/commonjs/core/{entry → main/common}/content_time_boundaries_observer.d.ts +5 -5
- package/dist/commonjs/core/main/common/content_time_boundaries_observer.d.ts.map +1 -0
- package/dist/commonjs/core/{entry → main/common}/content_time_boundaries_observer.js +6 -6
- package/dist/{es2017/core/entry → commonjs/core/main/common}/create_content_time_boundaries_observer.d.ts +6 -6
- package/dist/commonjs/core/main/common/create_content_time_boundaries_observer.d.ts.map +1 -0
- package/dist/commonjs/core/{entry → main/common}/create_content_time_boundaries_observer.js +1 -1
- package/dist/{es2017/core/entry → commonjs/core/main/common}/get_buffered_data_per_media_buffer.d.ts +4 -4
- package/dist/commonjs/core/main/common/get_buffered_data_per_media_buffer.d.ts.map +1 -0
- package/dist/commonjs/core/{entry → main/common}/get_buffered_data_per_media_buffer.js +1 -1
- package/dist/{es2017/core/entry → commonjs/core/main/common}/get_thumbnail_data.d.ts +3 -3
- package/dist/commonjs/core/main/common/get_thumbnail_data.d.ts.map +1 -0
- package/dist/commonjs/core/{entry → main/common}/get_thumbnail_data.js +2 -2
- package/dist/{es2017/core/entry → commonjs/core/main/common}/synchronize_sinks_on_observation.d.ts +2 -2
- package/dist/commonjs/core/main/common/synchronize_sinks_on_observation.d.ts.map +1 -0
- package/dist/{es2017/core/entry → commonjs/core/main/worker}/content_preparer.d.ts +15 -22
- package/dist/commonjs/core/main/worker/content_preparer.d.ts.map +1 -0
- package/dist/commonjs/core/{entry → main/worker}/content_preparer.js +64 -62
- package/dist/commonjs/core/main/worker/globals.d.ts +14 -0
- package/dist/commonjs/core/main/worker/globals.d.ts.map +1 -0
- package/dist/commonjs/core/main/worker/globals.js +26 -0
- package/dist/commonjs/core/main/worker/index.d.ts +3 -0
- package/dist/commonjs/core/main/worker/index.d.ts.map +1 -0
- package/dist/commonjs/core/main/worker/index.js +4 -0
- package/dist/commonjs/core/main/worker/send_message.d.ts +4 -0
- package/dist/commonjs/core/main/worker/send_message.d.ts.map +1 -0
- package/dist/commonjs/core/main/worker/send_message.js +23 -0
- package/dist/{es2017/core/entry → commonjs/core/main/worker}/track_choice_setter.d.ts +4 -4
- package/dist/commonjs/core/main/worker/track_choice_setter.d.ts.map +1 -0
- package/dist/commonjs/core/{entry → main/worker}/track_choice_setter.js +4 -4
- package/dist/commonjs/core/main/worker/worker_main.d.ts +2 -0
- package/dist/commonjs/core/main/worker/worker_main.d.ts.map +1 -0
- package/dist/commonjs/core/{entry/core_entry.js → main/worker/worker_main.js} +153 -192
- package/dist/commonjs/core/{entry/core_text_displayer_interface.d.ts → main/worker/worker_text_displayer_interface.d.ts} +11 -11
- package/dist/commonjs/core/main/worker/worker_text_displayer_interface.d.ts.map +1 -0
- package/dist/commonjs/core/{entry/core_text_displayer_interface.js → main/worker/worker_text_displayer_interface.js} +22 -22
- package/dist/commonjs/core/types.d.ts +1 -519
- package/dist/commonjs/core/types.d.ts.map +1 -1
- package/dist/commonjs/core/types.js +0 -1
- package/dist/commonjs/experimental/features/local.d.ts.map +1 -1
- package/dist/commonjs/experimental/features/local.js +1 -7
- package/dist/commonjs/experimental/features/metaplaylist.d.ts.map +1 -1
- package/dist/commonjs/experimental/features/metaplaylist.js +1 -7
- package/dist/commonjs/experimental/features/multi_thread.d.ts.map +1 -1
- package/dist/commonjs/experimental/features/multi_thread.js +2 -6
- package/dist/commonjs/features/features_object.js +1 -1
- package/dist/commonjs/features/list/dash.d.ts.map +1 -1
- package/dist/commonjs/features/list/dash.js +1 -7
- package/dist/commonjs/features/list/dash_wasm.d.ts.map +1 -1
- package/dist/commonjs/features/list/dash_wasm.js +1 -7
- package/dist/commonjs/features/list/media_source_main.d.ts.map +1 -1
- package/dist/commonjs/features/list/media_source_main.js +1 -7
- package/dist/commonjs/features/list/smooth.d.ts.map +1 -1
- package/dist/commonjs/features/list/smooth.js +1 -7
- package/dist/commonjs/features/types.d.ts +4 -20
- package/dist/commonjs/features/types.d.ts.map +1 -1
- package/dist/commonjs/main_thread/api/public_api.d.ts.map +1 -1
- package/dist/commonjs/main_thread/api/public_api.js +44 -40
- package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts +108 -166
- package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
- package/dist/commonjs/main_thread/init/media_source_content_initializer.js +918 -1491
- package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts +308 -0
- package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -0
- package/dist/commonjs/main_thread/init/multi_thread_content_initializer.js +1713 -0
- package/dist/commonjs/main_thread/init/send_message.d.ts +3 -0
- package/dist/commonjs/main_thread/init/send_message.d.ts.map +1 -0
- package/dist/commonjs/main_thread/init/send_message.js +13 -0
- package/dist/commonjs/main_thread/init/utils/create_core_playback_observer.d.ts.map +1 -1
- package/dist/commonjs/main_thread/init/utils/create_core_playback_observer.js +1 -2
- package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.d.ts +1 -1
- package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.d.ts.map +1 -1
- package/dist/commonjs/main_thread/types.d.ts +0 -537
- package/dist/commonjs/main_thread/types.d.ts.map +1 -1
- package/dist/commonjs/manifest/utils.d.ts.map +1 -1
- package/dist/commonjs/manifest/utils.js +4 -18
- package/dist/commonjs/mse/worker_media_source_interface.d.ts +2 -2
- package/dist/commonjs/mse/worker_media_source_interface.d.ts.map +1 -1
- package/dist/commonjs/mse/worker_media_source_interface.js +12 -12
- package/dist/commonjs/multithread_types.d.ts +915 -0
- package/dist/commonjs/multithread_types.d.ts.map +1 -0
- package/dist/commonjs/multithread_types.js +7 -0
- package/dist/commonjs/parsers/manifest/smooth/create_parser.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/smooth/create_parser.d.ts.map +1 -1
- package/dist/commonjs/parsers/manifest/smooth/create_parser.js +27 -31
- package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.d.ts +2 -3
- package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.d.ts.map +1 -1
- package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.js +7 -16
- package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.d.ts +2 -3
- package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.d.ts.map +1 -1
- package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.js +6 -37
- package/dist/commonjs/parsers/manifest/smooth/utils/parseBoolean.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/smooth/utils/parseBoolean.d.ts.map +1 -1
- package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.d.ts +2 -3
- package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.d.ts.map +1 -1
- package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.js +5 -28
- package/dist/commonjs/playback_observer/media_element_playback_observer.d.ts +28 -8
- package/dist/commonjs/playback_observer/media_element_playback_observer.d.ts.map +1 -1
- package/dist/commonjs/playback_observer/media_element_playback_observer.js +146 -64
- package/dist/{es2017/playback_observer/core_playback_observer.d.ts → commonjs/playback_observer/worker_playback_observer.d.ts} +8 -8
- package/dist/commonjs/playback_observer/worker_playback_observer.d.ts.map +1 -0
- package/dist/commonjs/playback_observer/{core_playback_observer.js → worker_playback_observer.js} +13 -13
- package/dist/commonjs/transports/smooth/pipelines.d.ts.map +1 -1
- package/dist/commonjs/transports/smooth/pipelines.js +3 -25
- package/dist/commonjs/worker_entry_point.js +2 -62
- package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.d.ts.map +1 -1
- package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.js +1 -1
- package/dist/es2017/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
- package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
- package/dist/es2017/core/{entry → main/common}/FreezeResolver.d.ts +3 -3
- package/dist/es2017/core/main/common/FreezeResolver.d.ts.map +1 -0
- package/dist/es2017/core/{entry → main/common}/FreezeResolver.js +3 -3
- package/dist/es2017/core/{entry → main/common}/content_time_boundaries_observer.d.ts +5 -5
- package/dist/es2017/core/main/common/content_time_boundaries_observer.d.ts.map +1 -0
- package/dist/es2017/core/{entry → main/common}/content_time_boundaries_observer.js +6 -6
- package/dist/{commonjs/core/entry → es2017/core/main/common}/create_content_time_boundaries_observer.d.ts +6 -6
- package/dist/es2017/core/main/common/create_content_time_boundaries_observer.d.ts.map +1 -0
- package/dist/es2017/core/{entry → main/common}/create_content_time_boundaries_observer.js +1 -1
- package/dist/{commonjs/core/entry → es2017/core/main/common}/get_buffered_data_per_media_buffer.d.ts +4 -4
- package/dist/es2017/core/main/common/get_buffered_data_per_media_buffer.d.ts.map +1 -0
- package/dist/es2017/core/{entry → main/common}/get_buffered_data_per_media_buffer.js +1 -1
- package/dist/{commonjs/core/entry → es2017/core/main/common}/get_thumbnail_data.d.ts +3 -3
- package/dist/es2017/core/main/common/get_thumbnail_data.d.ts.map +1 -0
- package/dist/es2017/core/{entry → main/common}/get_thumbnail_data.js +2 -2
- package/dist/{commonjs/core/entry → es2017/core/main/common}/synchronize_sinks_on_observation.d.ts +2 -2
- package/dist/es2017/core/main/common/synchronize_sinks_on_observation.d.ts.map +1 -0
- package/dist/{commonjs/core/entry → es2017/core/main/worker}/content_preparer.d.ts +15 -22
- package/dist/es2017/core/main/worker/content_preparer.d.ts.map +1 -0
- package/dist/es2017/core/{entry → main/worker}/content_preparer.js +55 -53
- package/dist/es2017/core/main/worker/globals.d.ts +14 -0
- package/dist/es2017/core/main/worker/globals.d.ts.map +1 -0
- package/dist/es2017/core/main/worker/globals.js +18 -0
- package/dist/es2017/core/main/worker/index.d.ts +3 -0
- package/dist/es2017/core/main/worker/index.d.ts.map +1 -0
- package/dist/es2017/core/main/worker/index.js +2 -0
- package/dist/es2017/core/main/worker/send_message.d.ts +4 -0
- package/dist/es2017/core/main/worker/send_message.d.ts.map +1 -0
- package/dist/es2017/core/main/worker/send_message.js +19 -0
- package/dist/{commonjs/core/entry → es2017/core/main/worker}/track_choice_setter.d.ts +4 -4
- package/dist/es2017/core/main/worker/track_choice_setter.d.ts.map +1 -0
- package/dist/es2017/core/{entry → main/worker}/track_choice_setter.js +4 -4
- package/dist/es2017/core/main/worker/worker_main.d.ts +2 -0
- package/dist/es2017/core/main/worker/worker_main.d.ts.map +1 -0
- package/dist/es2017/core/{entry/core_entry.js → main/worker/worker_main.js} +114 -153
- package/dist/es2017/core/{entry/core_text_displayer_interface.d.ts → main/worker/worker_text_displayer_interface.d.ts} +11 -11
- package/dist/es2017/core/main/worker/worker_text_displayer_interface.d.ts.map +1 -0
- package/dist/es2017/core/{entry/core_text_displayer_interface.js → main/worker/worker_text_displayer_interface.js} +10 -10
- package/dist/es2017/core/types.d.ts +1 -519
- package/dist/es2017/core/types.d.ts.map +1 -1
- package/dist/es2017/core/types.js +0 -1
- package/dist/es2017/experimental/features/local.d.ts.map +1 -1
- package/dist/es2017/experimental/features/local.js +1 -7
- package/dist/es2017/experimental/features/metaplaylist.d.ts.map +1 -1
- package/dist/es2017/experimental/features/metaplaylist.js +1 -7
- package/dist/es2017/experimental/features/multi_thread.d.ts.map +1 -1
- package/dist/es2017/experimental/features/multi_thread.js +2 -6
- package/dist/es2017/features/features_object.js +1 -1
- package/dist/es2017/features/list/dash.d.ts.map +1 -1
- package/dist/es2017/features/list/dash.js +1 -7
- package/dist/es2017/features/list/dash_wasm.d.ts.map +1 -1
- package/dist/es2017/features/list/dash_wasm.js +1 -7
- package/dist/es2017/features/list/media_source_main.d.ts.map +1 -1
- package/dist/es2017/features/list/media_source_main.js +1 -7
- package/dist/es2017/features/list/smooth.d.ts.map +1 -1
- package/dist/es2017/features/list/smooth.js +1 -7
- package/dist/es2017/features/types.d.ts +4 -20
- package/dist/es2017/features/types.d.ts.map +1 -1
- package/dist/es2017/main_thread/api/public_api.d.ts.map +1 -1
- package/dist/es2017/main_thread/api/public_api.js +45 -41
- package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts +108 -166
- package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
- package/dist/es2017/main_thread/init/media_source_content_initializer.js +760 -1405
- package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts +308 -0
- package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -0
- package/dist/es2017/main_thread/init/multi_thread_content_initializer.js +1559 -0
- package/dist/es2017/main_thread/init/send_message.d.ts +3 -0
- package/dist/es2017/main_thread/init/send_message.d.ts.map +1 -0
- package/dist/es2017/main_thread/init/send_message.js +10 -0
- package/dist/es2017/main_thread/init/utils/create_core_playback_observer.d.ts.map +1 -1
- package/dist/es2017/main_thread/init/utils/create_core_playback_observer.js +1 -2
- package/dist/es2017/main_thread/init/utils/update_manifest_codec_support.d.ts +1 -1
- package/dist/es2017/main_thread/init/utils/update_manifest_codec_support.d.ts.map +1 -1
- package/dist/es2017/main_thread/types.d.ts +0 -537
- package/dist/es2017/main_thread/types.d.ts.map +1 -1
- package/dist/es2017/manifest/utils.d.ts.map +1 -1
- package/dist/es2017/manifest/utils.js +4 -16
- package/dist/es2017/mse/worker_media_source_interface.d.ts +2 -2
- package/dist/es2017/mse/worker_media_source_interface.d.ts.map +1 -1
- package/dist/es2017/mse/worker_media_source_interface.js +12 -12
- package/dist/es2017/multithread_types.d.ts +915 -0
- package/dist/es2017/multithread_types.d.ts.map +1 -0
- package/dist/es2017/multithread_types.js +6 -0
- package/dist/es2017/parsers/manifest/smooth/create_parser.d.ts +1 -1
- package/dist/es2017/parsers/manifest/smooth/create_parser.d.ts.map +1 -1
- package/dist/es2017/parsers/manifest/smooth/create_parser.js +27 -31
- package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.d.ts +2 -3
- package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.d.ts.map +1 -1
- package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.js +7 -16
- package/dist/es2017/parsers/manifest/smooth/parse_protection_node.d.ts +2 -3
- package/dist/es2017/parsers/manifest/smooth/parse_protection_node.d.ts.map +1 -1
- package/dist/es2017/parsers/manifest/smooth/parse_protection_node.js +6 -15
- package/dist/es2017/parsers/manifest/smooth/utils/parseBoolean.d.ts +1 -1
- package/dist/es2017/parsers/manifest/smooth/utils/parseBoolean.d.ts.map +1 -1
- package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.d.ts +2 -3
- package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.d.ts.map +1 -1
- package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.js +5 -6
- package/dist/es2017/playback_observer/media_element_playback_observer.d.ts +28 -8
- package/dist/es2017/playback_observer/media_element_playback_observer.d.ts.map +1 -1
- package/dist/es2017/playback_observer/media_element_playback_observer.js +144 -64
- package/dist/{commonjs/playback_observer/core_playback_observer.d.ts → es2017/playback_observer/worker_playback_observer.d.ts} +8 -8
- package/dist/es2017/playback_observer/worker_playback_observer.d.ts.map +1 -0
- package/dist/es2017/playback_observer/{core_playback_observer.js → worker_playback_observer.js} +2 -2
- package/dist/es2017/transports/smooth/pipelines.d.ts.map +1 -1
- package/dist/es2017/transports/smooth/pipelines.js +3 -25
- package/dist/es2017/worker_entry_point.js +2 -62
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +19165 -21886
- package/dist/rx-player.min.js +20 -20
- package/dist/worker.js +8 -8
- package/eslint.config.mjs +647 -348
- package/package.json +6 -6
- package/src/README.md +198 -88
- package/src/__GENERATED_CODE/embedded_dash_wasm.ts +1 -1
- package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
- package/src/core/{entry → main}/README.md +1 -1
- package/src/core/{entry → main/common}/FreezeResolver.ts +7 -7
- package/src/core/{entry → main/common}/content_time_boundaries_observer.ts +10 -10
- package/src/core/{entry → main/common}/create_content_time_boundaries_observer.ts +7 -7
- package/src/core/{entry → main/common}/get_buffered_data_per_media_buffer.ts +6 -6
- package/src/core/{entry → main/common}/get_thumbnail_data.ts +5 -5
- package/src/core/{entry → main/common}/synchronize_sinks_on_observation.ts +2 -2
- package/src/core/{entry → main/worker}/content_preparer.ts +76 -77
- package/src/core/main/worker/globals.ts +38 -0
- package/src/core/main/worker/index.ts +2 -0
- package/src/core/main/worker/send_message.ts +28 -0
- package/src/core/{entry → main/worker}/track_choice_setter.ts +7 -7
- package/src/core/{entry/core_entry.ts → main/worker/worker_main.ts} +149 -223
- package/src/core/{entry/core_text_displayer_interface.ts → main/worker/worker_text_displayer_interface.ts} +26 -26
- package/src/core/types.ts +3 -631
- package/src/experimental/features/__tests__/local.test.ts +2 -11
- package/src/experimental/features/__tests__/metaplaylist.test.ts +2 -11
- package/src/experimental/features/__tests__/multi_thread.test.ts +3 -8
- package/src/experimental/features/local.ts +1 -7
- package/src/experimental/features/metaplaylist.ts +1 -7
- package/src/experimental/features/multi_thread.ts +2 -6
- package/src/features/features_object.ts +1 -1
- package/src/features/list/__tests__/dash.test.ts +3 -12
- package/src/features/list/__tests__/smooth.test.ts +2 -11
- package/src/features/list/dash.ts +1 -7
- package/src/features/list/dash_wasm.ts +1 -7
- package/src/features/list/media_source_main.ts +1 -7
- package/src/features/list/smooth.ts +1 -7
- package/src/features/types.ts +4 -23
- package/src/main_thread/README.md +0 -8
- package/src/main_thread/api/public_api.ts +51 -47
- package/src/main_thread/init/media_source_content_initializer.ts +1164 -2046
- package/src/main_thread/init/multi_thread_content_initializer.ts +2330 -0
- package/src/main_thread/init/send_message.ts +15 -0
- package/src/main_thread/init/utils/create_core_playback_observer.ts +1 -2
- package/src/main_thread/init/utils/update_manifest_codec_support.ts +1 -1
- package/src/main_thread/types.ts +0 -610
- package/src/manifest/utils.ts +4 -20
- package/src/mse/worker_media_source_interface.ts +35 -35
- package/src/multithread_types.ts +1095 -0
- package/src/parsers/manifest/smooth/create_parser.ts +34 -40
- package/src/parsers/manifest/smooth/parse_C_nodes.ts +8 -19
- package/src/parsers/manifest/smooth/parse_protection_node.ts +9 -17
- package/src/parsers/manifest/smooth/utils/parseBoolean.ts +1 -1
- package/src/parsers/manifest/smooth/utils/reduceChildren.ts +7 -10
- package/src/playback_observer/media_element_playback_observer.ts +177 -73
- package/src/playback_observer/{core_playback_observer.ts → worker_playback_observer.ts} +13 -13
- package/src/transports/smooth/pipelines.ts +5 -25
- package/src/worker_entry_point.ts +2 -71
- package/dist/commonjs/core/entry/FreezeResolver.d.ts.map +0 -1
- package/dist/commonjs/core/entry/content_preparer.d.ts.map +0 -1
- package/dist/commonjs/core/entry/content_time_boundaries_observer.d.ts.map +0 -1
- package/dist/commonjs/core/entry/core_entry.d.ts +0 -36
- package/dist/commonjs/core/entry/core_entry.d.ts.map +0 -1
- package/dist/commonjs/core/entry/core_text_displayer_interface.d.ts.map +0 -1
- package/dist/commonjs/core/entry/create_content_time_boundaries_observer.d.ts.map +0 -1
- package/dist/commonjs/core/entry/get_buffered_data_per_media_buffer.d.ts.map +0 -1
- package/dist/commonjs/core/entry/get_thumbnail_data.d.ts.map +0 -1
- package/dist/commonjs/core/entry/index.d.ts +0 -5
- package/dist/commonjs/core/entry/index.d.ts.map +0 -1
- package/dist/commonjs/core/entry/index.js +0 -4
- package/dist/commonjs/core/entry/synchronize_sinks_on_observation.d.ts.map +0 -1
- package/dist/commonjs/core/entry/track_choice_setter.d.ts.map +0 -1
- package/dist/commonjs/core/entry/utils.d.ts +0 -3
- package/dist/commonjs/core/entry/utils.d.ts.map +0 -1
- package/dist/commonjs/core/entry/utils.js +0 -11
- package/dist/commonjs/main_thread/core_interface/base.d.ts +0 -13
- package/dist/commonjs/main_thread/core_interface/base.d.ts.map +0 -1
- package/dist/commonjs/main_thread/core_interface/base.js +0 -32
- package/dist/commonjs/main_thread/core_interface/monothread.d.ts +0 -13
- package/dist/commonjs/main_thread/core_interface/monothread.d.ts.map +0 -1
- package/dist/commonjs/main_thread/core_interface/monothread.js +0 -56
- package/dist/commonjs/main_thread/core_interface/multithread.d.ts +0 -25
- package/dist/commonjs/main_thread/core_interface/multithread.d.ts.map +0 -1
- package/dist/commonjs/main_thread/core_interface/multithread.js +0 -67
- package/dist/commonjs/main_thread/core_interface/types.d.ts +0 -6
- package/dist/commonjs/main_thread/core_interface/types.d.ts.map +0 -1
- package/dist/commonjs/main_thread/core_interface/types.js +0 -2
- package/dist/commonjs/playback_observer/core_playback_observer.d.ts.map +0 -1
- package/dist/es2017/core/entry/FreezeResolver.d.ts.map +0 -1
- package/dist/es2017/core/entry/content_preparer.d.ts.map +0 -1
- package/dist/es2017/core/entry/content_time_boundaries_observer.d.ts.map +0 -1
- package/dist/es2017/core/entry/core_entry.d.ts +0 -36
- package/dist/es2017/core/entry/core_entry.d.ts.map +0 -1
- package/dist/es2017/core/entry/core_text_displayer_interface.d.ts.map +0 -1
- package/dist/es2017/core/entry/create_content_time_boundaries_observer.d.ts.map +0 -1
- package/dist/es2017/core/entry/get_buffered_data_per_media_buffer.d.ts.map +0 -1
- package/dist/es2017/core/entry/get_thumbnail_data.d.ts.map +0 -1
- package/dist/es2017/core/entry/index.d.ts +0 -5
- package/dist/es2017/core/entry/index.d.ts.map +0 -1
- package/dist/es2017/core/entry/index.js +0 -2
- package/dist/es2017/core/entry/synchronize_sinks_on_observation.d.ts.map +0 -1
- package/dist/es2017/core/entry/track_choice_setter.d.ts.map +0 -1
- package/dist/es2017/core/entry/utils.d.ts +0 -3
- package/dist/es2017/core/entry/utils.d.ts.map +0 -1
- package/dist/es2017/core/entry/utils.js +0 -8
- package/dist/es2017/main_thread/core_interface/base.d.ts +0 -13
- package/dist/es2017/main_thread/core_interface/base.d.ts.map +0 -1
- package/dist/es2017/main_thread/core_interface/base.js +0 -28
- package/dist/es2017/main_thread/core_interface/monothread.d.ts +0 -13
- package/dist/es2017/main_thread/core_interface/monothread.d.ts.map +0 -1
- package/dist/es2017/main_thread/core_interface/monothread.js +0 -32
- package/dist/es2017/main_thread/core_interface/multithread.d.ts +0 -25
- package/dist/es2017/main_thread/core_interface/multithread.d.ts.map +0 -1
- package/dist/es2017/main_thread/core_interface/multithread.js +0 -45
- package/dist/es2017/main_thread/core_interface/types.d.ts +0 -6
- package/dist/es2017/main_thread/core_interface/types.d.ts.map +0 -1
- package/dist/es2017/main_thread/core_interface/types.js +0 -1
- package/dist/es2017/playback_observer/core_playback_observer.d.ts.map +0 -1
- package/src/core/entry/index.ts +0 -4
- package/src/core/entry/utils.ts +0 -11
- package/src/main_thread/core_interface/README.md +0 -22
- package/src/main_thread/core_interface/base.ts +0 -36
- package/src/main_thread/core_interface/monothread.ts +0 -46
- package/src/main_thread/core_interface/multithread.ts +0 -49
- package/src/main_thread/core_interface/types.ts +0 -5
- /package/dist/commonjs/core/{entry → main/common}/synchronize_sinks_on_observation.js +0 -0
- /package/dist/es2017/core/{entry → main/common}/synchronize_sinks_on_observation.js +0 -0
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
var is_seeking_approximate_1 = require("../compat/is_seeking_approximate");
|
|
19
19
|
var config_1 = require("../config");
|
|
20
|
+
var manual_time_ranges_1 = require("../core/segment_sinks/implementations/utils/manual_time_ranges");
|
|
20
21
|
var log_1 = require("../log");
|
|
21
22
|
var monotonic_timestamp_1 = require("../utils/monotonic_timestamp");
|
|
22
23
|
var noop_1 = require("../utils/noop");
|
|
@@ -58,35 +59,62 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
58
59
|
* Create a new `PlaybackObserver`, which allows to produce new "playback
|
|
59
60
|
* observations" on various media events and intervals.
|
|
60
61
|
*
|
|
62
|
+
* Once a `PlaybackObserver` is created, you will want to "attach" the
|
|
63
|
+
* media element to it through the `attachMediaElement` method once that
|
|
64
|
+
* element is ready to play your content.
|
|
65
|
+
*
|
|
61
66
|
* Note that creating a `PlaybackObserver` lead to the usage of resources,
|
|
62
67
|
* such as event listeners which will only be freed once the `stop` method is
|
|
63
68
|
* called.
|
|
64
|
-
* @param {HTMLMediaElement} mediaElement
|
|
65
69
|
* @param {Object} options
|
|
66
70
|
*/
|
|
67
|
-
function PlaybackObserver(
|
|
71
|
+
function PlaybackObserver(options) {
|
|
68
72
|
var _this = this;
|
|
69
73
|
this._internalSeeksIncoming = [];
|
|
70
|
-
this.
|
|
74
|
+
this._mediaElementRef = new reference_1.default(null);
|
|
71
75
|
this._withMediaSource = options.withMediaSource;
|
|
72
76
|
this._lowLatencyMode = options.lowLatencyMode;
|
|
73
77
|
this._canceller = new task_canceller_1.default();
|
|
74
|
-
this._observationRef = this._createSharedReference();
|
|
75
78
|
this._expectedSeekingPosition = null;
|
|
76
79
|
this._pendingSeek = null;
|
|
77
80
|
this._isSeekBlocked = false;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
var _a = _this._pendingSeek, positionToSeekTo = _a.position, isInternal = _a.isInternal;
|
|
81
|
-
_this._pendingSeek = null;
|
|
82
|
-
_this._actuallySetCurrentTime(positionToSeekTo, isInternal);
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
mediaElement.addEventListener("loadedmetadata", onLoadedMetadata);
|
|
81
|
+
this._observationIntervalId = null;
|
|
82
|
+
this._observationRef = this._createSharedReference();
|
|
86
83
|
this._canceller.signal.register(function () {
|
|
87
|
-
|
|
84
|
+
_this._mediaElementRef.finish();
|
|
88
85
|
});
|
|
89
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* "Link" the actual `HTMLMediaElement` to this `PlaybackObserver`.
|
|
89
|
+
*
|
|
90
|
+
* This is done in a step separate from the constructor to allow complex
|
|
91
|
+
* situations where you want to inialize the polling logic before the media
|
|
92
|
+
* element is ready to play your content (e.g. when pre-loading the next
|
|
93
|
+
* content).
|
|
94
|
+
*
|
|
95
|
+
* @param {HTMLMediaElement} mediaElement - The `HTMLMediaElement` on which
|
|
96
|
+
* the content plays.
|
|
97
|
+
*/
|
|
98
|
+
PlaybackObserver.prototype.attachMediaElement = function (mediaElement) {
|
|
99
|
+
var prevMediaElement = this._mediaElementRef.getValue();
|
|
100
|
+
if (prevMediaElement !== null) {
|
|
101
|
+
throw new Error("A media element was already attached to this PlaybackObserver");
|
|
102
|
+
}
|
|
103
|
+
this._mediaElementRef.setValue(mediaElement);
|
|
104
|
+
if (this._canceller.isUsed()) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
this._registerLoadedMetadataEvent(mediaElement);
|
|
108
|
+
this._restartInterval();
|
|
109
|
+
this._registerMediaElementEvents(mediaElement);
|
|
110
|
+
this._generateObservationForEvent("init");
|
|
111
|
+
if (this._canceller.isUsed()) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (mediaElement.readyState >= 1) {
|
|
115
|
+
this._onLoadedMetadataEvent();
|
|
116
|
+
}
|
|
117
|
+
};
|
|
90
118
|
/**
|
|
91
119
|
* Stop the `PlaybackObserver` from emitting playback observations and free all
|
|
92
120
|
* resources reserved to emitting them such as event listeners and intervals.
|
|
@@ -105,24 +133,27 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
105
133
|
* @returns {number}
|
|
106
134
|
*/
|
|
107
135
|
PlaybackObserver.prototype.getCurrentTime = function () {
|
|
108
|
-
|
|
136
|
+
var _a, _b;
|
|
137
|
+
return ((_b = (_a = this._mediaElementRef.getValue()) === null || _a === void 0 ? void 0 : _a.currentTime) !== null && _b !== void 0 ? _b : this._observationRef.getValue().position.getPolled());
|
|
109
138
|
};
|
|
110
139
|
/**
|
|
111
140
|
* Returns the current playback rate advertised by the `HTMLMediaElement`.
|
|
112
|
-
* @returns {number}
|
|
141
|
+
* @returns {number|undefined}
|
|
113
142
|
*/
|
|
114
143
|
PlaybackObserver.prototype.getPlaybackRate = function () {
|
|
115
|
-
|
|
144
|
+
var _a, _b;
|
|
145
|
+
return ((_b = (_a = this._mediaElementRef.getValue()) === null || _a === void 0 ? void 0 : _a.playbackRate) !== null && _b !== void 0 ? _b : this._observationRef.getValue().playbackRate);
|
|
116
146
|
};
|
|
117
147
|
/**
|
|
118
148
|
* Returns the current `paused` status advertised by the `HTMLMediaElement`.
|
|
119
149
|
*
|
|
120
150
|
* Use this instead of the same status emitted on an observation when you want
|
|
121
151
|
* to be sure you're using the current value.
|
|
122
|
-
* @returns {boolean}
|
|
152
|
+
* @returns {boolean|undefined}
|
|
123
153
|
*/
|
|
124
154
|
PlaybackObserver.prototype.getIsPaused = function () {
|
|
125
|
-
|
|
155
|
+
var _a, _b;
|
|
156
|
+
return ((_b = (_a = this._mediaElementRef.getValue()) === null || _a === void 0 ? void 0 : _a.paused) !== null && _b !== void 0 ? _b : this._observationRef.getValue().paused);
|
|
126
157
|
};
|
|
127
158
|
/**
|
|
128
159
|
* Prevent seeking operations from being performed from inside the
|
|
@@ -146,10 +177,13 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
146
177
|
PlaybackObserver.prototype.unblockSeeking = function () {
|
|
147
178
|
if (this._isSeekBlocked) {
|
|
148
179
|
this._isSeekBlocked = false;
|
|
149
|
-
|
|
180
|
+
var mediaElement = this._mediaElementRef.getValue();
|
|
181
|
+
if (mediaElement !== null &&
|
|
182
|
+
mediaElement.readyState >= 1 &&
|
|
183
|
+
this._pendingSeek !== null) {
|
|
150
184
|
var _a = this._pendingSeek, positionToSeekTo = _a.position, isInternal = _a.isInternal;
|
|
151
185
|
this._pendingSeek = null;
|
|
152
|
-
this._actuallySetCurrentTime(positionToSeekTo, isInternal);
|
|
186
|
+
this._actuallySetCurrentTime(mediaElement, positionToSeekTo, isInternal);
|
|
153
187
|
}
|
|
154
188
|
}
|
|
155
189
|
};
|
|
@@ -197,30 +231,34 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
197
231
|
*/
|
|
198
232
|
PlaybackObserver.prototype.setCurrentTime = function (time, isInternal) {
|
|
199
233
|
if (isInternal === void 0) { isInternal = true; }
|
|
200
|
-
|
|
201
|
-
|
|
234
|
+
var mediaElement = this._mediaElementRef.getValue();
|
|
235
|
+
if (mediaElement !== null && !this._isSeekBlocked && mediaElement.readyState >= 1) {
|
|
236
|
+
this._actuallySetCurrentTime(mediaElement, time, isInternal);
|
|
202
237
|
}
|
|
203
238
|
else {
|
|
204
239
|
this._pendingSeek = { position: time, isInternal: isInternal };
|
|
205
240
|
this._internalSeeksIncoming = [];
|
|
206
|
-
|
|
207
|
-
this._generateObservationForEvent("manual");
|
|
208
|
-
}
|
|
241
|
+
this._generateObservationForEvent("manual");
|
|
209
242
|
}
|
|
210
243
|
};
|
|
211
244
|
/**
|
|
212
|
-
* Update the playback rate of the `
|
|
245
|
+
* Update the playback rate of the `HTMLmediaElement`.
|
|
213
246
|
* @param {number} playbackRate
|
|
214
247
|
*/
|
|
215
248
|
PlaybackObserver.prototype.setPlaybackRate = function (playbackRate) {
|
|
216
|
-
this.
|
|
249
|
+
var mediaElement = this._mediaElementRef.getValue();
|
|
250
|
+
if (mediaElement === null) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
mediaElement.playbackRate = playbackRate;
|
|
217
254
|
};
|
|
218
255
|
/**
|
|
219
|
-
* Returns the current `readyState` advertised by the `
|
|
256
|
+
* Returns the current `readyState` advertised by the `HTMLmediaElement`.
|
|
220
257
|
* @returns {number}
|
|
221
258
|
*/
|
|
222
259
|
PlaybackObserver.prototype.getReadyState = function () {
|
|
223
|
-
|
|
260
|
+
var _a, _b;
|
|
261
|
+
return ((_b = (_a = this._mediaElementRef.getValue()) === null || _a === void 0 ? void 0 : _a.readyState) !== null && _b !== void 0 ? _b : this._observationRef.getValue().readyState);
|
|
224
262
|
};
|
|
225
263
|
/**
|
|
226
264
|
* Returns an `IReadOnlySharedReference` storing the last playback observation
|
|
@@ -270,12 +308,12 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
270
308
|
PlaybackObserver.prototype.deriveReadOnlyObserver = function (transform) {
|
|
271
309
|
return (0, generate_read_only_observer_1.default)(this, transform, this._canceller.signal);
|
|
272
310
|
};
|
|
273
|
-
PlaybackObserver.prototype._actuallySetCurrentTime = function (time, isInternal) {
|
|
311
|
+
PlaybackObserver.prototype._actuallySetCurrentTime = function (mediaElement, time, isInternal) {
|
|
274
312
|
log_1.default.info("media", "Actually seeking.", { time: time, isInternal: isInternal });
|
|
275
313
|
if (isInternal) {
|
|
276
314
|
this._internalSeeksIncoming.push(time);
|
|
277
315
|
}
|
|
278
|
-
|
|
316
|
+
mediaElement.currentTime = time;
|
|
279
317
|
};
|
|
280
318
|
/**
|
|
281
319
|
* Creates the `IReadOnlySharedReference` that will generate playback
|
|
@@ -287,50 +325,29 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
287
325
|
if (this._observationRef !== undefined) {
|
|
288
326
|
return this._observationRef;
|
|
289
327
|
}
|
|
290
|
-
var _a = config_1.default.getCurrent(), SAMPLING_INTERVAL_MEDIASOURCE = _a.SAMPLING_INTERVAL_MEDIASOURCE, SAMPLING_INTERVAL_LOW_LATENCY = _a.SAMPLING_INTERVAL_LOW_LATENCY, SAMPLING_INTERVAL_NO_MEDIASOURCE = _a.SAMPLING_INTERVAL_NO_MEDIASOURCE;
|
|
291
328
|
var returnedSharedReference = new reference_1.default(this._getCurrentObservation("init"), this._canceller.signal);
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
else if (this._withMediaSource) {
|
|
297
|
-
interval = SAMPLING_INTERVAL_MEDIASOURCE;
|
|
329
|
+
this._restartInterval();
|
|
330
|
+
var mediaElement = this._mediaElementRef.getValue();
|
|
331
|
+
if (mediaElement !== null) {
|
|
332
|
+
this._registerMediaElementEvents(mediaElement);
|
|
298
333
|
}
|
|
299
|
-
else {
|
|
300
|
-
interval = SAMPLING_INTERVAL_NO_MEDIASOURCE;
|
|
301
|
-
}
|
|
302
|
-
var onInterval = function () {
|
|
303
|
-
_this._generateObservationForEvent("timeupdate");
|
|
304
|
-
};
|
|
305
|
-
var intervalId = setInterval(onInterval, interval);
|
|
306
|
-
SCANNED_MEDIA_ELEMENTS_EVENTS.map(function (eventName) {
|
|
307
|
-
var onMediaEvent = function () {
|
|
308
|
-
restartInterval();
|
|
309
|
-
_this._generateObservationForEvent(eventName);
|
|
310
|
-
};
|
|
311
|
-
_this._mediaElement.addEventListener(eventName, onMediaEvent);
|
|
312
|
-
_this._canceller.signal.register(function () {
|
|
313
|
-
_this._mediaElement.removeEventListener(eventName, onMediaEvent);
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
334
|
this._canceller.signal.register(function () {
|
|
317
|
-
|
|
335
|
+
if (_this._observationIntervalId !== null) {
|
|
336
|
+
clearInterval(_this._observationIntervalId);
|
|
337
|
+
}
|
|
318
338
|
returnedSharedReference.finish();
|
|
319
339
|
});
|
|
320
340
|
return returnedSharedReference;
|
|
321
|
-
function restartInterval() {
|
|
322
|
-
clearInterval(intervalId);
|
|
323
|
-
intervalId = setInterval(onInterval, interval);
|
|
324
|
-
}
|
|
325
341
|
};
|
|
326
342
|
PlaybackObserver.prototype._getCurrentObservation = function (event) {
|
|
327
343
|
var _a, _b, _c, _d;
|
|
328
344
|
/** Actual event emitted through an observation. */
|
|
329
345
|
var tmpEvt = event;
|
|
346
|
+
var mediaElement = this._mediaElementRef.getValue();
|
|
330
347
|
// NOTE: `this._observationRef` may be `undefined` because we might here be
|
|
331
348
|
// called in the constructor when that property is not yet set.
|
|
332
349
|
var previousObservation = this._observationRef === undefined
|
|
333
|
-
? getInitialObservation(
|
|
350
|
+
? getInitialObservation(mediaElement)
|
|
334
351
|
: this._observationRef.getValue();
|
|
335
352
|
/**
|
|
336
353
|
* If `true`, there is a seek operation ongoing but it was done from the
|
|
@@ -340,7 +357,7 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
340
357
|
/** If set, the position for which we plan to seek to as soon as possible. */
|
|
341
358
|
var pendingPosition = (_b = (_a = this._pendingSeek) === null || _a === void 0 ? void 0 : _a.position) !== null && _b !== void 0 ? _b : null;
|
|
342
359
|
/** Initially-polled playback observation, before adjustments. */
|
|
343
|
-
var mediaTimings = getMediaInfos(
|
|
360
|
+
var mediaTimings = mediaElement === null ? getEmptyMediaInfo() : getMediaInfos(mediaElement);
|
|
344
361
|
var buffered = mediaTimings.buffered, readyState = mediaTimings.readyState, position = mediaTimings.position, seeking = mediaTimings.seeking;
|
|
345
362
|
if (tmpEvt === "seeking") {
|
|
346
363
|
// We just began seeking.
|
|
@@ -471,6 +488,52 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
471
488
|
}
|
|
472
489
|
this._observationRef.setValue(newObservation);
|
|
473
490
|
};
|
|
491
|
+
PlaybackObserver.prototype._restartInterval = function () {
|
|
492
|
+
var _this = this;
|
|
493
|
+
var _a = config_1.default.getCurrent(), SAMPLING_INTERVAL_MEDIASOURCE = _a.SAMPLING_INTERVAL_MEDIASOURCE, SAMPLING_INTERVAL_LOW_LATENCY = _a.SAMPLING_INTERVAL_LOW_LATENCY, SAMPLING_INTERVAL_NO_MEDIASOURCE = _a.SAMPLING_INTERVAL_NO_MEDIASOURCE;
|
|
494
|
+
var interval;
|
|
495
|
+
if (this._lowLatencyMode) {
|
|
496
|
+
interval = SAMPLING_INTERVAL_LOW_LATENCY;
|
|
497
|
+
}
|
|
498
|
+
else if (this._withMediaSource) {
|
|
499
|
+
interval = SAMPLING_INTERVAL_MEDIASOURCE;
|
|
500
|
+
}
|
|
501
|
+
else {
|
|
502
|
+
interval = SAMPLING_INTERVAL_NO_MEDIASOURCE;
|
|
503
|
+
}
|
|
504
|
+
if (this._observationIntervalId !== null) {
|
|
505
|
+
clearInterval(this._observationIntervalId);
|
|
506
|
+
}
|
|
507
|
+
this._observationIntervalId = setInterval(function () { return _this._generateObservationForEvent("timeupdate"); }, interval);
|
|
508
|
+
};
|
|
509
|
+
PlaybackObserver.prototype._registerMediaElementEvents = function (mediaElement) {
|
|
510
|
+
var _this = this;
|
|
511
|
+
SCANNED_MEDIA_ELEMENTS_EVENTS.map(function (eventName) {
|
|
512
|
+
var onMediaEvent = function () {
|
|
513
|
+
_this._restartInterval();
|
|
514
|
+
_this._generateObservationForEvent(eventName);
|
|
515
|
+
};
|
|
516
|
+
mediaElement.addEventListener(eventName, onMediaEvent);
|
|
517
|
+
_this._canceller.signal.register(function () {
|
|
518
|
+
mediaElement.removeEventListener(eventName, onMediaEvent);
|
|
519
|
+
});
|
|
520
|
+
});
|
|
521
|
+
};
|
|
522
|
+
PlaybackObserver.prototype._registerLoadedMetadataEvent = function (mediaElement) {
|
|
523
|
+
var loadedmetadataCb = this._onLoadedMetadataEvent.bind(this);
|
|
524
|
+
mediaElement.addEventListener("loadedmetadata", loadedmetadataCb);
|
|
525
|
+
this._canceller.signal.register(function () {
|
|
526
|
+
mediaElement.removeEventListener("loadedmetadata", loadedmetadataCb);
|
|
527
|
+
});
|
|
528
|
+
};
|
|
529
|
+
PlaybackObserver.prototype._onLoadedMetadataEvent = function () {
|
|
530
|
+
var mediaElement = this._mediaElementRef.getValue();
|
|
531
|
+
if (mediaElement !== null && this._pendingSeek !== null && !this._isSeekBlocked) {
|
|
532
|
+
var _a = this._pendingSeek, positionToSeekTo = _a.position, isInternal = _a.isInternal;
|
|
533
|
+
this._pendingSeek = null;
|
|
534
|
+
this._actuallySetCurrentTime(mediaElement, positionToSeekTo, isInternal);
|
|
535
|
+
}
|
|
536
|
+
};
|
|
474
537
|
return PlaybackObserver;
|
|
475
538
|
}());
|
|
476
539
|
exports.default = PlaybackObserver;
|
|
@@ -514,9 +577,28 @@ function hasLoadedUntilTheEnd(currentTime, currentRange, ended, duration, lowLat
|
|
|
514
577
|
}
|
|
515
578
|
return currentRange !== null && duration - currentRange.end <= REBUFFERING_GAP[suffix];
|
|
516
579
|
}
|
|
580
|
+
/**
|
|
581
|
+
* Get polled media metrics for when the `HTMLMediaElement` is not yet "attached"
|
|
582
|
+
* to the `PlaybackObserver`.
|
|
583
|
+
*
|
|
584
|
+
* Those metrics actually corresponds to an idle media element.
|
|
585
|
+
* @returns {Object}
|
|
586
|
+
*/
|
|
587
|
+
function getEmptyMediaInfo() {
|
|
588
|
+
return {
|
|
589
|
+
buffered: new manual_time_ranges_1.default(),
|
|
590
|
+
position: 0,
|
|
591
|
+
duration: NaN,
|
|
592
|
+
ended: false,
|
|
593
|
+
paused: true,
|
|
594
|
+
playbackRate: 1,
|
|
595
|
+
readyState: 0,
|
|
596
|
+
seeking: false,
|
|
597
|
+
};
|
|
598
|
+
}
|
|
517
599
|
/**
|
|
518
600
|
* Get basic playback information.
|
|
519
|
-
* @param {
|
|
601
|
+
* @param {HTMLmediaElement} mediaElement
|
|
520
602
|
* @returns {Object}
|
|
521
603
|
*/
|
|
522
604
|
function getMediaInfos(mediaElement) {
|
|
@@ -746,7 +828,7 @@ function prettyPrintBuffered(buffered, currentTime) {
|
|
|
746
828
|
* @returns {Object}
|
|
747
829
|
*/
|
|
748
830
|
function getInitialObservation(mediaElement) {
|
|
749
|
-
var mediaTimings = getMediaInfos(mediaElement);
|
|
831
|
+
var mediaTimings = mediaElement === null ? getEmptyMediaInfo() : getMediaInfos(mediaElement);
|
|
750
832
|
return (0, object_assign_1.default)(mediaTimings, {
|
|
751
833
|
rebuffering: null,
|
|
752
834
|
event: "init",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IUpdatePlaybackRateWorkerMessage } from "../multithread_types";
|
|
2
2
|
import type { ITrackType } from "../public_types";
|
|
3
3
|
import type { IRange } from "../utils/ranges";
|
|
4
4
|
import type { IReadOnlySharedReference } from "../utils/reference";
|
|
5
5
|
import type { CancellationSignal } from "../utils/task_canceller";
|
|
6
6
|
import type { IFreezingStatus, IReadOnlyPlaybackObserver, IRebufferingStatus } from "./types";
|
|
7
7
|
import type ObservationPosition from "./utils/observation_position";
|
|
8
|
-
export interface
|
|
8
|
+
export interface IWorkerPlaybackObservation {
|
|
9
9
|
/**
|
|
10
10
|
* Information on whether the media element was paused at the time of the
|
|
11
11
|
* Observation.
|
|
@@ -64,22 +64,22 @@ export interface IPausedPlaybackObservation {
|
|
|
64
64
|
*/
|
|
65
65
|
pending: boolean | undefined;
|
|
66
66
|
}
|
|
67
|
-
export default class
|
|
67
|
+
export default class WorkerPlaybackObserver implements IReadOnlyPlaybackObserver<IWorkerPlaybackObservation> {
|
|
68
68
|
private _src;
|
|
69
69
|
private _cancelSignal;
|
|
70
70
|
private _messageSender;
|
|
71
71
|
private _contentId;
|
|
72
|
-
constructor(src: IReadOnlySharedReference<
|
|
72
|
+
constructor(src: IReadOnlySharedReference<IWorkerPlaybackObservation>, contentId: string, sendMessage: (msg: IUpdatePlaybackRateWorkerMessage) => void, cancellationSignal: CancellationSignal);
|
|
73
73
|
getCurrentTime(): number | undefined;
|
|
74
74
|
getReadyState(): number | undefined;
|
|
75
75
|
getIsPaused(): boolean | undefined;
|
|
76
|
-
getReference(): IReadOnlySharedReference<
|
|
76
|
+
getReference(): IReadOnlySharedReference<IWorkerPlaybackObservation>;
|
|
77
77
|
setPlaybackRate(playbackRate: number): void;
|
|
78
78
|
getPlaybackRate(): number | undefined;
|
|
79
|
-
listen(cb: (observation:
|
|
79
|
+
listen(cb: (observation: IWorkerPlaybackObservation, stopListening: () => void) => void, params: {
|
|
80
80
|
includeLastObservation?: boolean | undefined;
|
|
81
81
|
clearSignal: CancellationSignal;
|
|
82
82
|
}): void;
|
|
83
|
-
deriveReadOnlyObserver<TDest>(transform: (observationRef: IReadOnlySharedReference<
|
|
83
|
+
deriveReadOnlyObserver<TDest>(transform: (observationRef: IReadOnlySharedReference<IWorkerPlaybackObservation>, cancellationSignal: CancellationSignal) => IReadOnlySharedReference<TDest>): IReadOnlyPlaybackObserver<TDest>;
|
|
84
84
|
}
|
|
85
|
-
//# sourceMappingURL=
|
|
85
|
+
//# sourceMappingURL=worker_playback_observer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker_playback_observer.d.ts","sourceRoot":"","sources":["../../../src/playback_observer/worker_playback_observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,mBAAmB,MAAM,8BAA8B,CAAC;AAEpE,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,MAAM,EAAE,0BAA0B,CAAC;IACnC;;;OAGG;IACH,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,eAAe,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;;;;;;OAQG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;OAQG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B;AAED,MAAM,CAAC,OAAO,OAAO,sBACnB,YAAW,yBAAyB,CAAC,0BAA0B,CAAC;IAEhE,OAAO,CAAC,IAAI,CAAuD;IACnE,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,UAAU,CAAS;gBAGzB,GAAG,EAAE,wBAAwB,CAAC,0BAA0B,CAAC,EACzD,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,CAAC,GAAG,EAAE,gCAAgC,KAAK,IAAI,EAC5D,kBAAkB,EAAE,kBAAkB;IAQjC,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC,WAAW,IAAI,OAAO,GAAG,SAAS;IAIlC,YAAY,IAAI,wBAAwB,CAAC,0BAA0B,CAAC;IAIpE,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAQ3C,eAAe,IAAI,MAAM,GAAG,SAAS;IAIrC,MAAM,CACX,EAAE,EAAE,CAAC,WAAW,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,IAAI,KAAK,IAAI,EAChF,MAAM,EAAE;QACN,sBAAsB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC7C,WAAW,EAAE,kBAAkB,CAAC;KACjC,GACA,IAAI;IAWA,sBAAsB,CAAC,KAAK,EACjC,SAAS,EAAE,CACT,cAAc,EAAE,wBAAwB,CAAC,0BAA0B,CAAC,EACpE,kBAAkB,EAAE,kBAAkB,KACnC,wBAAwB,CAAC,KAAK,CAAC,GACnC,yBAAyB,CAAC,KAAK,CAAC;CAGpC"}
|
package/dist/commonjs/playback_observer/{core_playback_observer.js → worker_playback_observer.js}
RENAMED
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var generate_read_only_observer_1 = require("./utils/generate_read_only_observer");
|
|
4
|
-
var
|
|
5
|
-
function
|
|
4
|
+
var WorkerPlaybackObserver = /** @class */ (function () {
|
|
5
|
+
function WorkerPlaybackObserver(src, contentId, sendMessage, cancellationSignal) {
|
|
6
6
|
this._src = src;
|
|
7
7
|
this._contentId = contentId;
|
|
8
8
|
this._messageSender = sendMessage;
|
|
9
9
|
this._cancelSignal = cancellationSignal;
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
WorkerPlaybackObserver.prototype.getCurrentTime = function () {
|
|
12
12
|
return undefined;
|
|
13
13
|
};
|
|
14
|
-
|
|
14
|
+
WorkerPlaybackObserver.prototype.getReadyState = function () {
|
|
15
15
|
return undefined;
|
|
16
16
|
};
|
|
17
|
-
|
|
17
|
+
WorkerPlaybackObserver.prototype.getIsPaused = function () {
|
|
18
18
|
return undefined;
|
|
19
19
|
};
|
|
20
|
-
|
|
20
|
+
WorkerPlaybackObserver.prototype.getReference = function () {
|
|
21
21
|
return this._src;
|
|
22
22
|
};
|
|
23
|
-
|
|
23
|
+
WorkerPlaybackObserver.prototype.setPlaybackRate = function (playbackRate) {
|
|
24
24
|
this._messageSender({
|
|
25
|
-
type: "update-playback-rate" /*
|
|
25
|
+
type: "update-playback-rate" /* WorkerMessageType.UpdatePlaybackRate */,
|
|
26
26
|
contentId: this._contentId,
|
|
27
27
|
value: playbackRate,
|
|
28
28
|
});
|
|
29
29
|
};
|
|
30
|
-
|
|
30
|
+
WorkerPlaybackObserver.prototype.getPlaybackRate = function () {
|
|
31
31
|
return undefined;
|
|
32
32
|
};
|
|
33
|
-
|
|
33
|
+
WorkerPlaybackObserver.prototype.listen = function (cb, params) {
|
|
34
34
|
if (this._cancelSignal.isCancelled() || params.clearSignal.isCancelled()) {
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
@@ -39,9 +39,9 @@ var CorePlaybackObserver = /** @class */ (function () {
|
|
|
39
39
|
emitCurrentValue: params.includeLastObservation,
|
|
40
40
|
});
|
|
41
41
|
};
|
|
42
|
-
|
|
42
|
+
WorkerPlaybackObserver.prototype.deriveReadOnlyObserver = function (transform) {
|
|
43
43
|
return (0, generate_read_only_observer_1.default)(this, transform, this._cancelSignal);
|
|
44
44
|
};
|
|
45
|
-
return
|
|
45
|
+
return WorkerPlaybackObserver;
|
|
46
46
|
}());
|
|
47
|
-
exports.default =
|
|
47
|
+
exports.default = WorkerPlaybackObserver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../../../../src/transports/smooth/pipelines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../../../../src/transports/smooth/pipelines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,KAAK,EAgBV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAUlB,MAAM,CAAC,OAAO,WAAW,gBAAgB,EAAE,iBAAiB,GAAG,mBAAmB,CA+XjF"}
|
|
@@ -31,8 +31,6 @@ var log_1 = require("../../log");
|
|
|
31
31
|
var classes_1 = require("../../manifest/classes");
|
|
32
32
|
var isobmff_1 = require("../../parsers/containers/isobmff");
|
|
33
33
|
var smooth_1 = require("../../parsers/manifest/smooth");
|
|
34
|
-
var global_scope_1 = require("../../utils/global_scope");
|
|
35
|
-
var is_null_or_undefined_1 = require("../../utils/is_null_or_undefined");
|
|
36
34
|
var request_1 = require("../../utils/request");
|
|
37
35
|
var string_parsing_1 = require("../../utils/string_parsing");
|
|
38
36
|
var add_query_string_1 = require("../utils/add_query_string");
|
|
@@ -56,7 +54,9 @@ function default_1(transportOptions) {
|
|
|
56
54
|
var _a;
|
|
57
55
|
var url = (_a = manifestData.url) !== null && _a !== void 0 ? _a : parserOptions.originalUrl;
|
|
58
56
|
var manifestReceivedTime = manifestData.receivedTime, responseData = manifestData.responseData;
|
|
59
|
-
var documentData =
|
|
57
|
+
var documentData = typeof responseData === "string"
|
|
58
|
+
? new DOMParser().parseFromString(responseData, "text/xml")
|
|
59
|
+
: responseData; // TODO find a way to check if Document?
|
|
60
60
|
var parserResult = smoothManifestParser(documentData, url, manifestReceivedTime);
|
|
61
61
|
var manifest = new classes_1.default(parserResult, {
|
|
62
62
|
representationFilter: transportOptions.representationFilter,
|
|
@@ -350,25 +350,3 @@ function default_1(transportOptions) {
|
|
|
350
350
|
},
|
|
351
351
|
};
|
|
352
352
|
}
|
|
353
|
-
/**
|
|
354
|
-
* Try to convert a Manifest from an unknown format to a JS string format.
|
|
355
|
-
*
|
|
356
|
-
* Throws if the format cannot be converted.
|
|
357
|
-
* @param {*} manifestSrc
|
|
358
|
-
* @returns {Array.<Object | string>}
|
|
359
|
-
*/
|
|
360
|
-
function getManifestAsString(manifestSrc) {
|
|
361
|
-
if (manifestSrc instanceof ArrayBuffer) {
|
|
362
|
-
return (0, string_parsing_1.utf8ToStr)(new Uint8Array(manifestSrc));
|
|
363
|
-
}
|
|
364
|
-
else if (typeof manifestSrc === "string") {
|
|
365
|
-
return manifestSrc;
|
|
366
|
-
}
|
|
367
|
-
else if (!(0, is_null_or_undefined_1.default)(global_scope_1.default.Document) &&
|
|
368
|
-
manifestSrc instanceof global_scope_1.default.Document) {
|
|
369
|
-
return manifestSrc.documentElement.outerHTML;
|
|
370
|
-
}
|
|
371
|
-
else {
|
|
372
|
-
throw new Error("Smooth Manifest Parser: Unrecognized Manifest format");
|
|
373
|
-
}
|
|
374
|
-
}
|
|
@@ -4,65 +4,5 @@
|
|
|
4
4
|
* on when running in a multithread mode.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
var features_1 = require("./features");
|
|
10
|
-
var classes_1 = require("./manifest/classes");
|
|
11
|
-
var js_parser_1 = require("./parsers/manifest/dash/js-parser");
|
|
12
|
-
var wasm_parser_1 = require("./parsers/manifest/dash/wasm-parser");
|
|
13
|
-
var dash_1 = require("./transports/dash");
|
|
14
|
-
var global_scope_1 = require("./utils/global_scope");
|
|
15
|
-
// Initialize Manually a `DashWasmParser` and add the feature.
|
|
16
|
-
// TODO allow worker-side feature-switching? Not sure how
|
|
17
|
-
var dashWasmParser = new wasm_parser_1.default();
|
|
18
|
-
features_1.default.dashParsers.wasm = dashWasmParser;
|
|
19
|
-
features_1.default.dashParsers.js = js_parser_1.default;
|
|
20
|
-
features_1.default.transports.dash = dash_1.default;
|
|
21
|
-
global_scope_1.default.onmessageerror = function (_msg) {
|
|
22
|
-
log_1.default.error("Core", "Error when receiving message from main thread.");
|
|
23
|
-
};
|
|
24
|
-
(0, entry_1.default)(function (handler) {
|
|
25
|
-
onmessage = handler;
|
|
26
|
-
}, sendMessage);
|
|
27
|
-
/**
|
|
28
|
-
* Perform a `postMessage` to main thread with the given message.
|
|
29
|
-
* Arguments follow the `postMessage` API.
|
|
30
|
-
* @param {Object} msg
|
|
31
|
-
* @param {Array.<Object>} [transferables]
|
|
32
|
-
*/
|
|
33
|
-
function sendMessage(msg, transferables) {
|
|
34
|
-
updateMessageFormat(msg);
|
|
35
|
-
if (msg.type !== "log" /* CoreMessageType.LogMessage */) {
|
|
36
|
-
log_1.default.debug("M<--C", "Sending message from worker", { name: msg.type });
|
|
37
|
-
}
|
|
38
|
-
if (transferables === undefined) {
|
|
39
|
-
postMessage(msg);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
// TypeScript made a mistake here, and 2busy2fix
|
|
43
|
-
postMessage(msg, transferables);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Ensure that we're sending data that can be serialized, as this is a
|
|
48
|
-
* requirement for the `postMessage` browser API.
|
|
49
|
-
*
|
|
50
|
-
* If necessary, mutations are done in place.
|
|
51
|
-
* @param {Object} msg
|
|
52
|
-
*/
|
|
53
|
-
function updateMessageFormat(msg) {
|
|
54
|
-
if (msg.type === "manifest-ready" /* CoreMessageType.ManifestReady */ ||
|
|
55
|
-
msg.type === "manifest-update" /* CoreMessageType.ManifestUpdate */) {
|
|
56
|
-
if (msg.value.manifest instanceof classes_1.default) {
|
|
57
|
-
msg.value.manifest = msg.value.manifest.getMetadataSnapshot();
|
|
58
|
-
if (msg.type === "manifest-update" /* CoreMessageType.ManifestUpdate */) {
|
|
59
|
-
// Remove `periods` key to reduce cost of an unnecessary manifest
|
|
60
|
-
// clone.
|
|
61
|
-
msg.value.manifest.periods = [];
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
log_1.default.warn("Core", "the Manifest instance should be communicated to `sendMessage`.");
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
7
|
+
var worker_1 = require("./core/main/worker");
|
|
8
|
+
(0, worker_1.default)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedded_dash_wasm.d.ts","sourceRoot":"","sources":["../../../src/__GENERATED_CODE/embedded_dash_wasm.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"embedded_dash_wasm.d.ts","sourceRoot":"","sources":["../../../src/__GENERATED_CODE/embedded_dash_wasm.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,eAAe,aAA8ssV,CAAC;AACpusV,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,CAAC;AACjD,eAAe,eAAe,CAAC"}
|