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
|
@@ -40,7 +40,8 @@ var MediaDurationUpdater = /** @class */ (function () {
|
|
|
40
40
|
this._currentKnownDuration = currentKnownDuration;
|
|
41
41
|
var isMediaSourceOpened = createMediaSourceOpenReference(mediaSource, this._canceller.signal);
|
|
42
42
|
/** TaskCanceller triggered each time the MediaSource open status changes. */
|
|
43
|
-
var msUpdateCanceller = new TaskCanceller(
|
|
43
|
+
var msUpdateCanceller = new TaskCanceller();
|
|
44
|
+
msUpdateCanceller.linkToSignal(this._canceller.signal);
|
|
44
45
|
isMediaSourceOpened.onUpdate(onMediaSourceOpenedStatusChanged, { emitCurrentValue: true,
|
|
45
46
|
clearSignal: this._canceller.signal });
|
|
46
47
|
function onMediaSourceOpenedStatusChanged() {
|
|
@@ -48,16 +49,15 @@ var MediaDurationUpdater = /** @class */ (function () {
|
|
|
48
49
|
if (!isMediaSourceOpened.getValue()) {
|
|
49
50
|
return;
|
|
50
51
|
}
|
|
51
|
-
msUpdateCanceller = new TaskCanceller(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
msUpdateCanceller = new TaskCanceller();
|
|
53
|
+
msUpdateCanceller.linkToSignal(canceller.signal);
|
|
54
|
+
/** TaskCanceller triggered each time the content's duration may have changed */
|
|
55
|
+
var durationChangeCanceller = new TaskCanceller();
|
|
56
|
+
durationChangeCanceller.linkToSignal(msUpdateCanceller.signal);
|
|
56
57
|
var reSetDuration = function () {
|
|
57
58
|
durationChangeCanceller.cancel();
|
|
58
|
-
durationChangeCanceller = new TaskCanceller(
|
|
59
|
-
|
|
60
|
-
});
|
|
59
|
+
durationChangeCanceller = new TaskCanceller();
|
|
60
|
+
durationChangeCanceller.linkToSignal(msUpdateCanceller.signal);
|
|
61
61
|
onDurationMayHaveChanged(durationChangeCanceller.signal);
|
|
62
62
|
};
|
|
63
63
|
currentKnownDuration.onUpdate(reSetDuration, { emitCurrentValue: false,
|
|
@@ -68,10 +68,12 @@ var MediaDurationUpdater = /** @class */ (function () {
|
|
|
68
68
|
function onDurationMayHaveChanged(cancelSignal) {
|
|
69
69
|
var areSourceBuffersUpdating = createSourceBuffersUpdatingReference(mediaSource.sourceBuffers, cancelSignal);
|
|
70
70
|
/** TaskCanceller triggered each time SourceBuffers' updating status changes */
|
|
71
|
-
var sourceBuffersUpdatingCanceller = new TaskCanceller(
|
|
71
|
+
var sourceBuffersUpdatingCanceller = new TaskCanceller();
|
|
72
|
+
sourceBuffersUpdatingCanceller.linkToSignal(cancelSignal);
|
|
72
73
|
return areSourceBuffersUpdating.onUpdate(function (areUpdating) {
|
|
73
74
|
sourceBuffersUpdatingCanceller.cancel();
|
|
74
|
-
sourceBuffersUpdatingCanceller = new TaskCanceller(
|
|
75
|
+
sourceBuffersUpdatingCanceller = new TaskCanceller();
|
|
76
|
+
sourceBuffersUpdatingCanceller.linkToSignal(cancelSignal);
|
|
75
77
|
if (areUpdating) {
|
|
76
78
|
return;
|
|
77
79
|
}
|
|
@@ -119,19 +121,21 @@ function setMediaSourceDuration(mediaSource, manifest, knownDuration) {
|
|
|
119
121
|
var newDuration = knownDuration;
|
|
120
122
|
if (newDuration === undefined) {
|
|
121
123
|
if (manifest.isDynamic) {
|
|
122
|
-
|
|
123
|
-
// Some targets poorly support setting a very high number for durations.
|
|
124
|
-
// Yet, in dynamic contents, we would prefer setting a value as high as possible
|
|
125
|
-
// to still be able to seek anywhere we want to (even ahead of the Manifest if
|
|
126
|
-
// we want to). As such, we put it at a safe default value of 2^32 excepted
|
|
127
|
-
// when the maximum position is already relatively close to that value, where
|
|
128
|
-
// we authorize exceptionally going over it.
|
|
129
|
-
newDuration = Math.max(Math.pow(2, 32), maxPotentialPos + YEAR_IN_SECONDS);
|
|
124
|
+
newDuration = (_a = manifest.getLivePosition()) !== null && _a !== void 0 ? _a : manifest.getMaximumSafePosition();
|
|
130
125
|
}
|
|
131
126
|
else {
|
|
132
127
|
newDuration = manifest.getMaximumSafePosition();
|
|
133
128
|
}
|
|
134
129
|
}
|
|
130
|
+
if (manifest.isDynamic) {
|
|
131
|
+
// Some targets poorly support setting a very high number for durations.
|
|
132
|
+
// Yet, in dynamic contents, we would prefer setting a value as high as possible
|
|
133
|
+
// to still be able to seek anywhere we want to (even ahead of the Manifest if
|
|
134
|
+
// we want to). As such, we put it at a safe default value of 2^32 excepted
|
|
135
|
+
// when the maximum position is already relatively close to that value, where
|
|
136
|
+
// we authorize exceptionally going over it.
|
|
137
|
+
newDuration = Math.max(Math.pow(2, 32), newDuration + YEAR_IN_SECONDS);
|
|
138
|
+
}
|
|
135
139
|
var maxBufferedEnd = 0;
|
|
136
140
|
for (var i = 0; i < mediaSource.sourceBuffers.length; i++) {
|
|
137
141
|
var sourceBuffer = mediaSource.sourceBuffers[i];
|
|
@@ -100,7 +100,7 @@ var RebufferingController = /** @class */ (function (_super) {
|
|
|
100
100
|
this._canceller.signal.register(function () {
|
|
101
101
|
playbackRateUpdater.dispose();
|
|
102
102
|
});
|
|
103
|
-
var prevFreezingState;
|
|
103
|
+
var prevFreezingState = null;
|
|
104
104
|
this._playbackObserver.listen(function (observation) {
|
|
105
105
|
var _a;
|
|
106
106
|
var discontinuitiesStore = _this._discontinuitiesStore;
|
|
@@ -35,13 +35,15 @@ export default function streamEventsEmitter(manifest, mediaElement, playbackObse
|
|
|
35
35
|
scheduledEventsRef.setValue(refreshScheduledEventsList(prev, manifest));
|
|
36
36
|
}, cancelSignal);
|
|
37
37
|
var isPollingEvents = false;
|
|
38
|
-
var cancelCurrentPolling = new TaskCanceller(
|
|
38
|
+
var cancelCurrentPolling = new TaskCanceller();
|
|
39
|
+
cancelCurrentPolling.linkToSignal(cancelSignal);
|
|
39
40
|
scheduledEventsRef.onUpdate(function (_a) {
|
|
40
41
|
var scheduledEventsLength = _a.length;
|
|
41
42
|
if (scheduledEventsLength === 0) {
|
|
42
43
|
if (isPollingEvents) {
|
|
43
44
|
cancelCurrentPolling.cancel();
|
|
44
|
-
cancelCurrentPolling = new TaskCanceller(
|
|
45
|
+
cancelCurrentPolling = new TaskCanceller();
|
|
46
|
+
cancelCurrentPolling.linkToSignal(cancelSignal);
|
|
45
47
|
isPollingEvents = false;
|
|
46
48
|
}
|
|
47
49
|
return;
|
|
@@ -127,7 +129,7 @@ export default function streamEventsEmitter(manifest, mediaElement, playbackObse
|
|
|
127
129
|
else {
|
|
128
130
|
onEventSkip(event_2.value);
|
|
129
131
|
}
|
|
130
|
-
if (stopSignal.isCancelled) {
|
|
132
|
+
if (stopSignal.isCancelled()) {
|
|
131
133
|
return;
|
|
132
134
|
}
|
|
133
135
|
}
|
|
@@ -138,7 +140,7 @@ export default function streamEventsEmitter(manifest, mediaElement, playbackObse
|
|
|
138
140
|
if (typeof event_3.onExit === "function") {
|
|
139
141
|
event_3.onExit();
|
|
140
142
|
}
|
|
141
|
-
if (stopSignal.isCancelled) {
|
|
143
|
+
if (stopSignal.isCancelled()) {
|
|
142
144
|
return;
|
|
143
145
|
}
|
|
144
146
|
}
|
|
@@ -21,7 +21,7 @@ import isNullOrUndefined from "../../../utils/is_null_or_undefined";
|
|
|
21
21
|
* @param {Object} cancelSignal
|
|
22
22
|
*/
|
|
23
23
|
export default function listenToMediaError(mediaElement, onError, cancelSignal) {
|
|
24
|
-
if (cancelSignal.isCancelled) {
|
|
24
|
+
if (cancelSignal.isCancelled()) {
|
|
25
25
|
return;
|
|
26
26
|
}
|
|
27
27
|
mediaElement.addEventListener("error", onMediaError);
|
|
@@ -35,6 +35,7 @@ import { getLoggableSegmentId } from "../../../../manifest";
|
|
|
35
35
|
import areArraysOfNumbersEqual from "../../../../utils/are_arrays_of_numbers_equal";
|
|
36
36
|
import assertUnreachable from "../../../../utils/assert_unreachable";
|
|
37
37
|
import { toUint8Array } from "../../../../utils/byte_parsing";
|
|
38
|
+
import createCancellablePromise from "../../../../utils/create_cancellable_promise";
|
|
38
39
|
import hashBuffer from "../../../../utils/hash_buffer";
|
|
39
40
|
import noop from "../../../../utils/noop";
|
|
40
41
|
import objectAssign from "../../../../utils/object_assign";
|
|
@@ -227,15 +228,15 @@ var AudioVideoSegmentBuffer = /** @class */ (function (_super) {
|
|
|
227
228
|
*/
|
|
228
229
|
AudioVideoSegmentBuffer.prototype._addToQueue = function (operation, cancellationSignal) {
|
|
229
230
|
var _this = this;
|
|
230
|
-
return
|
|
231
|
-
if (cancellationSignal.cancellationError !== null) {
|
|
232
|
-
return reject(cancellationSignal.cancellationError);
|
|
233
|
-
}
|
|
231
|
+
return createCancellablePromise(cancellationSignal, function (resolve, reject) {
|
|
234
232
|
var shouldRestartQueue = _this._queue.length === 0 &&
|
|
235
233
|
_this._pendingTask === null;
|
|
236
234
|
var queueItem = objectAssign({ resolve: resolve, reject: reject }, operation);
|
|
237
235
|
_this._queue.push(queueItem);
|
|
238
|
-
|
|
236
|
+
if (shouldRestartQueue) {
|
|
237
|
+
_this._flush();
|
|
238
|
+
}
|
|
239
|
+
return function () {
|
|
239
240
|
// Remove the corresponding element from the AudioVideoSegmentBuffer's
|
|
240
241
|
// queue.
|
|
241
242
|
// If the operation was a pending task, it should still continue to not
|
|
@@ -246,11 +247,7 @@ var AudioVideoSegmentBuffer = /** @class */ (function (_super) {
|
|
|
246
247
|
}
|
|
247
248
|
queueItem.resolve = noop;
|
|
248
249
|
queueItem.reject = noop;
|
|
249
|
-
|
|
250
|
-
});
|
|
251
|
-
if (shouldRestartQueue) {
|
|
252
|
-
_this._flush();
|
|
253
|
-
}
|
|
250
|
+
};
|
|
254
251
|
});
|
|
255
252
|
};
|
|
256
253
|
/**
|
|
@@ -272,7 +272,8 @@ var HTMLTextSegmentBuffer = /** @class */ (function (_super) {
|
|
|
272
272
|
var proportionalCues = this._currentCues
|
|
273
273
|
.filter(function (cue) { return cue.resolution !== null; });
|
|
274
274
|
if (proportionalCues.length > 0) {
|
|
275
|
-
this._sizeUpdateCanceller = new TaskCanceller(
|
|
275
|
+
this._sizeUpdateCanceller = new TaskCanceller();
|
|
276
|
+
this._sizeUpdateCanceller.linkToSignal(this._canceller.signal);
|
|
276
277
|
var TEXT_TRACK_SIZE_CHECKS_INTERVAL = config.getCurrent().TEXT_TRACK_SIZE_CHECKS_INTERVAL;
|
|
277
278
|
// update propertionally-sized elements periodically
|
|
278
279
|
var heightWidthRef = onHeightWidthChange(this._textTrackElement, TEXT_TRACK_SIZE_CHECKS_INTERVAL, this._sizeUpdateCanceller.signal);
|
|
@@ -297,7 +298,8 @@ var HTMLTextSegmentBuffer = /** @class */ (function (_super) {
|
|
|
297
298
|
var MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL = config.getCurrent().MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL;
|
|
298
299
|
var startAutoRefresh = function () {
|
|
299
300
|
stopAutoRefresh();
|
|
300
|
-
autoRefreshCanceller = new TaskCanceller(
|
|
301
|
+
autoRefreshCanceller = new TaskCanceller();
|
|
302
|
+
autoRefreshCanceller.linkToSignal(cancellationSignal);
|
|
301
303
|
var intervalId = setInterval(function () { return _this.refreshSubtitles(); }, MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL);
|
|
302
304
|
autoRefreshCanceller.signal.register(function () {
|
|
303
305
|
clearInterval(intervalId);
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import { MediaError } from "../../errors";
|
|
17
17
|
import features from "../../features";
|
|
18
18
|
import log from "../../log";
|
|
19
|
+
import createCancellablePromise from "../../utils/create_cancellable_promise";
|
|
19
20
|
import { AudioVideoSegmentBuffer, } from "./implementations";
|
|
20
21
|
var POSSIBLE_BUFFER_TYPES = ["audio",
|
|
21
22
|
"video",
|
|
@@ -141,20 +142,23 @@ var SegmentBuffersStore = /** @class */ (function () {
|
|
|
141
142
|
if (this._areNativeBuffersUsable()) {
|
|
142
143
|
return Promise.resolve();
|
|
143
144
|
}
|
|
144
|
-
return
|
|
145
|
-
|
|
145
|
+
return createCancellablePromise(cancelWaitSignal, function (res) {
|
|
146
|
+
/* eslint-disable-next-line prefer-const */
|
|
147
|
+
var onAddedOrDisabled;
|
|
148
|
+
var removeCallback = function () {
|
|
149
|
+
var indexOf = _this._onNativeBufferAddedOrDisabled.indexOf(onAddedOrDisabled);
|
|
150
|
+
if (indexOf >= 0) {
|
|
151
|
+
_this._onNativeBufferAddedOrDisabled.splice(indexOf, 1);
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
onAddedOrDisabled = function () {
|
|
146
155
|
if (_this._areNativeBuffersUsable()) {
|
|
156
|
+
removeCallback();
|
|
147
157
|
res();
|
|
148
158
|
}
|
|
149
159
|
};
|
|
150
160
|
_this._onNativeBufferAddedOrDisabled.push(onAddedOrDisabled);
|
|
151
|
-
|
|
152
|
-
var indexOf = _this._onNativeBufferAddedOrDisabled.indexOf(onAddedOrDisabled);
|
|
153
|
-
if (indexOf >= 0) {
|
|
154
|
-
_this._onNativeBufferAddedOrDisabled.splice(indexOf, 1);
|
|
155
|
-
}
|
|
156
|
-
rej(error);
|
|
157
|
-
});
|
|
161
|
+
return removeCallback;
|
|
158
162
|
});
|
|
159
163
|
};
|
|
160
164
|
/**
|
|
@@ -17,6 +17,8 @@ import nextTick from "next-tick";
|
|
|
17
17
|
import config from "../../../config";
|
|
18
18
|
import { formatError } from "../../../errors";
|
|
19
19
|
import log from "../../../log";
|
|
20
|
+
import cancellableSleep from "../../../utils/cancellable_sleep";
|
|
21
|
+
import noop from "../../../utils/noop";
|
|
20
22
|
import objectAssign from "../../../utils/object_assign";
|
|
21
23
|
import { createMappedReference, createSharedReference, } from "../../../utils/reference";
|
|
22
24
|
import TaskCanceller from "../../../utils/task_canceller";
|
|
@@ -57,7 +59,8 @@ export default function AdaptationStream(_a, callbacks, parentCancelSignal) {
|
|
|
57
59
|
var directManualBitrateSwitching = options.manualBitrateSwitchingMode === "direct";
|
|
58
60
|
var manifest = content.manifest, period = content.period, adaptation = content.adaptation;
|
|
59
61
|
/** Allows to cancel everything the `AdaptationStream` is doing. */
|
|
60
|
-
var adapStreamCanceller = new TaskCanceller(
|
|
62
|
+
var adapStreamCanceller = new TaskCanceller();
|
|
63
|
+
adapStreamCanceller.linkToSignal(parentCancelSignal);
|
|
61
64
|
/**
|
|
62
65
|
* The buffer goal ratio base itself on the value given by `wantedBufferAhead`
|
|
63
66
|
* to determine a more dynamic buffer goal for a given Representation.
|
|
@@ -117,9 +120,8 @@ export default function AdaptationStream(_a, callbacks, parentCancelSignal) {
|
|
|
117
120
|
* terminating and as such the next one might be immediately created
|
|
118
121
|
* recursively.
|
|
119
122
|
*/
|
|
120
|
-
var repStreamTerminatingCanceller = new TaskCanceller(
|
|
121
|
-
|
|
122
|
-
});
|
|
123
|
+
var repStreamTerminatingCanceller = new TaskCanceller();
|
|
124
|
+
repStreamTerminatingCanceller.linkToSignal(adapStreamCanceller.signal);
|
|
123
125
|
var _a = estimateRef.getValue(), representation = _a.representation, manual = _a.manual;
|
|
124
126
|
if (representation === null) {
|
|
125
127
|
return;
|
|
@@ -188,11 +190,11 @@ export default function AdaptationStream(_a, callbacks, parentCancelSignal) {
|
|
|
188
190
|
}
|
|
189
191
|
var repInfo = { type: adaptation.type, period: period, representation: representation };
|
|
190
192
|
currentRepresentation.setValue(representation);
|
|
191
|
-
if (adapStreamCanceller.isUsed) {
|
|
193
|
+
if (adapStreamCanceller.isUsed()) {
|
|
192
194
|
return; // previous callback has stopped everything by side-effect
|
|
193
195
|
}
|
|
194
196
|
callbacks.representationChange(repInfo);
|
|
195
|
-
if (adapStreamCanceller.isUsed) {
|
|
197
|
+
if (adapStreamCanceller.isUsed()) {
|
|
196
198
|
return; // previous callback has stopped everything by side-effect
|
|
197
199
|
}
|
|
198
200
|
var representationStreamCallbacks = {
|
|
@@ -208,13 +210,13 @@ export default function AdaptationStream(_a, callbacks, parentCancelSignal) {
|
|
|
208
210
|
},
|
|
209
211
|
addedSegment: function (segmentInfo) {
|
|
210
212
|
abrCallbacks.addedSegment(segmentInfo);
|
|
211
|
-
if (adapStreamCanceller.isUsed) {
|
|
213
|
+
if (adapStreamCanceller.isUsed()) {
|
|
212
214
|
return;
|
|
213
215
|
}
|
|
214
216
|
callbacks.addedSegment(segmentInfo);
|
|
215
217
|
},
|
|
216
218
|
terminating: function () {
|
|
217
|
-
if (repStreamTerminatingCanceller.isUsed) {
|
|
219
|
+
if (repStreamTerminatingCanceller.isUsed()) {
|
|
218
220
|
return; // Already handled
|
|
219
221
|
}
|
|
220
222
|
repStreamTerminatingCanceller.cancel();
|
|
@@ -236,9 +238,8 @@ export default function AdaptationStream(_a, callbacks, parentCancelSignal) {
|
|
|
236
238
|
* `TaskCanceller` triggered when the `RepresentationStream` calls its
|
|
237
239
|
* `terminating` callback.
|
|
238
240
|
*/
|
|
239
|
-
var terminatingRepStreamCanceller = new TaskCanceller(
|
|
240
|
-
|
|
241
|
-
});
|
|
241
|
+
var terminatingRepStreamCanceller = new TaskCanceller();
|
|
242
|
+
terminatingRepStreamCanceller.linkToSignal(adapStreamCanceller.signal);
|
|
242
243
|
var bufferGoal = createMappedReference(wantedBufferAhead, function (prev) {
|
|
243
244
|
return prev * getBufferGoalRatio(representation);
|
|
244
245
|
}, terminatingRepStreamCanceller.signal);
|
|
@@ -253,16 +254,24 @@ export default function AdaptationStream(_a, callbacks, parentCancelSignal) {
|
|
|
253
254
|
defaultCode: "NONE",
|
|
254
255
|
defaultReason: "Unknown `RepresentationStream` error",
|
|
255
256
|
});
|
|
256
|
-
if (formattedError.code
|
|
257
|
+
if (formattedError.code !== "BUFFER_FULL_ERROR") {
|
|
258
|
+
representationStreamCallbacks.error(err);
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
257
261
|
var wba = wantedBufferAhead.getValue();
|
|
258
262
|
var lastBufferGoalRatio = (_a = bufferGoalRatioMap.get(representation.id)) !== null && _a !== void 0 ? _a : 1;
|
|
259
|
-
|
|
263
|
+
// 70%, 49%, 34.3%, 24%, 16.81%, 11.76%, 8.24% and 5.76%
|
|
264
|
+
var newBufferGoalRatio = lastBufferGoalRatio * 0.7;
|
|
265
|
+
if (newBufferGoalRatio <= 0.05 || wba * newBufferGoalRatio <= 2) {
|
|
260
266
|
throw formattedError;
|
|
261
267
|
}
|
|
262
|
-
bufferGoalRatioMap.set(representation.id,
|
|
263
|
-
|
|
268
|
+
bufferGoalRatioMap.set(representation.id, newBufferGoalRatio);
|
|
269
|
+
// We wait 4 seconds to let the situation evolve by itself before
|
|
270
|
+
// retrying loading segments with a lower buffer goal
|
|
271
|
+
cancellableSleep(4000, adapStreamCanceller.signal).then(function () {
|
|
272
|
+
return createRepresentationStream(representation, terminateCurrentStream, fastSwitchThreshold, representationStreamCallbacks);
|
|
273
|
+
}).catch(noop);
|
|
264
274
|
}
|
|
265
|
-
representationStreamCallbacks.error(err);
|
|
266
275
|
},
|
|
267
276
|
terminating: function () {
|
|
268
277
|
terminatingRepStreamCanceller.cancel();
|
|
@@ -146,9 +146,10 @@ export default function StreamOrchestrator(content, playbackObserver, representa
|
|
|
146
146
|
};
|
|
147
147
|
});
|
|
148
148
|
// Create automatically the right `PeriodStream` for every possible types
|
|
149
|
-
segmentBuffersStore.getBufferTypes().
|
|
149
|
+
for (var _i = 0, _b = segmentBuffersStore.getBufferTypes(); _i < _b.length; _i++) {
|
|
150
|
+
var bufferType = _b[_i];
|
|
150
151
|
manageEveryStreams(bufferType, initialPeriod);
|
|
151
|
-
}
|
|
152
|
+
}
|
|
152
153
|
/**
|
|
153
154
|
* Manage creation and removal of Streams for every Periods for a given type.
|
|
154
155
|
*
|
|
@@ -170,7 +171,8 @@ export default function StreamOrchestrator(content, playbackObserver, representa
|
|
|
170
171
|
*/
|
|
171
172
|
var enableOutOfBoundsCheck = false;
|
|
172
173
|
/** Cancels currently created `PeriodStream`s. */
|
|
173
|
-
var currentCanceller = new TaskCanceller(
|
|
174
|
+
var currentCanceller = new TaskCanceller();
|
|
175
|
+
currentCanceller.linkToSignal(orchestratorCancelSignal);
|
|
174
176
|
// Restart the current Stream when the wanted time is in another period
|
|
175
177
|
// than the ones already considered
|
|
176
178
|
playbackObserver.listen(function (_a) {
|
|
@@ -188,7 +190,8 @@ export default function StreamOrchestrator(content, playbackObserver, representa
|
|
|
188
190
|
callbacks.periodStreamCleared({ type: bufferType, period: period });
|
|
189
191
|
}
|
|
190
192
|
currentCanceller.cancel();
|
|
191
|
-
currentCanceller = new TaskCanceller(
|
|
193
|
+
currentCanceller = new TaskCanceller();
|
|
194
|
+
currentCanceller.linkToSignal(orchestratorCancelSignal);
|
|
192
195
|
var nextPeriod = (_c = manifest.getPeriodForTime(time)) !== null && _c !== void 0 ? _c : manifest.getNextPeriod(time);
|
|
193
196
|
if (nextPeriod === undefined) {
|
|
194
197
|
log.warn("Stream: The wanted position is not found in the Manifest.");
|
|
@@ -264,8 +267,15 @@ export default function StreamOrchestrator(content, playbackObserver, representa
|
|
|
264
267
|
segmentBufferStatus = segmentBuffersStore.getStatus(bufferType);
|
|
265
268
|
ofCurrentType = updates
|
|
266
269
|
.filter(function (update) { return update.adaptation.type === bufferType; });
|
|
267
|
-
if (
|
|
268
|
-
|
|
270
|
+
if (
|
|
271
|
+
// No update concerns the current type of data
|
|
272
|
+
ofCurrentType.length === 0 ||
|
|
273
|
+
segmentBufferStatus.type !== "initialized" ||
|
|
274
|
+
// The update only notifies of now-decipherable streams
|
|
275
|
+
ofCurrentType.every(function (x) { return x.representation.decipherable === true; })) {
|
|
276
|
+
// Data won't have to be removed from the buffers, no need to stop the
|
|
277
|
+
// current Streams.
|
|
278
|
+
return [2 /*return*/];
|
|
269
279
|
}
|
|
270
280
|
segmentBuffer = segmentBufferStatus.value;
|
|
271
281
|
resettedContent = ofCurrentType.filter(function (update) {
|
|
@@ -286,7 +296,8 @@ export default function StreamOrchestrator(content, playbackObserver, representa
|
|
|
286
296
|
callbacks.periodStreamCleared({ type: bufferType, period: period });
|
|
287
297
|
}
|
|
288
298
|
currentCanceller.cancel();
|
|
289
|
-
currentCanceller = new TaskCanceller(
|
|
299
|
+
currentCanceller = new TaskCanceller();
|
|
300
|
+
currentCanceller.linkToSignal(orchestratorCancelSignal);
|
|
290
301
|
_i = 0, _a = __spreadArray(__spreadArray([], undecipherableRanges, true), rangesToRemove, true);
|
|
291
302
|
_c.label = 1;
|
|
292
303
|
case 1:
|
|
@@ -306,7 +317,7 @@ export default function StreamOrchestrator(content, playbackObserver, representa
|
|
|
306
317
|
// was going to be emitted synchronously.
|
|
307
318
|
nextTick(function () {
|
|
308
319
|
var _a, _b;
|
|
309
|
-
if (orchestratorCancelSignal.isCancelled) {
|
|
320
|
+
if (orchestratorCancelSignal.isCancelled()) {
|
|
310
321
|
return;
|
|
311
322
|
}
|
|
312
323
|
var observation = playbackObserver.getReference().getValue();
|
|
@@ -315,13 +326,13 @@ export default function StreamOrchestrator(content, playbackObserver, representa
|
|
|
315
326
|
callbacks.needsDecipherabilityFlush({ position: observation.position.last,
|
|
316
327
|
autoPlay: shouldAutoPlay,
|
|
317
328
|
duration: observation.duration });
|
|
318
|
-
if (orchestratorCancelSignal.isCancelled) {
|
|
329
|
+
if (orchestratorCancelSignal.isCancelled()) {
|
|
319
330
|
return;
|
|
320
331
|
}
|
|
321
332
|
}
|
|
322
333
|
else if (needsFlushingAfterClean(observation, rangesToRemove)) {
|
|
323
334
|
callbacks.needsBufferFlush();
|
|
324
|
-
if (orchestratorCancelSignal.isCancelled) {
|
|
335
|
+
if (orchestratorCancelSignal.isCancelled()) {
|
|
325
336
|
return;
|
|
326
337
|
}
|
|
327
338
|
}
|
|
@@ -378,7 +389,8 @@ export default function StreamOrchestrator(content, playbackObserver, representa
|
|
|
378
389
|
*/
|
|
379
390
|
var nextStreamInfo = null;
|
|
380
391
|
/** Emits when the `PeriodStream` linked to `basePeriod` should be destroyed. */
|
|
381
|
-
var currentStreamCanceller = new TaskCanceller(
|
|
392
|
+
var currentStreamCanceller = new TaskCanceller();
|
|
393
|
+
currentStreamCanceller.linkToSignal(cancelSignal);
|
|
382
394
|
// Stop current PeriodStream when the current position goes over the end of
|
|
383
395
|
// that Period.
|
|
384
396
|
playbackObserver.listen(function (_a, stopListeningObservations) {
|
|
@@ -431,7 +443,9 @@ export default function StreamOrchestrator(content, playbackObserver, representa
|
|
|
431
443
|
period: nextStreamInfo.period });
|
|
432
444
|
nextStreamInfo.canceller.cancel();
|
|
433
445
|
}
|
|
434
|
-
|
|
446
|
+
var nextStreamCanceller = new TaskCanceller();
|
|
447
|
+
nextStreamCanceller.linkToSignal(cancelSignal);
|
|
448
|
+
nextStreamInfo = { canceller: nextStreamCanceller,
|
|
435
449
|
period: nextPeriod };
|
|
436
450
|
manageConsecutivePeriodStreams(bufferType, nextPeriod, consecutivePeriodStreamCb, nextStreamInfo.canceller.signal);
|
|
437
451
|
}
|
|
@@ -113,7 +113,7 @@ export default function PeriodStream(_a, callbacks, parentCancelSignal) {
|
|
|
113
113
|
*/
|
|
114
114
|
var adaptationRef = createSharedReference(undefined, parentCancelSignal);
|
|
115
115
|
callbacks.periodStreamReady({ type: bufferType, period: period, adaptationRef: adaptationRef });
|
|
116
|
-
if (parentCancelSignal.isCancelled) {
|
|
116
|
+
if (parentCancelSignal.isCancelled()) {
|
|
117
117
|
return;
|
|
118
118
|
}
|
|
119
119
|
var currentStreamCanceller;
|
|
@@ -129,7 +129,8 @@ export default function PeriodStream(_a, callbacks, parentCancelSignal) {
|
|
|
129
129
|
if (adaptation === undefined) {
|
|
130
130
|
return [2 /*return*/];
|
|
131
131
|
}
|
|
132
|
-
streamCanceller = new TaskCanceller(
|
|
132
|
+
streamCanceller = new TaskCanceller();
|
|
133
|
+
streamCanceller.linkToSignal(parentCancelSignal);
|
|
133
134
|
currentStreamCanceller === null || currentStreamCanceller === void 0 ? void 0 : currentStreamCanceller.cancel(); // Cancel oreviously created stream if one
|
|
134
135
|
currentStreamCanceller = streamCanceller;
|
|
135
136
|
if (!(adaptation === null)) return [3 /*break*/, 7];
|
|
@@ -147,7 +148,7 @@ export default function PeriodStream(_a, callbacks, parentCancelSignal) {
|
|
|
147
148
|
case 2: return [4 /*yield*/, segmentBufferStatus.value.removeBuffer(period.start, periodEnd, streamCanceller.signal)];
|
|
148
149
|
case 3:
|
|
149
150
|
_d.sent();
|
|
150
|
-
if (streamCanceller.isUsed) {
|
|
151
|
+
if (streamCanceller.isUsed()) {
|
|
151
152
|
return [2 /*return*/]; // The stream has been cancelled
|
|
152
153
|
}
|
|
153
154
|
_d.label = 4;
|
|
@@ -155,14 +156,14 @@ export default function PeriodStream(_a, callbacks, parentCancelSignal) {
|
|
|
155
156
|
case 5:
|
|
156
157
|
if (segmentBufferStatus.type === "uninitialized") {
|
|
157
158
|
segmentBuffersStore.disableSegmentBuffer(bufferType);
|
|
158
|
-
if (streamCanceller.isUsed) {
|
|
159
|
+
if (streamCanceller.isUsed()) {
|
|
159
160
|
return [2 /*return*/]; // The stream has been cancelled
|
|
160
161
|
}
|
|
161
162
|
}
|
|
162
163
|
_d.label = 6;
|
|
163
164
|
case 6:
|
|
164
165
|
callbacks.adaptationChange({ type: bufferType, adaptation: null, period: period });
|
|
165
|
-
if (streamCanceller.isUsed) {
|
|
166
|
+
if (streamCanceller.isUsed()) {
|
|
166
167
|
return [2 /*return*/]; // Previous call has provoken Stream cancellation by side-effect
|
|
167
168
|
}
|
|
168
169
|
return [2 /*return*/, createEmptyAdaptationStream(playbackObserver, wantedBufferAhead, bufferType, { period: period }, callbacks, streamCanceller.signal)];
|
|
@@ -179,7 +180,7 @@ export default function PeriodStream(_a, callbacks, parentCancelSignal) {
|
|
|
179
180
|
}
|
|
180
181
|
log.info("Stream: Updating ".concat(bufferType, " adaptation"), "A: ".concat(adaptation.id), "P: ".concat(period.start));
|
|
181
182
|
callbacks.adaptationChange({ type: bufferType, adaptation: adaptation, period: period });
|
|
182
|
-
if (streamCanceller.isUsed) {
|
|
183
|
+
if (streamCanceller.isUsed()) {
|
|
183
184
|
return [2 /*return*/]; // Previous call has provoken cancellation by side-effect
|
|
184
185
|
}
|
|
185
186
|
readyState = playbackObserver.getReadyState();
|
|
@@ -192,7 +193,7 @@ export default function PeriodStream(_a, callbacks, parentCancelSignal) {
|
|
|
192
193
|
return [4 /*yield*/, segmentBuffersStore.waitForUsableBuffers(streamCanceller.signal)];
|
|
193
194
|
case 8:
|
|
194
195
|
_d.sent();
|
|
195
|
-
if (streamCanceller.isUsed) {
|
|
196
|
+
if (streamCanceller.isUsed()) {
|
|
196
197
|
return [2 /*return*/]; // The Stream has since been cancelled
|
|
197
198
|
}
|
|
198
199
|
if (!(strategy.type === "flush-buffer" || strategy.type === "clean-buffer")) return [3 /*break*/, 13];
|
|
@@ -204,7 +205,7 @@ export default function PeriodStream(_a, callbacks, parentCancelSignal) {
|
|
|
204
205
|
return [4 /*yield*/, segmentBuffer.removeBuffer(start, end, streamCanceller.signal)];
|
|
205
206
|
case 10:
|
|
206
207
|
_d.sent();
|
|
207
|
-
if (streamCanceller.isUsed) {
|
|
208
|
+
if (streamCanceller.isUsed()) {
|
|
208
209
|
return [2 /*return*/]; // The Stream has since been cancelled
|
|
209
210
|
}
|
|
210
211
|
_d.label = 11;
|
|
@@ -214,7 +215,7 @@ export default function PeriodStream(_a, callbacks, parentCancelSignal) {
|
|
|
214
215
|
case 12:
|
|
215
216
|
if (strategy.type === "flush-buffer") {
|
|
216
217
|
callbacks.needsBufferFlush();
|
|
217
|
-
if (streamCanceller.isUsed) {
|
|
218
|
+
if (streamCanceller.isUsed()) {
|
|
218
219
|
return [2 /*return*/]; // Previous callback cancelled the Stream by side-effect
|
|
219
220
|
}
|
|
220
221
|
}
|
|
@@ -254,7 +255,7 @@ export default function PeriodStream(_a, callbacks, parentCancelSignal) {
|
|
|
254
255
|
defaultReason: "Unknown `AdaptationStream` error",
|
|
255
256
|
});
|
|
256
257
|
callbacks.warning(formattedError);
|
|
257
|
-
if (cancelSignal.isCancelled) {
|
|
258
|
+
if (cancelSignal.isCancelled()) {
|
|
258
259
|
return; // Previous callback cancelled the Stream by side-effect
|
|
259
260
|
}
|
|
260
261
|
return createEmptyAdaptationStream(playbackObserver, wantedBufferAhead, bufferType, { period: period }, callbacks, cancelSignal);
|