rx-player 4.4.0 → 4.4.1-dev.2025101500
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 +7 -0
- package/README.md +52 -113
- package/VERSION +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/{main/common → entry}/FreezeResolver.d.ts +3 -3
- package/dist/commonjs/core/entry/FreezeResolver.d.ts.map +1 -0
- package/dist/commonjs/core/{main/common → entry}/FreezeResolver.js +3 -3
- package/dist/{es2017/core/main/worker → commonjs/core/entry}/content_preparer.d.ts +22 -15
- package/dist/commonjs/core/entry/content_preparer.d.ts.map +1 -0
- package/dist/commonjs/core/{main/worker → entry}/content_preparer.js +62 -64
- package/dist/{es2017/core/main/common → commonjs/core/entry}/content_time_boundaries_observer.d.ts +5 -5
- package/dist/commonjs/core/entry/content_time_boundaries_observer.d.ts.map +1 -0
- package/dist/commonjs/core/{main/common → entry}/content_time_boundaries_observer.js +6 -6
- package/dist/commonjs/core/entry/core_entry.d.ts +36 -0
- package/dist/commonjs/core/entry/core_entry.d.ts.map +1 -0
- package/dist/commonjs/core/{main/worker/worker_main.js → entry/core_entry.js} +192 -153
- package/dist/commonjs/core/{main/worker/worker_text_displayer_interface.d.ts → entry/core_text_displayer_interface.d.ts} +11 -11
- package/dist/commonjs/core/entry/core_text_displayer_interface.d.ts.map +1 -0
- package/dist/commonjs/core/{main/worker/worker_text_displayer_interface.js → entry/core_text_displayer_interface.js} +22 -22
- package/dist/commonjs/core/{main/common → entry}/create_content_time_boundaries_observer.d.ts +6 -6
- package/dist/commonjs/core/entry/create_content_time_boundaries_observer.d.ts.map +1 -0
- package/dist/commonjs/core/{main/common → entry}/create_content_time_boundaries_observer.js +1 -1
- package/dist/commonjs/core/{main/common → entry}/get_buffered_data_per_media_buffer.d.ts +4 -4
- package/dist/commonjs/core/entry/get_buffered_data_per_media_buffer.d.ts.map +1 -0
- package/dist/commonjs/core/{main/common → entry}/get_buffered_data_per_media_buffer.js +1 -1
- package/dist/{es2017/core/main/common → commonjs/core/entry}/get_thumbnail_data.d.ts +3 -3
- package/dist/commonjs/core/entry/get_thumbnail_data.d.ts.map +1 -0
- package/dist/commonjs/core/{main/common → entry}/get_thumbnail_data.js +2 -2
- package/dist/commonjs/core/entry/index.d.ts +5 -0
- package/dist/commonjs/core/entry/index.d.ts.map +1 -0
- package/dist/commonjs/core/entry/index.js +4 -0
- package/dist/{es2017/core/main/common → commonjs/core/entry}/synchronize_sinks_on_observation.d.ts +2 -2
- package/dist/commonjs/core/entry/synchronize_sinks_on_observation.d.ts.map +1 -0
- package/dist/commonjs/core/{main/worker → entry}/track_choice_setter.d.ts +4 -4
- package/dist/commonjs/core/entry/track_choice_setter.d.ts.map +1 -0
- package/dist/commonjs/core/{main/worker → entry}/track_choice_setter.js +4 -4
- package/dist/commonjs/core/entry/utils.d.ts +3 -0
- package/dist/commonjs/core/entry/utils.d.ts.map +1 -0
- package/dist/commonjs/core/entry/utils.js +11 -0
- package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.d.ts.map +1 -1
- package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +17 -0
- package/dist/commonjs/core/types.d.ts +519 -1
- package/dist/commonjs/core/types.d.ts.map +1 -1
- package/dist/commonjs/core/types.js +1 -0
- package/dist/commonjs/experimental/features/local.d.ts.map +1 -1
- package/dist/commonjs/experimental/features/local.js +7 -1
- package/dist/commonjs/experimental/features/metaplaylist.d.ts.map +1 -1
- package/dist/commonjs/experimental/features/metaplaylist.js +7 -1
- package/dist/commonjs/experimental/features/multi_thread.d.ts.map +1 -1
- package/dist/commonjs/experimental/features/multi_thread.js +6 -2
- 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 +7 -1
- package/dist/commonjs/features/list/dash_wasm.d.ts.map +1 -1
- package/dist/commonjs/features/list/dash_wasm.js +7 -1
- package/dist/commonjs/features/list/media_source_main.d.ts.map +1 -1
- package/dist/commonjs/features/list/media_source_main.js +7 -1
- package/dist/commonjs/features/list/smooth.d.ts.map +1 -1
- package/dist/commonjs/features/list/smooth.js +7 -1
- package/dist/commonjs/features/types.d.ts +20 -4
- 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 +39 -42
- package/dist/commonjs/main_thread/core_interface/base.d.ts +13 -0
- package/dist/commonjs/main_thread/core_interface/base.d.ts.map +1 -0
- package/dist/commonjs/main_thread/core_interface/base.js +32 -0
- package/dist/commonjs/main_thread/core_interface/monothread.d.ts +13 -0
- package/dist/commonjs/main_thread/core_interface/monothread.d.ts.map +1 -0
- package/dist/commonjs/main_thread/core_interface/monothread.js +56 -0
- package/dist/commonjs/main_thread/core_interface/multithread.d.ts +25 -0
- package/dist/commonjs/main_thread/core_interface/multithread.d.ts.map +1 -0
- package/dist/commonjs/main_thread/core_interface/multithread.js +67 -0
- package/dist/commonjs/main_thread/core_interface/types.d.ts +6 -0
- package/dist/commonjs/main_thread/core_interface/types.d.ts.map +1 -0
- package/dist/commonjs/main_thread/core_interface/types.js +2 -0
- package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts +166 -108
- 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 +1492 -919
- 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 +2 -1
- 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 +537 -0
- 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 +18 -4
- 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/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 +31 -27
- package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.d.ts +3 -2
- package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.d.ts.map +1 -1
- package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.js +16 -7
- package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.d.ts +3 -2
- package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.d.ts.map +1 -1
- package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.js +37 -6
- 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 +3 -2
- package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.d.ts.map +1 -1
- package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.js +28 -5
- package/dist/{es2017/playback_observer/worker_playback_observer.d.ts → commonjs/playback_observer/core_playback_observer.d.ts} +8 -8
- package/dist/commonjs/playback_observer/core_playback_observer.d.ts.map +1 -0
- package/dist/commonjs/playback_observer/{worker_playback_observer.js → core_playback_observer.js} +13 -13
- package/dist/commonjs/transports/smooth/pipelines.d.ts.map +1 -1
- package/dist/commonjs/transports/smooth/pipelines.js +25 -3
- package/dist/commonjs/worker_entry_point.js +62 -2
- 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/{main/common → entry}/FreezeResolver.d.ts +3 -3
- package/dist/es2017/core/entry/FreezeResolver.d.ts.map +1 -0
- package/dist/es2017/core/{main/common → entry}/FreezeResolver.js +3 -3
- package/dist/{commonjs/core/main/worker → es2017/core/entry}/content_preparer.d.ts +22 -15
- package/dist/es2017/core/entry/content_preparer.d.ts.map +1 -0
- package/dist/es2017/core/{main/worker → entry}/content_preparer.js +53 -55
- package/dist/{commonjs/core/main/common → es2017/core/entry}/content_time_boundaries_observer.d.ts +5 -5
- package/dist/es2017/core/entry/content_time_boundaries_observer.d.ts.map +1 -0
- package/dist/es2017/core/{main/common → entry}/content_time_boundaries_observer.js +6 -6
- package/dist/es2017/core/entry/core_entry.d.ts +36 -0
- package/dist/es2017/core/entry/core_entry.d.ts.map +1 -0
- package/dist/es2017/core/{main/worker/worker_main.js → entry/core_entry.js} +153 -114
- package/dist/es2017/core/{main/worker/worker_text_displayer_interface.d.ts → entry/core_text_displayer_interface.d.ts} +11 -11
- package/dist/es2017/core/entry/core_text_displayer_interface.d.ts.map +1 -0
- package/dist/es2017/core/{main/worker/worker_text_displayer_interface.js → entry/core_text_displayer_interface.js} +10 -10
- package/dist/es2017/core/{main/common → entry}/create_content_time_boundaries_observer.d.ts +6 -6
- package/dist/es2017/core/entry/create_content_time_boundaries_observer.d.ts.map +1 -0
- package/dist/es2017/core/{main/common → entry}/create_content_time_boundaries_observer.js +1 -1
- package/dist/es2017/core/{main/common → entry}/get_buffered_data_per_media_buffer.d.ts +4 -4
- package/dist/es2017/core/entry/get_buffered_data_per_media_buffer.d.ts.map +1 -0
- package/dist/es2017/core/{main/common → entry}/get_buffered_data_per_media_buffer.js +1 -1
- package/dist/{commonjs/core/main/common → es2017/core/entry}/get_thumbnail_data.d.ts +3 -3
- package/dist/es2017/core/entry/get_thumbnail_data.d.ts.map +1 -0
- package/dist/es2017/core/{main/common → entry}/get_thumbnail_data.js +2 -2
- package/dist/es2017/core/entry/index.d.ts +5 -0
- package/dist/es2017/core/entry/index.d.ts.map +1 -0
- package/dist/es2017/core/entry/index.js +2 -0
- package/dist/{commonjs/core/main/common → es2017/core/entry}/synchronize_sinks_on_observation.d.ts +2 -2
- package/dist/es2017/core/entry/synchronize_sinks_on_observation.d.ts.map +1 -0
- package/dist/es2017/core/{main/worker → entry}/track_choice_setter.d.ts +4 -4
- package/dist/es2017/core/entry/track_choice_setter.d.ts.map +1 -0
- package/dist/es2017/core/{main/worker → entry}/track_choice_setter.js +4 -4
- package/dist/es2017/core/entry/utils.d.ts +3 -0
- package/dist/es2017/core/entry/utils.d.ts.map +1 -0
- package/dist/es2017/core/entry/utils.js +8 -0
- package/dist/es2017/core/stream/orchestrator/stream_orchestrator.d.ts.map +1 -1
- package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +18 -1
- package/dist/es2017/core/types.d.ts +519 -1
- package/dist/es2017/core/types.d.ts.map +1 -1
- package/dist/es2017/core/types.js +1 -0
- package/dist/es2017/experimental/features/local.d.ts.map +1 -1
- package/dist/es2017/experimental/features/local.js +7 -1
- package/dist/es2017/experimental/features/metaplaylist.d.ts.map +1 -1
- package/dist/es2017/experimental/features/metaplaylist.js +7 -1
- package/dist/es2017/experimental/features/multi_thread.d.ts.map +1 -1
- package/dist/es2017/experimental/features/multi_thread.js +6 -2
- 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 +7 -1
- package/dist/es2017/features/list/dash_wasm.d.ts.map +1 -1
- package/dist/es2017/features/list/dash_wasm.js +7 -1
- package/dist/es2017/features/list/media_source_main.d.ts.map +1 -1
- package/dist/es2017/features/list/media_source_main.js +7 -1
- package/dist/es2017/features/list/smooth.d.ts.map +1 -1
- package/dist/es2017/features/list/smooth.js +7 -1
- package/dist/es2017/features/types.d.ts +20 -4
- 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 +40 -43
- package/dist/es2017/main_thread/core_interface/base.d.ts +13 -0
- package/dist/es2017/main_thread/core_interface/base.d.ts.map +1 -0
- package/dist/es2017/main_thread/core_interface/base.js +28 -0
- package/dist/es2017/main_thread/core_interface/monothread.d.ts +13 -0
- package/dist/es2017/main_thread/core_interface/monothread.d.ts.map +1 -0
- package/dist/es2017/main_thread/core_interface/monothread.js +32 -0
- package/dist/es2017/main_thread/core_interface/multithread.d.ts +25 -0
- package/dist/es2017/main_thread/core_interface/multithread.d.ts.map +1 -0
- package/dist/es2017/main_thread/core_interface/multithread.js +45 -0
- package/dist/es2017/main_thread/core_interface/types.d.ts +6 -0
- package/dist/es2017/main_thread/core_interface/types.d.ts.map +1 -0
- package/dist/es2017/main_thread/core_interface/types.js +1 -0
- package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts +166 -108
- 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 +1405 -760
- 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 +2 -1
- 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 +537 -0
- 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 +16 -4
- 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/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 +31 -27
- package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.d.ts +3 -2
- package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.d.ts.map +1 -1
- package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.js +16 -7
- package/dist/es2017/parsers/manifest/smooth/parse_protection_node.d.ts +3 -2
- package/dist/es2017/parsers/manifest/smooth/parse_protection_node.d.ts.map +1 -1
- package/dist/es2017/parsers/manifest/smooth/parse_protection_node.js +15 -6
- 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 +3 -2
- package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.d.ts.map +1 -1
- package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.js +6 -5
- package/dist/{commonjs/playback_observer/worker_playback_observer.d.ts → es2017/playback_observer/core_playback_observer.d.ts} +8 -8
- package/dist/es2017/playback_observer/core_playback_observer.d.ts.map +1 -0
- package/dist/es2017/playback_observer/{worker_playback_observer.js → core_playback_observer.js} +2 -2
- package/dist/es2017/transports/smooth/pipelines.d.ts.map +1 -1
- package/dist/es2017/transports/smooth/pipelines.js +25 -3
- package/dist/es2017/worker_entry_point.js +62 -2
- package/dist/rx-player.js +21882 -19021
- package/dist/rx-player.min.js +20 -20
- package/dist/worker.js +8 -8
- package/package.json +1 -1
- package/src/README.md +88 -198
- package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
- package/src/core/{main/common → entry}/FreezeResolver.ts +7 -7
- package/src/core/{main → entry}/README.md +1 -1
- package/src/core/{main/worker → entry}/content_preparer.ts +77 -76
- package/src/core/{main/common → entry}/content_time_boundaries_observer.ts +10 -10
- package/src/core/{main/worker/worker_main.ts → entry/core_entry.ts} +223 -149
- package/src/core/{main/worker/worker_text_displayer_interface.ts → entry/core_text_displayer_interface.ts} +26 -26
- package/src/core/{main/common → entry}/create_content_time_boundaries_observer.ts +7 -7
- package/src/core/{main/common → entry}/get_buffered_data_per_media_buffer.ts +6 -6
- package/src/core/{main/common → entry}/get_thumbnail_data.ts +5 -5
- package/src/core/entry/index.ts +4 -0
- package/src/core/{main/common → entry}/synchronize_sinks_on_observation.ts +2 -2
- package/src/core/{main/worker → entry}/track_choice_setter.ts +7 -7
- package/src/core/entry/utils.ts +11 -0
- package/src/core/stream/orchestrator/stream_orchestrator.ts +26 -1
- package/src/core/types.ts +631 -3
- package/src/experimental/features/__tests__/local.test.ts +11 -2
- package/src/experimental/features/__tests__/metaplaylist.test.ts +11 -2
- package/src/experimental/features/__tests__/multi_thread.test.ts +8 -3
- package/src/experimental/features/local.ts +7 -1
- package/src/experimental/features/metaplaylist.ts +7 -1
- package/src/experimental/features/multi_thread.ts +6 -2
- package/src/features/features_object.ts +1 -1
- package/src/features/list/__tests__/dash.test.ts +12 -3
- package/src/features/list/__tests__/smooth.test.ts +11 -2
- package/src/features/list/dash.ts +7 -1
- package/src/features/list/dash_wasm.ts +7 -1
- package/src/features/list/media_source_main.ts +7 -1
- package/src/features/list/smooth.ts +7 -1
- package/src/features/types.ts +23 -4
- package/src/main_thread/README.md +8 -0
- package/src/main_thread/api/public_api.ts +46 -48
- package/src/main_thread/core_interface/README.md +22 -0
- package/src/main_thread/core_interface/base.ts +36 -0
- package/src/main_thread/core_interface/monothread.ts +46 -0
- package/src/main_thread/core_interface/multithread.ts +49 -0
- package/src/main_thread/core_interface/types.ts +5 -0
- package/src/main_thread/init/media_source_content_initializer.ts +2034 -1152
- package/src/main_thread/init/utils/create_core_playback_observer.ts +2 -1
- package/src/main_thread/init/utils/update_manifest_codec_support.ts +1 -1
- package/src/main_thread/types.ts +610 -0
- package/src/manifest/utils.ts +20 -4
- package/src/mse/worker_media_source_interface.ts +35 -35
- package/src/parsers/manifest/smooth/create_parser.ts +40 -34
- package/src/parsers/manifest/smooth/parse_C_nodes.ts +19 -8
- package/src/parsers/manifest/smooth/parse_protection_node.ts +17 -9
- package/src/parsers/manifest/smooth/utils/parseBoolean.ts +1 -1
- package/src/parsers/manifest/smooth/utils/reduceChildren.ts +10 -7
- package/src/playback_observer/{worker_playback_observer.ts → core_playback_observer.ts} +13 -13
- package/src/transports/smooth/pipelines.ts +25 -5
- package/src/worker_entry_point.ts +71 -2
- package/dist/commonjs/core/main/common/FreezeResolver.d.ts.map +0 -1
- package/dist/commonjs/core/main/common/content_time_boundaries_observer.d.ts.map +0 -1
- package/dist/commonjs/core/main/common/create_content_time_boundaries_observer.d.ts.map +0 -1
- package/dist/commonjs/core/main/common/get_buffered_data_per_media_buffer.d.ts.map +0 -1
- package/dist/commonjs/core/main/common/get_thumbnail_data.d.ts.map +0 -1
- package/dist/commonjs/core/main/common/synchronize_sinks_on_observation.d.ts.map +0 -1
- package/dist/commonjs/core/main/worker/content_preparer.d.ts.map +0 -1
- package/dist/commonjs/core/main/worker/globals.d.ts +0 -14
- package/dist/commonjs/core/main/worker/globals.d.ts.map +0 -1
- package/dist/commonjs/core/main/worker/globals.js +0 -26
- package/dist/commonjs/core/main/worker/index.d.ts +0 -3
- package/dist/commonjs/core/main/worker/index.d.ts.map +0 -1
- package/dist/commonjs/core/main/worker/index.js +0 -4
- package/dist/commonjs/core/main/worker/send_message.d.ts +0 -4
- package/dist/commonjs/core/main/worker/send_message.d.ts.map +0 -1
- package/dist/commonjs/core/main/worker/send_message.js +0 -23
- package/dist/commonjs/core/main/worker/track_choice_setter.d.ts.map +0 -1
- package/dist/commonjs/core/main/worker/worker_main.d.ts +0 -2
- package/dist/commonjs/core/main/worker/worker_main.d.ts.map +0 -1
- package/dist/commonjs/core/main/worker/worker_text_displayer_interface.d.ts.map +0 -1
- package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts +0 -308
- package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts.map +0 -1
- package/dist/commonjs/main_thread/init/multi_thread_content_initializer.js +0 -1713
- package/dist/commonjs/main_thread/init/send_message.d.ts +0 -3
- package/dist/commonjs/main_thread/init/send_message.d.ts.map +0 -1
- package/dist/commonjs/main_thread/init/send_message.js +0 -13
- package/dist/commonjs/multithread_types.d.ts +0 -915
- package/dist/commonjs/multithread_types.d.ts.map +0 -1
- package/dist/commonjs/multithread_types.js +0 -7
- package/dist/commonjs/playback_observer/worker_playback_observer.d.ts.map +0 -1
- package/dist/es2017/core/main/common/FreezeResolver.d.ts.map +0 -1
- package/dist/es2017/core/main/common/content_time_boundaries_observer.d.ts.map +0 -1
- package/dist/es2017/core/main/common/create_content_time_boundaries_observer.d.ts.map +0 -1
- package/dist/es2017/core/main/common/get_buffered_data_per_media_buffer.d.ts.map +0 -1
- package/dist/es2017/core/main/common/get_thumbnail_data.d.ts.map +0 -1
- package/dist/es2017/core/main/common/synchronize_sinks_on_observation.d.ts.map +0 -1
- package/dist/es2017/core/main/worker/content_preparer.d.ts.map +0 -1
- package/dist/es2017/core/main/worker/globals.d.ts +0 -14
- package/dist/es2017/core/main/worker/globals.d.ts.map +0 -1
- package/dist/es2017/core/main/worker/globals.js +0 -18
- package/dist/es2017/core/main/worker/index.d.ts +0 -3
- package/dist/es2017/core/main/worker/index.d.ts.map +0 -1
- package/dist/es2017/core/main/worker/index.js +0 -2
- package/dist/es2017/core/main/worker/send_message.d.ts +0 -4
- package/dist/es2017/core/main/worker/send_message.d.ts.map +0 -1
- package/dist/es2017/core/main/worker/send_message.js +0 -19
- package/dist/es2017/core/main/worker/track_choice_setter.d.ts.map +0 -1
- package/dist/es2017/core/main/worker/worker_main.d.ts +0 -2
- package/dist/es2017/core/main/worker/worker_main.d.ts.map +0 -1
- package/dist/es2017/core/main/worker/worker_text_displayer_interface.d.ts.map +0 -1
- package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts +0 -308
- package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts.map +0 -1
- package/dist/es2017/main_thread/init/multi_thread_content_initializer.js +0 -1559
- package/dist/es2017/main_thread/init/send_message.d.ts +0 -3
- package/dist/es2017/main_thread/init/send_message.d.ts.map +0 -1
- package/dist/es2017/main_thread/init/send_message.js +0 -10
- package/dist/es2017/multithread_types.d.ts +0 -915
- package/dist/es2017/multithread_types.d.ts.map +0 -1
- package/dist/es2017/multithread_types.js +0 -6
- package/dist/es2017/playback_observer/worker_playback_observer.d.ts.map +0 -1
- package/src/core/main/worker/globals.ts +0 -38
- package/src/core/main/worker/index.ts +0 -2
- package/src/core/main/worker/send_message.ts +0 -28
- package/src/main_thread/init/multi_thread_content_initializer.ts +0 -2330
- package/src/main_thread/init/send_message.ts +0 -15
- package/src/multithread_types.ts +0 -1095
- /package/dist/commonjs/core/{main/common → entry}/synchronize_sinks_on_observation.js +0 -0
- /package/dist/es2017/core/{main/common → entry}/synchronize_sinks_on_observation.js +0 -0
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect } from "vitest";
|
|
2
|
+
import initializeCoreEntry from "../../../core/entry";
|
|
2
3
|
import type { IFeaturesObject } from "../../../features/types";
|
|
4
|
+
import { MonoThreadCoreInterface } from "../../../main_thread/core_interface/monothread";
|
|
3
5
|
import MediaSourceContentInitializer from "../../../main_thread/init/media_source_content_initializer";
|
|
4
6
|
import metaplaylist from "../../../transports/metaplaylist";
|
|
5
7
|
import addLocalManifestFeature from "../metaplaylist";
|
|
@@ -10,9 +12,16 @@ describe("Features list - METAPLAYLIST", () => {
|
|
|
10
12
|
addLocalManifestFeature(featureObject);
|
|
11
13
|
expect(featureObject).toEqual({
|
|
12
14
|
transports: { metaplaylist },
|
|
13
|
-
|
|
15
|
+
monothread: {
|
|
16
|
+
init: MediaSourceContentInitializer,
|
|
17
|
+
coreInterface: MonoThreadCoreInterface,
|
|
18
|
+
initializeCoreEntry,
|
|
19
|
+
},
|
|
14
20
|
});
|
|
15
21
|
expect(featureObject.transports.metaplaylist).toBe(metaplaylist);
|
|
16
|
-
expect(featureObject.
|
|
22
|
+
expect(featureObject.monothread).not.toBe(null);
|
|
23
|
+
expect(featureObject.monothread?.init).toBe(MediaSourceContentInitializer);
|
|
24
|
+
expect(featureObject.monothread?.coreInterface).toBe(MonoThreadCoreInterface);
|
|
25
|
+
expect(featureObject.monothread?.initializeCoreEntry).toBe(initializeCoreEntry);
|
|
17
26
|
});
|
|
18
27
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect } from "vitest";
|
|
2
2
|
import type { IFeaturesObject } from "../../../features/types";
|
|
3
|
-
import
|
|
3
|
+
import { WorkerCoreInterface } from "../../../main_thread/core_interface/multithread";
|
|
4
|
+
import MediaSourceContentInitializer from "../../../main_thread/init/media_source_content_initializer";
|
|
4
5
|
import addMultiThreadFeature from "../multi_thread";
|
|
5
6
|
|
|
6
7
|
describe("Features list - EME", () => {
|
|
@@ -8,10 +9,14 @@ describe("Features list - EME", () => {
|
|
|
8
9
|
const featureObject: IFeaturesObject = {} as IFeaturesObject;
|
|
9
10
|
addMultiThreadFeature(featureObject);
|
|
10
11
|
expect(featureObject).toEqual({
|
|
11
|
-
multithread: {
|
|
12
|
+
multithread: {
|
|
13
|
+
init: MediaSourceContentInitializer,
|
|
14
|
+
coreInterface: WorkerCoreInterface,
|
|
15
|
+
},
|
|
12
16
|
});
|
|
13
17
|
expect(featureObject.multithread).not.toBe(null);
|
|
14
18
|
expect(featureObject.multithread).not.toBe(undefined);
|
|
15
|
-
expect(featureObject.multithread?.init).toBe(
|
|
19
|
+
expect(featureObject.multithread?.init).toBe(MediaSourceContentInitializer);
|
|
20
|
+
expect(featureObject.multithread?.coreInterface).toBe(WorkerCoreInterface);
|
|
16
21
|
});
|
|
17
22
|
});
|
|
@@ -14,13 +14,19 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import initializeCoreEntry from "../../core/entry";
|
|
17
18
|
import type { IFeaturesObject } from "../../features/types";
|
|
19
|
+
import { MonoThreadCoreInterface } from "../../main_thread/core_interface/monothread";
|
|
18
20
|
import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
|
|
19
21
|
import local from "../../transports/local";
|
|
20
22
|
|
|
21
23
|
function addLocalManifestFeature(features: IFeaturesObject): void {
|
|
22
24
|
features.transports.local = local;
|
|
23
|
-
features.
|
|
25
|
+
features.monothread = {
|
|
26
|
+
init: MediaSourceContentInitializer,
|
|
27
|
+
coreInterface: MonoThreadCoreInterface,
|
|
28
|
+
initializeCoreEntry,
|
|
29
|
+
};
|
|
24
30
|
}
|
|
25
31
|
|
|
26
32
|
export { addLocalManifestFeature as LOCAL_MANIFEST };
|
|
@@ -14,13 +14,19 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import initializeCoreEntry from "../../core/entry";
|
|
17
18
|
import type { IFeaturesObject } from "../../features/types";
|
|
19
|
+
import { MonoThreadCoreInterface } from "../../main_thread/core_interface/monothread";
|
|
18
20
|
import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
|
|
19
21
|
import metaplaylist from "../../transports/metaplaylist";
|
|
20
22
|
|
|
21
23
|
function addMetaPlaylistFeature(features: IFeaturesObject): void {
|
|
22
24
|
features.transports.metaplaylist = metaplaylist;
|
|
23
|
-
features.
|
|
25
|
+
features.monothread = {
|
|
26
|
+
init: MediaSourceContentInitializer,
|
|
27
|
+
coreInterface: MonoThreadCoreInterface,
|
|
28
|
+
initializeCoreEntry,
|
|
29
|
+
};
|
|
24
30
|
}
|
|
25
31
|
|
|
26
32
|
export { addMetaPlaylistFeature as METAPLAYLIST };
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import type { IFeaturesObject } from "../../features/types";
|
|
2
|
-
import
|
|
2
|
+
import { WorkerCoreInterface } from "../../main_thread/core_interface/multithread";
|
|
3
|
+
import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Add ability to run the RxPlayer's main buffering logic in a WebMultiThread.
|
|
6
7
|
* @param {Object} features
|
|
7
8
|
*/
|
|
8
9
|
function addMultiThreadFeature(features: IFeaturesObject): void {
|
|
9
|
-
features.multithread = {
|
|
10
|
+
features.multithread = {
|
|
11
|
+
init: MediaSourceContentInitializer,
|
|
12
|
+
coreInterface: WorkerCoreInterface,
|
|
13
|
+
};
|
|
10
14
|
}
|
|
11
15
|
|
|
12
16
|
export { addMultiThreadFeature as MULTI_THREAD };
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { describe, it, expect } from "vitest";
|
|
2
|
+
import initializeCoreEntry from "../../../core/entry";
|
|
3
|
+
import { MonoThreadCoreInterface } from "../../../main_thread/core_interface/monothread";
|
|
2
4
|
import MediaSourceContentInitializer from "../../../main_thread/init/media_source_content_initializer";
|
|
3
5
|
import dashJsParser from "../../../parsers/manifest/dash/js-parser";
|
|
4
6
|
import DASHFeature from "../../../transports/dash";
|
|
@@ -10,15 +12,22 @@ describe("Features list - DASH", () => {
|
|
|
10
12
|
const featureObject = {
|
|
11
13
|
transports: {},
|
|
12
14
|
dashParsers: { js: null, wasm: null },
|
|
13
|
-
|
|
15
|
+
monothread: null,
|
|
14
16
|
} as unknown as IFeaturesObject;
|
|
15
17
|
addDASHFeature(featureObject);
|
|
16
18
|
expect(featureObject).toEqual({
|
|
17
19
|
transports: { dash: DASHFeature },
|
|
18
20
|
dashParsers: { js: dashJsParser, wasm: null },
|
|
19
|
-
|
|
21
|
+
monothread: {
|
|
22
|
+
init: MediaSourceContentInitializer,
|
|
23
|
+
coreInterface: MonoThreadCoreInterface,
|
|
24
|
+
initializeCoreEntry,
|
|
25
|
+
},
|
|
20
26
|
});
|
|
21
27
|
expect(featureObject.transports.dash).toBe(DASHFeature);
|
|
22
|
-
expect(featureObject.
|
|
28
|
+
expect(featureObject.monothread).not.toBe(null);
|
|
29
|
+
expect(featureObject.monothread?.init).toBe(MediaSourceContentInitializer);
|
|
30
|
+
expect(featureObject.monothread?.coreInterface).toBe(MonoThreadCoreInterface);
|
|
31
|
+
expect(featureObject.monothread?.initializeCoreEntry).toBe(initializeCoreEntry);
|
|
23
32
|
});
|
|
24
33
|
});
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { describe, it, expect } from "vitest";
|
|
2
|
+
import initializeCoreEntry from "../../../core/entry";
|
|
3
|
+
import { MonoThreadCoreInterface } from "../../../main_thread/core_interface/monothread";
|
|
2
4
|
import MediaSourceContentInitializer from "../../../main_thread/init/media_source_content_initializer";
|
|
3
5
|
import SmoothFeature from "../../../transports/smooth";
|
|
4
6
|
import type { IFeaturesObject } from "../../types";
|
|
@@ -10,9 +12,16 @@ describe("Features list - Smooth", () => {
|
|
|
10
12
|
addSmoothFeature(featureObject);
|
|
11
13
|
expect(featureObject).toEqual({
|
|
12
14
|
transports: { smooth: SmoothFeature },
|
|
13
|
-
|
|
15
|
+
monothread: {
|
|
16
|
+
init: MediaSourceContentInitializer,
|
|
17
|
+
coreInterface: MonoThreadCoreInterface,
|
|
18
|
+
initializeCoreEntry,
|
|
19
|
+
},
|
|
14
20
|
});
|
|
15
21
|
expect(featureObject.transports.smooth).toBe(SmoothFeature);
|
|
16
|
-
expect(featureObject.
|
|
22
|
+
expect(featureObject.monothread).not.toBe(null);
|
|
23
|
+
expect(featureObject.monothread?.init).toBe(MediaSourceContentInitializer);
|
|
24
|
+
expect(featureObject.monothread?.coreInterface).toBe(MonoThreadCoreInterface);
|
|
25
|
+
expect(featureObject.monothread?.initializeCoreEntry).toBe(initializeCoreEntry);
|
|
17
26
|
});
|
|
18
27
|
});
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import initializeCoreEntry from "../../core/entry";
|
|
18
|
+
import { MonoThreadCoreInterface } from "../../main_thread/core_interface/monothread";
|
|
17
19
|
import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
|
|
18
20
|
import dashJsParser from "../../parsers/manifest/dash/js-parser";
|
|
19
21
|
import dash from "../../transports/dash";
|
|
@@ -28,7 +30,11 @@ function addDASHFeature(features: IFeaturesObject): void {
|
|
|
28
30
|
features.transports.dash = dash;
|
|
29
31
|
}
|
|
30
32
|
features.dashParsers.js = dashJsParser;
|
|
31
|
-
features.
|
|
33
|
+
features.monothread = {
|
|
34
|
+
init: MediaSourceContentInitializer,
|
|
35
|
+
coreInterface: MonoThreadCoreInterface,
|
|
36
|
+
initializeCoreEntry,
|
|
37
|
+
};
|
|
32
38
|
}
|
|
33
39
|
|
|
34
40
|
export { addDASHFeature as DASH };
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import initializeCoreEntry from "../../core/entry";
|
|
17
18
|
import type { IFeaturesObject } from "../../features/types";
|
|
19
|
+
import { MonoThreadCoreInterface } from "../../main_thread/core_interface/monothread";
|
|
18
20
|
import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
|
|
19
21
|
import type { IDashWasmParserOptions } from "../../parsers/manifest/dash/wasm-parser";
|
|
20
22
|
import DashWasmParser from "../../parsers/manifest/dash/wasm-parser";
|
|
@@ -27,7 +29,11 @@ const dashWasmFeature = {
|
|
|
27
29
|
features.transports.dash = dash;
|
|
28
30
|
}
|
|
29
31
|
features.dashParsers.wasm = dashWasmParser;
|
|
30
|
-
features.
|
|
32
|
+
features.monothread = {
|
|
33
|
+
init: MediaSourceContentInitializer,
|
|
34
|
+
coreInterface: MonoThreadCoreInterface,
|
|
35
|
+
initializeCoreEntry,
|
|
36
|
+
};
|
|
31
37
|
},
|
|
32
38
|
|
|
33
39
|
initialize(opts: IDashWasmParserOptions): Promise<void> {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import initializeCoreEntry from "../../core/entry";
|
|
2
|
+
import { MonoThreadCoreInterface } from "../../main_thread/core_interface/monothread";
|
|
1
3
|
import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
|
|
2
4
|
import type { IFeaturesObject } from "../types";
|
|
3
5
|
|
|
@@ -6,7 +8,11 @@ import type { IFeaturesObject } from "../types";
|
|
|
6
8
|
* @param {Object} features
|
|
7
9
|
*/
|
|
8
10
|
function addMediaSourceMainFeature(features: IFeaturesObject): void {
|
|
9
|
-
features.
|
|
11
|
+
features.monothread = {
|
|
12
|
+
init: MediaSourceContentInitializer,
|
|
13
|
+
coreInterface: MonoThreadCoreInterface,
|
|
14
|
+
initializeCoreEntry,
|
|
15
|
+
};
|
|
10
16
|
}
|
|
11
17
|
|
|
12
18
|
export { addMediaSourceMainFeature as MEDIA_SOURCE_MAIN };
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import initializeCoreEntry from "../../core/entry";
|
|
18
|
+
import { MonoThreadCoreInterface } from "../../main_thread/core_interface/monothread";
|
|
17
19
|
import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
|
|
18
20
|
import smooth from "../../transports/smooth";
|
|
19
21
|
import type { IFeaturesObject } from "../types";
|
|
@@ -26,7 +28,11 @@ function addSmoothFeature(features: IFeaturesObject): void {
|
|
|
26
28
|
if (features.transports.smooth === undefined) {
|
|
27
29
|
features.transports.smooth = smooth;
|
|
28
30
|
}
|
|
29
|
-
features.
|
|
31
|
+
features.monothread = {
|
|
32
|
+
init: MediaSourceContentInitializer,
|
|
33
|
+
coreInterface: MonoThreadCoreInterface,
|
|
34
|
+
initializeCoreEntry,
|
|
35
|
+
};
|
|
30
36
|
}
|
|
31
37
|
|
|
32
38
|
export { addSmoothFeature as SMOOTH };
|
package/src/features/types.ts
CHANGED
|
@@ -15,11 +15,15 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import type { IMediaElement } from "../compat/browser_compatibility_types";
|
|
18
|
+
import type IInitializeCoreEntry from "../core/entry";
|
|
18
19
|
import type { SegmentSink } from "../core/segment_sinks";
|
|
20
|
+
import type {
|
|
21
|
+
WorkerCoreInterface,
|
|
22
|
+
MonoThreadCoreInterface,
|
|
23
|
+
} from "../main_thread/core_interface/types";
|
|
19
24
|
import type ContentDecryptor from "../main_thread/decrypt";
|
|
20
25
|
import type DirectFileContentInitializer from "../main_thread/init/directfile_content_initializer";
|
|
21
26
|
import type MediaSourceContentInitializer from "../main_thread/init/media_source_content_initializer";
|
|
22
|
-
import type MultiThreadContentInitializer from "../main_thread/init/multi_thread_content_initializer";
|
|
23
27
|
import type HTMLTextDisplayer from "../main_thread/text_displayer/html";
|
|
24
28
|
import type NativeTextDisplayer from "../main_thread/text_displayer/native/native_text_displayer";
|
|
25
29
|
import type MediaElementTracksStore from "../main_thread/tracks_store/media_element_tracks_store";
|
|
@@ -114,14 +118,29 @@ export interface IFeaturesObject {
|
|
|
114
118
|
* Feature allowing to load contents through MediaSource API through the
|
|
115
119
|
* main thread.
|
|
116
120
|
*/
|
|
117
|
-
|
|
121
|
+
monothread: {
|
|
122
|
+
/** Class to load a content through the MediaSource API. */
|
|
123
|
+
init: typeof MediaSourceContentInitializer;
|
|
124
|
+
/** The RxPlayer's core logic. */
|
|
125
|
+
initializeCoreEntry: typeof IInitializeCoreEntry;
|
|
126
|
+
/**
|
|
127
|
+
* Class allowing to exchange messages with the RxPlayer's `core`, here
|
|
128
|
+
* running in `coreEntry`
|
|
129
|
+
*/
|
|
130
|
+
coreInterface: typeof MonoThreadCoreInterface;
|
|
131
|
+
} | null;
|
|
118
132
|
/**
|
|
119
133
|
* Features allowing to load contents through MediaSource API through
|
|
120
134
|
* a WebWorker.
|
|
121
135
|
*/
|
|
122
136
|
multithread: {
|
|
123
|
-
/** Class to load a content through MediaSource API
|
|
124
|
-
init: typeof
|
|
137
|
+
/** Class to load a content through the MediaSource API. */
|
|
138
|
+
init: typeof MediaSourceContentInitializer;
|
|
139
|
+
/**
|
|
140
|
+
* Class allowing to exchange messages with the RxPlayer's `core`, here
|
|
141
|
+
* running in another thread.
|
|
142
|
+
*/
|
|
143
|
+
coreInterface: typeof WorkerCoreInterface;
|
|
125
144
|
} | null;
|
|
126
145
|
/**
|
|
127
146
|
* Function for loading and parsing contents through various protocols, by
|
|
@@ -27,6 +27,14 @@ Those modules are:
|
|
|
27
27
|
Negotiate content decryption. Only used for contents with DRM (Digital Right
|
|
28
28
|
Management).
|
|
29
29
|
|
|
30
|
+
- **the `CoreInterface` (./core_interface)**
|
|
31
|
+
|
|
32
|
+
Provide an interface allowing to communicate to the central RxPlayer logic in the `core`
|
|
33
|
+
directory (`../core/`), which may run in another thread.
|
|
34
|
+
|
|
35
|
+
That interface depends on the context (e.g. depending on if we are playing in a
|
|
36
|
+
mono-threaded mode or a multithreaded mode).
|
|
37
|
+
|
|
30
38
|
- **the `TracksStore` (or `MediaElementTracksStore`) (./tracks_store)**
|
|
31
39
|
|
|
32
40
|
Ease up text/audio/video track switching to provide a simple-to-use API.
|
|
@@ -38,7 +38,9 @@ import type {
|
|
|
38
38
|
IInbandEvent,
|
|
39
39
|
IABRThrottlers,
|
|
40
40
|
IBufferType,
|
|
41
|
+
ICoreMessage,
|
|
41
42
|
} from "../../core/types";
|
|
43
|
+
import { CoreMessageType } from "../../core/types";
|
|
42
44
|
import type { IDefaultConfig } from "../../default_config";
|
|
43
45
|
import type { IErrorCode, IErrorType } from "../../errors";
|
|
44
46
|
import { ErrorCodes, ErrorTypes, formatError, MediaError } from "../../errors";
|
|
@@ -60,13 +62,10 @@ import {
|
|
|
60
62
|
getMaximumSafePosition,
|
|
61
63
|
getMinimumSafePosition,
|
|
62
64
|
ManifestMetadataFormat,
|
|
63
|
-
createRepresentationFilterFromFnString,
|
|
64
65
|
getPeriodForTime,
|
|
65
66
|
toVideoRepresentation,
|
|
66
67
|
toAudioRepresentation,
|
|
67
68
|
} from "../../manifest";
|
|
68
|
-
import type { IWorkerMessage } from "../../multithread_types";
|
|
69
|
-
import { MainThreadMessageType, WorkerMessageType } from "../../multithread_types";
|
|
70
69
|
import type { IPlaybackObservation } from "../../playback_observer";
|
|
71
70
|
import MediaElementPlaybackObserver from "../../playback_observer/media_element_playback_observer";
|
|
72
71
|
import type {
|
|
@@ -133,6 +132,7 @@ import type { ContentInitializer } from "../init";
|
|
|
133
132
|
import renderThumbnail from "../render_thumbnail";
|
|
134
133
|
import type { IMediaElementTracksStore, ITSPeriodObject } from "../tracks_store";
|
|
135
134
|
import TracksStore from "../tracks_store";
|
|
135
|
+
import { MainThreadMessageType } from "../types";
|
|
136
136
|
import type { IParsedLoadVideoOptions, IParsedStartAtOption } from "./option_utils";
|
|
137
137
|
import {
|
|
138
138
|
checkReloadOptions,
|
|
@@ -445,7 +445,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
445
445
|
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
|
|
446
446
|
videoElement.preload = "auto";
|
|
447
447
|
|
|
448
|
-
this.version = /* PLAYER_VERSION */ "4.4.
|
|
448
|
+
this.version = /* PLAYER_VERSION */ "4.4.1-dev.2025101500";
|
|
449
449
|
this.log = log;
|
|
450
450
|
this.state = "STOPPED";
|
|
451
451
|
this.videoElement = videoElement;
|
|
@@ -572,8 +572,8 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
572
572
|
);
|
|
573
573
|
};
|
|
574
574
|
const handleInitMessages = (msg: MessageEvent) => {
|
|
575
|
-
const msgData = msg.data as unknown as
|
|
576
|
-
if (msgData.type ===
|
|
575
|
+
const msgData = msg.data as unknown as ICoreMessage;
|
|
576
|
+
if (msgData.type === CoreMessageType.InitError) {
|
|
577
577
|
log.warn("API", "Processing InitError worker message: detaching worker");
|
|
578
578
|
if (this._priv_worker !== null) {
|
|
579
579
|
this._priv_worker.removeEventListener("message", handleInitMessages);
|
|
@@ -586,7 +586,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
586
586
|
"Worker parser initialization failed: " + msgData.value.errorMessage,
|
|
587
587
|
),
|
|
588
588
|
);
|
|
589
|
-
} else if (msgData.type ===
|
|
589
|
+
} else if (msgData.type === CoreMessageType.InitSuccess) {
|
|
590
590
|
log.info("API", "InitSuccess received from worker.");
|
|
591
591
|
if (this._priv_worker !== null) {
|
|
592
592
|
this._priv_worker.removeEventListener("message", handleInitMessages);
|
|
@@ -1034,6 +1034,19 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1034
1034
|
connectionTimeout: requestConfig.segment?.connectionTimeout,
|
|
1035
1035
|
};
|
|
1036
1036
|
|
|
1037
|
+
const transportOptions = {
|
|
1038
|
+
lowLatencyMode,
|
|
1039
|
+
checkMediaSegmentIntegrity,
|
|
1040
|
+
checkManifestIntegrity,
|
|
1041
|
+
referenceDateTime,
|
|
1042
|
+
serverSyncInfos,
|
|
1043
|
+
manifestLoader,
|
|
1044
|
+
segmentLoader,
|
|
1045
|
+
representationFilter: options.representationFilter,
|
|
1046
|
+
__priv_manifestUpdateUrl,
|
|
1047
|
+
__priv_patchLastSegmentInSidx,
|
|
1048
|
+
};
|
|
1049
|
+
|
|
1037
1050
|
const canRunInMultiThread =
|
|
1038
1051
|
features.multithread !== null &&
|
|
1039
1052
|
this._priv_worker !== null &&
|
|
@@ -1044,39 +1057,33 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1044
1057
|
) &&
|
|
1045
1058
|
typeof options.representationFilter !== "function";
|
|
1046
1059
|
if (mode === "main" || (mode === "auto" && !canRunInMultiThread)) {
|
|
1047
|
-
if (features.
|
|
1060
|
+
if (features.monothread === null) {
|
|
1048
1061
|
throw new Error(
|
|
1049
1062
|
"Cannot load video, neither in a WebWorker nor with the " +
|
|
1050
1063
|
"`MEDIA_SOURCE_MAIN` feature",
|
|
1051
1064
|
);
|
|
1052
1065
|
}
|
|
1053
|
-
const transportFn = features.transports[transport];
|
|
1054
|
-
if (typeof transportFn !== "function") {
|
|
1055
|
-
// Stop previous content and reset its state
|
|
1056
|
-
this.stop();
|
|
1057
|
-
this._priv_currentError = null;
|
|
1058
|
-
throw new Error(`transport "${transport}" not supported`);
|
|
1059
|
-
}
|
|
1060
|
-
|
|
1061
|
-
const representationFilter =
|
|
1062
|
-
typeof options.representationFilter === "string"
|
|
1063
|
-
? createRepresentationFilterFromFnString(options.representationFilter)
|
|
1064
|
-
: options.representationFilter;
|
|
1065
|
-
|
|
1066
1066
|
log.info("API", "Initializing MediaSource mode in the main thread");
|
|
1067
|
-
const
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1067
|
+
const coreInterface = new features.monothread.coreInterface();
|
|
1068
|
+
const coreInterfaceCallbacks = coreInterface.getCallbacks();
|
|
1069
|
+
features.monothread.initializeCoreEntry(
|
|
1070
|
+
coreInterfaceCallbacks.setCoreMessageReceiver,
|
|
1071
|
+
coreInterfaceCallbacks.sendCoreMessage,
|
|
1072
|
+
);
|
|
1073
|
+
coreInterface.sendMessage({
|
|
1074
|
+
type: MainThreadMessageType.Init,
|
|
1075
|
+
value: {
|
|
1076
|
+
dashWasmUrl: undefined,
|
|
1077
|
+
hasVideo: this.videoElement?.nodeName.toLowerCase() === "video",
|
|
1078
|
+
logLevel: log.getLevel(),
|
|
1079
|
+
logFormat: log.getFormat(),
|
|
1080
|
+
sendBackLogs: false,
|
|
1081
|
+
date: Date.now(),
|
|
1082
|
+
timestamp: getMonotonicTimeStamp(),
|
|
1083
|
+
},
|
|
1078
1084
|
});
|
|
1079
|
-
initializer = new features.
|
|
1085
|
+
initializer = new features.monothread.init({
|
|
1086
|
+
coreInterface,
|
|
1080
1087
|
adaptiveOptions,
|
|
1081
1088
|
autoPlay,
|
|
1082
1089
|
bufferOptions,
|
|
@@ -1085,13 +1092,15 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1085
1092
|
experimentalOptions.enableRepresentationAvoidance,
|
|
1086
1093
|
keySystems,
|
|
1087
1094
|
lowLatencyMode,
|
|
1088
|
-
transport
|
|
1095
|
+
transport,
|
|
1096
|
+
transportOptions,
|
|
1089
1097
|
manifestRequestSettings,
|
|
1090
1098
|
segmentRequestOptions,
|
|
1091
1099
|
speed: this._priv_speed,
|
|
1092
1100
|
startAt,
|
|
1093
1101
|
textTrackOptions,
|
|
1094
1102
|
url,
|
|
1103
|
+
useMseInWorker: false,
|
|
1095
1104
|
});
|
|
1096
1105
|
} else {
|
|
1097
1106
|
if (features.multithread === null) {
|
|
@@ -1108,19 +1117,8 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1108
1117
|
assert(typeof options.representationFilter !== "function");
|
|
1109
1118
|
useWorker = true;
|
|
1110
1119
|
log.info("API", "Initializing MediaSource mode in a WebWorker");
|
|
1111
|
-
const transportOptions = {
|
|
1112
|
-
lowLatencyMode,
|
|
1113
|
-
checkMediaSegmentIntegrity,
|
|
1114
|
-
checkManifestIntegrity,
|
|
1115
|
-
referenceDateTime,
|
|
1116
|
-
serverSyncInfos,
|
|
1117
|
-
manifestLoader: undefined,
|
|
1118
|
-
segmentLoader: undefined,
|
|
1119
|
-
representationFilter: options.representationFilter,
|
|
1120
|
-
__priv_manifestUpdateUrl,
|
|
1121
|
-
__priv_patchLastSegmentInSidx,
|
|
1122
|
-
};
|
|
1123
1120
|
initializer = new features.multithread.init({
|
|
1121
|
+
coreInterface: new features.multithread.coreInterface(this._priv_worker),
|
|
1124
1122
|
adaptiveOptions,
|
|
1125
1123
|
autoPlay,
|
|
1126
1124
|
bufferOptions,
|
|
@@ -1129,13 +1127,13 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1129
1127
|
experimentalOptions.enableRepresentationAvoidance,
|
|
1130
1128
|
keySystems,
|
|
1131
1129
|
lowLatencyMode,
|
|
1130
|
+
transport,
|
|
1132
1131
|
transportOptions,
|
|
1133
1132
|
manifestRequestSettings,
|
|
1134
1133
|
segmentRequestOptions,
|
|
1135
1134
|
speed: this._priv_speed,
|
|
1136
1135
|
startAt,
|
|
1137
1136
|
textTrackOptions,
|
|
1138
|
-
worker: this._priv_worker,
|
|
1139
1137
|
url,
|
|
1140
1138
|
useMseInWorker: hasMseInWorker,
|
|
1141
1139
|
});
|
|
@@ -3576,7 +3574,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
3576
3574
|
}
|
|
3577
3575
|
}
|
|
3578
3576
|
}
|
|
3579
|
-
Player.version = /* PLAYER_VERSION */ "4.4.
|
|
3577
|
+
Player.version = /* PLAYER_VERSION */ "4.4.1-dev.2025101500";
|
|
3580
3578
|
|
|
3581
3579
|
/** Every events sent by the RxPlayer's public API. */
|
|
3582
3580
|
interface IPublicAPIEvent {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# CoreInterface
|
|
2
|
+
|
|
3
|
+
| Consideration | Status |
|
|
4
|
+
| ----------------------- | ---------------------------------------------------- |
|
|
5
|
+
| Preferred import style | Only through the `features` object |
|
|
6
|
+
| Multithread environment | May run in WebWorker depending on the implementation |
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
This directory defines `CoreInterface` implementations, which is the link between the
|
|
11
|
+
RxPlayer's "main_thread" logic (which implements logic running always in main thread: the
|
|
12
|
+
API, decryption, subtitles rendering, track management...) to the RxPlayer's "core" logic
|
|
13
|
+
(which implements logic which may run in a WebWorker: manifest loading, segment loading
|
|
14
|
+
and parsing, adaptive...).
|
|
15
|
+
|
|
16
|
+
Depending on if playback for the current content currently relies on a single thread or
|
|
17
|
+
multiple ones, a different `CoreInterface` implementation will be selected.
|
|
18
|
+
|
|
19
|
+
This directory should not be imported directly by the main logic (beside types). Rather,
|
|
20
|
+
the RxPlayer's global `features` object should refer to the implementations currently
|
|
21
|
+
available instead. This is to ensure that the `CoreInterface` logic is only imported if
|
|
22
|
+
the application has explicitly asked for the corresponding feature.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ICoreMessage } from "../../core/types";
|
|
2
|
+
import type { IMainThreadMessage } from "../types";
|
|
3
|
+
|
|
4
|
+
export default abstract class CoreInterface {
|
|
5
|
+
protected listeners: Array<(evt: ICoreMessage) => void> = [];
|
|
6
|
+
protected listenersError: Array<() => void> = [];
|
|
7
|
+
|
|
8
|
+
public abstract sendMessage(msg: IMainThreadMessage): void;
|
|
9
|
+
|
|
10
|
+
public addMessageListener(cb: (evt: ICoreMessage) => void): void {
|
|
11
|
+
this.listeners.push(cb);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public removeMessageListener(cb: (evt: ICoreMessage) => void): void {
|
|
15
|
+
const index = this.listeners.indexOf(cb);
|
|
16
|
+
if (index >= 0) {
|
|
17
|
+
this.listeners.splice(index, 1);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public addErrorListener(cb: () => void): void {
|
|
22
|
+
this.listenersError.push(cb);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public removeErrorListener(cb: () => void): void {
|
|
26
|
+
const index = this.listenersError.indexOf(cb);
|
|
27
|
+
if (index >= 0) {
|
|
28
|
+
this.listenersError.splice(index, 1);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public dispose(): void {
|
|
33
|
+
this.listeners.length = 0;
|
|
34
|
+
this.listenersError.length = 0;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CoreMessageType,
|
|
3
|
+
type ICoreMessage,
|
|
4
|
+
type IMessageReceiverCallback,
|
|
5
|
+
} from "../../core/types";
|
|
6
|
+
import log from "../../log";
|
|
7
|
+
import noop from "../../utils/noop";
|
|
8
|
+
import type { IMainThreadMessage } from "../types";
|
|
9
|
+
import CoreInterface from "./base";
|
|
10
|
+
|
|
11
|
+
export class MonoThreadCoreInterface extends CoreInterface {
|
|
12
|
+
private _currentCoreListener: IMessageReceiverCallback;
|
|
13
|
+
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
this._currentCoreListener = noop;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public sendMessage(msg: IMainThreadMessage) {
|
|
20
|
+
log.debug("M-->C", "Sending message", { name: msg.type });
|
|
21
|
+
queueMicrotask(() => {
|
|
22
|
+
// NOTE: We don't clone for performance reasons
|
|
23
|
+
this._currentCoreListener({ data: msg });
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public getCallbacks(): {
|
|
28
|
+
setCoreMessageReceiver: (handler: IMessageReceiverCallback) => void;
|
|
29
|
+
sendCoreMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void;
|
|
30
|
+
} {
|
|
31
|
+
const setCoreMessageReceiver = (handler: IMessageReceiverCallback): void => {
|
|
32
|
+
this._currentCoreListener = handler;
|
|
33
|
+
};
|
|
34
|
+
const sendCoreMessage = (msg: ICoreMessage, _transferables?: Transferable[]) => {
|
|
35
|
+
queueMicrotask(() => {
|
|
36
|
+
if (msg.type !== CoreMessageType.LogMessage) {
|
|
37
|
+
log.debug("M<--C", "Sending message", { name: msg.type });
|
|
38
|
+
}
|
|
39
|
+
this.listeners.forEach((listener) => {
|
|
40
|
+
listener(msg);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
return { setCoreMessageReceiver, sendCoreMessage };
|
|
45
|
+
}
|
|
46
|
+
}
|