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
|
import type { IMediaElement } from "../compat/browser_compatibility_types";
|
|
18
18
|
import isSeekingApproximate from "../compat/is_seeking_approximate";
|
|
19
19
|
import config from "../config";
|
|
20
|
+
import ManualTimeRanges from "../core/segment_sinks/implementations/utils/manual_time_ranges";
|
|
20
21
|
import log from "../log";
|
|
21
22
|
import getMonotonicTimeStamp from "../utils/monotonic_timestamp";
|
|
22
23
|
import noop from "../utils/noop";
|
|
@@ -68,9 +69,9 @@ const SCANNED_MEDIA_ELEMENTS_EVENTS = [
|
|
|
68
69
|
*/
|
|
69
70
|
export default class PlaybackObserver {
|
|
70
71
|
/** HTMLMediaElement which we want to observe. */
|
|
71
|
-
private
|
|
72
|
+
private _mediaElementRef: SharedReference<IMediaElement | null>;
|
|
72
73
|
|
|
73
|
-
/** If `true`, a `MediaSource` object is linked to `
|
|
74
|
+
/** If `true`, a `MediaSource` object is linked to the `HTMLMediaElement`. */
|
|
74
75
|
private _withMediaSource: boolean;
|
|
75
76
|
|
|
76
77
|
/**
|
|
@@ -132,6 +133,8 @@ export default class PlaybackObserver {
|
|
|
132
133
|
*/
|
|
133
134
|
private _expectedSeekingPosition: number | null;
|
|
134
135
|
|
|
136
|
+
private _observationIntervalId: ReturnType<typeof setInterval> | null;
|
|
137
|
+
|
|
135
138
|
/**
|
|
136
139
|
* If `true` seek operations asked through the
|
|
137
140
|
* `MediaElementPlaybackObserver` will not be performed now but after the
|
|
@@ -143,36 +146,64 @@ export default class PlaybackObserver {
|
|
|
143
146
|
* Create a new `PlaybackObserver`, which allows to produce new "playback
|
|
144
147
|
* observations" on various media events and intervals.
|
|
145
148
|
*
|
|
149
|
+
* Once a `PlaybackObserver` is created, you will want to "attach" the
|
|
150
|
+
* media element to it through the `attachMediaElement` method once that
|
|
151
|
+
* element is ready to play your content.
|
|
152
|
+
*
|
|
146
153
|
* Note that creating a `PlaybackObserver` lead to the usage of resources,
|
|
147
154
|
* such as event listeners which will only be freed once the `stop` method is
|
|
148
155
|
* called.
|
|
149
|
-
* @param {HTMLMediaElement} mediaElement
|
|
150
156
|
* @param {Object} options
|
|
151
157
|
*/
|
|
152
|
-
constructor(
|
|
158
|
+
constructor(options: IPlaybackObserverOptions) {
|
|
153
159
|
this._internalSeeksIncoming = [];
|
|
154
|
-
this.
|
|
160
|
+
this._mediaElementRef = new SharedReference<IMediaElement | null>(null);
|
|
155
161
|
this._withMediaSource = options.withMediaSource;
|
|
156
162
|
this._lowLatencyMode = options.lowLatencyMode;
|
|
157
163
|
this._canceller = new TaskCanceller();
|
|
158
|
-
this._observationRef = this._createSharedReference();
|
|
159
164
|
this._expectedSeekingPosition = null;
|
|
160
165
|
this._pendingSeek = null;
|
|
161
166
|
this._isSeekBlocked = false;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
if (this._pendingSeek !== null && !this._isSeekBlocked) {
|
|
165
|
-
const { position: positionToSeekTo, isInternal } = this._pendingSeek;
|
|
166
|
-
this._pendingSeek = null;
|
|
167
|
-
this._actuallySetCurrentTime(positionToSeekTo, isInternal);
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
mediaElement.addEventListener("loadedmetadata", onLoadedMetadata);
|
|
167
|
+
this._observationIntervalId = null;
|
|
168
|
+
this._observationRef = this._createSharedReference();
|
|
171
169
|
this._canceller.signal.register(() => {
|
|
172
|
-
|
|
170
|
+
this._mediaElementRef.finish();
|
|
173
171
|
});
|
|
174
172
|
}
|
|
175
173
|
|
|
174
|
+
/**
|
|
175
|
+
* "Link" the actual `HTMLMediaElement` to this `PlaybackObserver`.
|
|
176
|
+
*
|
|
177
|
+
* This is done in a step separate from the constructor to allow complex
|
|
178
|
+
* situations where you want to inialize the polling logic before the media
|
|
179
|
+
* element is ready to play your content (e.g. when pre-loading the next
|
|
180
|
+
* content).
|
|
181
|
+
*
|
|
182
|
+
* @param {HTMLMediaElement} mediaElement - The `HTMLMediaElement` on which
|
|
183
|
+
* the content plays.
|
|
184
|
+
*/
|
|
185
|
+
public attachMediaElement(mediaElement: IMediaElement): void {
|
|
186
|
+
const prevMediaElement = this._mediaElementRef.getValue();
|
|
187
|
+
if (prevMediaElement !== null) {
|
|
188
|
+
throw new Error("A media element was already attached to this PlaybackObserver");
|
|
189
|
+
}
|
|
190
|
+
this._mediaElementRef.setValue(mediaElement);
|
|
191
|
+
if (this._canceller.isUsed()) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
this._registerLoadedMetadataEvent(mediaElement);
|
|
196
|
+
this._restartInterval();
|
|
197
|
+
this._registerMediaElementEvents(mediaElement);
|
|
198
|
+
this._generateObservationForEvent("init");
|
|
199
|
+
if (this._canceller.isUsed()) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
if (mediaElement.readyState >= 1) {
|
|
203
|
+
this._onLoadedMetadataEvent();
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
176
207
|
/**
|
|
177
208
|
* Stop the `PlaybackObserver` from emitting playback observations and free all
|
|
178
209
|
* resources reserved to emitting them such as event listeners and intervals.
|
|
@@ -192,15 +223,21 @@ export default class PlaybackObserver {
|
|
|
192
223
|
* @returns {number}
|
|
193
224
|
*/
|
|
194
225
|
public getCurrentTime(): number {
|
|
195
|
-
return
|
|
226
|
+
return (
|
|
227
|
+
this._mediaElementRef.getValue()?.currentTime ??
|
|
228
|
+
this._observationRef.getValue().position.getPolled()
|
|
229
|
+
);
|
|
196
230
|
}
|
|
197
231
|
|
|
198
232
|
/**
|
|
199
233
|
* Returns the current playback rate advertised by the `HTMLMediaElement`.
|
|
200
|
-
* @returns {number}
|
|
234
|
+
* @returns {number|undefined}
|
|
201
235
|
*/
|
|
202
236
|
public getPlaybackRate(): number {
|
|
203
|
-
return
|
|
237
|
+
return (
|
|
238
|
+
this._mediaElementRef.getValue()?.playbackRate ??
|
|
239
|
+
this._observationRef.getValue().playbackRate
|
|
240
|
+
);
|
|
204
241
|
}
|
|
205
242
|
|
|
206
243
|
/**
|
|
@@ -208,10 +245,12 @@ export default class PlaybackObserver {
|
|
|
208
245
|
*
|
|
209
246
|
* Use this instead of the same status emitted on an observation when you want
|
|
210
247
|
* to be sure you're using the current value.
|
|
211
|
-
* @returns {boolean}
|
|
248
|
+
* @returns {boolean|undefined}
|
|
212
249
|
*/
|
|
213
250
|
public getIsPaused(): boolean {
|
|
214
|
-
return
|
|
251
|
+
return (
|
|
252
|
+
this._mediaElementRef.getValue()?.paused ?? this._observationRef.getValue().paused
|
|
253
|
+
);
|
|
215
254
|
}
|
|
216
255
|
|
|
217
256
|
/**
|
|
@@ -237,10 +276,15 @@ export default class PlaybackObserver {
|
|
|
237
276
|
public unblockSeeking(): void {
|
|
238
277
|
if (this._isSeekBlocked) {
|
|
239
278
|
this._isSeekBlocked = false;
|
|
240
|
-
|
|
279
|
+
const mediaElement = this._mediaElementRef.getValue();
|
|
280
|
+
if (
|
|
281
|
+
mediaElement !== null &&
|
|
282
|
+
mediaElement.readyState >= 1 &&
|
|
283
|
+
this._pendingSeek !== null
|
|
284
|
+
) {
|
|
241
285
|
const { position: positionToSeekTo, isInternal } = this._pendingSeek;
|
|
242
286
|
this._pendingSeek = null;
|
|
243
|
-
this._actuallySetCurrentTime(positionToSeekTo, isInternal);
|
|
287
|
+
this._actuallySetCurrentTime(mediaElement, positionToSeekTo, isInternal);
|
|
244
288
|
}
|
|
245
289
|
}
|
|
246
290
|
}
|
|
@@ -290,31 +334,37 @@ export default class PlaybackObserver {
|
|
|
290
334
|
* the user.
|
|
291
335
|
*/
|
|
292
336
|
public setCurrentTime(time: number, isInternal: boolean = true): void {
|
|
293
|
-
|
|
294
|
-
|
|
337
|
+
const mediaElement = this._mediaElementRef.getValue();
|
|
338
|
+
if (mediaElement !== null && !this._isSeekBlocked && mediaElement.readyState >= 1) {
|
|
339
|
+
this._actuallySetCurrentTime(mediaElement, time, isInternal);
|
|
295
340
|
} else {
|
|
296
341
|
this._pendingSeek = { position: time, isInternal };
|
|
297
342
|
this._internalSeeksIncoming = [];
|
|
298
|
-
|
|
299
|
-
this._generateObservationForEvent("manual");
|
|
300
|
-
}
|
|
343
|
+
this._generateObservationForEvent("manual");
|
|
301
344
|
}
|
|
302
345
|
}
|
|
303
346
|
|
|
304
347
|
/**
|
|
305
|
-
* Update the playback rate of the `
|
|
348
|
+
* Update the playback rate of the `HTMLmediaElement`.
|
|
306
349
|
* @param {number} playbackRate
|
|
307
350
|
*/
|
|
308
351
|
public setPlaybackRate(playbackRate: number): void {
|
|
309
|
-
this.
|
|
352
|
+
const mediaElement = this._mediaElementRef.getValue();
|
|
353
|
+
if (mediaElement === null) {
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
mediaElement.playbackRate = playbackRate;
|
|
310
357
|
}
|
|
311
358
|
|
|
312
359
|
/**
|
|
313
|
-
* Returns the current `readyState` advertised by the `
|
|
360
|
+
* Returns the current `readyState` advertised by the `HTMLmediaElement`.
|
|
314
361
|
* @returns {number}
|
|
315
362
|
*/
|
|
316
363
|
public getReadyState(): number {
|
|
317
|
-
return
|
|
364
|
+
return (
|
|
365
|
+
this._mediaElementRef.getValue()?.readyState ??
|
|
366
|
+
this._observationRef.getValue().readyState
|
|
367
|
+
);
|
|
318
368
|
}
|
|
319
369
|
|
|
320
370
|
/**
|
|
@@ -379,12 +429,16 @@ export default class PlaybackObserver {
|
|
|
379
429
|
return generateReadOnlyObserver(this, transform, this._canceller.signal);
|
|
380
430
|
}
|
|
381
431
|
|
|
382
|
-
private _actuallySetCurrentTime(
|
|
432
|
+
private _actuallySetCurrentTime(
|
|
433
|
+
mediaElement: IMediaElement,
|
|
434
|
+
time: number,
|
|
435
|
+
isInternal: boolean,
|
|
436
|
+
): void {
|
|
383
437
|
log.info("media", "Actually seeking.", { time, isInternal });
|
|
384
438
|
if (isInternal) {
|
|
385
439
|
this._internalSeeksIncoming.push(time);
|
|
386
440
|
}
|
|
387
|
-
|
|
441
|
+
mediaElement.currentTime = time;
|
|
388
442
|
}
|
|
389
443
|
|
|
390
444
|
/**
|
|
@@ -396,51 +450,25 @@ export default class PlaybackObserver {
|
|
|
396
450
|
if (this._observationRef !== undefined) {
|
|
397
451
|
return this._observationRef;
|
|
398
452
|
}
|
|
399
|
-
|
|
400
|
-
const {
|
|
401
|
-
SAMPLING_INTERVAL_MEDIASOURCE,
|
|
402
|
-
SAMPLING_INTERVAL_LOW_LATENCY,
|
|
403
|
-
SAMPLING_INTERVAL_NO_MEDIASOURCE,
|
|
404
|
-
} = config.getCurrent();
|
|
405
453
|
const returnedSharedReference = new SharedReference(
|
|
406
454
|
this._getCurrentObservation("init"),
|
|
407
455
|
this._canceller.signal,
|
|
408
456
|
);
|
|
409
457
|
|
|
410
|
-
|
|
411
|
-
if (this._lowLatencyMode) {
|
|
412
|
-
interval = SAMPLING_INTERVAL_LOW_LATENCY;
|
|
413
|
-
} else if (this._withMediaSource) {
|
|
414
|
-
interval = SAMPLING_INTERVAL_MEDIASOURCE;
|
|
415
|
-
} else {
|
|
416
|
-
interval = SAMPLING_INTERVAL_NO_MEDIASOURCE;
|
|
417
|
-
}
|
|
458
|
+
this._restartInterval();
|
|
418
459
|
|
|
419
|
-
const
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
SCANNED_MEDIA_ELEMENTS_EVENTS.map((eventName) => {
|
|
424
|
-
const onMediaEvent = () => {
|
|
425
|
-
restartInterval();
|
|
426
|
-
this._generateObservationForEvent(eventName);
|
|
427
|
-
};
|
|
460
|
+
const mediaElement = this._mediaElementRef.getValue();
|
|
461
|
+
if (mediaElement !== null) {
|
|
462
|
+
this._registerMediaElementEvents(mediaElement);
|
|
463
|
+
}
|
|
428
464
|
|
|
429
|
-
this._mediaElement.addEventListener(eventName, onMediaEvent);
|
|
430
|
-
this._canceller.signal.register(() => {
|
|
431
|
-
this._mediaElement.removeEventListener(eventName, onMediaEvent);
|
|
432
|
-
});
|
|
433
|
-
});
|
|
434
465
|
this._canceller.signal.register(() => {
|
|
435
|
-
|
|
466
|
+
if (this._observationIntervalId !== null) {
|
|
467
|
+
clearInterval(this._observationIntervalId);
|
|
468
|
+
}
|
|
436
469
|
returnedSharedReference.finish();
|
|
437
470
|
});
|
|
438
471
|
return returnedSharedReference;
|
|
439
|
-
|
|
440
|
-
function restartInterval() {
|
|
441
|
-
clearInterval(intervalId);
|
|
442
|
-
intervalId = setInterval(onInterval, interval);
|
|
443
|
-
}
|
|
444
472
|
}
|
|
445
473
|
|
|
446
474
|
private _getCurrentObservation(
|
|
@@ -448,12 +476,13 @@ export default class PlaybackObserver {
|
|
|
448
476
|
): IPlaybackObservation {
|
|
449
477
|
/** Actual event emitted through an observation. */
|
|
450
478
|
let tmpEvt: IPlaybackObserverEventType = event;
|
|
479
|
+
const mediaElement = this._mediaElementRef.getValue();
|
|
451
480
|
|
|
452
481
|
// NOTE: `this._observationRef` may be `undefined` because we might here be
|
|
453
482
|
// called in the constructor when that property is not yet set.
|
|
454
483
|
const previousObservation =
|
|
455
484
|
this._observationRef === undefined
|
|
456
|
-
? getInitialObservation(
|
|
485
|
+
? getInitialObservation(mediaElement)
|
|
457
486
|
: this._observationRef.getValue();
|
|
458
487
|
|
|
459
488
|
/**
|
|
@@ -466,7 +495,8 @@ export default class PlaybackObserver {
|
|
|
466
495
|
let pendingPosition: number | null = this._pendingSeek?.position ?? null;
|
|
467
496
|
|
|
468
497
|
/** Initially-polled playback observation, before adjustments. */
|
|
469
|
-
const mediaTimings =
|
|
498
|
+
const mediaTimings =
|
|
499
|
+
mediaElement === null ? getEmptyMediaInfo() : getMediaInfos(mediaElement);
|
|
470
500
|
const { buffered, readyState, position, seeking } = mediaTimings;
|
|
471
501
|
if (tmpEvt === "seeking") {
|
|
472
502
|
// We just began seeking.
|
|
@@ -622,6 +652,59 @@ export default class PlaybackObserver {
|
|
|
622
652
|
}
|
|
623
653
|
this._observationRef.setValue(newObservation);
|
|
624
654
|
}
|
|
655
|
+
|
|
656
|
+
private _restartInterval() {
|
|
657
|
+
const {
|
|
658
|
+
SAMPLING_INTERVAL_MEDIASOURCE,
|
|
659
|
+
SAMPLING_INTERVAL_LOW_LATENCY,
|
|
660
|
+
SAMPLING_INTERVAL_NO_MEDIASOURCE,
|
|
661
|
+
} = config.getCurrent();
|
|
662
|
+
let interval: number;
|
|
663
|
+
if (this._lowLatencyMode) {
|
|
664
|
+
interval = SAMPLING_INTERVAL_LOW_LATENCY;
|
|
665
|
+
} else if (this._withMediaSource) {
|
|
666
|
+
interval = SAMPLING_INTERVAL_MEDIASOURCE;
|
|
667
|
+
} else {
|
|
668
|
+
interval = SAMPLING_INTERVAL_NO_MEDIASOURCE;
|
|
669
|
+
}
|
|
670
|
+
if (this._observationIntervalId !== null) {
|
|
671
|
+
clearInterval(this._observationIntervalId);
|
|
672
|
+
}
|
|
673
|
+
this._observationIntervalId = setInterval(
|
|
674
|
+
() => this._generateObservationForEvent("timeupdate"),
|
|
675
|
+
interval,
|
|
676
|
+
);
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
private _registerMediaElementEvents(mediaElement: IMediaElement): void {
|
|
680
|
+
SCANNED_MEDIA_ELEMENTS_EVENTS.map((eventName) => {
|
|
681
|
+
const onMediaEvent = () => {
|
|
682
|
+
this._restartInterval();
|
|
683
|
+
this._generateObservationForEvent(eventName);
|
|
684
|
+
};
|
|
685
|
+
mediaElement.addEventListener(eventName, onMediaEvent);
|
|
686
|
+
this._canceller.signal.register(() => {
|
|
687
|
+
mediaElement.removeEventListener(eventName, onMediaEvent);
|
|
688
|
+
});
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
private _registerLoadedMetadataEvent(mediaElement: IMediaElement): void {
|
|
693
|
+
const loadedmetadataCb = this._onLoadedMetadataEvent.bind(this);
|
|
694
|
+
mediaElement.addEventListener("loadedmetadata", loadedmetadataCb);
|
|
695
|
+
this._canceller.signal.register(() => {
|
|
696
|
+
mediaElement.removeEventListener("loadedmetadata", loadedmetadataCb);
|
|
697
|
+
});
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
private _onLoadedMetadataEvent(): void {
|
|
701
|
+
const mediaElement = this._mediaElementRef.getValue();
|
|
702
|
+
if (mediaElement !== null && this._pendingSeek !== null && !this._isSeekBlocked) {
|
|
703
|
+
const { position: positionToSeekTo, isInternal } = this._pendingSeek;
|
|
704
|
+
this._pendingSeek = null;
|
|
705
|
+
this._actuallySetCurrentTime(mediaElement, positionToSeekTo, isInternal);
|
|
706
|
+
}
|
|
707
|
+
}
|
|
625
708
|
}
|
|
626
709
|
|
|
627
710
|
/**
|
|
@@ -680,9 +763,29 @@ function hasLoadedUntilTheEnd(
|
|
|
680
763
|
return currentRange !== null && duration - currentRange.end <= REBUFFERING_GAP[suffix];
|
|
681
764
|
}
|
|
682
765
|
|
|
766
|
+
/**
|
|
767
|
+
* Get polled media metrics for when the `HTMLMediaElement` is not yet "attached"
|
|
768
|
+
* to the `PlaybackObserver`.
|
|
769
|
+
*
|
|
770
|
+
* Those metrics actually corresponds to an idle media element.
|
|
771
|
+
* @returns {Object}
|
|
772
|
+
*/
|
|
773
|
+
function getEmptyMediaInfo(): IMediaInfos {
|
|
774
|
+
return {
|
|
775
|
+
buffered: new ManualTimeRanges(),
|
|
776
|
+
position: 0,
|
|
777
|
+
duration: NaN,
|
|
778
|
+
ended: false,
|
|
779
|
+
paused: true,
|
|
780
|
+
playbackRate: 1,
|
|
781
|
+
readyState: 0,
|
|
782
|
+
seeking: false,
|
|
783
|
+
};
|
|
784
|
+
}
|
|
785
|
+
|
|
683
786
|
/**
|
|
684
787
|
* Get basic playback information.
|
|
685
|
-
* @param {
|
|
788
|
+
* @param {HTMLmediaElement} mediaElement
|
|
686
789
|
* @returns {Object}
|
|
687
790
|
*/
|
|
688
791
|
function getMediaInfos(mediaElement: IMediaElement): IMediaInfos {
|
|
@@ -985,8 +1088,9 @@ function prettyPrintBuffered(buffered: TimeRanges, currentTime: number): string
|
|
|
985
1088
|
* @param {HTMLMediaElement} mediaElement
|
|
986
1089
|
* @returns {Object}
|
|
987
1090
|
*/
|
|
988
|
-
function getInitialObservation(mediaElement: IMediaElement): IPlaybackObservation {
|
|
989
|
-
const mediaTimings =
|
|
1091
|
+
function getInitialObservation(mediaElement: IMediaElement | null): IPlaybackObservation {
|
|
1092
|
+
const mediaTimings =
|
|
1093
|
+
mediaElement === null ? getEmptyMediaInfo() : getMediaInfos(mediaElement);
|
|
990
1094
|
return objectAssign(mediaTimings, {
|
|
991
1095
|
rebuffering: null,
|
|
992
1096
|
event: "init" as const,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
1
|
+
import type { IUpdatePlaybackRateWorkerMessage } from "../multithread_types";
|
|
2
|
+
import { WorkerMessageType } from "../multithread_types";
|
|
3
3
|
import type { ITrackType } from "../public_types";
|
|
4
4
|
import type { IRange } from "../utils/ranges";
|
|
5
5
|
import type { IReadOnlySharedReference } from "../utils/reference";
|
|
@@ -12,7 +12,7 @@ import type {
|
|
|
12
12
|
import generateReadOnlyObserver from "./utils/generate_read_only_observer";
|
|
13
13
|
import type ObservationPosition from "./utils/observation_position";
|
|
14
14
|
|
|
15
|
-
export interface
|
|
15
|
+
export interface IWorkerPlaybackObservation {
|
|
16
16
|
/**
|
|
17
17
|
* Information on whether the media element was paused at the time of the
|
|
18
18
|
* Observation.
|
|
@@ -73,18 +73,18 @@ export interface IPausedPlaybackObservation {
|
|
|
73
73
|
pending: boolean | undefined;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
export default class
|
|
77
|
-
implements IReadOnlyPlaybackObserver<
|
|
76
|
+
export default class WorkerPlaybackObserver
|
|
77
|
+
implements IReadOnlyPlaybackObserver<IWorkerPlaybackObservation>
|
|
78
78
|
{
|
|
79
|
-
private _src: IReadOnlySharedReference<
|
|
79
|
+
private _src: IReadOnlySharedReference<IWorkerPlaybackObservation>;
|
|
80
80
|
private _cancelSignal: CancellationSignal;
|
|
81
|
-
private _messageSender: (msg:
|
|
81
|
+
private _messageSender: (msg: IUpdatePlaybackRateWorkerMessage) => void;
|
|
82
82
|
private _contentId: string;
|
|
83
83
|
|
|
84
84
|
constructor(
|
|
85
|
-
src: IReadOnlySharedReference<
|
|
85
|
+
src: IReadOnlySharedReference<IWorkerPlaybackObservation>,
|
|
86
86
|
contentId: string,
|
|
87
|
-
sendMessage: (msg:
|
|
87
|
+
sendMessage: (msg: IUpdatePlaybackRateWorkerMessage) => void,
|
|
88
88
|
cancellationSignal: CancellationSignal,
|
|
89
89
|
) {
|
|
90
90
|
this._src = src;
|
|
@@ -105,13 +105,13 @@ export default class CorePlaybackObserver
|
|
|
105
105
|
return undefined;
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
public getReference(): IReadOnlySharedReference<
|
|
108
|
+
public getReference(): IReadOnlySharedReference<IWorkerPlaybackObservation> {
|
|
109
109
|
return this._src;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
public setPlaybackRate(playbackRate: number): void {
|
|
113
113
|
this._messageSender({
|
|
114
|
-
type:
|
|
114
|
+
type: WorkerMessageType.UpdatePlaybackRate,
|
|
115
115
|
contentId: this._contentId,
|
|
116
116
|
value: playbackRate,
|
|
117
117
|
});
|
|
@@ -122,7 +122,7 @@ export default class CorePlaybackObserver
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
public listen(
|
|
125
|
-
cb: (observation:
|
|
125
|
+
cb: (observation: IWorkerPlaybackObservation, stopListening: () => void) => void,
|
|
126
126
|
params: {
|
|
127
127
|
includeLastObservation?: boolean | undefined;
|
|
128
128
|
clearSignal: CancellationSignal;
|
|
@@ -140,7 +140,7 @@ export default class CorePlaybackObserver
|
|
|
140
140
|
|
|
141
141
|
public deriveReadOnlyObserver<TDest>(
|
|
142
142
|
transform: (
|
|
143
|
-
observationRef: IReadOnlySharedReference<
|
|
143
|
+
observationRef: IReadOnlySharedReference<IWorkerPlaybackObservation>,
|
|
144
144
|
cancellationSignal: CancellationSignal,
|
|
145
145
|
) => IReadOnlySharedReference<TDest>,
|
|
146
146
|
): IReadOnlyPlaybackObserver<TDest> {
|
|
@@ -19,8 +19,6 @@ import Manifest from "../../manifest/classes";
|
|
|
19
19
|
import { getMDAT } from "../../parsers/containers/isobmff";
|
|
20
20
|
import type { ICdnMetadata } from "../../parsers/manifest";
|
|
21
21
|
import createSmoothManifestParser from "../../parsers/manifest/smooth";
|
|
22
|
-
import globalScope from "../../utils/global_scope";
|
|
23
|
-
import isNullOrUndefined from "../../utils/is_null_or_undefined";
|
|
24
22
|
import request from "../../utils/request";
|
|
25
23
|
import { strToUtf8, utf8ToStr } from "../../utils/string_parsing";
|
|
26
24
|
import type { CancellationSignal } from "../../utils/task_canceller";
|
|
@@ -71,7 +69,11 @@ export default function (transportOptions: ITransportOptions): ITransportPipelin
|
|
|
71
69
|
const url = manifestData.url ?? parserOptions.originalUrl;
|
|
72
70
|
const { receivedTime: manifestReceivedTime, responseData } = manifestData;
|
|
73
71
|
|
|
74
|
-
const documentData =
|
|
72
|
+
const documentData =
|
|
73
|
+
typeof responseData === "string"
|
|
74
|
+
? new DOMParser().parseFromString(responseData, "text/xml")
|
|
75
|
+
: (responseData as Document); // TODO find a way to check if Document?
|
|
76
|
+
|
|
75
77
|
const parserResult = smoothManifestParser(documentData, url, manifestReceivedTime);
|
|
76
78
|
|
|
77
79
|
const manifest = new Manifest(parserResult, {
|
|
@@ -432,25 +434,3 @@ export default function (transportOptions: ITransportOptions): ITransportPipelin
|
|
|
432
434
|
},
|
|
433
435
|
};
|
|
434
436
|
}
|
|
435
|
-
|
|
436
|
-
/**
|
|
437
|
-
* Try to convert a Manifest from an unknown format to a JS string format.
|
|
438
|
-
*
|
|
439
|
-
* Throws if the format cannot be converted.
|
|
440
|
-
* @param {*} manifestSrc
|
|
441
|
-
* @returns {Array.<Object | string>}
|
|
442
|
-
*/
|
|
443
|
-
function getManifestAsString(manifestSrc: unknown): string {
|
|
444
|
-
if (manifestSrc instanceof ArrayBuffer) {
|
|
445
|
-
return utf8ToStr(new Uint8Array(manifestSrc));
|
|
446
|
-
} else if (typeof manifestSrc === "string") {
|
|
447
|
-
return manifestSrc;
|
|
448
|
-
} else if (
|
|
449
|
-
!isNullOrUndefined(globalScope.Document) &&
|
|
450
|
-
manifestSrc instanceof globalScope.Document
|
|
451
|
-
) {
|
|
452
|
-
return manifestSrc.documentElement.outerHTML;
|
|
453
|
-
} else {
|
|
454
|
-
throw new Error("Smooth Manifest Parser: Unrecognized Manifest format");
|
|
455
|
-
}
|
|
456
|
-
}
|
|
@@ -3,74 +3,5 @@
|
|
|
3
3
|
* on when running in a multithread mode.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
import { CoreMessageType } from "./core/types";
|
|
9
|
-
import log from "./experimental/tools/mediaCapabilitiesProber/log";
|
|
10
|
-
import features from "./features";
|
|
11
|
-
import Manifest from "./manifest/classes";
|
|
12
|
-
import DashJsParser from "./parsers/manifest/dash/js-parser";
|
|
13
|
-
import DashWasmParser from "./parsers/manifest/dash/wasm-parser";
|
|
14
|
-
import createDashPipelines from "./transports/dash";
|
|
15
|
-
import globalScope from "./utils/global_scope";
|
|
16
|
-
|
|
17
|
-
// Initialize Manually a `DashWasmParser` and add the feature.
|
|
18
|
-
// TODO allow worker-side feature-switching? Not sure how
|
|
19
|
-
const dashWasmParser = new DashWasmParser();
|
|
20
|
-
features.dashParsers.wasm = dashWasmParser;
|
|
21
|
-
features.dashParsers.js = DashJsParser;
|
|
22
|
-
features.transports.dash = createDashPipelines;
|
|
23
|
-
|
|
24
|
-
globalScope.onmessageerror = (_msg: MessageEvent) => {
|
|
25
|
-
log.error("Core", "Error when receiving message from main thread.");
|
|
26
|
-
};
|
|
27
|
-
initializeCoreEntry((handler) => {
|
|
28
|
-
onmessage = handler;
|
|
29
|
-
}, sendMessage);
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Perform a `postMessage` to main thread with the given message.
|
|
33
|
-
* Arguments follow the `postMessage` API.
|
|
34
|
-
* @param {Object} msg
|
|
35
|
-
* @param {Array.<Object>} [transferables]
|
|
36
|
-
*/
|
|
37
|
-
function sendMessage(msg: ICoreMessage, transferables?: Transferable[]): void {
|
|
38
|
-
updateMessageFormat(msg);
|
|
39
|
-
if (msg.type !== CoreMessageType.LogMessage) {
|
|
40
|
-
log.debug("M<--C", "Sending message from worker", { name: msg.type });
|
|
41
|
-
}
|
|
42
|
-
if (transferables === undefined) {
|
|
43
|
-
postMessage(msg);
|
|
44
|
-
} else {
|
|
45
|
-
// TypeScript made a mistake here, and 2busy2fix
|
|
46
|
-
(postMessage as (msg: ICoreMessage, transferables: Transferable[]) => void)(
|
|
47
|
-
msg,
|
|
48
|
-
transferables,
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Ensure that we're sending data that can be serialized, as this is a
|
|
55
|
-
* requirement for the `postMessage` browser API.
|
|
56
|
-
*
|
|
57
|
-
* If necessary, mutations are done in place.
|
|
58
|
-
* @param {Object} msg
|
|
59
|
-
*/
|
|
60
|
-
function updateMessageFormat(msg: ICoreMessage): void {
|
|
61
|
-
if (
|
|
62
|
-
msg.type === CoreMessageType.ManifestReady ||
|
|
63
|
-
msg.type === CoreMessageType.ManifestUpdate
|
|
64
|
-
) {
|
|
65
|
-
if (msg.value.manifest instanceof Manifest) {
|
|
66
|
-
msg.value.manifest = msg.value.manifest.getMetadataSnapshot();
|
|
67
|
-
if (msg.type === CoreMessageType.ManifestUpdate) {
|
|
68
|
-
// Remove `periods` key to reduce cost of an unnecessary manifest
|
|
69
|
-
// clone.
|
|
70
|
-
msg.value.manifest.periods = [];
|
|
71
|
-
}
|
|
72
|
-
} else {
|
|
73
|
-
log.warn("Core", "the Manifest instance should be communicated to `sendMessage`.");
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
6
|
+
import initializeWorkerMain from "./core/main/worker";
|
|
7
|
+
initializeWorkerMain();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FreezeResolver.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/FreezeResolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,iBAAiB,MAAM,kBAAkB,CAAC;AAiDtD;;;;;;GAMG;AACH,MAAM,WAAW,wCAAwC;IACvD,IAAI,EAAE,uBAAuB,CAAC;IAC9B,qCAAqC;IACrC,KAAK,EAAE,KAAK,CAAC;QACX,UAAU,EAAE,WAAW,CAAC;QACxB,MAAM,EAAE,OAAO,CAAC;QAChB,cAAc,EAAE,eAAe,CAAC;KACjC,CAAC,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE;QACL;;;WAGG;QACH,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,IAAI,CAAC;CACb;AAED,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GACzB,wCAAwC,GACxC,sBAAsB,GACtB,uBAAuB,CAAC;AAE5B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,qEAAqE;IACrE,OAAO,CAAC,kBAAkB,CAAoB;IAE9C,8EAA8E;IAC9E,OAAO,CAAC,gBAAgB,CAKtB;IAEF;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB,CAAgB;IAE1C;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAKhB;IAET;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,uCAAuC,CAAgB;gBAEnD,iBAAiB,EAAE,iBAAiB;IAWhD;;;;;;;;;;;;OAYG;IACI,gBAAgB,CACrB,WAAW,EAAE,0BAA0B,GACtC,iBAAiB,GAAG,IAAI;IAqF3B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,qCAAqC;IAwD7C;;;;;;;;;OASG;IACH,OAAO,CAAC,2BAA2B;IA0GnC;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;CA4C9B;AA4ED,2DAA2D;AAC3D,MAAM,WAAW,0BAA0B;IACzC,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,kEAAkE;IAClE,WAAW,EAAE,OAAO,CAAC;CACtB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content_preparer.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/content_preparer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAQvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,8CAA8C,CAAC;AACvG,OAAO,eAAe,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,iBAAiB,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAwC,YAAY,EAAE,MAAM,UAAU,CAAC;AAEnF,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AACzE,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,iBAAiB,MAAM,uBAAuB,CAAC;AAMtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAA8B;IACrD;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAgB;IACzC;;;;OAIG;IACH,OAAO,CAAC,4BAA4B,CAAgB;IAEpD,uBAAuB;IACvB,OAAO,CAAC,SAAS,CAAU;IAE3B;;;;;;;;OAQG;gBACS,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE;IAQ/C;;;;;;;;;;;OAWG;IACI,oBAAoB,CACzB,WAAW,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,EACxE,OAAO,EAAE,0BAA0B;IACnC,6DAA6D;IAC7D,UAAU,EAAE,kCAAkC,GAC7C,OAAO,CAAC,SAAS,CAAC;IA2LrB;;;;;OAKG;IACI,iBAAiB,IAAI,oBAAoB,GAAG,IAAI;IAIvD;;;;;;OAMG;IACI,uBAAuB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAIxE;;;;;;;;OAQG;IACI,iBAAiB,CACtB,WAAW,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,GACvE,OAAO,CAAC,IAAI,CAAC;IA4ChB;;;OAGG;IACI,qBAAqB;CAI7B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC;;;;OAIG;IACH,6BAA6B,EAAE,OAAO,CAAC;IACvC;;;OAGG;IACH,WAAW,EAAE,qBAAqB,CAAC;IACnC,0DAA0D;IAC1D,eAAe,EAAE,eAAe,CAAC;IACjC;;;;OAIG;IACH,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,cAAc,EAAE,cAAc,CAAC;IAC/B;;;OAGG;IACH,uBAAuB,EAAE,wBAAwB,CAAC;IAClD;;;OAGG;IACH,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kEAAkE;IAClE,cAAc,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAClD;;;OAGG;IACH,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,uCAAuC;IACvC,kBAAkB,EAAE,iBAAiB,CAAC;IACtC;;;OAGG;IACH,iBAAiB,EAAE,iBAAiB,CAAC;IACrC;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;CACzB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content_time_boundaries_observer.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/content_time_boundaries_observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,sCAAsC,EACtC,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EAEX,OAAO,EACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAMrD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,YAAY,CAAC,mCAAmC,CAAC;IAC1G,mFAAmF;IACnF,OAAO,CAAC,UAAU,CAAgB;IAElC,oDAAoD;IACpD,OAAO,CAAC,cAAc,CAAuC;IAE7D,2DAA2D;IAC3D,OAAO,CAAC,SAAS,CAAY;IAE7B,uEAAuE;IACvE,OAAO,CAAC,0BAA0B,CAA4B;IAE9D,kEAAkE;IAClE,OAAO,CAAC,eAAe,CAAgB;IAEvC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB,CAAgB;IAE5C;;;OAGG;gBAED,QAAQ,EAAE,SAAS,EACnB,gBAAgB,EAAE,yBAAyB,CAAC,sCAAsC,CAAC,EACnF,WAAW,EAAE,WAAW,EAAE;IA6D5B;;;;OAIG;IACI,oBAAoB,IAAI,0BAA0B;IAIzD;;;;;;;;;;;;OAYG;IACI,kBAAkB,CACvB,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,WAAW,GAAG,IAAI,GAC7B,IAAI;IA+BP;;;;;;;;;OASG;IACI,sBAAsB,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAI7E;;;;;;;;;OASG;IACI,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAItE;;;;;;;;OAQG;IACI,4BAA4B,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAQlE;;;;;;;;;;OAUG;IACI,0BAA0B,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAQhE;;;OAGG;IACI,OAAO;IAKd,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,6BAA6B;IAYrC,OAAO,CAAC,iBAAiB;CAc1B;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;OAUG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAClD,mDAAmD;IACnD,OAAO,EAAE,YAAY,CAAC;IACtB,0DAA0D;IAC1D,YAAY,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,oBAAoB,EAAE,0BAA0B,CAAC;IACjD;;;;;;;;;OASG;IACH,WAAW,EAAE,IAAI,CAAC;IAClB;;;;;;;;;OASG;IACH,YAAY,EAAE,IAAI,CAAC;CACpB;AAgPD,MAAM,MAAM,uCAAuC,GAAG,IAAI,CACxD,sCAAsC,EACtC,UAAU,CACX,CAAC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { IMainThreadMessage } from "../../main_thread/types";
|
|
2
|
-
import SharedReference from "../../utils/reference";
|
|
3
|
-
import type { ICoreMessage, IResolutionInfo } from "../types";
|
|
4
|
-
export type IMessageReceiverCallback = (evt: {
|
|
5
|
-
data: IMainThreadMessage;
|
|
6
|
-
}) => void;
|
|
7
|
-
/**
|
|
8
|
-
* Initialize a `CoreEntry`, which is the part of the RxPlayer acting as an
|
|
9
|
-
* entry point to all its "core" code.
|
|
10
|
-
*
|
|
11
|
-
* Its role is to receive and react to messages coming from "main thead", which
|
|
12
|
-
* may include loading and playing a content, and to send back messages for the main
|
|
13
|
-
* thread.
|
|
14
|
-
* @param {Function} setMessageReceiver - Declares the function that will
|
|
15
|
-
* receive messages coming from the "main thread" part of the RxPlayer logic.
|
|
16
|
-
* @param {Function} sendMessage - Function allowing to send messages to the
|
|
17
|
-
* "main thread" part of the RxPlayer logic.
|
|
18
|
-
*/
|
|
19
|
-
export default function initializeCoreEntry(setMessageReceiver: (cb: IMessageReceiverCallback) => void, sendMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void): void;
|
|
20
|
-
/**
|
|
21
|
-
* Collection of so-called "references": values configuring playback that may
|
|
22
|
-
* be updated at any time and that the CoreEntry should react on.
|
|
23
|
-
*/
|
|
24
|
-
export interface ICoreReferences {
|
|
25
|
-
limitVideoResolution: SharedReference<IResolutionInfo>;
|
|
26
|
-
/** Max buffer size after the current position, in seconds (we GC further up). */
|
|
27
|
-
maxBufferAhead: SharedReference<number>;
|
|
28
|
-
/** Max buffer size before the current position, in seconds (we GC further down). */
|
|
29
|
-
maxBufferBehind: SharedReference<number>;
|
|
30
|
-
/** Buffer maximum size in kiloBytes at which we stop downloading */
|
|
31
|
-
maxVideoBufferSize: SharedReference<number>;
|
|
32
|
-
throttleVideoBitrate: SharedReference<number>;
|
|
33
|
-
/** Buffer "goal" at which we stop downloading new segments. */
|
|
34
|
-
wantedBufferAhead: SharedReference<number>;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=core_entry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core_entry.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/core_entry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,kBAAkB,EAGnB,MAAM,yBAAyB,CAAC;AAajC,OAAO,eAAe,MAAM,uBAAuB,CAAC;AAQpD,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAChB,MAAM,UAAU,CAAC;AAUlB,MAAM,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,KAAK,IAAI,CAAC;AAEnF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,kBAAkB,EAAE,CAAC,EAAE,EAAE,wBAAwB,KAAK,IAAI,EAC1D,WAAW,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,GACvE,IAAI,CA6YN;AA2vBD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,oBAAoB,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACvD,iFAAiF;IACjF,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,oFAAoF;IACpF,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,oEAAoE;IACpE,kBAAkB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5C,oBAAoB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9C,+DAA+D;IAC/D,iBAAiB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;CAC5C"}
|