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