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
|
@@ -1,51 +1,31 @@
|
|
|
1
|
-
import config from "
|
|
2
|
-
import { MediaError, OtherError } from "
|
|
3
|
-
import features from "
|
|
4
|
-
import log from "
|
|
5
|
-
import Manifest, { Adaptation, Period, Representation } from "
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
1
|
+
import config from "../../../config";
|
|
2
|
+
import { MediaError, OtherError } from "../../../errors";
|
|
3
|
+
import features from "../../../features";
|
|
4
|
+
import log from "../../../log";
|
|
5
|
+
import Manifest, { Adaptation, Period, Representation } from "../../../manifest/classes";
|
|
6
|
+
import DashJsParser from "../../../parsers/manifest/dash/js-parser";
|
|
7
|
+
import DashWasmParser from "../../../parsers/manifest/dash/wasm-parser";
|
|
8
|
+
import { ObservationPosition } from "../../../playback_observer";
|
|
9
|
+
import WorkerPlaybackObserver from "../../../playback_observer/worker_playback_observer";
|
|
10
|
+
import createDashPipelines from "../../../transports/dash";
|
|
11
|
+
import arrayFind from "../../../utils/array_find";
|
|
12
|
+
import assert, { assertUnreachable } from "../../../utils/assert";
|
|
13
|
+
import globalScope from "../../../utils/global_scope";
|
|
14
|
+
import { scaleTimestamp } from "../../../utils/monotonic_timestamp";
|
|
15
|
+
import objectAssign from "../../../utils/object_assign";
|
|
16
|
+
import SharedReference from "../../../utils/reference";
|
|
17
|
+
import TaskCanceller from "../../../utils/task_canceller";
|
|
18
|
+
import StreamOrchestrator from "../../stream";
|
|
19
|
+
import createContentTimeBoundariesObserver from "../common/create_content_time_boundaries_observer";
|
|
20
|
+
import getBufferedDataPerMediaBuffer from "../common/get_buffered_data_per_media_buffer";
|
|
21
|
+
import getThumbnailData from "../common/get_thumbnail_data";
|
|
22
|
+
import synchronizeSegmentSinksOnObservation from "../common/synchronize_sinks_on_observation";
|
|
15
23
|
import ContentPreparer from "./content_preparer";
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
|
|
19
|
-
import synchronizeSegmentSinksOnObservation from "./synchronize_sinks_on_observation";
|
|
20
|
-
import { formatErrorForSender } from "./utils";
|
|
21
|
-
/**
|
|
22
|
-
* Initialize a `CoreEntry`, which is the part of the RxPlayer acting as an
|
|
23
|
-
* entry point to all its "core" code.
|
|
24
|
-
*
|
|
25
|
-
* Its role is to receive and react to messages coming from "main thead", which
|
|
26
|
-
* may include loading and playing a content, and to send back messages for the main
|
|
27
|
-
* thread.
|
|
28
|
-
* @param {Function} setMessageReceiver - Declares the function that will
|
|
29
|
-
* receive messages coming from the "main thread" part of the RxPlayer logic.
|
|
30
|
-
* @param {Function} sendMessage - Function allowing to send messages to the
|
|
31
|
-
* "main thread" part of the RxPlayer logic.
|
|
32
|
-
*/
|
|
33
|
-
export default function initializeCoreEntry(setMessageReceiver, sendMessage) {
|
|
34
|
-
const { DEFAULT_WANTED_BUFFER_AHEAD, DEFAULT_MAX_VIDEO_BUFFER_SIZE, DEFAULT_MAX_BUFFER_AHEAD, DEFAULT_MAX_BUFFER_BEHIND, } = config.getCurrent();
|
|
35
|
-
const refs = {
|
|
36
|
-
wantedBufferAhead: new SharedReference(DEFAULT_WANTED_BUFFER_AHEAD),
|
|
37
|
-
maxVideoBufferSize: new SharedReference(DEFAULT_MAX_VIDEO_BUFFER_SIZE),
|
|
38
|
-
maxBufferAhead: new SharedReference(DEFAULT_MAX_BUFFER_AHEAD),
|
|
39
|
-
maxBufferBehind: new SharedReference(DEFAULT_MAX_BUFFER_BEHIND),
|
|
40
|
-
limitVideoResolution: new SharedReference({
|
|
41
|
-
height: undefined,
|
|
42
|
-
width: undefined,
|
|
43
|
-
pixelRatio: 1,
|
|
44
|
-
}),
|
|
45
|
-
throttleVideoBitrate: new SharedReference(Infinity),
|
|
46
|
-
};
|
|
24
|
+
import { limitVideoResolution, maxBufferAhead, maxBufferBehind, maxVideoBufferSize, throttleVideoBitrate, wantedBufferAhead, } from "./globals";
|
|
25
|
+
import sendMessage, { formatErrorForSender } from "./send_message";
|
|
26
|
+
export default function initializeWorkerMain() {
|
|
47
27
|
/**
|
|
48
|
-
* `true` once the
|
|
28
|
+
* `true` once the worker has been initialized.
|
|
49
29
|
* Allow to enforce the fact that it is only initialized once.
|
|
50
30
|
*/
|
|
51
31
|
let isInitialized = false;
|
|
@@ -61,42 +41,46 @@ export default function initializeCoreEntry(setMessageReceiver, sendMessage) {
|
|
|
61
41
|
* `null` if there's no content loaded currently.
|
|
62
42
|
*/
|
|
63
43
|
let currentContentHandle = null;
|
|
44
|
+
// Initialize Manually a `DashWasmParser` and add the feature.
|
|
45
|
+
// TODO allow worker-side feature-switching? Not sure how
|
|
46
|
+
const dashWasmParser = new DashWasmParser();
|
|
47
|
+
features.dashParsers.wasm = dashWasmParser;
|
|
48
|
+
features.dashParsers.js = DashJsParser;
|
|
49
|
+
features.transports.dash = createDashPipelines;
|
|
64
50
|
/**
|
|
65
51
|
* When set, emit playback observation made on the main thread.
|
|
66
52
|
*/
|
|
67
53
|
let playbackObservationRef = null;
|
|
68
|
-
|
|
54
|
+
globalScope.onmessageerror = (_msg) => {
|
|
55
|
+
log.error("Core", "Error when receiving message from main thread.");
|
|
56
|
+
};
|
|
57
|
+
onmessage = function (e) {
|
|
69
58
|
var _a, _b;
|
|
70
59
|
log.debug("Core", "received message", { name: e.data.type });
|
|
71
60
|
const msg = e.data;
|
|
72
61
|
switch (msg.type) {
|
|
73
62
|
case "init" /* MainThreadMessageType.Init */:
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
if (!msg.value.hasVideo) {
|
|
89
|
-
contentPreparer.disposeCurrentContent();
|
|
90
|
-
contentPreparer = new ContentPreparer({ hasVideo: msg.value.hasVideo });
|
|
91
|
-
}
|
|
92
|
-
sendMessage({ type: "init-success" /* CoreMessageType.InitSuccess */, value: null });
|
|
63
|
+
assert(!isInitialized);
|
|
64
|
+
isInitialized = true;
|
|
65
|
+
scaleTimestamp(msg.value);
|
|
66
|
+
updateLoggerLevel(msg.value.logLevel, msg.value.logFormat, msg.value.sendBackLogs);
|
|
67
|
+
if (msg.value.dashWasmUrl !== undefined && dashWasmParser.isCompatible()) {
|
|
68
|
+
dashWasmParser.initialize({ wasmUrl: msg.value.dashWasmUrl }).catch((err) => {
|
|
69
|
+
const error = err instanceof Error ? err.toString() : "Unknown Error";
|
|
70
|
+
log.error("Core", "Could not initialize DASH_WASM parser", error);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
if (!msg.value.hasVideo) {
|
|
74
|
+
contentPreparer.disposeCurrentContent();
|
|
75
|
+
contentPreparer = new ContentPreparer({ hasVideo: msg.value.hasVideo });
|
|
93
76
|
}
|
|
77
|
+
sendMessage({ type: "init-success" /* WorkerMessageType.InitSuccess */, value: null });
|
|
94
78
|
break;
|
|
95
79
|
case "log-level-update" /* MainThreadMessageType.LogLevelUpdate */:
|
|
96
80
|
updateLoggerLevel(msg.value.logLevel, msg.value.logFormat, msg.value.sendBackLogs);
|
|
97
81
|
break;
|
|
98
82
|
case "prepare" /* MainThreadMessageType.PrepareContent */:
|
|
99
|
-
prepareNewContent(
|
|
83
|
+
prepareNewContent(contentPreparer, msg.value);
|
|
100
84
|
break;
|
|
101
85
|
case "start" /* MainThreadMessageType.StartPreparedContent */: {
|
|
102
86
|
const preparedContent = contentPreparer.getCurrentContent();
|
|
@@ -109,7 +93,7 @@ export default function initializeCoreEntry(setMessageReceiver, sendMessage) {
|
|
|
109
93
|
position: new ObservationPosition(...msg.value.initialObservation.position),
|
|
110
94
|
}));
|
|
111
95
|
playbackObservationRef = currentContentObservationRef;
|
|
112
|
-
currentContentHandle = loadPreparedContent(
|
|
96
|
+
currentContentHandle = loadPreparedContent(msg.value, contentPreparer, currentContentObservationRef);
|
|
113
97
|
break;
|
|
114
98
|
}
|
|
115
99
|
case "observation" /* MainThreadMessageType.PlaybackObservation */: {
|
|
@@ -132,7 +116,7 @@ export default function initializeCoreEntry(setMessageReceiver, sendMessage) {
|
|
|
132
116
|
break;
|
|
133
117
|
}
|
|
134
118
|
case "ref-update" /* MainThreadMessageType.ReferenceUpdate */:
|
|
135
|
-
|
|
119
|
+
updateGlobalReference(msg);
|
|
136
120
|
break;
|
|
137
121
|
case "stop" /* MainThreadMessageType.StopContent */:
|
|
138
122
|
if (msg.contentId !== ((_a = contentPreparer.getCurrentContent()) === null || _a === void 0 ? void 0 : _a.contentId)) {
|
|
@@ -236,7 +220,7 @@ export default function initializeCoreEntry(setMessageReceiver, sendMessage) {
|
|
|
236
220
|
const warning = preparedContent.manifest.updateCodecSupport(newEvaluatedCodecs);
|
|
237
221
|
if (warning !== null) {
|
|
238
222
|
sendMessage({
|
|
239
|
-
type: "warning" /*
|
|
223
|
+
type: "warning" /* WorkerMessageType.Warning */,
|
|
240
224
|
contentId: preparedContent.contentId,
|
|
241
225
|
value: formatErrorForSender(warning),
|
|
242
226
|
});
|
|
@@ -244,7 +228,7 @@ export default function initializeCoreEntry(setMessageReceiver, sendMessage) {
|
|
|
244
228
|
}
|
|
245
229
|
catch (err) {
|
|
246
230
|
sendMessage({
|
|
247
|
-
type: "error" /*
|
|
231
|
+
type: "error" /* WorkerMessageType.Error */,
|
|
248
232
|
contentId: preparedContent.contentId,
|
|
249
233
|
value: formatErrorForSender(err),
|
|
250
234
|
});
|
|
@@ -280,11 +264,11 @@ export default function initializeCoreEntry(setMessageReceiver, sendMessage) {
|
|
|
280
264
|
if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
|
|
281
265
|
return;
|
|
282
266
|
}
|
|
283
|
-
if (preparedContent.
|
|
267
|
+
if (preparedContent.workerTextSender === null) {
|
|
284
268
|
log.error("Core", "Added text track but text track aren't enabled");
|
|
285
269
|
return;
|
|
286
270
|
}
|
|
287
|
-
preparedContent.
|
|
271
|
+
preparedContent.workerTextSender.onPushedTrackSuccess(msg.value.ranges);
|
|
288
272
|
break;
|
|
289
273
|
}
|
|
290
274
|
case "push-text-error" /* MainThreadMessageType.PushTextDataError */: {
|
|
@@ -292,11 +276,11 @@ export default function initializeCoreEntry(setMessageReceiver, sendMessage) {
|
|
|
292
276
|
if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
|
|
293
277
|
return;
|
|
294
278
|
}
|
|
295
|
-
if (preparedContent.
|
|
279
|
+
if (preparedContent.workerTextSender === null) {
|
|
296
280
|
log.error("Core", "Added text track but text track aren't enabled");
|
|
297
281
|
return;
|
|
298
282
|
}
|
|
299
|
-
preparedContent.
|
|
283
|
+
preparedContent.workerTextSender.onPushedTrackError(new Error(msg.value.message));
|
|
300
284
|
break;
|
|
301
285
|
}
|
|
302
286
|
case "remove-text-success" /* MainThreadMessageType.RemoveTextDataSuccess */: {
|
|
@@ -304,11 +288,11 @@ export default function initializeCoreEntry(setMessageReceiver, sendMessage) {
|
|
|
304
288
|
if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
|
|
305
289
|
return;
|
|
306
290
|
}
|
|
307
|
-
if (preparedContent.
|
|
291
|
+
if (preparedContent.workerTextSender === null) {
|
|
308
292
|
log.error("Core", "Removed text track but text track aren't enabled");
|
|
309
293
|
return;
|
|
310
294
|
}
|
|
311
|
-
preparedContent.
|
|
295
|
+
preparedContent.workerTextSender.onRemoveSuccess(msg.value.ranges);
|
|
312
296
|
break;
|
|
313
297
|
}
|
|
314
298
|
case "remove-text-error" /* MainThreadMessageType.RemoveTextDataError */: {
|
|
@@ -316,19 +300,19 @@ export default function initializeCoreEntry(setMessageReceiver, sendMessage) {
|
|
|
316
300
|
if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
|
|
317
301
|
return;
|
|
318
302
|
}
|
|
319
|
-
if (preparedContent.
|
|
303
|
+
if (preparedContent.workerTextSender === null) {
|
|
320
304
|
log.error("Core", "Removed text track but text track aren't enabled");
|
|
321
305
|
return;
|
|
322
306
|
}
|
|
323
|
-
preparedContent.
|
|
307
|
+
preparedContent.workerTextSender.onRemoveError(new Error(msg.value.message));
|
|
324
308
|
break;
|
|
325
309
|
}
|
|
326
310
|
case "pull-segment-sink-store-infos" /* MainThreadMessageType.PullSegmentSinkStoreInfos */: {
|
|
327
|
-
sendSegmentSinksStoreInfos(
|
|
311
|
+
sendSegmentSinksStoreInfos(contentPreparer, msg.value.requestId);
|
|
328
312
|
break;
|
|
329
313
|
}
|
|
330
314
|
case "thumbnail-request" /* MainThreadMessageType.ThumbnailDataRequest */: {
|
|
331
|
-
sendThumbnailData(
|
|
315
|
+
sendThumbnailData(contentPreparer, msg);
|
|
332
316
|
break;
|
|
333
317
|
}
|
|
334
318
|
case "config-update" /* MainThreadMessageType.ConfigUpdate */: {
|
|
@@ -338,68 +322,48 @@ export default function initializeCoreEntry(setMessageReceiver, sendMessage) {
|
|
|
338
322
|
default:
|
|
339
323
|
assertUnreachable(msg);
|
|
340
324
|
}
|
|
341
|
-
}
|
|
325
|
+
};
|
|
342
326
|
}
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
* - Load its Manifest file
|
|
346
|
-
* - Create MSE `MediaSource` for that content.
|
|
347
|
-
* - Initialize all modules that will follow that content
|
|
348
|
-
* - etc.
|
|
349
|
-
* @param {Function} sendMessage - Function allowing to send messages to the
|
|
350
|
-
* "main thread" part of the RxPlayer logic.
|
|
351
|
-
* @param {ContentPreparer} contentPreparer
|
|
352
|
-
* @param {Object} contentInitData - Configuration wanted for the content to
|
|
353
|
-
* load.
|
|
354
|
-
* @param {Object} refs - Collection of so-called "references": values
|
|
355
|
-
* configuring playback that may be updated at any time and that the
|
|
356
|
-
* CoreEntry should react on.
|
|
357
|
-
*/
|
|
358
|
-
function prepareNewContent(sendMessage, contentPreparer, contentInitData, refs) {
|
|
359
|
-
contentPreparer
|
|
360
|
-
.initializeNewContent(sendMessage, contentInitData, {
|
|
361
|
-
limitResolution: { video: refs.limitVideoResolution },
|
|
362
|
-
throttleBitrate: { video: refs.throttleVideoBitrate },
|
|
363
|
-
})
|
|
364
|
-
.then((manifest) => {
|
|
327
|
+
function prepareNewContent(contentPreparer, contentInitData) {
|
|
328
|
+
contentPreparer.initializeNewContent(contentInitData).then((manifest) => {
|
|
365
329
|
sendMessage({
|
|
366
|
-
type: "manifest-ready" /*
|
|
330
|
+
type: "manifest-ready" /* WorkerMessageType.ManifestReady */,
|
|
367
331
|
contentId: contentInitData.contentId,
|
|
368
332
|
value: { manifest },
|
|
369
333
|
});
|
|
370
334
|
}, (err) => {
|
|
371
335
|
sendMessage({
|
|
372
|
-
type: "error" /*
|
|
336
|
+
type: "error" /* WorkerMessageType.Error */,
|
|
373
337
|
contentId: contentInitData.contentId,
|
|
374
338
|
value: formatErrorForSender(err),
|
|
375
339
|
});
|
|
376
340
|
});
|
|
377
341
|
}
|
|
378
|
-
function
|
|
342
|
+
function updateGlobalReference(msg) {
|
|
379
343
|
switch (msg.value.name) {
|
|
380
344
|
case "wantedBufferAhead":
|
|
381
|
-
|
|
345
|
+
wantedBufferAhead.setValueIfChanged(msg.value.newVal);
|
|
382
346
|
break;
|
|
383
347
|
case "maxVideoBufferSize":
|
|
384
|
-
|
|
348
|
+
maxVideoBufferSize.setValueIfChanged(msg.value.newVal);
|
|
385
349
|
break;
|
|
386
350
|
case "maxBufferBehind":
|
|
387
|
-
|
|
351
|
+
maxBufferBehind.setValueIfChanged(msg.value.newVal);
|
|
388
352
|
break;
|
|
389
353
|
case "maxBufferAhead":
|
|
390
|
-
|
|
354
|
+
maxBufferAhead.setValueIfChanged(msg.value.newVal);
|
|
391
355
|
break;
|
|
392
356
|
case "limitVideoResolution":
|
|
393
|
-
|
|
357
|
+
limitVideoResolution.setValueIfChanged(msg.value.newVal);
|
|
394
358
|
break;
|
|
395
359
|
case "throttleVideoBitrate":
|
|
396
|
-
|
|
360
|
+
throttleVideoBitrate.setValueIfChanged(msg.value.newVal);
|
|
397
361
|
break;
|
|
398
362
|
default:
|
|
399
363
|
assertUnreachable(msg.value);
|
|
400
364
|
}
|
|
401
365
|
}
|
|
402
|
-
function loadPreparedContent(
|
|
366
|
+
function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
|
|
403
367
|
log.debug("Core", "Loading pepared content.");
|
|
404
368
|
const contentCanceller = new TaskCanceller();
|
|
405
369
|
let currentLoadCanceller = null;
|
|
@@ -418,7 +382,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
418
382
|
currentLoadCanceller = new TaskCanceller();
|
|
419
383
|
currentLoadCanceller.linkToSignal(contentCanceller.signal);
|
|
420
384
|
/**
|
|
421
|
-
* Stores last discontinuity update sent to the
|
|
385
|
+
* Stores last discontinuity update sent to the worker for each Period and type
|
|
422
386
|
* combinations, at least until the corresponding `PeriodStreamCleared`
|
|
423
387
|
* message.
|
|
424
388
|
*
|
|
@@ -430,7 +394,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
430
394
|
if (preparedContent === null || preparedContent.manifest === null) {
|
|
431
395
|
const error = new OtherError("NONE", "Loading content when none is prepared");
|
|
432
396
|
sendMessage({
|
|
433
|
-
type: "error" /*
|
|
397
|
+
type: "error" /* WorkerMessageType.Error */,
|
|
434
398
|
contentId: undefined,
|
|
435
399
|
value: formatErrorForSender(error),
|
|
436
400
|
});
|
|
@@ -442,7 +406,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
442
406
|
synchronizeSegmentSinksOnObservation(observation, segmentSinksStore);
|
|
443
407
|
const freezeResolution = preparedContent.freezeResolver.onNewObservation(observation);
|
|
444
408
|
if (freezeResolution !== null) {
|
|
445
|
-
handleFreezeResolution(
|
|
409
|
+
handleFreezeResolution(freezeResolution, {
|
|
446
410
|
contentId,
|
|
447
411
|
manifest,
|
|
448
412
|
handleMediaSourceReload: performMediaSourceReload,
|
|
@@ -454,36 +418,36 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
454
418
|
if (initialPeriod === undefined) {
|
|
455
419
|
const error = new MediaError("MEDIA_STARTING_TIME_NOT_FOUND", "Wanted starting time not found in the Manifest.");
|
|
456
420
|
sendMessage({
|
|
457
|
-
type: "error" /*
|
|
421
|
+
type: "error" /* WorkerMessageType.Error */,
|
|
458
422
|
contentId,
|
|
459
423
|
value: formatErrorForSender(error),
|
|
460
424
|
});
|
|
461
425
|
throw error;
|
|
462
426
|
}
|
|
463
|
-
const playbackObserver = new
|
|
427
|
+
const playbackObserver = new WorkerPlaybackObserver(playbackObservationRef, contentId, sendMessage, currentLoadCanceller.signal);
|
|
464
428
|
cmcdDataBuilder === null || cmcdDataBuilder === void 0 ? void 0 : cmcdDataBuilder.startMonitoringPlayback(playbackObserver);
|
|
465
429
|
currentLoadCanceller.signal.register(() => {
|
|
466
430
|
cmcdDataBuilder === null || cmcdDataBuilder === void 0 ? void 0 : cmcdDataBuilder.stopMonitoringPlayback();
|
|
467
431
|
});
|
|
468
432
|
const contentTimeBoundariesObserver = createContentTimeBoundariesObserver(manifest, mediaSource, playbackObserver, segmentSinksStore, {
|
|
469
433
|
onWarning: (err) => sendMessage({
|
|
470
|
-
type: "warning" /*
|
|
434
|
+
type: "warning" /* WorkerMessageType.Warning */,
|
|
471
435
|
contentId,
|
|
472
436
|
value: formatErrorForSender(err),
|
|
473
437
|
}),
|
|
474
438
|
onPeriodChanged: (period) => {
|
|
475
439
|
sendMessage({
|
|
476
|
-
type: "active-period-changed" /*
|
|
440
|
+
type: "active-period-changed" /* WorkerMessageType.ActivePeriodChanged */,
|
|
477
441
|
contentId,
|
|
478
442
|
value: { periodId: period.id },
|
|
479
443
|
});
|
|
480
444
|
},
|
|
481
445
|
}, currentLoadCanceller.signal);
|
|
482
446
|
StreamOrchestrator({ initialPeriod, manifest }, playbackObserver, representationEstimator, segmentSinksStore, segmentQueueCreator, {
|
|
483
|
-
wantedBufferAhead
|
|
484
|
-
maxVideoBufferSize
|
|
485
|
-
maxBufferAhead
|
|
486
|
-
maxBufferBehind
|
|
447
|
+
wantedBufferAhead,
|
|
448
|
+
maxVideoBufferSize,
|
|
449
|
+
maxBufferAhead,
|
|
450
|
+
maxBufferBehind,
|
|
487
451
|
drmSystemId,
|
|
488
452
|
enableFastSwitching,
|
|
489
453
|
onCodecSwitch,
|
|
@@ -497,7 +461,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
497
461
|
return {
|
|
498
462
|
needsBufferFlush(payload) {
|
|
499
463
|
sendMessage({
|
|
500
|
-
type: "needs-buffer-flush" /*
|
|
464
|
+
type: "needs-buffer-flush" /* WorkerMessageType.NeedsBufferFlush */,
|
|
501
465
|
contentId,
|
|
502
466
|
value: payload,
|
|
503
467
|
});
|
|
@@ -534,7 +498,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
534
498
|
},
|
|
535
499
|
lockedStream(payload) {
|
|
536
500
|
sendMessage({
|
|
537
|
-
type: "locked-stream" /*
|
|
501
|
+
type: "locked-stream" /* WorkerMessageType.LockedStream */,
|
|
538
502
|
contentId,
|
|
539
503
|
value: {
|
|
540
504
|
periodId: payload.period.id,
|
|
@@ -550,7 +514,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
550
514
|
return;
|
|
551
515
|
}
|
|
552
516
|
sendMessage({
|
|
553
|
-
type: "adaptation-changed" /*
|
|
517
|
+
type: "adaptation-changed" /* WorkerMessageType.AdaptationChanged */,
|
|
554
518
|
contentId,
|
|
555
519
|
value: {
|
|
556
520
|
adaptationId: (_b = (_a = value.adaptation) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null,
|
|
@@ -567,7 +531,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
567
531
|
return;
|
|
568
532
|
}
|
|
569
533
|
sendMessage({
|
|
570
|
-
type: "representation-changed" /*
|
|
534
|
+
type: "representation-changed" /* WorkerMessageType.RepresentationChanged */,
|
|
571
535
|
contentId,
|
|
572
536
|
value: {
|
|
573
537
|
adaptationId: value.adaptation.id,
|
|
@@ -579,14 +543,14 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
579
543
|
},
|
|
580
544
|
inbandEvent(value) {
|
|
581
545
|
sendMessage({
|
|
582
|
-
type: "inband-event" /*
|
|
546
|
+
type: "inband-event" /* WorkerMessageType.InbandEvent */,
|
|
583
547
|
contentId,
|
|
584
548
|
value,
|
|
585
549
|
});
|
|
586
550
|
},
|
|
587
551
|
warning(value) {
|
|
588
552
|
sendMessage({
|
|
589
|
-
type: "warning" /*
|
|
553
|
+
type: "warning" /* WorkerMessageType.Warning */,
|
|
590
554
|
contentId,
|
|
591
555
|
value: formatErrorForSender(value),
|
|
592
556
|
});
|
|
@@ -597,7 +561,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
597
561
|
}
|
|
598
562
|
preparedContent.trackChoiceSetter.addTrackSetter(value.period.id, value.type, value.adaptationRef);
|
|
599
563
|
sendMessage({
|
|
600
|
-
type: "period-stream-ready" /*
|
|
564
|
+
type: "period-stream-ready" /* WorkerMessageType.PeriodStreamReady */,
|
|
601
565
|
contentId,
|
|
602
566
|
value: { periodId: value.period.id, bufferType: value.type },
|
|
603
567
|
});
|
|
@@ -616,7 +580,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
616
580
|
contentTimeBoundariesObserver.onPeriodCleared(value.type, value.period);
|
|
617
581
|
preparedContent.trackChoiceSetter.removeTrackSetter(value.period.id, value.type);
|
|
618
582
|
sendMessage({
|
|
619
|
-
type: "period-stream-cleared" /*
|
|
583
|
+
type: "period-stream-cleared" /* WorkerMessageType.PeriodStreamCleared */,
|
|
620
584
|
contentId,
|
|
621
585
|
value: { periodId: value.period.id, bufferType: value.type },
|
|
622
586
|
});
|
|
@@ -630,7 +594,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
630
594
|
// Considering this is only for an unimportant undocumented API, we may
|
|
631
595
|
// throttle such messages. (e.g. max one per 2 seconds for each type?).
|
|
632
596
|
sendMessage({
|
|
633
|
-
type: "bitrate-estimate-change" /*
|
|
597
|
+
type: "bitrate-estimate-change" /* WorkerMessageType.BitrateEstimateChange */,
|
|
634
598
|
contentId,
|
|
635
599
|
value: {
|
|
636
600
|
bitrate: payload.bitrate,
|
|
@@ -643,7 +607,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
643
607
|
},
|
|
644
608
|
needsDecipherabilityFlush() {
|
|
645
609
|
sendMessage({
|
|
646
|
-
type: "needs-decipherability-flush" /*
|
|
610
|
+
type: "needs-decipherability-flush" /* WorkerMessageType.NeedsDecipherabilityFlush */,
|
|
647
611
|
contentId,
|
|
648
612
|
value: null,
|
|
649
613
|
});
|
|
@@ -665,7 +629,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
665
629
|
content.representation = content.representation.getMetadataSnapshot();
|
|
666
630
|
}
|
|
667
631
|
sendMessage({
|
|
668
|
-
type: "encryption-data-encountered" /*
|
|
632
|
+
type: "encryption-data-encountered" /* WorkerMessageType.EncryptionDataEncountered */,
|
|
669
633
|
contentId,
|
|
670
634
|
value: {
|
|
671
635
|
keyIds: value.keyIds,
|
|
@@ -678,7 +642,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
678
642
|
},
|
|
679
643
|
error(error) {
|
|
680
644
|
sendMessage({
|
|
681
|
-
type: "error" /*
|
|
645
|
+
type: "error" /* WorkerMessageType.Error */,
|
|
682
646
|
contentId,
|
|
683
647
|
value: formatErrorForSender(error),
|
|
684
648
|
});
|
|
@@ -713,7 +677,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
713
677
|
};
|
|
714
678
|
periodMap.set(value.bufferType, msgObj);
|
|
715
679
|
sendMessage({
|
|
716
|
-
type: "discontinuity-update" /*
|
|
680
|
+
type: "discontinuity-update" /* WorkerMessageType.DiscontinuityUpdate */,
|
|
717
681
|
contentId,
|
|
718
682
|
value: msgObj,
|
|
719
683
|
});
|
|
@@ -736,7 +700,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
736
700
|
maximumPosition: payload.maximumPosition,
|
|
737
701
|
});
|
|
738
702
|
sendMessage({
|
|
739
|
-
type: "reloading-media-source" /*
|
|
703
|
+
type: "reloading-media-source" /* WorkerMessageType.ReloadingMediaSource */,
|
|
740
704
|
mediaSourceId,
|
|
741
705
|
value: payload,
|
|
742
706
|
}, []);
|
|
@@ -752,7 +716,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
752
716
|
currentLoadCanceller = null;
|
|
753
717
|
}
|
|
754
718
|
const contentId = (_a = contentPreparer.getCurrentContent()) === null || _a === void 0 ? void 0 : _a.contentId;
|
|
755
|
-
contentPreparer.reloadMediaSource(
|
|
719
|
+
contentPreparer.reloadMediaSource().then(() => {
|
|
756
720
|
log.info("Core", "MediaSource Reloaded, loading content again", {
|
|
757
721
|
newInitialTime,
|
|
758
722
|
});
|
|
@@ -763,7 +727,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
|
|
|
763
727
|
return;
|
|
764
728
|
}
|
|
765
729
|
sendMessage({
|
|
766
|
-
type: "error" /*
|
|
730
|
+
type: "error" /* WorkerMessageType.Error */,
|
|
767
731
|
contentId,
|
|
768
732
|
value: formatErrorForSender(err),
|
|
769
733
|
});
|
|
@@ -786,7 +750,7 @@ function updateLoggerLevel(logLevel, logFormat, sendBackLogs) {
|
|
|
786
750
|
});
|
|
787
751
|
// Not relying on `sendMessage` as it also logs
|
|
788
752
|
postMessage({
|
|
789
|
-
type: "log" /*
|
|
753
|
+
type: "log" /* WorkerMessageType.LogMessage */,
|
|
790
754
|
value: {
|
|
791
755
|
namespace,
|
|
792
756
|
logLevel: levelStr,
|
|
@@ -799,26 +763,23 @@ function updateLoggerLevel(logLevel, logFormat, sendBackLogs) {
|
|
|
799
763
|
/**
|
|
800
764
|
* Send a message `SegmentSinkStoreUpdate` to the main thread with
|
|
801
765
|
* a serialized object that represents the segmentSinksStore state.
|
|
802
|
-
* @param {Function} sendMessage - Function allowing to send messages to the
|
|
803
|
-
* "main thread" part of the RxPlayer logic.
|
|
804
766
|
* @param {ContentPreparer} contentPreparer
|
|
767
|
+
* @returns {void}
|
|
805
768
|
*/
|
|
806
|
-
function sendSegmentSinksStoreInfos(
|
|
769
|
+
function sendSegmentSinksStoreInfos(contentPreparer, requestId) {
|
|
807
770
|
const currentContent = contentPreparer.getCurrentContent();
|
|
808
771
|
if (currentContent === null) {
|
|
809
772
|
return;
|
|
810
773
|
}
|
|
811
774
|
const segmentSinksMetrics = currentContent.segmentSinksStore.getSegmentSinksMetrics();
|
|
812
775
|
sendMessage({
|
|
813
|
-
type: "segment-sink-store-update" /*
|
|
776
|
+
type: "segment-sink-store-update" /* WorkerMessageType.SegmentSinkStoreUpdate */,
|
|
814
777
|
contentId: currentContent.contentId,
|
|
815
778
|
value: { segmentSinkMetrics: segmentSinksMetrics, requestId },
|
|
816
779
|
});
|
|
817
780
|
}
|
|
818
781
|
/**
|
|
819
782
|
* Handle accordingly an `IFreezeResolution` object.
|
|
820
|
-
* @param {Function} sendMessage - Function allowing to send messages to the
|
|
821
|
-
* "main thread" part of the RxPlayer logic.
|
|
822
783
|
* @param {Object|null} freezeResolution - The `IFreezeResolution` suggested.
|
|
823
784
|
* @param {Object} param - Parameters that might be needed to implement the
|
|
824
785
|
* resolution.
|
|
@@ -831,7 +792,7 @@ function sendSegmentSinksStoreInfos(sendMessage, contentPreparer, requestId) {
|
|
|
831
792
|
* function is authorized to mark `Representation` as "to avoid" if the
|
|
832
793
|
* `IFreezeResolution` object suggest it.
|
|
833
794
|
*/
|
|
834
|
-
function handleFreezeResolution(
|
|
795
|
+
function handleFreezeResolution(freezeResolution, { contentId, manifest, handleMediaSourceReload, enableRepresentationAvoidance, }) {
|
|
835
796
|
switch (freezeResolution.type) {
|
|
836
797
|
case "reload": {
|
|
837
798
|
log.info("Core", "Planning reload due to freeze");
|
|
@@ -845,7 +806,7 @@ function handleFreezeResolution(sendMessage, freezeResolution, { contentId, mani
|
|
|
845
806
|
case "flush": {
|
|
846
807
|
log.info("Core", "Flushing buffer due to freeze");
|
|
847
808
|
sendMessage({
|
|
848
|
-
type: "needs-buffer-flush" /*
|
|
809
|
+
type: "needs-buffer-flush" /* WorkerMessageType.NeedsBufferFlush */,
|
|
849
810
|
contentId,
|
|
850
811
|
value: {
|
|
851
812
|
relativeResumingPosition: freezeResolution.value.relativeSeek,
|
|
@@ -876,11 +837,11 @@ function handleFreezeResolution(sendMessage, freezeResolution, { contentId, mani
|
|
|
876
837
|
* @param {ContentPreparer} contentPreparer
|
|
877
838
|
* @returns {void}
|
|
878
839
|
*/
|
|
879
|
-
function sendThumbnailData(
|
|
840
|
+
function sendThumbnailData(contentPreparer, msg) {
|
|
880
841
|
const preparedContent = contentPreparer.getCurrentContent();
|
|
881
842
|
const respondWithError = (err) => {
|
|
882
843
|
sendMessage({
|
|
883
|
-
type: "thumbnail-response" /*
|
|
844
|
+
type: "thumbnail-response" /* WorkerMessageType.ThumbnailDataResponse */,
|
|
884
845
|
contentId: msg.contentId,
|
|
885
846
|
value: {
|
|
886
847
|
status: "error",
|
|
@@ -896,7 +857,7 @@ function sendThumbnailData(sendMessage, contentPreparer, msg) {
|
|
|
896
857
|
}
|
|
897
858
|
getThumbnailData(preparedContent.fetchThumbnailData, preparedContent.manifest, msg.value.periodId, msg.value.thumbnailTrackId, msg.value.time).then((result) => {
|
|
898
859
|
sendMessage({
|
|
899
|
-
type: "thumbnail-response" /*
|
|
860
|
+
type: "thumbnail-response" /* WorkerMessageType.ThumbnailDataResponse */,
|
|
900
861
|
contentId: msg.contentId,
|
|
901
862
|
value: {
|
|
902
863
|
status: "success",
|