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
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
| Multithread environment | Should be runnable in a WebWorker entirely |
|
|
7
7
|
|
|
8
8
|
[1] In a Multithreading mode, no file from that directory should ever be imported by
|
|
9
|
-
external code but the `
|
|
9
|
+
external code but the `WorkerMain` to generate the worker bundle. In a monothreading mode,
|
|
10
10
|
any file may be directly imported.
|
|
11
11
|
|
|
12
12
|
## Overview
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { config } from "
|
|
2
|
-
import log from "
|
|
3
|
-
import type { IAdaptation, IPeriod, IRepresentation } from "
|
|
1
|
+
import { config } from "../../../experimental";
|
|
2
|
+
import log from "../../../log";
|
|
3
|
+
import type { IAdaptation, IPeriod, IRepresentation } from "../../../manifest";
|
|
4
4
|
import type {
|
|
5
5
|
IFreezingStatus,
|
|
6
6
|
IRebufferingStatus,
|
|
7
7
|
ObservationPosition,
|
|
8
|
-
} from "
|
|
9
|
-
import getMonotonicTimeStamp from "
|
|
10
|
-
import type SegmentSinksStore from "
|
|
11
|
-
import type { IBufferedChunk } from "
|
|
8
|
+
} from "../../../playback_observer";
|
|
9
|
+
import getMonotonicTimeStamp from "../../../utils/monotonic_timestamp";
|
|
10
|
+
import type SegmentSinksStore from "../../segment_sinks";
|
|
11
|
+
import type { IBufferedChunk } from "../../segment_sinks";
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* "Freezing" is a complex situation indicating that playback is not advancing
|
|
@@ -17,21 +17,21 @@
|
|
|
17
17
|
import type {
|
|
18
18
|
IStreamOrchestratorPlaybackObservation,
|
|
19
19
|
IBufferType,
|
|
20
|
-
} from "
|
|
21
|
-
import { MediaError } from "
|
|
20
|
+
} from "../../../core/types";
|
|
21
|
+
import { MediaError } from "../../../errors";
|
|
22
22
|
import type {
|
|
23
23
|
IManifest,
|
|
24
24
|
IAdaptation,
|
|
25
25
|
IRepresentationIndex,
|
|
26
26
|
IPeriod,
|
|
27
|
-
} from "
|
|
28
|
-
import type { IReadOnlyPlaybackObserver } from "
|
|
29
|
-
import type { IPlayerError } from "
|
|
30
|
-
import EventEmitter from "
|
|
31
|
-
import isNullOrUndefined from "
|
|
32
|
-
import queueMicrotask from "
|
|
33
|
-
import SortedList from "
|
|
34
|
-
import TaskCanceller from "
|
|
27
|
+
} from "../../../manifest";
|
|
28
|
+
import type { IReadOnlyPlaybackObserver } from "../../../playback_observer";
|
|
29
|
+
import type { IPlayerError } from "../../../public_types";
|
|
30
|
+
import EventEmitter from "../../../utils/event_emitter";
|
|
31
|
+
import isNullOrUndefined from "../../../utils/is_null_or_undefined";
|
|
32
|
+
import queueMicrotask from "../../../utils/queue_microtask";
|
|
33
|
+
import SortedList from "../../../utils/sorted_list";
|
|
34
|
+
import TaskCanceller from "../../../utils/task_canceller";
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
37
|
* Observes what's being played and take care of media events relating to time
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
ISegmentSinksStore,
|
|
3
3
|
IStreamOrchestratorPlaybackObservation,
|
|
4
|
-
} from "
|
|
5
|
-
import log from "
|
|
6
|
-
import type { IManifest, IPeriod } from "
|
|
7
|
-
import type { IMediaSourceInterface } from "
|
|
8
|
-
import type { IReadOnlyPlaybackObserver } from "
|
|
9
|
-
import type { IPlayerError } from "
|
|
10
|
-
import type { CancellationSignal } from "
|
|
4
|
+
} from "../../../core/types";
|
|
5
|
+
import log from "../../../log";
|
|
6
|
+
import type { IManifest, IPeriod } from "../../../manifest";
|
|
7
|
+
import type { IMediaSourceInterface } from "../../../mse";
|
|
8
|
+
import type { IReadOnlyPlaybackObserver } from "../../../playback_observer";
|
|
9
|
+
import type { IPlayerError } from "../../../public_types";
|
|
10
|
+
import type { CancellationSignal } from "../../../utils/task_canceller";
|
|
11
11
|
import ContentTimeBoundariesObserver from "./content_time_boundaries_observer";
|
|
12
12
|
|
|
13
13
|
export interface IContentTimeBoundariesObserverCallbacks {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { ITextDisplayer } from "
|
|
2
|
-
import type { IMediaSourceInterface } from "
|
|
3
|
-
import { SourceBufferType } from "
|
|
4
|
-
import type { ITrackType } from "
|
|
5
|
-
import arrayFind from "
|
|
6
|
-
import type { IRange } from "
|
|
1
|
+
import type { ITextDisplayer } from "../../../main_thread/types";
|
|
2
|
+
import type { IMediaSourceInterface } from "../../../mse";
|
|
3
|
+
import { SourceBufferType } from "../../../mse";
|
|
4
|
+
import type { ITrackType } from "../../../public_types";
|
|
5
|
+
import arrayFind from "../../../utils/array_find";
|
|
6
|
+
import type { IRange } from "../../../utils/ranges";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Returns a JS object where keys are the type of buffers (e.g. "audio",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { IManifest } from "
|
|
2
|
-
import type { IThumbnailResponse } from "
|
|
3
|
-
import arrayFind from "
|
|
4
|
-
import TaskCanceller from "
|
|
5
|
-
import type { IThumbnailFetcher } from "
|
|
1
|
+
import type { IManifest } from "../../../manifest";
|
|
2
|
+
import type { IThumbnailResponse } from "../../../transports";
|
|
3
|
+
import arrayFind from "../../../utils/array_find";
|
|
4
|
+
import TaskCanceller from "../../../utils/task_canceller";
|
|
5
|
+
import type { IThumbnailFetcher } from "../../fetchers";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* @param {function} fetchThumbnails
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ICorePlaybackObservation } from "
|
|
2
|
-
import type SegmentSinksStore from "
|
|
1
|
+
import type { ICorePlaybackObservation } from "../../../main_thread/init/utils/create_core_playback_observer";
|
|
2
|
+
import type SegmentSinksStore from "../../segment_sinks";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Synchronize SegmentSinks with what has been buffered.
|
|
@@ -1,34 +1,41 @@
|
|
|
1
|
-
import { MediaSource_ } from "
|
|
2
|
-
import features from "
|
|
3
|
-
import log from "
|
|
4
|
-
import type {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import type
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import type {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
import
|
|
25
|
-
import
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import
|
|
29
|
-
import
|
|
1
|
+
import { MediaSource_ } from "../../../compat/browser_compatibility_types";
|
|
2
|
+
import features from "../../../features";
|
|
3
|
+
import log from "../../../log";
|
|
4
|
+
import type { IManifest, IManifestMetadata } from "../../../manifest";
|
|
5
|
+
import { createRepresentationFilterFromFnString } from "../../../manifest";
|
|
6
|
+
import type Manifest from "../../../manifest/classes";
|
|
7
|
+
import type { IMediaSourceInterface } from "../../../mse";
|
|
8
|
+
import MainMediaSourceInterface from "../../../mse/main_media_source_interface";
|
|
9
|
+
import WorkerMediaSourceInterface from "../../../mse/worker_media_source_interface";
|
|
10
|
+
import type {
|
|
11
|
+
IAttachMediaSourceWorkerMessagePayload,
|
|
12
|
+
IContentInitializationData,
|
|
13
|
+
} from "../../../multithread_types";
|
|
14
|
+
import { WorkerMessageType } from "../../../multithread_types";
|
|
15
|
+
import type { IPlayerError } from "../../../public_types";
|
|
16
|
+
import assert from "../../../utils/assert";
|
|
17
|
+
import idGenerator from "../../../utils/id_generator";
|
|
18
|
+
import isNullOrUndefined from "../../../utils/is_null_or_undefined";
|
|
19
|
+
import objectAssign from "../../../utils/object_assign";
|
|
20
|
+
import type {
|
|
21
|
+
CancellationError,
|
|
22
|
+
CancellationSignal,
|
|
23
|
+
} from "../../../utils/task_canceller";
|
|
24
|
+
import TaskCanceller from "../../../utils/task_canceller";
|
|
25
|
+
import type { IRepresentationEstimator } from "../../adaptive";
|
|
26
|
+
import createAdaptiveRepresentationSelector from "../../adaptive";
|
|
27
|
+
import CmcdDataBuilder from "../../cmcd";
|
|
28
|
+
import type { IManifestRefreshSettings } from "../../fetchers";
|
|
29
|
+
import { ManifestFetcher, SegmentQueueCreator } from "../../fetchers";
|
|
30
|
+
import CdnPrioritizer from "../../fetchers/cdn_prioritizer";
|
|
31
|
+
import createThumbnailFetcher from "../../fetchers/thumbnails/thumbnail_fetcher";
|
|
32
|
+
import type { IThumbnailFetcher } from "../../fetchers/thumbnails/thumbnail_fetcher";
|
|
33
|
+
import SegmentSinksStore from "../../segment_sinks";
|
|
34
|
+
import FreezeResolver from "../common/FreezeResolver";
|
|
35
|
+
import { limitVideoResolution, throttleVideoBitrate } from "./globals";
|
|
36
|
+
import sendMessage, { formatErrorForSender } from "./send_message";
|
|
30
37
|
import TrackChoiceSetter from "./track_choice_setter";
|
|
31
|
-
import
|
|
38
|
+
import WorkerTextDisplayerInterface from "./worker_text_displayer_interface";
|
|
32
39
|
|
|
33
40
|
/** Function allowing to associate a unique identifier to all created `MediaSource` */
|
|
34
41
|
const generateMediaSourceId = idGenerator();
|
|
@@ -104,11 +111,8 @@ export default class ContentPreparer {
|
|
|
104
111
|
* @returns {Promise.<Object>}
|
|
105
112
|
*/
|
|
106
113
|
public initializeNewContent(
|
|
107
|
-
sendMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void,
|
|
108
114
|
context: IContentInitializationData,
|
|
109
|
-
|
|
110
|
-
throttlers: IRepresentationEstimatorThrottlers,
|
|
111
|
-
): Promise<IManifest> {
|
|
115
|
+
): Promise<IManifestMetadata> {
|
|
112
116
|
return new Promise((res, rej) => {
|
|
113
117
|
this.disposeCurrentContent();
|
|
114
118
|
const contentCanceller = this._contentCanceller;
|
|
@@ -124,25 +128,19 @@ export default class ContentPreparer {
|
|
|
124
128
|
transportOptions,
|
|
125
129
|
useMseInWorker,
|
|
126
130
|
enableRepresentationAvoidance,
|
|
127
|
-
transport,
|
|
128
131
|
} = context;
|
|
129
132
|
let manifest: IManifest | null = null;
|
|
130
133
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
"Did you add the corresponding feature?",
|
|
137
|
-
),
|
|
138
|
-
);
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
134
|
+
// TODO better way
|
|
135
|
+
assert(
|
|
136
|
+
features.transports.dash !== undefined,
|
|
137
|
+
"Multithread RxPlayer should have access to the DASH feature",
|
|
138
|
+
);
|
|
141
139
|
const representationFilter =
|
|
142
140
|
typeof transportOptions.representationFilter === "string"
|
|
143
141
|
? createRepresentationFilterFromFnString(transportOptions.representationFilter)
|
|
144
|
-
:
|
|
145
|
-
const
|
|
142
|
+
: undefined;
|
|
143
|
+
const dashPipelines = features.transports.dash({
|
|
146
144
|
...transportOptions,
|
|
147
145
|
representationFilter,
|
|
148
146
|
});
|
|
@@ -151,7 +149,7 @@ export default class ContentPreparer {
|
|
|
151
149
|
context.cmcd === undefined ? null : new CmcdDataBuilder(context.cmcd);
|
|
152
150
|
const manifestFetcher = new ManifestFetcher(
|
|
153
151
|
url === undefined ? undefined : [url],
|
|
154
|
-
|
|
152
|
+
dashPipelines,
|
|
155
153
|
{
|
|
156
154
|
cmcdDataBuilder,
|
|
157
155
|
...context.manifestRetryOptions,
|
|
@@ -163,7 +161,10 @@ export default class ContentPreparer {
|
|
|
163
161
|
video: context.initialVideoBitrate ?? 0,
|
|
164
162
|
},
|
|
165
163
|
lowLatencyMode: transportOptions.lowLatencyMode,
|
|
166
|
-
throttlers
|
|
164
|
+
throttlers: {
|
|
165
|
+
limitResolution: { video: limitVideoResolution },
|
|
166
|
+
throttleBitrate: { video: throttleVideoBitrate },
|
|
167
|
+
},
|
|
167
168
|
});
|
|
168
169
|
|
|
169
170
|
const unbindRejectOnCancellation = currentMediaSourceCanceller.signal.register(
|
|
@@ -174,21 +175,20 @@ export default class ContentPreparer {
|
|
|
174
175
|
|
|
175
176
|
const cdnPrioritizer = new CdnPrioritizer(contentCanceller.signal);
|
|
176
177
|
const segmentQueueCreator = new SegmentQueueCreator(
|
|
177
|
-
|
|
178
|
+
dashPipelines,
|
|
178
179
|
cdnPrioritizer,
|
|
179
180
|
cmcdDataBuilder,
|
|
180
181
|
context.segmentRetryOptions,
|
|
181
182
|
);
|
|
182
183
|
const fetchThumbnailData = createThumbnailFetcher(
|
|
183
|
-
|
|
184
|
+
dashPipelines.thumbnails,
|
|
184
185
|
cdnPrioritizer,
|
|
185
186
|
);
|
|
186
187
|
|
|
187
188
|
const trackChoiceSetter = new TrackChoiceSetter();
|
|
188
189
|
|
|
189
|
-
const [mediaSource, segmentSinksStore,
|
|
190
|
+
const [mediaSource, segmentSinksStore, workerTextSender] =
|
|
190
191
|
createMediaSourceInterfaceAndSegmentSinksStore(
|
|
191
|
-
sendMessage,
|
|
192
192
|
contentId,
|
|
193
193
|
{
|
|
194
194
|
useMseInWorker,
|
|
@@ -210,7 +210,7 @@ export default class ContentPreparer {
|
|
|
210
210
|
segmentSinksStore,
|
|
211
211
|
segmentQueueCreator,
|
|
212
212
|
fetchThumbnailData,
|
|
213
|
-
|
|
213
|
+
workerTextSender,
|
|
214
214
|
trackChoiceSetter,
|
|
215
215
|
useMseInWorker,
|
|
216
216
|
};
|
|
@@ -229,7 +229,7 @@ export default class ContentPreparer {
|
|
|
229
229
|
"warning",
|
|
230
230
|
(err: IPlayerError) => {
|
|
231
231
|
sendMessage({
|
|
232
|
-
type:
|
|
232
|
+
type: WorkerMessageType.Warning,
|
|
233
233
|
contentId,
|
|
234
234
|
value: formatErrorForSender(err),
|
|
235
235
|
});
|
|
@@ -255,7 +255,7 @@ export default class ContentPreparer {
|
|
|
255
255
|
"error",
|
|
256
256
|
(err: unknown) => {
|
|
257
257
|
sendMessage({
|
|
258
|
-
type:
|
|
258
|
+
type: WorkerMessageType.Error,
|
|
259
259
|
contentId,
|
|
260
260
|
value: formatErrorForSender(err),
|
|
261
261
|
});
|
|
@@ -274,6 +274,7 @@ export default class ContentPreparer {
|
|
|
274
274
|
return;
|
|
275
275
|
}
|
|
276
276
|
updateCodecSupportInWorkerMode(manifest);
|
|
277
|
+
const sentManifest = manifest.getMetadataSnapshot();
|
|
277
278
|
manifest.addEventListener(
|
|
278
279
|
"manifestUpdate",
|
|
279
280
|
(updates) => {
|
|
@@ -281,16 +282,22 @@ export default class ContentPreparer {
|
|
|
281
282
|
// TODO log warn?
|
|
282
283
|
return;
|
|
283
284
|
}
|
|
285
|
+
|
|
286
|
+
// Remove `periods` key to reduce cost of an unnecessary manifest
|
|
287
|
+
// clone.
|
|
288
|
+
const snapshot = objectAssign(manifest.getMetadataSnapshot(), {
|
|
289
|
+
periods: [],
|
|
290
|
+
});
|
|
284
291
|
sendMessage({
|
|
285
|
-
type:
|
|
292
|
+
type: WorkerMessageType.ManifestUpdate,
|
|
286
293
|
contentId,
|
|
287
|
-
value: { manifest, updates },
|
|
294
|
+
value: { manifest: snapshot, updates },
|
|
288
295
|
});
|
|
289
296
|
},
|
|
290
297
|
contentCanceller.signal,
|
|
291
298
|
);
|
|
292
299
|
unbindRejectOnCancellation();
|
|
293
|
-
res(
|
|
300
|
+
res(sentManifest);
|
|
294
301
|
}
|
|
295
302
|
});
|
|
296
303
|
}
|
|
@@ -317,17 +324,12 @@ export default class ContentPreparer {
|
|
|
317
324
|
}
|
|
318
325
|
|
|
319
326
|
/**
|
|
320
|
-
*
|
|
321
|
-
* It is assumed that main thread is already notified that such a reload is
|
|
322
|
-
* happening.
|
|
327
|
+
* Signal the ContentPreparer that the MediaSource is "reloading".
|
|
323
328
|
*
|
|
324
329
|
* The returned Promise resolves when it restarts being ready.
|
|
325
|
-
* @param {Function} sendMessage
|
|
326
330
|
* @returns {Promise}
|
|
327
331
|
*/
|
|
328
|
-
public reloadMediaSource(
|
|
329
|
-
sendMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void,
|
|
330
|
-
): Promise<void> {
|
|
332
|
+
public reloadMediaSource(): Promise<void> {
|
|
331
333
|
this._currentMediaSourceCanceller.cancel();
|
|
332
334
|
if (this._currentContent === null) {
|
|
333
335
|
return Promise.reject(new Error("CP: No content anymore"));
|
|
@@ -335,21 +337,20 @@ export default class ContentPreparer {
|
|
|
335
337
|
this._currentContent.trackChoiceSetter.reset();
|
|
336
338
|
this._currentMediaSourceCanceller = new TaskCanceller();
|
|
337
339
|
|
|
338
|
-
const [mediaSourceInterface, segmentSinksStore,
|
|
340
|
+
const [mediaSourceInterface, segmentSinksStore, workerTextSender] =
|
|
339
341
|
createMediaSourceInterfaceAndSegmentSinksStore(
|
|
340
|
-
sendMessage,
|
|
341
342
|
this._currentContent.contentId,
|
|
342
343
|
{
|
|
343
344
|
useMseInWorker: this._currentContent.useMseInWorker,
|
|
344
345
|
hasVideo: this._hasVideo,
|
|
345
|
-
hasText: this._currentContent.
|
|
346
|
+
hasText: this._currentContent.workerTextSender !== null,
|
|
346
347
|
},
|
|
347
348
|
this._currentMediaSourceCanceller.signal,
|
|
348
349
|
);
|
|
349
350
|
this._currentContent.mediaSource = mediaSourceInterface;
|
|
350
351
|
this._currentContent.segmentSinksStore = segmentSinksStore;
|
|
351
352
|
this._currentContent.freezeResolver = new FreezeResolver(segmentSinksStore);
|
|
352
|
-
this._currentContent.
|
|
353
|
+
this._currentContent.workerTextSender = workerTextSender;
|
|
353
354
|
return new Promise((res, rej) => {
|
|
354
355
|
mediaSourceInterface.addEventListener(
|
|
355
356
|
"mediaSourceOpen",
|
|
@@ -432,7 +433,7 @@ export interface IPreparedContentData {
|
|
|
432
433
|
*/
|
|
433
434
|
segmentSinksStore: SegmentSinksStore;
|
|
434
435
|
/** Allows to send timed text media data so it can be rendered. */
|
|
435
|
-
|
|
436
|
+
workerTextSender: WorkerTextDisplayerInterface | null;
|
|
436
437
|
/**
|
|
437
438
|
* Allows to create `SegmentQueue` which simplifies complex media segment
|
|
438
439
|
* fetching.
|
|
@@ -454,7 +455,6 @@ export interface IPreparedContentData {
|
|
|
454
455
|
}
|
|
455
456
|
|
|
456
457
|
/**
|
|
457
|
-
* @param {Function} sendMessage
|
|
458
458
|
* @param {string} contentId
|
|
459
459
|
* @param {Object} capabilities
|
|
460
460
|
* @param {boolean} capabilities.useMseInWorker
|
|
@@ -464,7 +464,6 @@ export interface IPreparedContentData {
|
|
|
464
464
|
* @returns {Array.<Object>}
|
|
465
465
|
*/
|
|
466
466
|
function createMediaSourceInterfaceAndSegmentSinksStore(
|
|
467
|
-
sendMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void,
|
|
468
467
|
contentId: string,
|
|
469
468
|
capabilities: {
|
|
470
469
|
useMseInWorker: boolean;
|
|
@@ -472,13 +471,13 @@ function createMediaSourceInterfaceAndSegmentSinksStore(
|
|
|
472
471
|
hasText: boolean;
|
|
473
472
|
},
|
|
474
473
|
cancelSignal: CancellationSignal,
|
|
475
|
-
): [IMediaSourceInterface, SegmentSinksStore,
|
|
474
|
+
): [IMediaSourceInterface, SegmentSinksStore, WorkerTextDisplayerInterface | null] {
|
|
476
475
|
let mediaSourceInterface: IMediaSourceInterface;
|
|
477
476
|
if (capabilities.useMseInWorker) {
|
|
478
477
|
const mainMediaSource = new MainMediaSourceInterface(generateMediaSourceId());
|
|
479
478
|
mediaSourceInterface = mainMediaSource;
|
|
480
479
|
|
|
481
|
-
let sentMediaSourceLink:
|
|
480
|
+
let sentMediaSourceLink: IAttachMediaSourceWorkerMessagePayload;
|
|
482
481
|
const handle = mainMediaSource.handle;
|
|
483
482
|
if (handle.type === "handle") {
|
|
484
483
|
sentMediaSourceLink = { type: "handle" as const, value: handle.value };
|
|
@@ -492,7 +491,7 @@ function createMediaSourceInterfaceAndSegmentSinksStore(
|
|
|
492
491
|
|
|
493
492
|
sendMessage(
|
|
494
493
|
{
|
|
495
|
-
type:
|
|
494
|
+
type: WorkerMessageType.AttachMediaSource,
|
|
496
495
|
contentId,
|
|
497
496
|
value: sentMediaSourceLink,
|
|
498
497
|
mediaSourceId: mediaSourceInterface.id,
|
|
@@ -508,7 +507,7 @@ function createMediaSourceInterfaceAndSegmentSinksStore(
|
|
|
508
507
|
}
|
|
509
508
|
|
|
510
509
|
const textSender = capabilities.hasText
|
|
511
|
-
? new
|
|
510
|
+
? new WorkerTextDisplayerInterface(contentId, sendMessage)
|
|
512
511
|
: null;
|
|
513
512
|
const { hasVideo } = capabilities;
|
|
514
513
|
const segmentSinksStore = new SegmentSinksStore(
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import config from "../../../config";
|
|
2
|
+
import SharedReference from "../../../utils/reference";
|
|
3
|
+
import type { IResolutionInfo } from "../../adaptive";
|
|
4
|
+
|
|
5
|
+
const {
|
|
6
|
+
DEFAULT_WANTED_BUFFER_AHEAD,
|
|
7
|
+
DEFAULT_MAX_VIDEO_BUFFER_SIZE,
|
|
8
|
+
DEFAULT_MAX_BUFFER_AHEAD,
|
|
9
|
+
DEFAULT_MAX_BUFFER_BEHIND,
|
|
10
|
+
} = config.getCurrent();
|
|
11
|
+
|
|
12
|
+
/** Buffer "goal" at which we stop downloading new segments. */
|
|
13
|
+
const wantedBufferAhead = new SharedReference(DEFAULT_WANTED_BUFFER_AHEAD);
|
|
14
|
+
|
|
15
|
+
/** Buffer maximum size in kiloBytes at which we stop downloading */
|
|
16
|
+
const maxVideoBufferSize = new SharedReference(DEFAULT_MAX_VIDEO_BUFFER_SIZE);
|
|
17
|
+
|
|
18
|
+
/** Max buffer size after the current position, in seconds (we GC further up). */
|
|
19
|
+
const maxBufferAhead = new SharedReference(DEFAULT_MAX_BUFFER_AHEAD);
|
|
20
|
+
|
|
21
|
+
/** Max buffer size before the current position, in seconds (we GC further down). */
|
|
22
|
+
const maxBufferBehind = new SharedReference(DEFAULT_MAX_BUFFER_BEHIND);
|
|
23
|
+
|
|
24
|
+
const limitVideoResolution = new SharedReference<IResolutionInfo>({
|
|
25
|
+
height: undefined,
|
|
26
|
+
width: undefined,
|
|
27
|
+
pixelRatio: 1,
|
|
28
|
+
});
|
|
29
|
+
const throttleVideoBitrate = new SharedReference(Infinity);
|
|
30
|
+
|
|
31
|
+
export {
|
|
32
|
+
wantedBufferAhead,
|
|
33
|
+
maxVideoBufferSize,
|
|
34
|
+
maxBufferBehind,
|
|
35
|
+
maxBufferAhead,
|
|
36
|
+
limitVideoResolution,
|
|
37
|
+
throttleVideoBitrate,
|
|
38
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { formatError } from "../../../errors";
|
|
2
|
+
import log from "../../../log";
|
|
3
|
+
import type { ISentError, IWorkerMessage } from "../../../multithread_types";
|
|
4
|
+
|
|
5
|
+
export default function sendMessage(
|
|
6
|
+
msg: IWorkerMessage,
|
|
7
|
+
transferables?: Transferable[],
|
|
8
|
+
): void {
|
|
9
|
+
log.debug("M<--C", "Sending message", { name: msg.type });
|
|
10
|
+
if (transferables === undefined) {
|
|
11
|
+
postMessage(msg);
|
|
12
|
+
} else {
|
|
13
|
+
// TypeScript made a mistake here, and 2busy2fix
|
|
14
|
+
(postMessage as (msg: IWorkerMessage, transferables: Transferable[]) => void)(
|
|
15
|
+
msg,
|
|
16
|
+
transferables,
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function formatErrorForSender(error: unknown): ISentError {
|
|
22
|
+
const formattedError = formatError(error, {
|
|
23
|
+
defaultCode: "NONE",
|
|
24
|
+
defaultReason: "An unknown error stopped content playback.",
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
return formattedError.serialize();
|
|
28
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import log from "
|
|
2
|
-
import type { ITrackUpdateChoiceObject } from "
|
|
3
|
-
import type { ITrackType } from "
|
|
4
|
-
import isNullOrUndefined from "
|
|
5
|
-
import objectAssign from "
|
|
6
|
-
import SharedReference from "
|
|
7
|
-
import type { IAdaptationChoice, IRepresentationsChoice } from "
|
|
1
|
+
import log from "../../../log";
|
|
2
|
+
import type { ITrackUpdateChoiceObject } from "../../../multithread_types";
|
|
3
|
+
import type { ITrackType } from "../../../public_types";
|
|
4
|
+
import isNullOrUndefined from "../../../utils/is_null_or_undefined";
|
|
5
|
+
import objectAssign from "../../../utils/object_assign";
|
|
6
|
+
import SharedReference from "../../../utils/reference";
|
|
7
|
+
import type { IAdaptationChoice, IRepresentationsChoice } from "../../stream";
|
|
8
8
|
|
|
9
9
|
export default class TrackChoiceSetter {
|
|
10
10
|
/**
|