rx-player 3.30.0-dev.2023020100 → 3.30.0-dev.2023030200
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/.eslintrc.js +8 -0
- package/CHANGELOG.md +5 -1
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/browser_detection.d.ts +23 -12
- package/dist/_esm5.processed/compat/browser_detection.js +80 -38
- package/dist/_esm5.processed/compat/can_reuse_media_keys.js +2 -2
- package/dist/_esm5.processed/compat/eme/close_session.js +2 -2
- package/dist/_esm5.processed/compat/event_listeners.js +1 -1
- package/dist/_esm5.processed/config.d.ts +2 -0
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +4 -2
- package/dist/_esm5.processed/core/api/debug/buffer_graph.d.ts +28 -0
- package/dist/_esm5.processed/core/api/debug/buffer_graph.js +175 -0
- package/dist/_esm5.processed/core/api/debug/buffer_size_graph.d.ts +10 -0
- package/dist/_esm5.processed/core/api/debug/buffer_size_graph.js +104 -0
- package/dist/_esm5.processed/core/api/debug/constants.d.ts +2 -0
- package/dist/_esm5.processed/core/api/debug/constants.js +2 -0
- package/dist/_esm5.processed/core/api/debug/index.d.ts +2 -0
- package/dist/_esm5.processed/core/api/debug/index.js +2 -0
- package/dist/_esm5.processed/core/api/debug/modules/general_info.d.ts +3 -0
- package/dist/_esm5.processed/core/api/debug/modules/general_info.js +199 -0
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.d.ts +4 -0
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +121 -0
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.d.ts +3 -0
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +35 -0
- package/dist/_esm5.processed/core/api/debug/render.d.ts +3 -0
- package/dist/_esm5.processed/core/api/debug/render.js +32 -0
- package/dist/_esm5.processed/core/api/debug/utils.d.ts +39 -0
- package/dist/_esm5.processed/core/api/debug/utils.js +57 -0
- package/dist/_esm5.processed/core/api/playback_observer.js +3 -2
- package/dist/_esm5.processed/core/api/public_api.d.ts +3 -0
- package/dist/_esm5.processed/core/api/public_api.js +25 -14
- package/dist/_esm5.processed/core/api/utils.js +3 -3
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.d.ts +32 -13
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +28 -7
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +1 -1
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +1 -1
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +33 -24
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +54 -50
- package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.js +4 -0
- package/dist/_esm5.processed/core/fetchers/cdn_prioritizer.d.ts +17 -8
- package/dist/_esm5.processed/core/fetchers/cdn_prioritizer.js +10 -6
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +5 -4
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +22 -5
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +37 -21
- package/dist/_esm5.processed/core/fetchers/segment/task_prioritizer.js +21 -23
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +17 -7
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +1 -1
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +27 -31
- package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.js +2 -2
- package/dist/_esm5.processed/core/init/utils/create_media_source.js +3 -12
- package/dist/_esm5.processed/core/init/utils/end_of_stream.js +6 -3
- package/dist/_esm5.processed/core/init/utils/get_loaded_reference.js +2 -1
- package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +9 -5
- package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.js +2 -1
- package/dist/_esm5.processed/core/init/utils/media_duration_updater.js +23 -19
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +1 -1
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.js +6 -4
- package/dist/_esm5.processed/core/init/utils/throw_on_media_error.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +7 -10
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +13 -9
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +25 -16
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +26 -12
- package/dist/_esm5.processed/core/stream/period/period_stream.js +11 -10
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +15 -15
- package/dist/_esm5.processed/core/stream/representation/utils/append_segment_to_buffer.js +1 -1
- package/dist/_esm5.processed/core/stream/representation/utils/downloading_queue.js +16 -6
- package/dist/_esm5.processed/default_config.d.ts +16 -0
- package/dist/_esm5.processed/default_config.js +19 -0
- package/dist/_esm5.processed/experimental/features/debug_element.d.ts +8 -0
- package/dist/_esm5.processed/experimental/features/debug_element.js +10 -0
- package/dist/_esm5.processed/experimental/features/index.d.ts +1 -0
- package/dist/_esm5.processed/experimental/features/index.js +1 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +7 -4
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +8 -4
- package/dist/_esm5.processed/features/features_object.js +1 -0
- package/dist/_esm5.processed/features/initialize_features.js +13 -10
- package/dist/_esm5.processed/features/types.d.ts +3 -0
- package/dist/_esm5.processed/manifest/adaptation.js +4 -0
- package/dist/_esm5.processed/manifest/manifest.js +2 -0
- package/dist/_esm5.processed/manifest/representation.js +11 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +105 -137
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +25 -5
- package/dist/_esm5.processed/public_types.d.ts +1 -0
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +15 -11
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +1 -1
- package/dist/_esm5.processed/transports/dash/segment_loader.js +4 -4
- package/dist/_esm5.processed/transports/local/segment_loader.js +13 -26
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +4 -4
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +3 -3
- package/dist/_esm5.processed/utils/cancellable_sleep.js +4 -10
- package/dist/_esm5.processed/utils/create_cancellable_promise.d.ts +26 -0
- package/dist/_esm5.processed/utils/create_cancellable_promise.js +52 -0
- package/dist/_esm5.processed/utils/reference.js +6 -0
- package/dist/_esm5.processed/utils/request/xhr.js +1 -1
- package/dist/_esm5.processed/utils/task_canceller.d.ts +34 -15
- package/dist/_esm5.processed/utils/task_canceller.js +55 -22
- package/dist/rx-player.js +880 -677
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +1 -0
- package/package.json +19 -18
- package/scripts/build/constants.d.ts +1 -0
- package/scripts/report_build_sizes +4 -0
- package/sonar-project.properties +1 -1
- package/src/compat/browser_detection.ts +99 -52
- package/src/compat/can_reuse_media_keys.ts +5 -2
- package/src/compat/eme/close_session.ts +2 -2
- package/src/compat/event_listeners.ts +1 -1
- package/src/core/adaptive/adaptive_representation_selector.ts +4 -2
- package/src/core/api/debug/buffer_graph.ts +247 -0
- package/src/core/api/debug/buffer_size_graph.ts +130 -0
- package/src/core/api/debug/constants.ts +2 -0
- package/src/core/api/debug/index.ts +3 -0
- package/src/core/api/debug/modules/general_info.ts +204 -0
- package/src/core/api/debug/modules/segment_buffer_content.ts +155 -0
- package/src/core/api/debug/modules/segment_buffer_size.ts +48 -0
- package/src/core/api/debug/render.ts +40 -0
- package/src/core/api/debug/utils.ts +103 -0
- package/src/core/api/playback_observer.ts +4 -2
- package/src/core/api/public_api.ts +28 -14
- package/src/core/api/utils.ts +3 -3
- package/src/core/decrypt/__tests__/__global__/utils.ts +61 -40
- package/src/core/decrypt/attach_media_keys.ts +1 -1
- package/src/core/decrypt/content_decryptor.ts +1 -1
- package/src/core/decrypt/find_key_system.ts +36 -35
- package/src/core/decrypt/session_events_listener.ts +57 -56
- package/src/core/decrypt/utils/check_key_statuses.ts +6 -0
- package/src/core/fetchers/cdn_prioritizer.ts +18 -9
- package/src/core/fetchers/manifest/manifest_fetcher.ts +5 -4
- package/src/core/fetchers/segment/segment_fetcher.ts +36 -14
- package/src/core/fetchers/segment/task_prioritizer.ts +25 -30
- package/src/core/fetchers/utils/schedule_request.ts +18 -7
- package/src/core/init/directfile_content_initializer.ts +1 -1
- package/src/core/init/media_source_content_initializer.ts +37 -41
- package/src/core/init/utils/content_time_boundaries_observer.ts +2 -2
- package/src/core/init/utils/create_media_source.ts +4 -16
- package/src/core/init/utils/end_of_stream.ts +6 -3
- package/src/core/init/utils/get_loaded_reference.ts +2 -1
- package/src/core/init/utils/initial_seek_and_play.ts +9 -5
- package/src/core/init/utils/initialize_content_decryption.ts +2 -1
- package/src/core/init/utils/media_duration_updater.ts +25 -20
- package/src/core/init/utils/rebuffering_controller.ts +1 -1
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +6 -4
- package/src/core/init/utils/throw_on_media_error.ts +1 -1
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +7 -11
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +4 -2
- package/src/core/segment_buffers/segment_buffers_store.ts +16 -13
- package/src/core/stream/adaptation/adaptation_stream.ts +28 -19
- package/src/core/stream/orchestrator/stream_orchestrator.ts +26 -12
- package/src/core/stream/period/period_stream.ts +11 -10
- package/src/core/stream/representation/representation_stream.ts +15 -15
- package/src/core/stream/representation/utils/append_segment_to_buffer.ts +1 -1
- package/src/core/stream/representation/utils/downloading_queue.ts +16 -4
- package/src/default_config.ts +30 -9
- package/src/experimental/features/__tests__/debug_element.test.ts +26 -0
- package/src/experimental/features/debug_element.ts +13 -0
- package/src/experimental/features/index.ts +1 -0
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +7 -4
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +8 -4
- package/src/features/__tests__/initialize_features.test.ts +11 -0
- package/src/features/features_object.ts +1 -0
- package/src/features/initialize_features.ts +15 -10
- package/src/features/types.ts +9 -0
- package/src/manifest/adaptation.ts +7 -0
- package/src/manifest/manifest.ts +4 -0
- package/src/manifest/representation.ts +10 -4
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +116 -151
- package/src/parsers/manifest/dash/common/parse_representations.ts +21 -4
- package/src/public_types.ts +1 -0
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +31 -22
- package/src/transports/dash/low_latency_segment_loader.ts +2 -2
- package/src/transports/dash/manifest_parser.ts +1 -1
- package/src/transports/dash/segment_loader.ts +4 -4
- package/src/transports/local/segment_loader.ts +14 -30
- package/src/transports/smooth/segment_loader.ts +4 -4
- package/src/transports/utils/call_custom_manifest_loader.ts +3 -3
- package/src/typings/globals.d.ts +2 -0
- package/src/utils/cancellable_sleep.ts +5 -14
- package/src/utils/create_cancellable_promise.ts +69 -0
- package/src/utils/reference.ts +6 -0
- package/src/utils/request/xhr.ts +1 -1
- package/src/utils/task_canceller.ts +63 -34
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { DEFAULT_REFRESH_INTERVAL } from "../constants";
|
|
2
|
+
import { createCompositeElement, createElement, createMetricTitle, isExtendedMode, } from "../utils";
|
|
3
|
+
export default function constructDebugGeneralInfo(instance, parentElt, cancelSignal) {
|
|
4
|
+
var generalInfoElt = createElement("div");
|
|
5
|
+
var adaptationsElt = createElement("div");
|
|
6
|
+
var representationsElt = createElement("div");
|
|
7
|
+
updateGeneralInfo();
|
|
8
|
+
var generalInfoItv = setInterval(function () {
|
|
9
|
+
updateGeneralInfo();
|
|
10
|
+
}, DEFAULT_REFRESH_INTERVAL);
|
|
11
|
+
cancelSignal.register(function () {
|
|
12
|
+
clearInterval(generalInfoItv);
|
|
13
|
+
});
|
|
14
|
+
return createCompositeElement("div", [
|
|
15
|
+
generalInfoElt,
|
|
16
|
+
adaptationsElt,
|
|
17
|
+
representationsElt,
|
|
18
|
+
]);
|
|
19
|
+
function updateGeneralInfo() {
|
|
20
|
+
var videoElement = instance.getVideoElement();
|
|
21
|
+
if (videoElement === null) {
|
|
22
|
+
// disposed player. Clean-up everything
|
|
23
|
+
generalInfoElt.innerHTML = "";
|
|
24
|
+
adaptationsElt.innerHTML = "";
|
|
25
|
+
representationsElt.innerHTML = "";
|
|
26
|
+
clearInterval(generalInfoItv);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
var currentTime = instance.getPosition();
|
|
31
|
+
var bufferGap = instance.getVideoBufferGap();
|
|
32
|
+
var bufferGapStr = bufferGap === Infinity ? "0" : bufferGap.toFixed(2);
|
|
33
|
+
var valuesLine1 = [
|
|
34
|
+
["ct", currentTime.toFixed(2)],
|
|
35
|
+
["bg", bufferGapStr],
|
|
36
|
+
["rs", String(videoElement.readyState)],
|
|
37
|
+
["pr", String(videoElement.playbackRate)],
|
|
38
|
+
["sp", String(instance.getPlaybackRate())],
|
|
39
|
+
["pa", String(videoElement.paused ? 1 : 0)],
|
|
40
|
+
["en", String(videoElement.ended ? 1 : 0)],
|
|
41
|
+
["li", String(instance.isLive() ? 1 : 0)],
|
|
42
|
+
["wba", String(instance.getWantedBufferAhead())],
|
|
43
|
+
["st", "\"".concat(instance.getPlayerState(), "\"")],
|
|
44
|
+
];
|
|
45
|
+
var valuesLine2 = [];
|
|
46
|
+
var ks = instance.getKeySystemConfiguration();
|
|
47
|
+
if (ks !== null) {
|
|
48
|
+
valuesLine2.push(["ks", ks.keySystem]);
|
|
49
|
+
}
|
|
50
|
+
var mbb = instance.getMaxBufferBehind();
|
|
51
|
+
if (mbb !== Infinity) {
|
|
52
|
+
valuesLine2.push(["mbb", String(mbb)]);
|
|
53
|
+
}
|
|
54
|
+
var mba = instance.getMaxBufferAhead();
|
|
55
|
+
if (mba !== Infinity) {
|
|
56
|
+
valuesLine2.push(["mba", String(mba)]);
|
|
57
|
+
}
|
|
58
|
+
var mia = instance.getMinAudioBitrate();
|
|
59
|
+
if (mia !== 0) {
|
|
60
|
+
valuesLine2.push(["mia", String(mia)]);
|
|
61
|
+
}
|
|
62
|
+
var miv = instance.getMinVideoBitrate();
|
|
63
|
+
if (miv !== 0) {
|
|
64
|
+
valuesLine2.push(["miv", String(miv)]);
|
|
65
|
+
}
|
|
66
|
+
var maa = instance.getMaxAudioBitrate();
|
|
67
|
+
if (maa !== Infinity) {
|
|
68
|
+
valuesLine2.push(["maa", String(maa)]);
|
|
69
|
+
}
|
|
70
|
+
var mav = instance.getMaxVideoBitrate();
|
|
71
|
+
if (mav !== Infinity) {
|
|
72
|
+
valuesLine2.push(["mav", String(mav)]);
|
|
73
|
+
}
|
|
74
|
+
var fab = instance.getManualAudioBitrate();
|
|
75
|
+
if (fab >= 0) {
|
|
76
|
+
valuesLine2.push(["fab", String(fab)]);
|
|
77
|
+
}
|
|
78
|
+
var fvb = instance.getManualVideoBitrate();
|
|
79
|
+
if (fvb >= 0) {
|
|
80
|
+
valuesLine2.push(["fvb", String(fvb)]);
|
|
81
|
+
}
|
|
82
|
+
var mbs = instance.getMaxVideoBufferSize();
|
|
83
|
+
if (mbs !== Infinity) {
|
|
84
|
+
valuesLine2.push(["mbs", String(mbs)]);
|
|
85
|
+
}
|
|
86
|
+
var minPos = instance.getMinimumPosition();
|
|
87
|
+
if (minPos !== null) {
|
|
88
|
+
valuesLine1.push(["mip", minPos.toFixed(2)]);
|
|
89
|
+
valuesLine2.push(["dmi", (currentTime - minPos).toFixed(2)]);
|
|
90
|
+
}
|
|
91
|
+
var maxPos = instance.getMaximumPosition();
|
|
92
|
+
if (maxPos !== null) {
|
|
93
|
+
valuesLine1.push(["map", maxPos.toFixed(2)]);
|
|
94
|
+
valuesLine2.push(["dma", (maxPos - currentTime).toFixed(2)]);
|
|
95
|
+
}
|
|
96
|
+
var valuesLine3 = [];
|
|
97
|
+
var error = instance.getError();
|
|
98
|
+
if (error !== null) {
|
|
99
|
+
valuesLine3.push(["er", "\"".concat(String(error), "\"")]);
|
|
100
|
+
}
|
|
101
|
+
generalInfoElt.innerHTML = "";
|
|
102
|
+
for (var _i = 0, _a = [valuesLine1, valuesLine2, valuesLine3]; _i < _a.length; _i++) {
|
|
103
|
+
var valueSet = _a[_i];
|
|
104
|
+
if (valueSet.length > 0) {
|
|
105
|
+
var lineInfoElt = createElement("div");
|
|
106
|
+
for (var _b = 0, valueSet_1 = valueSet; _b < valueSet_1.length; _b++) {
|
|
107
|
+
var value = valueSet_1[_b];
|
|
108
|
+
lineInfoElt.appendChild(createMetricTitle(value[0]));
|
|
109
|
+
lineInfoElt.appendChild(createElement("span", {
|
|
110
|
+
textContent: value[1] + " ",
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
generalInfoElt.appendChild(lineInfoElt);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (isExtendedMode(parentElt)) {
|
|
117
|
+
var url = instance.getUrl();
|
|
118
|
+
if (url !== undefined) {
|
|
119
|
+
var reducedUrl = url.length > 100 ?
|
|
120
|
+
url.substring(0, 99) + "…" :
|
|
121
|
+
url;
|
|
122
|
+
generalInfoElt.appendChild(createCompositeElement("div", [
|
|
123
|
+
createMetricTitle("url"),
|
|
124
|
+
createElement("span", {
|
|
125
|
+
textContent: reducedUrl,
|
|
126
|
+
}),
|
|
127
|
+
]));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (isExtendedMode(parentElt)) {
|
|
132
|
+
var videoId = instance.getAvailableVideoTracks().map(function (_a) {
|
|
133
|
+
var id = _a.id, active = _a.active;
|
|
134
|
+
return active ? "*".concat(id) : id;
|
|
135
|
+
});
|
|
136
|
+
var audioId = instance.getAvailableAudioTracks().map(function (_a) {
|
|
137
|
+
var id = _a.id, active = _a.active;
|
|
138
|
+
return active ? "*".concat(id) : id;
|
|
139
|
+
});
|
|
140
|
+
var textId = instance.getAvailableTextTracks().map(function (_a) {
|
|
141
|
+
var id = _a.id, active = _a.active;
|
|
142
|
+
return active ? "*".concat(id) : id;
|
|
143
|
+
});
|
|
144
|
+
adaptationsElt.innerHTML = "";
|
|
145
|
+
if (videoId.length > 0) {
|
|
146
|
+
var textContent = "".concat(videoId.length, ":").concat(videoId.join(" "), " ");
|
|
147
|
+
if (textContent.length > 100) {
|
|
148
|
+
textContent = textContent.substring(0, 98) + "… ";
|
|
149
|
+
}
|
|
150
|
+
var videoAdaps = createCompositeElement("div", [
|
|
151
|
+
createMetricTitle("vt"),
|
|
152
|
+
createElement("span", { textContent: textContent }),
|
|
153
|
+
]);
|
|
154
|
+
adaptationsElt.appendChild(videoAdaps);
|
|
155
|
+
}
|
|
156
|
+
if (audioId.length > 0) {
|
|
157
|
+
var textContent = "".concat(audioId.length, ":").concat(audioId.join(" "), " ");
|
|
158
|
+
if (textContent.length > 100) {
|
|
159
|
+
textContent = textContent.substring(0, 98) + "… ";
|
|
160
|
+
}
|
|
161
|
+
var audioAdaps = createCompositeElement("div", [
|
|
162
|
+
createMetricTitle("at"),
|
|
163
|
+
createElement("span", { textContent: textContent }),
|
|
164
|
+
]);
|
|
165
|
+
adaptationsElt.appendChild(audioAdaps);
|
|
166
|
+
}
|
|
167
|
+
if (textId.length > 0) {
|
|
168
|
+
var textContent = "".concat(textId.length, ":").concat(textId.join(" "), " ");
|
|
169
|
+
if (textContent.length > 100) {
|
|
170
|
+
textContent = textContent.substring(0, 98) + "… ";
|
|
171
|
+
}
|
|
172
|
+
var textAdaps = createCompositeElement("div", [
|
|
173
|
+
createMetricTitle("tt"),
|
|
174
|
+
createElement("span", { textContent: textContent }),
|
|
175
|
+
]);
|
|
176
|
+
adaptationsElt.appendChild(textAdaps);
|
|
177
|
+
}
|
|
178
|
+
var videoBitrates = instance.getAvailableVideoBitrates();
|
|
179
|
+
var audioBitrates = instance.getAvailableAudioBitrates();
|
|
180
|
+
representationsElt.innerHTML = "";
|
|
181
|
+
if (videoBitrates.length > 0) {
|
|
182
|
+
representationsElt.appendChild(createMetricTitle("vb"));
|
|
183
|
+
representationsElt.appendChild(createElement("span", {
|
|
184
|
+
textContent: videoBitrates.join(" ") + " ",
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
if (audioBitrates.length > 0) {
|
|
188
|
+
representationsElt.appendChild(createMetricTitle("ab"));
|
|
189
|
+
representationsElt.appendChild(createElement("span", {
|
|
190
|
+
textContent: audioBitrates.join(" ") + " ",
|
|
191
|
+
}));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
adaptationsElt.innerHTML = "";
|
|
196
|
+
representationsElt.innerHTML = "";
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CancellationSignal } from "../../../../utils/task_canceller";
|
|
2
|
+
import { IBufferType } from "../../../segment_buffers";
|
|
3
|
+
import RxPlayer from "../../public_api";
|
|
4
|
+
export default function createSegmentBufferGraph(instance: RxPlayer, bufferType: IBufferType, title: string, parentElt: HTMLElement, cancelSignal: CancellationSignal): HTMLElement;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import isNullOrUndefined from "../../../../utils/is_null_or_undefined";
|
|
2
|
+
import SegmentBufferGraph from "../buffer_graph";
|
|
3
|
+
import { DEFAULT_REFRESH_INTERVAL } from "../constants";
|
|
4
|
+
import { createElement, createGraphCanvas, createMetricTitle, isExtendedMode, } from "../utils";
|
|
5
|
+
export default function createSegmentBufferGraph(instance, bufferType, title, parentElt, cancelSignal) {
|
|
6
|
+
var bufferGraphWrapper = createElement("div");
|
|
7
|
+
var bufferTitle = createMetricTitle(title);
|
|
8
|
+
var canvasElt = createGraphCanvas();
|
|
9
|
+
var currentRangeRepInfoElt = createElement("div");
|
|
10
|
+
var loadingRangeRepInfoElt = createElement("div");
|
|
11
|
+
var bufferGraph = new SegmentBufferGraph(canvasElt);
|
|
12
|
+
var intervalId = setInterval(update, DEFAULT_REFRESH_INTERVAL);
|
|
13
|
+
cancelSignal.register(function () {
|
|
14
|
+
clearInterval(intervalId);
|
|
15
|
+
});
|
|
16
|
+
bufferGraphWrapper.appendChild(bufferTitle);
|
|
17
|
+
bufferGraphWrapper.appendChild(canvasElt);
|
|
18
|
+
bufferGraphWrapper.appendChild(currentRangeRepInfoElt);
|
|
19
|
+
bufferGraphWrapper.appendChild(loadingRangeRepInfoElt);
|
|
20
|
+
bufferGraphWrapper.style.padding = "5px 0px";
|
|
21
|
+
update();
|
|
22
|
+
return bufferGraphWrapper;
|
|
23
|
+
function update() {
|
|
24
|
+
var _a, _b, _c, _d;
|
|
25
|
+
if (instance.getVideoElement() === null) {
|
|
26
|
+
// disposed player. Clean-up everything
|
|
27
|
+
bufferGraphWrapper.style.display = "none";
|
|
28
|
+
bufferGraphWrapper.innerHTML = "";
|
|
29
|
+
clearInterval(intervalId);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
var showAllInfo = isExtendedMode(parentElt);
|
|
33
|
+
var inventory = instance.__priv_getSegmentBufferContent(bufferType);
|
|
34
|
+
if (inventory === null) {
|
|
35
|
+
bufferGraphWrapper.style.display = "none";
|
|
36
|
+
currentRangeRepInfoElt.innerHTML = "";
|
|
37
|
+
loadingRangeRepInfoElt.innerHTML = "";
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
bufferGraphWrapper.style.display = "block";
|
|
41
|
+
var currentTime = instance.getPosition();
|
|
42
|
+
var width = Math.min(parentElt.clientWidth - 150, 600);
|
|
43
|
+
bufferGraph.update({
|
|
44
|
+
currentTime: currentTime,
|
|
45
|
+
minimumPosition: (_a = instance.getMinimumPosition()) !== null && _a !== void 0 ? _a : undefined,
|
|
46
|
+
maximumPosition: (_b = instance.getMaximumPosition()) !== null && _b !== void 0 ? _b : undefined,
|
|
47
|
+
inventory: inventory,
|
|
48
|
+
width: width,
|
|
49
|
+
height: 10,
|
|
50
|
+
});
|
|
51
|
+
if (!showAllInfo) {
|
|
52
|
+
currentRangeRepInfoElt.innerHTML = "";
|
|
53
|
+
loadingRangeRepInfoElt.innerHTML = "";
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
currentRangeRepInfoElt.innerHTML = "";
|
|
57
|
+
for (var i = 0; i < inventory.length; i++) {
|
|
58
|
+
var rangeInfo = inventory[i];
|
|
59
|
+
var bufferedStart = rangeInfo.bufferedStart, bufferedEnd = rangeInfo.bufferedEnd, infos = rangeInfo.infos;
|
|
60
|
+
if (bufferedStart !== undefined && bufferedEnd !== undefined &&
|
|
61
|
+
currentTime >= bufferedStart && currentTime < bufferedEnd) {
|
|
62
|
+
currentRangeRepInfoElt.appendChild(createMetricTitle("play"));
|
|
63
|
+
currentRangeRepInfoElt.appendChild(createElement("span", {
|
|
64
|
+
textContent: constructRepresentationInfo(infos),
|
|
65
|
+
}));
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
loadingRangeRepInfoElt.innerHTML = "";
|
|
70
|
+
var rep = (_c = instance.getCurrentRepresentations()) === null || _c === void 0 ? void 0 : _c[bufferType];
|
|
71
|
+
var adap = (_d = instance.getCurrentAdaptations()) === null || _d === void 0 ? void 0 : _d[bufferType];
|
|
72
|
+
var manifest = instance.getManifest();
|
|
73
|
+
if (manifest !== null && !isNullOrUndefined(rep) && !isNullOrUndefined(adap)) {
|
|
74
|
+
var period = manifest.getPeriodForTime(currentTime);
|
|
75
|
+
if (period !== undefined) {
|
|
76
|
+
loadingRangeRepInfoElt.appendChild(createMetricTitle("load"));
|
|
77
|
+
loadingRangeRepInfoElt.appendChild(createElement("span", {
|
|
78
|
+
textContent: constructRepresentationInfo({
|
|
79
|
+
period: period,
|
|
80
|
+
adaptation: adap,
|
|
81
|
+
representation: rep,
|
|
82
|
+
}),
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function constructRepresentationInfo(content) {
|
|
90
|
+
var _a;
|
|
91
|
+
var period = content.period;
|
|
92
|
+
var _b = content.adaptation, language = _b.language, isAudioDescription = _b.isAudioDescription, isClosedCaption = _b.isClosedCaption, isTrickModeTrack = _b.isTrickModeTrack, isSignInterpreted = _b.isSignInterpreted, bufferType = _b.type;
|
|
93
|
+
var _c = content.representation, id = _c.id, height = _c.height, width = _c.width, bitrate = _c.bitrate, codec = _c.codec;
|
|
94
|
+
var representationInfo = "\"".concat(id, "\" ");
|
|
95
|
+
if (height !== undefined && width !== undefined) {
|
|
96
|
+
representationInfo += "".concat(width, "x").concat(height, " ");
|
|
97
|
+
}
|
|
98
|
+
if (bitrate !== undefined) {
|
|
99
|
+
representationInfo += "(".concat((bitrate / 1000).toFixed(0), "kbps) ");
|
|
100
|
+
}
|
|
101
|
+
if (codec !== undefined) {
|
|
102
|
+
representationInfo += "c:\"".concat(codec, "\" ");
|
|
103
|
+
}
|
|
104
|
+
if (language !== undefined) {
|
|
105
|
+
representationInfo += "l:\"".concat(language, "\" ");
|
|
106
|
+
}
|
|
107
|
+
if (bufferType === "video" && typeof isSignInterpreted === "boolean") {
|
|
108
|
+
representationInfo += "si:".concat(isSignInterpreted ? 1 : 0, " ");
|
|
109
|
+
}
|
|
110
|
+
if (bufferType === "video" && typeof isTrickModeTrack === "boolean") {
|
|
111
|
+
representationInfo += "tm:".concat(isTrickModeTrack ? 1 : 0, " ");
|
|
112
|
+
}
|
|
113
|
+
if (bufferType === "audio" && typeof isAudioDescription === "boolean") {
|
|
114
|
+
representationInfo += "ad:".concat(isAudioDescription ? 1 : 0, " ");
|
|
115
|
+
}
|
|
116
|
+
if (bufferType === "text" && typeof isClosedCaption === "boolean") {
|
|
117
|
+
representationInfo += "cc:".concat(isClosedCaption ? 1 : 0, " ");
|
|
118
|
+
}
|
|
119
|
+
representationInfo += "p:".concat(period.start, "-").concat((_a = period.end) !== null && _a !== void 0 ? _a : "?");
|
|
120
|
+
return representationInfo;
|
|
121
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import BufferSizeGraph from "../buffer_size_graph";
|
|
2
|
+
import { DEFAULT_REFRESH_INTERVAL } from "../constants";
|
|
3
|
+
import { createElement, createGraphCanvas, createMetricTitle, } from "../utils";
|
|
4
|
+
export default function createSegmentBufferSizeGraph(instance, parentElt, cancelSignal) {
|
|
5
|
+
var bufferSizeGraphWrapperElt = createElement("div");
|
|
6
|
+
var bufferSizeTitle = createMetricTitle("bgap");
|
|
7
|
+
var canvasElt = createGraphCanvas();
|
|
8
|
+
var bufferSizeGraph = new BufferSizeGraph(canvasElt);
|
|
9
|
+
var intervalId = setInterval(addBufferSize, DEFAULT_REFRESH_INTERVAL);
|
|
10
|
+
cancelSignal.register(function () {
|
|
11
|
+
clearInterval(intervalId);
|
|
12
|
+
});
|
|
13
|
+
bufferSizeGraphWrapperElt.appendChild(bufferSizeTitle);
|
|
14
|
+
bufferSizeGraphWrapperElt.appendChild(canvasElt);
|
|
15
|
+
bufferSizeGraphWrapperElt.style.padding = "7px 0px";
|
|
16
|
+
addBufferSize();
|
|
17
|
+
return bufferSizeGraphWrapperElt;
|
|
18
|
+
function addBufferSize() {
|
|
19
|
+
if (instance.getVideoElement() === null) {
|
|
20
|
+
// disposed player. Clean-up everything
|
|
21
|
+
bufferSizeGraphWrapperElt.innerHTML = "";
|
|
22
|
+
clearInterval(intervalId);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
var bufferGap = instance.getVideoBufferGap();
|
|
26
|
+
if (bufferGap === Infinity) {
|
|
27
|
+
bufferSizeGraph.pushBufferSize(0);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
bufferSizeGraph.pushBufferSize(bufferGap);
|
|
31
|
+
}
|
|
32
|
+
var width = Math.min(parentElt.clientWidth - 150, 600);
|
|
33
|
+
bufferSizeGraph.reRender(width, 10);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import constructDebugGeneralInfo from "./modules/general_info";
|
|
2
|
+
import createSegmentBufferGraph from "./modules/segment_buffer_content";
|
|
3
|
+
import createSegmentBufferSizeGraph from "./modules/segment_buffer_size";
|
|
4
|
+
import { createCompositeElement, createElement } from "./utils";
|
|
5
|
+
export default function renderDebugElement(parentElt, instance, cancelSignal) {
|
|
6
|
+
var debugElementTitleElt = createElement("div", {
|
|
7
|
+
textContent: "RxPlayer Debug Information",
|
|
8
|
+
});
|
|
9
|
+
debugElementTitleElt.style.fontWeight = "bold";
|
|
10
|
+
debugElementTitleElt.style.borderBottom = "1px solid white";
|
|
11
|
+
debugElementTitleElt.style.marginBottom = "5px";
|
|
12
|
+
debugElementTitleElt.style.fontStyle = "italic";
|
|
13
|
+
var debugWrapperElt = createCompositeElement("div", [
|
|
14
|
+
debugElementTitleElt,
|
|
15
|
+
constructDebugGeneralInfo(instance, parentElt, cancelSignal),
|
|
16
|
+
createSegmentBufferGraph(instance, "video", "vbuf", parentElt, cancelSignal),
|
|
17
|
+
createSegmentBufferGraph(instance, "audio", "abuf", parentElt, cancelSignal),
|
|
18
|
+
createSegmentBufferGraph(instance, "text", "tbuf", parentElt, cancelSignal),
|
|
19
|
+
createSegmentBufferSizeGraph(instance, parentElt, cancelSignal),
|
|
20
|
+
]);
|
|
21
|
+
debugWrapperElt.style.backgroundColor = "#00000099";
|
|
22
|
+
debugWrapperElt.style.padding = "7px";
|
|
23
|
+
debugWrapperElt.style.fontSize = "13px";
|
|
24
|
+
debugWrapperElt.style.fontFamily = "mono";
|
|
25
|
+
debugWrapperElt.style.color = "white";
|
|
26
|
+
debugWrapperElt.style.display = "inline-block";
|
|
27
|
+
debugWrapperElt.style.bottom = "0px";
|
|
28
|
+
parentElt.appendChild(debugWrapperElt);
|
|
29
|
+
cancelSignal.register(function () {
|
|
30
|
+
parentElt.removeChild(debugWrapperElt);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create an HTML element.
|
|
3
|
+
* @param {string} elementName - The element's name, like `"div"` for example.
|
|
4
|
+
* @param {Object} [options={}] - Optional attributes for the element.
|
|
5
|
+
* @param {string} [options.textContent] - Inner text for that element.
|
|
6
|
+
* @param {string} [options.className] - Value for a `class` attribute
|
|
7
|
+
* associated to this element.
|
|
8
|
+
* @param {string} [options.href] - Value for a `href` attribute
|
|
9
|
+
* associated to this element.
|
|
10
|
+
* @returns {HTMLElement}
|
|
11
|
+
*/
|
|
12
|
+
export declare function createElement(elementName: "input", opts?: CreateElementOptions | undefined): HTMLInputElement;
|
|
13
|
+
export declare function createElement(elementName: "button", opts?: CreateElementOptions | undefined): HTMLButtonElement;
|
|
14
|
+
export declare function createElement(elementName: "a", opts?: CreateElementOptions | undefined): HTMLLinkElement;
|
|
15
|
+
export declare function createElement(elementName: "canvas", opts?: CreateElementOptions | undefined): HTMLCanvasElement;
|
|
16
|
+
export declare function createElement(elementName: string, opts?: CreateElementOptions | undefined): HTMLElement;
|
|
17
|
+
interface CreateElementOptions {
|
|
18
|
+
textContent?: string | undefined;
|
|
19
|
+
className?: string | undefined;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create an HTML element which may contain mutiple HTML sub-elements.
|
|
23
|
+
* @param {string} rootElementName - The element's name, like `"div"` for
|
|
24
|
+
* example.
|
|
25
|
+
* @param {Array.<string|HTMLElement>} parts - The HTML sub-elements, in order.
|
|
26
|
+
* Those can also just be strings, in which case only text nodes (and no actual
|
|
27
|
+
* HTMLElement) will be added at this place.
|
|
28
|
+
* @param {Object} [options={}] - Optional attributes for the element.
|
|
29
|
+
* @param {string} [options.className] - Value for a `class` attribute
|
|
30
|
+
* associated to this element.
|
|
31
|
+
* @returns {HTMLElement}
|
|
32
|
+
*/
|
|
33
|
+
export declare function createCompositeElement(rootElementName: string, parts: Array<HTMLElement | string>, { className }?: {
|
|
34
|
+
className?: string;
|
|
35
|
+
} | undefined): HTMLElement;
|
|
36
|
+
export declare function isExtendedMode(parentElt: HTMLElement): boolean;
|
|
37
|
+
export declare function createMetricTitle(title: string): HTMLElement;
|
|
38
|
+
export declare function createGraphCanvas(): HTMLCanvasElement;
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export function createElement(elementName, _a) {
|
|
2
|
+
var _b = _a === void 0 ? {} : _a, textContent = _b.textContent, className = _b.className;
|
|
3
|
+
var elt = document.createElement(elementName);
|
|
4
|
+
if (className !== undefined) {
|
|
5
|
+
elt.className = className;
|
|
6
|
+
}
|
|
7
|
+
if (textContent !== undefined) {
|
|
8
|
+
elt.textContent = textContent;
|
|
9
|
+
}
|
|
10
|
+
return elt;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create an HTML element which may contain mutiple HTML sub-elements.
|
|
14
|
+
* @param {string} rootElementName - The element's name, like `"div"` for
|
|
15
|
+
* example.
|
|
16
|
+
* @param {Array.<string|HTMLElement>} parts - The HTML sub-elements, in order.
|
|
17
|
+
* Those can also just be strings, in which case only text nodes (and no actual
|
|
18
|
+
* HTMLElement) will be added at this place.
|
|
19
|
+
* @param {Object} [options={}] - Optional attributes for the element.
|
|
20
|
+
* @param {string} [options.className] - Value for a `class` attribute
|
|
21
|
+
* associated to this element.
|
|
22
|
+
* @returns {HTMLElement}
|
|
23
|
+
*/
|
|
24
|
+
export function createCompositeElement(rootElementName, parts, _a) {
|
|
25
|
+
var _b = _a === void 0 ? {} : _a, className = _b.className;
|
|
26
|
+
var elt = document.createElement(rootElementName);
|
|
27
|
+
if (className !== undefined) {
|
|
28
|
+
elt.className = className;
|
|
29
|
+
}
|
|
30
|
+
for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {
|
|
31
|
+
var subElt = parts_1[_i];
|
|
32
|
+
if (typeof subElt === "string") {
|
|
33
|
+
elt.appendChild(document.createTextNode(subElt));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
elt.appendChild(subElt);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return elt;
|
|
40
|
+
}
|
|
41
|
+
export function isExtendedMode(parentElt) {
|
|
42
|
+
return parentElt.clientHeight > 400;
|
|
43
|
+
}
|
|
44
|
+
export function createMetricTitle(title) {
|
|
45
|
+
var elt = createElement("span", {
|
|
46
|
+
textContent: title + "/",
|
|
47
|
+
});
|
|
48
|
+
elt.style.fontWeight = "bold";
|
|
49
|
+
return elt;
|
|
50
|
+
}
|
|
51
|
+
export function createGraphCanvas() {
|
|
52
|
+
var canvasElt = createElement("canvas");
|
|
53
|
+
canvasElt.style.border = "1px solid white";
|
|
54
|
+
canvasElt.style.height = "15px";
|
|
55
|
+
canvasElt.style.marginLeft = "2px";
|
|
56
|
+
return canvasElt;
|
|
57
|
+
}
|
|
@@ -154,7 +154,7 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
154
154
|
*/
|
|
155
155
|
PlaybackObserver.prototype.listen = function (cb, options) {
|
|
156
156
|
var _a;
|
|
157
|
-
if (this._canceller.isUsed || ((_a = options === null || options === void 0 ? void 0 : options.clearSignal) === null || _a === void 0 ? void 0 : _a.isCancelled) === true) {
|
|
157
|
+
if (this._canceller.isUsed() || ((_a = options === null || options === void 0 ? void 0 : options.clearSignal) === null || _a === void 0 ? void 0 : _a.isCancelled()) === true) {
|
|
158
158
|
return noop;
|
|
159
159
|
}
|
|
160
160
|
this._observationRef.onUpdate(cb, {
|
|
@@ -565,7 +565,8 @@ function generateReadOnlyObserver(src, transform, cancellationSignal) {
|
|
|
565
565
|
},
|
|
566
566
|
listen: function (cb, options) {
|
|
567
567
|
var _a;
|
|
568
|
-
if (cancellationSignal.isCancelled
|
|
568
|
+
if (cancellationSignal.isCancelled() ||
|
|
569
|
+
((_a = options === null || options === void 0 ? void 0 : options.clearSignal) === null || _a === void 0 ? void 0 : _a.isCancelled()) === true) {
|
|
569
570
|
return;
|
|
570
571
|
}
|
|
571
572
|
mappedRef.onUpdate(cb, {
|
|
@@ -161,6 +161,9 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
161
161
|
};
|
|
162
162
|
autoPlay?: boolean;
|
|
163
163
|
}): void;
|
|
164
|
+
createDebugElement(element: HTMLElement): {
|
|
165
|
+
dispose(): void;
|
|
166
|
+
};
|
|
164
167
|
/**
|
|
165
168
|
* From given options, initialize content playback.
|
|
166
169
|
* @param {Object} options
|
|
@@ -89,7 +89,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
89
89
|
// Workaround to support Firefox autoplay on FF 42.
|
|
90
90
|
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
|
|
91
91
|
videoElement.preload = "auto";
|
|
92
|
-
_this.version = /* PLAYER_VERSION */ "3.30.0-dev.
|
|
92
|
+
_this.version = /* PLAYER_VERSION */ "3.30.0-dev.2023030200";
|
|
93
93
|
_this.log = log;
|
|
94
94
|
_this.state = "STOPPED";
|
|
95
95
|
_this.videoElement = videoElement;
|
|
@@ -312,6 +312,18 @@ var Player = /** @class */ (function (_super) {
|
|
|
312
312
|
}
|
|
313
313
|
this._priv_initializeContentPlayback(newOptions);
|
|
314
314
|
};
|
|
315
|
+
Player.prototype.createDebugElement = function (element) {
|
|
316
|
+
if (features.createDebugElement === null) {
|
|
317
|
+
throw new Error("Feature `DEBUG_ELEMENT` not added to the RxPlayer");
|
|
318
|
+
}
|
|
319
|
+
var canceller = new TaskCanceller();
|
|
320
|
+
features.createDebugElement(element, this, canceller.signal);
|
|
321
|
+
return {
|
|
322
|
+
dispose: function () {
|
|
323
|
+
canceller.cancel();
|
|
324
|
+
},
|
|
325
|
+
};
|
|
326
|
+
};
|
|
315
327
|
/**
|
|
316
328
|
* From given options, initialize content playback.
|
|
317
329
|
* @param {Object} options
|
|
@@ -422,7 +434,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
422
434
|
}
|
|
423
435
|
mediaElementTrackChoiceManager =
|
|
424
436
|
this._priv_initializeMediaElementTrackChoiceManager(defaultAudioTrack, defaultTextTrack, currentContentCanceller.signal);
|
|
425
|
-
if (currentContentCanceller.isUsed) {
|
|
437
|
+
if (currentContentCanceller.isUsed()) {
|
|
426
438
|
return;
|
|
427
439
|
}
|
|
428
440
|
initializer = new features.directfile.initDirectFile({ autoPlay: autoPlay, keySystems: keySystems, speed: this._priv_speed, startAt: startAt, url: url });
|
|
@@ -589,7 +601,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
589
601
|
playerStateRef.onUpdate(function (newState) {
|
|
590
602
|
updateReloadingMetadata(newState);
|
|
591
603
|
_this._priv_setPlayerState(newState);
|
|
592
|
-
if (currentContentCanceller.isUsed) {
|
|
604
|
+
if (currentContentCanceller.isUsed()) {
|
|
593
605
|
return;
|
|
594
606
|
}
|
|
595
607
|
if (seekEventsCanceller !== null) {
|
|
@@ -599,15 +611,14 @@ var Player = /** @class */ (function (_super) {
|
|
|
599
611
|
}
|
|
600
612
|
}
|
|
601
613
|
else if (isLoadedState(_this.state)) {
|
|
602
|
-
seekEventsCanceller = new TaskCanceller(
|
|
603
|
-
|
|
604
|
-
});
|
|
614
|
+
seekEventsCanceller = new TaskCanceller();
|
|
615
|
+
seekEventsCanceller.linkToSignal(currentContentCanceller.signal);
|
|
605
616
|
emitSeekEvents(videoElement, playbackObserver, function () { return _this.trigger("seeking", null); }, function () { return _this.trigger("seeked", null); }, seekEventsCanceller.signal);
|
|
606
617
|
}
|
|
607
618
|
// Previous call could have performed all kind of side-effects, thus,
|
|
608
619
|
// we re-check the current state associated to the RxPlayer
|
|
609
620
|
if (_this.state === "ENDED" /* PLAYER_STATES.ENDED */ && _this._priv_stopAtEnd) {
|
|
610
|
-
|
|
621
|
+
_this.stop();
|
|
611
622
|
}
|
|
612
623
|
}, { emitCurrentValue: true, clearSignal: currentContentCanceller.signal });
|
|
613
624
|
// React to playback conditions change
|
|
@@ -1933,16 +1944,16 @@ var Player = /** @class */ (function (_super) {
|
|
|
1933
1944
|
this._priv_triggerEventIfNotStopped("videoTrackChange", null, cancelSignal);
|
|
1934
1945
|
}
|
|
1935
1946
|
this._priv_triggerAvailableBitratesChangeEvent("availableAudioBitratesChange", this.getAvailableAudioBitrates(), cancelSignal);
|
|
1936
|
-
if (contentInfos.currentContentCanceller.isUsed) {
|
|
1947
|
+
if (contentInfos.currentContentCanceller.isUsed()) {
|
|
1937
1948
|
return;
|
|
1938
1949
|
}
|
|
1939
1950
|
this._priv_triggerAvailableBitratesChangeEvent("availableVideoBitratesChange", this.getAvailableVideoBitrates(), cancelSignal);
|
|
1940
|
-
if (contentInfos.currentContentCanceller.isUsed) {
|
|
1951
|
+
if (contentInfos.currentContentCanceller.isUsed()) {
|
|
1941
1952
|
return;
|
|
1942
1953
|
}
|
|
1943
1954
|
var audioBitrate = (_f = (_e = (_d = this._priv_getCurrentRepresentations()) === null || _d === void 0 ? void 0 : _d.audio) === null || _e === void 0 ? void 0 : _e.bitrate) !== null && _f !== void 0 ? _f : -1;
|
|
1944
1955
|
this._priv_triggerCurrentBitrateChangeEvent("audioBitrateChange", audioBitrate, cancelSignal);
|
|
1945
|
-
if (contentInfos.currentContentCanceller.isUsed) {
|
|
1956
|
+
if (contentInfos.currentContentCanceller.isUsed()) {
|
|
1946
1957
|
return;
|
|
1947
1958
|
}
|
|
1948
1959
|
var videoBitrate = (_j = (_h = (_g = this._priv_getCurrentRepresentations()) === null || _g === void 0 ? void 0 : _g.video) === null || _h === void 0 ? void 0 : _h.bitrate) !== null && _j !== void 0 ? _j : -1;
|
|
@@ -2230,7 +2241,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
2230
2241
|
*/
|
|
2231
2242
|
Player.prototype._priv_triggerAvailableBitratesChangeEvent = function (event, newVal, currentContentCancelSignal) {
|
|
2232
2243
|
var prevVal = this._priv_contentEventsMemory[event];
|
|
2233
|
-
if (!currentContentCancelSignal.isCancelled &&
|
|
2244
|
+
if (!currentContentCancelSignal.isCancelled() &&
|
|
2234
2245
|
(prevVal === undefined || !areArraysOfNumbersEqual(newVal, prevVal))) {
|
|
2235
2246
|
this._priv_contentEventsMemory[event] = newVal;
|
|
2236
2247
|
this.trigger(event, newVal);
|
|
@@ -2244,7 +2255,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
2244
2255
|
* @param {Object} currentContentCancelSignal
|
|
2245
2256
|
*/
|
|
2246
2257
|
Player.prototype._priv_triggerCurrentBitrateChangeEvent = function (event, newVal, currentContentCancelSignal) {
|
|
2247
|
-
if (!currentContentCancelSignal.isCancelled &&
|
|
2258
|
+
if (!currentContentCancelSignal.isCancelled() &&
|
|
2248
2259
|
newVal !== this._priv_contentEventsMemory[event]) {
|
|
2249
2260
|
this._priv_contentEventsMemory[event] = newVal;
|
|
2250
2261
|
this.trigger(event, newVal);
|
|
@@ -2268,7 +2279,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
2268
2279
|
* @param {Object} currentContentCancelSignal
|
|
2269
2280
|
*/
|
|
2270
2281
|
Player.prototype._priv_triggerEventIfNotStopped = function (evt, arg, currentContentCancelSignal) {
|
|
2271
|
-
if (!currentContentCancelSignal.isCancelled) {
|
|
2282
|
+
if (!currentContentCancelSignal.isCancelled()) {
|
|
2272
2283
|
this.trigger(evt, arg);
|
|
2273
2284
|
}
|
|
2274
2285
|
};
|
|
@@ -2328,5 +2339,5 @@ var Player = /** @class */ (function (_super) {
|
|
|
2328
2339
|
};
|
|
2329
2340
|
return Player;
|
|
2330
2341
|
}(EventEmitter));
|
|
2331
|
-
Player.version = /* PLAYER_VERSION */ "3.30.0-dev.
|
|
2342
|
+
Player.version = /* PLAYER_VERSION */ "3.30.0-dev.2023030200";
|
|
2332
2343
|
export default Player;
|