rx-player 4.2.0-dev.2024090500 → 4.2.0-dev.2024091000
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 +5 -2
- 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/compat/browser_detection.d.ts +3 -1
- package/dist/commonjs/compat/browser_detection.d.ts.map +1 -1
- package/dist/commonjs/compat/browser_detection.js +7 -1
- package/dist/commonjs/compat/can_reuse_media_keys.d.ts +4 -0
- package/dist/commonjs/compat/can_reuse_media_keys.d.ts.map +1 -1
- package/dist/commonjs/compat/can_reuse_media_keys.js +5 -1
- package/dist/commonjs/core/cmcd/cmcd_data_builder.d.ts +12 -0
- package/dist/commonjs/core/cmcd/cmcd_data_builder.d.ts.map +1 -1
- package/dist/commonjs/core/cmcd/cmcd_data_builder.js +27 -1
- package/dist/commonjs/core/fetchers/segment/segment_fetcher.d.ts +24 -0
- package/dist/commonjs/core/fetchers/segment/segment_fetcher.d.ts.map +1 -1
- package/dist/commonjs/core/fetchers/segment/segment_queue.d.ts.map +1 -1
- package/dist/commonjs/core/fetchers/segment/segment_queue.js +8 -7
- package/dist/commonjs/core/main/worker/worker_main.js +4 -0
- package/dist/commonjs/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.d.ts.map +1 -1
- package/dist/commonjs/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +2 -2
- package/dist/commonjs/main_thread/api/public_api.js +2 -2
- package/dist/commonjs/parsers/manifest/dash/common/parse_mpd.js +2 -2
- package/dist/commonjs/parsers/manifest/dash/common/resolve_base_urls.js +2 -2
- package/dist/commonjs/parsers/manifest/metaplaylist/metaplaylist_parser.js +2 -2
- package/dist/commonjs/parsers/manifest/smooth/create_parser.js +2 -2
- package/dist/commonjs/transports/dash/construct_segment_url.js +2 -2
- package/dist/commonjs/transports/smooth/utils.js +2 -2
- package/dist/commonjs/utils/logger.d.ts.map +1 -1
- package/dist/commonjs/utils/logger.js +6 -7
- package/dist/commonjs/utils/{resolve_url.d.ts → url-utils.d.ts} +15 -4
- package/dist/commonjs/utils/url-utils.d.ts.map +1 -0
- package/dist/commonjs/utils/{resolve_url.js → url-utils.js} +71 -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/compat/browser_detection.d.ts +3 -1
- package/dist/es2017/compat/browser_detection.d.ts.map +1 -1
- package/dist/es2017/compat/browser_detection.js +10 -1
- package/dist/es2017/compat/can_reuse_media_keys.d.ts +4 -0
- package/dist/es2017/compat/can_reuse_media_keys.d.ts.map +1 -1
- package/dist/es2017/compat/can_reuse_media_keys.js +6 -2
- package/dist/es2017/core/cmcd/cmcd_data_builder.d.ts +12 -0
- package/dist/es2017/core/cmcd/cmcd_data_builder.d.ts.map +1 -1
- package/dist/es2017/core/cmcd/cmcd_data_builder.js +27 -1
- package/dist/es2017/core/fetchers/segment/segment_fetcher.d.ts +24 -0
- package/dist/es2017/core/fetchers/segment/segment_fetcher.d.ts.map +1 -1
- package/dist/es2017/core/fetchers/segment/segment_queue.d.ts.map +1 -1
- package/dist/es2017/core/fetchers/segment/segment_queue.js +8 -7
- package/dist/es2017/core/main/worker/worker_main.js +4 -0
- package/dist/es2017/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.d.ts.map +1 -1
- package/dist/es2017/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +2 -2
- package/dist/es2017/main_thread/api/public_api.js +2 -2
- package/dist/es2017/parsers/manifest/dash/common/parse_mpd.js +1 -1
- package/dist/es2017/parsers/manifest/dash/common/resolve_base_urls.js +1 -1
- package/dist/es2017/parsers/manifest/metaplaylist/metaplaylist_parser.js +1 -1
- package/dist/es2017/parsers/manifest/smooth/create_parser.js +1 -1
- package/dist/es2017/transports/dash/construct_segment_url.js +1 -1
- package/dist/es2017/transports/smooth/utils.js +1 -1
- package/dist/es2017/utils/logger.d.ts.map +1 -1
- package/dist/es2017/utils/logger.js +6 -7
- package/dist/es2017/utils/{resolve_url.d.ts → url-utils.d.ts} +15 -4
- package/dist/es2017/utils/url-utils.d.ts.map +1 -0
- package/dist/es2017/utils/{resolve_url.js → url-utils.js} +71 -3
- package/dist/rx-player.js +253 -181
- package/dist/rx-player.min.js +18 -18
- package/dist/worker.js +8 -8
- package/package.json +5 -12
- package/src/README.md +7 -7
- package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
- package/src/compat/__tests__/can_reuse_media_keys.test.ts +24 -1
- package/src/compat/browser_detection.ts +13 -4
- package/src/compat/can_reuse_media_keys.ts +6 -2
- package/src/core/cmcd/cmcd_data_builder.ts +68 -2
- package/src/core/fetchers/segment/segment_fetcher.ts +24 -0
- package/src/core/fetchers/segment/segment_queue.ts +11 -9
- package/src/core/main/worker/worker_main.ts +4 -0
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +8 -2
- package/src/main_thread/api/public_api.ts +2 -2
- package/src/parsers/manifest/dash/common/parse_mpd.ts +1 -1
- package/src/parsers/manifest/dash/common/resolve_base_urls.ts +1 -1
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +1 -1
- package/src/parsers/manifest/smooth/create_parser.ts +1 -1
- package/src/transports/dash/construct_segment_url.ts +1 -1
- package/src/transports/smooth/utils.ts +1 -1
- package/src/utils/__tests__/{resolve_url.test.ts → url-utils.test.ts} +148 -1
- package/src/utils/logger.ts +6 -7
- package/src/utils/{resolve_url.ts → url-utils.ts} +83 -5
- package/dist/commonjs/utils/resolve_url.d.ts.map +0 -1
- package/dist/es2017/utils/resolve_url.d.ts.map +0 -1
|
@@ -45,5 +45,7 @@ declare let isPlayStation4: boolean;
|
|
|
45
45
|
declare let isPlayStation5: boolean;
|
|
46
46
|
/** `true` for the Xbox game consoles. */
|
|
47
47
|
declare let isXbox: boolean;
|
|
48
|
-
|
|
48
|
+
/** `true` for specific A1 STB: KSTB 40xx from Kaon Media. */
|
|
49
|
+
declare let isA1KStb40xx: boolean;
|
|
50
|
+
export { isEdgeChromium, isFirefox, isIE11, isIEOrEdge, isSafariDesktop, isSafariMobile, isA1KStb40xx, isPanasonic, isPhilipsNetTv, isPlayStation4, isPlayStation5, isSamsungBrowser, isTizen, isWebOs, isWebOs2021, isWebOs2022, isXbox, };
|
|
49
51
|
//# sourceMappingURL=browser_detection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser_detection.d.ts","sourceRoot":"","sources":["../../../src/compat/browser_detection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAmBH,8CAA8C;AAC9C,QAAA,IAAI,cAAc,SAAQ,CAAC;AAE3B,qCAAqC;AACrC,QAAA,IAAI,MAAM,SAAQ,CAAC;AAEnB,4EAA4E;AAC5E,QAAA,IAAI,UAAU,SAAQ,CAAC;AAEvB,wCAAwC;AACxC,QAAA,IAAI,SAAS,SAAQ,CAAC;AAEtB,sEAAsE;AACtE,QAAA,IAAI,eAAe,SAAQ,CAAC;AAE5B,0DAA0D;AAC1D,QAAA,IAAI,cAAc,SAAQ,CAAC;AAE3B,wCAAwC;AACxC,QAAA,IAAI,gBAAgB,SAAQ,CAAC;AAE7B,kEAAkE;AAClE,QAAA,IAAI,OAAO,SAAQ,CAAC;AAEpB,6DAA6D;AAC7D,QAAA,IAAI,OAAO,SAAQ,CAAC;AAEpB,kDAAkD;AAClD,QAAA,IAAI,WAAW,SAAQ,CAAC;AAExB,kDAAkD;AAClD,QAAA,IAAI,WAAW,SAAQ,CAAC;AAExB,oCAAoC;AACpC,QAAA,IAAI,WAAW,SAAQ,CAAC;AAExB,uDAAuD;AACvD,QAAA,IAAI,cAAc,SAAQ,CAAC;AAE3B,iDAAiD;AACjD,QAAA,IAAI,cAAc,SAAQ,CAAC;AAE3B,iDAAiD;AACjD,QAAA,IAAI,cAAc,SAAQ,CAAC;AAE3B,yCAAyC;AACzC,QAAA,IAAI,MAAM,SAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"browser_detection.d.ts","sourceRoot":"","sources":["../../../src/compat/browser_detection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAmBH,8CAA8C;AAC9C,QAAA,IAAI,cAAc,SAAQ,CAAC;AAE3B,qCAAqC;AACrC,QAAA,IAAI,MAAM,SAAQ,CAAC;AAEnB,4EAA4E;AAC5E,QAAA,IAAI,UAAU,SAAQ,CAAC;AAEvB,wCAAwC;AACxC,QAAA,IAAI,SAAS,SAAQ,CAAC;AAEtB,sEAAsE;AACtE,QAAA,IAAI,eAAe,SAAQ,CAAC;AAE5B,0DAA0D;AAC1D,QAAA,IAAI,cAAc,SAAQ,CAAC;AAE3B,wCAAwC;AACxC,QAAA,IAAI,gBAAgB,SAAQ,CAAC;AAE7B,kEAAkE;AAClE,QAAA,IAAI,OAAO,SAAQ,CAAC;AAEpB,6DAA6D;AAC7D,QAAA,IAAI,OAAO,SAAQ,CAAC;AAEpB,kDAAkD;AAClD,QAAA,IAAI,WAAW,SAAQ,CAAC;AAExB,kDAAkD;AAClD,QAAA,IAAI,WAAW,SAAQ,CAAC;AAExB,oCAAoC;AACpC,QAAA,IAAI,WAAW,SAAQ,CAAC;AAExB,uDAAuD;AACvD,QAAA,IAAI,cAAc,SAAQ,CAAC;AAE3B,iDAAiD;AACjD,QAAA,IAAI,cAAc,SAAQ,CAAC;AAE3B,iDAAiD;AACjD,QAAA,IAAI,cAAc,SAAQ,CAAC;AAE3B,yCAAyC;AACzC,QAAA,IAAI,MAAM,SAAQ,CAAC;AAEnB,6DAA6D;AAC7D,QAAA,IAAI,YAAY,SAAQ,CAAC;AA+FzB,OAAO,EAEL,cAAc,EACd,SAAS,EACT,MAAM,EACN,UAAU,EACV,eAAe,EACf,cAAc,EAGd,YAAY,EACZ,WAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,WAAW,EACX,WAAW,EACX,MAAM,GACP,CAAC"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.isWebOs2022 = exports.isWebOs2021 = exports.isWebOs = exports.isTizen = exports.isSamsungBrowser = exports.
|
|
18
|
+
exports.isXbox = exports.isWebOs2022 = exports.isWebOs2021 = exports.isWebOs = exports.isTizen = exports.isSamsungBrowser = exports.isPlayStation5 = exports.isPlayStation4 = exports.isPhilipsNetTv = exports.isPanasonic = exports.isA1KStb40xx = exports.isSafariMobile = exports.isSafariDesktop = exports.isIEOrEdge = exports.isIE11 = exports.isFirefox = exports.isEdgeChromium = void 0;
|
|
19
19
|
var global_scope_1 = require("../utils/global_scope");
|
|
20
20
|
var is_node_1 = require("../utils/is_node");
|
|
21
21
|
/** Edge Chromium, regardless of the device */
|
|
@@ -66,6 +66,9 @@ exports.isPlayStation5 = isPlayStation5;
|
|
|
66
66
|
/** `true` for the Xbox game consoles. */
|
|
67
67
|
var isXbox = false;
|
|
68
68
|
exports.isXbox = isXbox;
|
|
69
|
+
/** `true` for specific A1 STB: KSTB 40xx from Kaon Media. */
|
|
70
|
+
var isA1KStb40xx = false;
|
|
71
|
+
exports.isA1KStb40xx = isA1KStb40xx;
|
|
69
72
|
(function findCurrentBrowser() {
|
|
70
73
|
var _a, _b, _c;
|
|
71
74
|
if (is_node_1.default) {
|
|
@@ -148,4 +151,7 @@ exports.isXbox = isXbox;
|
|
|
148
151
|
else if (navigator.userAgent.indexOf("Xbox") !== -1) {
|
|
149
152
|
exports.isXbox = isXbox = true;
|
|
150
153
|
}
|
|
154
|
+
else if (navigator.userAgent.indexOf("Model/a1-kstb40xx")) {
|
|
155
|
+
exports.isA1KStb40xx = isA1KStb40xx = true;
|
|
156
|
+
}
|
|
151
157
|
})();
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
* HTMLMediaElement.
|
|
10
10
|
* - (2024-08-23): Seen on Philips 2024 and 2023 in:
|
|
11
11
|
* https://github.com/canalplus/rx-player/issues/1464
|
|
12
|
+
* - (2024-09-04): Another case seen on an "A1" set-top box model made by
|
|
13
|
+
* Kaonmedia we will call the KSTB40xx.
|
|
14
|
+
* It may share the problematic with other devices, but we have only seen
|
|
15
|
+
* the problem on this one for now.
|
|
12
16
|
*
|
|
13
17
|
* @returns {boolean}
|
|
14
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"can_reuse_media_keys.d.ts","sourceRoot":"","sources":["../../../src/compat/can_reuse_media_keys.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"can_reuse_media_keys.d.ts","sourceRoot":"","sources":["../../../src/compat/can_reuse_media_keys.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,IAAI,OAAO,CAEnD"}
|
|
@@ -13,9 +13,13 @@ var browser_detection_1 = require("./browser_detection");
|
|
|
13
13
|
* HTMLMediaElement.
|
|
14
14
|
* - (2024-08-23): Seen on Philips 2024 and 2023 in:
|
|
15
15
|
* https://github.com/canalplus/rx-player/issues/1464
|
|
16
|
+
* - (2024-09-04): Another case seen on an "A1" set-top box model made by
|
|
17
|
+
* Kaonmedia we will call the KSTB40xx.
|
|
18
|
+
* It may share the problematic with other devices, but we have only seen
|
|
19
|
+
* the problem on this one for now.
|
|
16
20
|
*
|
|
17
21
|
* @returns {boolean}
|
|
18
22
|
*/
|
|
19
23
|
function canReuseMediaKeys() {
|
|
20
|
-
return !browser_detection_1.isWebOs && !browser_detection_1.isPhilipsNetTv && !browser_detection_1.isPanasonic;
|
|
24
|
+
return !browser_detection_1.isWebOs && !browser_detection_1.isPhilipsNetTv && !browser_detection_1.isPanasonic && !browser_detection_1.isA1KStb40xx;
|
|
21
25
|
}
|
|
@@ -17,6 +17,18 @@ export interface ICmcdSegmentInfo {
|
|
|
17
17
|
representation: IRepresentation;
|
|
18
18
|
/** Segment metadata linked to the wanted segment. */
|
|
19
19
|
segment: ISegment;
|
|
20
|
+
/**
|
|
21
|
+
* Optional next segment that may be requested after this one.
|
|
22
|
+
* Should only be set (to something else than `undefined`) if that following
|
|
23
|
+
* segment is part of the same `Representation`.
|
|
24
|
+
*
|
|
25
|
+
* This information is used to produce the "next object request" and "next
|
|
26
|
+
* range request" part of the CMCD payload, used for segment prefetching.
|
|
27
|
+
*
|
|
28
|
+
* If `null` no segment will be requested next for now.
|
|
29
|
+
* If `undefined` we do not know which next segment will be requested.
|
|
30
|
+
*/
|
|
31
|
+
nextSegment: ISegment | null | undefined;
|
|
20
32
|
}
|
|
21
33
|
/**
|
|
22
34
|
* Media playback observation's properties the `CmcdDataBuilder` wants to have
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmcd_data_builder.d.ts","sourceRoot":"","sources":["../../../../src/core/cmcd/cmcd_data_builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,eAAe,EACf,QAAQ,EACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"cmcd_data_builder.d.ts","sourceRoot":"","sources":["../../../../src/core/cmcd/cmcd_data_builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,eAAe,EACf,QAAQ,EACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAgBjD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,QAAQ,EAAE,SAAS,CAAC;IACpB,oDAAoD;IACpD,MAAM,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,UAAU,EAAE,WAAW,CAAC;IACxB,4DAA4D;IAC5D,cAAc,EAAE,eAAe,CAAC;IAChC,qDAAqD;IACrD,OAAO,EAAE,QAAQ,CAAC;IAClB;;;;;;;;;;OAUG;IACH,WAAW,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAClD;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C;;;OAGG;IACH,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACxC;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,eAAe,CAAkD;IACzE,OAAO,CAAC,iBAAiB,CAAwE;IACjG,OAAO,CAAC,uBAAuB,CAAU;IACzC,OAAO,CAAC,UAAU,CAAuB;IAEzC;;;;OAIG;gBACS,OAAO,EAAE,YAAY;IAajC;;;;;;;;;OASG;IACI,uBAAuB,CAC5B,gBAAgB,EAAE,yBAAyB,CAAC,mCAAmC,CAAC,GAC/E,IAAI;IAcP;;;OAGG;IACI,sBAAsB,IAAI,IAAI;IAMrC;;;;;;OAMG;IACI,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS;IAI7E;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;;;;OAKG;IACI,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,YAAY;IAoBlE;;;;;OAKG;IACI,4BAA4B,CAAC,OAAO,EAAE,gBAAgB,GAAG,YAAY;IAyH5E;;;;;OAKG;IACH,OAAO,CAAC,eAAe;CAoHxB"}
|
|
@@ -15,6 +15,7 @@ var log_1 = require("../../log");
|
|
|
15
15
|
var create_uuid_1 = require("../../utils/create_uuid");
|
|
16
16
|
var is_null_or_undefined_1 = require("../../utils/is_null_or_undefined");
|
|
17
17
|
var task_canceller_1 = require("../../utils/task_canceller");
|
|
18
|
+
var url_utils_1 = require("../../utils/url-utils");
|
|
18
19
|
/**
|
|
19
20
|
* `rtp`, for "REQUESTED_MAXIMUM_THROUGHPUT", indicates the maximum throughput
|
|
20
21
|
* needed to load a given segment without experience degration.
|
|
@@ -156,7 +157,6 @@ var CmcdDataBuilder = /** @class */ (function () {
|
|
|
156
157
|
var props = this._getCommonCmcdData(this._lastThroughput[content.adaptation.type]);
|
|
157
158
|
props.br = Math.round(content.representation.bitrate / 1000);
|
|
158
159
|
props.d = Math.round(content.segment.duration * 1000);
|
|
159
|
-
// TODO nor (next object request) and nrr (next range request)
|
|
160
160
|
switch (content.adaptation.type) {
|
|
161
161
|
case "video":
|
|
162
162
|
props.ot = "v";
|
|
@@ -171,6 +171,30 @@ var CmcdDataBuilder = /** @class */ (function () {
|
|
|
171
171
|
if (content.segment.isInit) {
|
|
172
172
|
props.ot = "i";
|
|
173
173
|
}
|
|
174
|
+
if (!(0, is_null_or_undefined_1.default)(content.nextSegment) &&
|
|
175
|
+
content.segment.url !== null &&
|
|
176
|
+
content.nextSegment.url !== null) {
|
|
177
|
+
// We add a special case for some initialization segment which need
|
|
178
|
+
// multiple byte-ranges to fully request, as the `CmcdDataBuilder`
|
|
179
|
+
// is not supposed to keep track of how the requesting part of the
|
|
180
|
+
// RxPlayer actually perform its multi-byte-range requests
|
|
181
|
+
if (!content.nextSegment.isInit || content.nextSegment.indexRange === undefined) {
|
|
182
|
+
var currSegmentUrl = content.segment.url;
|
|
183
|
+
var nextSegmentUrl = content.nextSegment.url;
|
|
184
|
+
var relativeUrl = (0, url_utils_1.getRelativeUrl)(currSegmentUrl, nextSegmentUrl);
|
|
185
|
+
if (relativeUrl !== null) {
|
|
186
|
+
if (relativeUrl !== ".") {
|
|
187
|
+
props.nor = encodeURIComponent(relativeUrl);
|
|
188
|
+
}
|
|
189
|
+
if (content.nextSegment.range !== undefined) {
|
|
190
|
+
props.nrr = String(content.nextSegment.range[0]) + "-";
|
|
191
|
+
if (isFinite(content.nextSegment.range[1])) {
|
|
192
|
+
props.nrr += String(content.nextSegment.range[1]);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
174
198
|
var precizeBufferLengthMs;
|
|
175
199
|
if (lastObservation !== undefined &&
|
|
176
200
|
(props.ot === "v" || props.ot === "a" || props.ot === "av")) {
|
|
@@ -292,6 +316,8 @@ var CmcdDataBuilder = /** @class */ (function () {
|
|
|
292
316
|
addNumberProperty("d", "object");
|
|
293
317
|
addNumberProperty("dl", "request");
|
|
294
318
|
addNumberProperty("mtp", "request");
|
|
319
|
+
addStringProperty("nor", "request");
|
|
320
|
+
addStringProperty("nrr", "request");
|
|
295
321
|
addTokenProperty("ot", "object");
|
|
296
322
|
addNumberProperty("pr", "session");
|
|
297
323
|
addNumberProperty("rtp", "status");
|
|
@@ -70,11 +70,35 @@ export interface ISegmentFetcherCallbacks<TSegmentDataType> {
|
|
|
70
70
|
}
|
|
71
71
|
/** Content used by the segment loader as a context to load a new segment. */
|
|
72
72
|
export interface ISegmentLoaderContent {
|
|
73
|
+
/** Manifest metadata linked to the wanted segment. */
|
|
73
74
|
manifest: IManifest;
|
|
75
|
+
/** Period metadata linked to the wanted segment. */
|
|
74
76
|
period: IPeriod;
|
|
77
|
+
/** Adaptation metadata linked to the wanted segment. */
|
|
75
78
|
adaptation: IAdaptation;
|
|
79
|
+
/** Representation metadata linked to the wanted segment. */
|
|
76
80
|
representation: IRepresentation;
|
|
81
|
+
/** Segment metadata linked to the wanted segment. */
|
|
77
82
|
segment: ISegment;
|
|
83
|
+
/**
|
|
84
|
+
* Optional next segment that may be requested after this one.
|
|
85
|
+
* Should only be set (to something else than `undefined`) if that following
|
|
86
|
+
* segment is part of the same `Representation`.
|
|
87
|
+
*
|
|
88
|
+
* This is only used as an hint, finally requesting another segment after this
|
|
89
|
+
* one due to unexpected changes (e.g. bandwidth update, track change etc.) is
|
|
90
|
+
* OK.
|
|
91
|
+
*
|
|
92
|
+
* This information is then used mostly for matters related yet not required
|
|
93
|
+
* by requests, such as CMCD reporting. In scenarios when it's not
|
|
94
|
+
* straightforward to guess which segment will be requested after this one,
|
|
95
|
+
* this property can be ignored (set to `undefined`).
|
|
96
|
+
*
|
|
97
|
+
* If `null` no segment will be requested next for now.
|
|
98
|
+
*
|
|
99
|
+
* If `undefined` we do not know which next segment will be requested.
|
|
100
|
+
*/
|
|
101
|
+
nextSegment: ISegment | null | undefined;
|
|
78
102
|
}
|
|
79
103
|
/**
|
|
80
104
|
* Callbacks given when creating an `ISegmentFetcher`, allowing to be notified
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segment_fetcher.d.ts","sourceRoot":"","sources":["../../../../../src/core/fetchers/segment/segment_fetcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,OAAO,EACP,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAMV,6BAA6B,EAC7B,8BAA8B,EAC9B,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EACV,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,+BAA+B,EAChC,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,eAAe,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,cAAc,MAAM,oBAAoB,CAAC;AAQrD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,aAAa,EAAE,gBAAgB,EAAE,EAC5E,UAAU,EACV,QAAQ,EACR,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,GACf,EAAE,wBAAwB,CACzB,aAAa,EACb,gBAAgB,CACjB,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAwSpC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,CAAC,gBAAgB,IAAI;AAC9C,yCAAyC;AACzC,OAAO,EAAE,qBAAqB;AAC9B,sEAAsE;AACtE,SAAS,EAAE,wBAAwB,CAAC,gBAAgB,CAAC;AACrD,yDAAyD;AACzD,kBAAkB,EAAE,kBAAkB,KACnC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;;GAGG;AACH,MAAM,WAAW,wBAAwB,CAAC,gBAAgB;IACxD,uEAAuE;IACvE,OAAO,CACL,KAAK,EAAE,CACL,aAAa,EAAE,MAAM,GAAG,SAAS,KAE/B,6BAA6B,CAAC,gBAAgB,CAAC,GAC/C,8BAA8B,CAAC,gBAAgB,CAAC,GACnD,IAAI,CAAC;IAER;;;;;;OAMG;IACH,mBAAmB,IAAI,IAAI,CAAC;IAE5B;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CACpC;AAED,6EAA6E;AAC7E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,WAAW,CAAC;IACxB,cAAc,EAAE,eAAe,CAAC;IAChC,OAAO,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"segment_fetcher.d.ts","sourceRoot":"","sources":["../../../../../src/core/fetchers/segment/segment_fetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segment_queue.d.ts","sourceRoot":"","sources":["../../../../../src/core/fetchers/segment/segment_queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,OAAO,EACP,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EACV,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,YAAY,MAAM,8BAA8B,CAAC;AAGxD,OAAO,eAAe,MAAM,0BAA0B,CAAC;AAEvD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAEhF,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY,CAAC,CAAC,CAAE,SAAQ,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC9E,uCAAuC;IACvC,OAAO,CAAC,eAAe,CAAgC;IAEvD;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAkC;IAE7D;;;;;OAKG;gBACS,cAAc,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAMzD;;;;OAIG;IACI,uBAAuB,IAAI,QAAQ,GAAG,IAAI;IAIjD;;;;OAIG;IACI,wBAAwB,IAAI,QAAQ,GAAG,IAAI;IAIlD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACI,eAAe,CACpB,OAAO,EAAE,oBAAoB,EAC7B,cAAc,EAAE,OAAO,GACtB,eAAe,CAAC,iBAAiB,CAAC;IAsHrC;;;;OAIG;IACI,IAAI;IAKX;;OAEG;IACH,OAAO,CAAC,oCAAoC;
|
|
1
|
+
{"version":3,"file":"segment_queue.d.ts","sourceRoot":"","sources":["../../../../../src/core/fetchers/segment/segment_queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -204,9 +204,10 @@ var SegmentQueue = /** @class */ (function (_super) {
|
|
|
204
204
|
contentInfo.mediaSegmentRequest.canceller.cancel();
|
|
205
205
|
}
|
|
206
206
|
var downloadQueue = contentInfo.downloadQueue, content = contentInfo.content, initSegmentInfoRef = contentInfo.initSegmentInfoRef, currentCanceller = contentInfo.currentCanceller;
|
|
207
|
-
var
|
|
208
|
-
|
|
209
|
-
|
|
207
|
+
var recursivelyRequestSegments = function () {
|
|
208
|
+
var _a;
|
|
209
|
+
var segmentQueue = downloadQueue.getValue().segmentQueue;
|
|
210
|
+
var startingSegment = segmentQueue[0];
|
|
210
211
|
if (currentCanceller !== null && currentCanceller.isUsed()) {
|
|
211
212
|
contentInfo.mediaSegmentRequest = null;
|
|
212
213
|
return;
|
|
@@ -221,7 +222,7 @@ var SegmentQueue = /** @class */ (function (_super) {
|
|
|
221
222
|
? noop_1.default
|
|
222
223
|
: canceller.linkToSignal(currentCanceller.signal);
|
|
223
224
|
var segment = startingSegment.segment, priority = startingSegment.priority;
|
|
224
|
-
var context = (0, object_assign_1.default)({ segment: segment }, content);
|
|
225
|
+
var context = (0, object_assign_1.default)({ segment: segment, nextSegment: (_a = segmentQueue[1]) === null || _a === void 0 ? void 0 : _a.segment }, content);
|
|
225
226
|
/**
|
|
226
227
|
* If `true` , the current task has either errored, finished, or was
|
|
227
228
|
* cancelled.
|
|
@@ -258,7 +259,7 @@ var SegmentQueue = /** @class */ (function (_super) {
|
|
|
258
259
|
lastQueue.shift();
|
|
259
260
|
}
|
|
260
261
|
isComplete = true;
|
|
261
|
-
recursivelyRequestSegments(
|
|
262
|
+
recursivelyRequestSegments();
|
|
262
263
|
};
|
|
263
264
|
/** Scheduled actual segment request. */
|
|
264
265
|
var request = _this._segmentFetcher.createRequest(context, priority, {
|
|
@@ -337,7 +338,7 @@ var SegmentQueue = /** @class */ (function (_super) {
|
|
|
337
338
|
});
|
|
338
339
|
contentInfo.mediaSegmentRequest = { segment: segment, priority: priority, request: request, canceller: canceller };
|
|
339
340
|
};
|
|
340
|
-
recursivelyRequestSegments(
|
|
341
|
+
recursivelyRequestSegments();
|
|
341
342
|
};
|
|
342
343
|
/**
|
|
343
344
|
* Internal logic performing initialization segment requests.
|
|
@@ -358,7 +359,7 @@ var SegmentQueue = /** @class */ (function (_super) {
|
|
|
358
359
|
? noop_1.default
|
|
359
360
|
: canceller.linkToSignal(contentInfo.currentCanceller.signal);
|
|
360
361
|
var segment = queuedInitSegment.segment, priority = queuedInitSegment.priority;
|
|
361
|
-
var context = (0, object_assign_1.default)({ segment: segment }, content);
|
|
362
|
+
var context = (0, object_assign_1.default)({ segment: segment, nextSegment: undefined }, content);
|
|
362
363
|
/**
|
|
363
364
|
* If `true` , the current task has either errored, finished, or was
|
|
364
365
|
* cancelled.
|
|
@@ -744,6 +744,10 @@ function loadOrReloadPreparedContent(val, contentPreparer, playbackObservationRe
|
|
|
744
744
|
onCodecSwitch: val.onCodecSwitch,
|
|
745
745
|
}, contentPreparer, playbackObservationRef, parentCancelSignal);
|
|
746
746
|
}, function (err) {
|
|
747
|
+
if (task_canceller_1.default.isCancellationError(err)) {
|
|
748
|
+
log_1.default.info("WP: A reloading operation was cancelled");
|
|
749
|
+
return;
|
|
750
|
+
}
|
|
747
751
|
(0, send_message_1.default)({
|
|
748
752
|
type: "error" /* WorkerMessageType.Error */,
|
|
749
753
|
contentId: contentId,
|
package/dist/commonjs/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video_thumbnail_loader.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAW5D,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,SAAS,CAAC;AAOtD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,uBAAuB,CAAiD;gBAEpE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS;IAM7D;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAIhE;;;;;;;;;OASG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"video_thumbnail_loader.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAW5D,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,SAAS,CAAC;AAOtD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,uBAAuB,CAAiD;gBAEpE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS;IAM7D;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAIhE;;;;;;;;;OASG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuPtC;;;OAGG;IACH,OAAO,IAAI,IAAI;CAMhB;AA+GD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -204,7 +204,7 @@ var VideoThumbnailLoader = /** @class */ (function () {
|
|
|
204
204
|
lastRepInfo.initSegmentUniqueId = null;
|
|
205
205
|
return [2 /*return*/, sourceBufferInterface];
|
|
206
206
|
}
|
|
207
|
-
segmentInfo = (0, object_assign_1.default)({ segment: initSegment_1 }, content);
|
|
207
|
+
segmentInfo = (0, object_assign_1.default)({ segment: initSegment_1, nextSegment: undefined }, content);
|
|
208
208
|
return [4 /*yield*/, (0, load_and_push_segment_1.default)(segmentInfo, sourceBufferInterface, lastRepInfo.segmentFetcher, lastRepInfoCleaner_1.signal)];
|
|
209
209
|
case 1:
|
|
210
210
|
_a.sent();
|
|
@@ -262,7 +262,7 @@ var VideoThumbnailLoader = /** @class */ (function () {
|
|
|
262
262
|
else {
|
|
263
263
|
var requestCanceller = new task_canceller_1.default();
|
|
264
264
|
var unlinkSignal_1 = requestCanceller.linkToSignal(lastRepInfo.cleaner.signal);
|
|
265
|
-
var segmentInfo = (0, object_assign_1.default)({ segment: segment }, content);
|
|
265
|
+
var segmentInfo = (0, object_assign_1.default)({ segment: segment, nextSegment: undefined }, content);
|
|
266
266
|
var prom = (0, load_and_push_segment_1.default)(segmentInfo, sourceBufferInterface, lastRepInfo.segmentFetcher, requestCanceller.signal).then(unlinkSignal_1, function (err) {
|
|
267
267
|
unlinkSignal_1();
|
|
268
268
|
throw err;
|
|
@@ -160,7 +160,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
160
160
|
// Workaround to support Firefox autoplay on FF 42.
|
|
161
161
|
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
|
|
162
162
|
videoElement.preload = "auto";
|
|
163
|
-
_this.version = /* PLAYER_VERSION */ "4.2.0-dev.
|
|
163
|
+
_this.version = /* PLAYER_VERSION */ "4.2.0-dev.2024091000";
|
|
164
164
|
_this.log = log_1.default;
|
|
165
165
|
_this.state = "STOPPED";
|
|
166
166
|
_this.videoElement = videoElement;
|
|
@@ -2674,5 +2674,5 @@ var Player = /** @class */ (function (_super) {
|
|
|
2674
2674
|
Player._priv_currentlyUsedVideoElements = new WeakSet();
|
|
2675
2675
|
return Player;
|
|
2676
2676
|
}(event_emitter_1.default));
|
|
2677
|
-
Player.version = /* PLAYER_VERSION */ "4.2.0-dev.
|
|
2677
|
+
Player.version = /* PLAYER_VERSION */ "4.2.0-dev.2024091000";
|
|
2678
2678
|
exports.default = Player;
|
|
@@ -57,7 +57,7 @@ var log_1 = require("../../../../log");
|
|
|
57
57
|
var array_find_1 = require("../../../../utils/array_find");
|
|
58
58
|
var is_null_or_undefined_1 = require("../../../../utils/is_null_or_undefined");
|
|
59
59
|
var monotonic_timestamp_1 = require("../../../../utils/monotonic_timestamp");
|
|
60
|
-
var
|
|
60
|
+
var url_utils_1 = require("../../../../utils/url-utils");
|
|
61
61
|
var content_protection_parser_1 = require("./content_protection_parser");
|
|
62
62
|
var get_clock_offset_1 = require("./get_clock_offset");
|
|
63
63
|
var get_http_utc_timing_url_1 = require("./get_http_utc-timing_url");
|
|
@@ -179,7 +179,7 @@ function parseCompleteIntermediateRepresentation(mpdIR, args, warnings, xlinkInf
|
|
|
179
179
|
var rootChildren = mpdIR.children, rootAttributes = mpdIR.attributes;
|
|
180
180
|
var isDynamic = rootAttributes.type === "dynamic";
|
|
181
181
|
var initialBaseUrl = args.url !== undefined
|
|
182
|
-
? [{ url: args.url.substring(0, (0,
|
|
182
|
+
? [{ url: args.url.substring(0, (0, url_utils_1.getFilenameIndexInUrl)(args.url)) }]
|
|
183
183
|
: [];
|
|
184
184
|
var mpdBaseUrls = (0, resolve_base_urls_1.default)(initialBaseUrl, rootChildren.baseURLs);
|
|
185
185
|
var availabilityStartTime = (0, parse_availability_start_time_1.default)(rootAttributes, args.referenceDateTime);
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.default = resolveBaseURLs;
|
|
19
|
-
var
|
|
19
|
+
var url_utils_1 = require("../../../../utils/url-utils");
|
|
20
20
|
/**
|
|
21
21
|
* @param {Array.<string>} currentBaseURLs
|
|
22
22
|
* @param {Array.<Object>} newBaseUrlsIR
|
|
@@ -38,7 +38,7 @@ function resolveBaseURLs(currentBaseURLs, newBaseUrlsIR) {
|
|
|
38
38
|
var curBaseUrl = currentBaseURLs[i];
|
|
39
39
|
for (var j = 0; j < newBaseUrls.length; j++) {
|
|
40
40
|
var newBaseUrl = newBaseUrls[j];
|
|
41
|
-
var newUrl = (0,
|
|
41
|
+
var newUrl = (0, url_utils_1.resolveURL)(curBaseUrl.url, newBaseUrl.url);
|
|
42
42
|
result.push({
|
|
43
43
|
url: newUrl,
|
|
44
44
|
serviceLocation: (_a = newBaseUrl.serviceLocation) !== null && _a !== void 0 ? _a : curBaseUrl.serviceLocation,
|
|
@@ -58,7 +58,7 @@ var classes_1 = require("../../../manifest/classes");
|
|
|
58
58
|
var id_generator_1 = require("../../../utils/id_generator");
|
|
59
59
|
var is_null_or_undefined_1 = require("../../../utils/is_null_or_undefined");
|
|
60
60
|
var monotonic_timestamp_1 = require("../../../utils/monotonic_timestamp");
|
|
61
|
-
var
|
|
61
|
+
var url_utils_1 = require("../../../utils/url-utils");
|
|
62
62
|
var representation_index_1 = require("./representation_index");
|
|
63
63
|
/**
|
|
64
64
|
* Parse playlist string to JSON.
|
|
@@ -228,7 +228,7 @@ function createManifest(mplData, manifests, parserOptions) {
|
|
|
228
228
|
var newTextAdaptations = textTracks.map(function (track) {
|
|
229
229
|
var adaptationID = "gen-text-ada-" + generateAdaptationID();
|
|
230
230
|
var representationID = "gen-text-rep-" + generateRepresentationID();
|
|
231
|
-
var indexOfFilename = (0,
|
|
231
|
+
var indexOfFilename = (0, url_utils_1.getFilenameIndexInUrl)(track.url);
|
|
232
232
|
var cdnUrl = track.url.substring(0, indexOfFilename);
|
|
233
233
|
var filename = track.url.substring(indexOfFilename);
|
|
234
234
|
return {
|
|
@@ -49,8 +49,8 @@ var is_non_empty_string_1 = require("../../../utils/is_non_empty_string");
|
|
|
49
49
|
var is_null_or_undefined_1 = require("../../../utils/is_null_or_undefined");
|
|
50
50
|
var monotonic_timestamp_1 = require("../../../utils/monotonic_timestamp");
|
|
51
51
|
var object_assign_1 = require("../../../utils/object_assign");
|
|
52
|
-
var resolve_url_1 = require("../../../utils/resolve_url");
|
|
53
52
|
var string_parsing_1 = require("../../../utils/string_parsing");
|
|
53
|
+
var url_utils_1 = require("../../../utils/url-utils");
|
|
54
54
|
var isobmff_1 = require("../../containers/isobmff");
|
|
55
55
|
var check_manifest_ids_1 = require("../utils/check_manifest_ids");
|
|
56
56
|
var get_codecs_1 = require("./get_codecs");
|
|
@@ -337,7 +337,7 @@ function createSmoothStreamingParser(parserOptions) {
|
|
|
337
337
|
function parseFromDocument(doc, url, manifestReceivedTime) {
|
|
338
338
|
var baseUrl = "";
|
|
339
339
|
if (url !== undefined) {
|
|
340
|
-
var filenameIdx = (0,
|
|
340
|
+
var filenameIdx = (0, url_utils_1.getFilenameIndexInUrl)(url);
|
|
341
341
|
baseUrl = url.substring(0, filenameIdx);
|
|
342
342
|
}
|
|
343
343
|
var root = doc.documentElement;
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.default = constructSegmentUrl;
|
|
19
|
-
var
|
|
19
|
+
var url_utils_1 = require("../../utils/url-utils");
|
|
20
20
|
function constructSegmentUrl(wantedCdn, segment) {
|
|
21
21
|
if (wantedCdn === null) {
|
|
22
22
|
return null;
|
|
@@ -24,5 +24,5 @@ function constructSegmentUrl(wantedCdn, segment) {
|
|
|
24
24
|
if (segment.url === null) {
|
|
25
25
|
return wantedCdn.baseUrl;
|
|
26
26
|
}
|
|
27
|
-
return (0,
|
|
27
|
+
return (0, url_utils_1.resolveURL)(wantedCdn.baseUrl, segment.url);
|
|
28
28
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.constructSegmentUrl = constructSegmentUrl;
|
|
19
19
|
exports.isMP4EmbeddedTrack = isMP4EmbeddedTrack;
|
|
20
|
-
var
|
|
20
|
+
var url_utils_1 = require("../../utils/url-utils");
|
|
21
21
|
/**
|
|
22
22
|
* Returns `true` if the given Representation refers to segments in an MP4
|
|
23
23
|
* container
|
|
@@ -35,5 +35,5 @@ function constructSegmentUrl(wantedCdn, segment) {
|
|
|
35
35
|
if (segment.url === null) {
|
|
36
36
|
return wantedCdn.baseUrl;
|
|
37
37
|
}
|
|
38
|
-
return (0,
|
|
38
|
+
return (0, url_utils_1.resolveURL)(wantedCdn.baseUrl, segment.url);
|
|
39
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAI3C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAE7C,KAAK,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAE9E,KAAK,UAAU,GAAG,CAAC,GAAG,IAAI,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;AAIzD;;;GAGG;AACH,UAAU,aAAa;IACrB,gBAAgB,EAAE;QAChB,KAAK,EAAE,YAAY,CAAC;QACpB,MAAM,EAAE,UAAU,CAAC;KACpB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,YAAY,CAAC,aAAa,CAAC;IACtD,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IACzB,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;;IAavD;;;;;;;;;OASG;IACI,QAAQ,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,CACN,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,KAC9D,IAAI,GACR,IAAI;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAI3C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAE7C,KAAK,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAE9E,KAAK,UAAU,GAAG,CAAC,GAAG,IAAI,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;AAIzD;;;GAGG;AACH,UAAU,aAAa;IACrB,gBAAgB,EAAE;QAChB,KAAK,EAAE,YAAY,CAAC;QACpB,MAAM,EAAE,UAAU,CAAC;KACpB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,YAAY,CAAC,aAAa,CAAC;IACtD,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IACzB,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;;IAavD;;;;;;;;;OASG;IACI,QAAQ,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,CACN,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,KAC9D,IAAI,GACR,IAAI;IA6EP;;;OAGG;IACI,QAAQ,IAAI,YAAY;IAI/B;;;OAGG;IACI,SAAS,IAAI,UAAU;IAI9B;;;;;OAKG;IACI,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO;CAGjD"}
|
|
@@ -148,22 +148,21 @@ var Logger = /** @class */ (function (_super) {
|
|
|
148
148
|
/* eslint-enable no-invalid-this */
|
|
149
149
|
}
|
|
150
150
|
else {
|
|
151
|
-
var produceLogFn = function (logLevel
|
|
151
|
+
var produceLogFn = function (logLevel) {
|
|
152
152
|
return level >= _this._levels[logLevel]
|
|
153
153
|
? function () {
|
|
154
154
|
var args = [];
|
|
155
155
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
156
156
|
args[_i] = arguments[_i];
|
|
157
157
|
}
|
|
158
|
-
|
|
159
|
-
return logFn(logLevel, __spreadArray([now, namespace], __read(args), false));
|
|
158
|
+
return logFn(logLevel, args);
|
|
160
159
|
}
|
|
161
160
|
: noop_1.default;
|
|
162
161
|
};
|
|
163
|
-
this.error = produceLogFn("ERROR"
|
|
164
|
-
this.warn = produceLogFn("WARNING"
|
|
165
|
-
this.info = produceLogFn("INFO"
|
|
166
|
-
this.debug = produceLogFn("DEBUG"
|
|
162
|
+
this.error = produceLogFn("ERROR");
|
|
163
|
+
this.warn = produceLogFn("WARNING");
|
|
164
|
+
this.info = produceLogFn("INFO");
|
|
165
|
+
this.debug = produceLogFn("DEBUG");
|
|
167
166
|
}
|
|
168
167
|
this.trigger("onLogLevelChange", {
|
|
169
168
|
level: this._currentLevel,
|
|
@@ -22,6 +22,18 @@
|
|
|
22
22
|
* @returns {number}
|
|
23
23
|
*/
|
|
24
24
|
declare function getFilenameIndexInUrl(url: string): number;
|
|
25
|
+
/**
|
|
26
|
+
* Take two URLs and try to construct a relative URL for the second (`newUrl`)
|
|
27
|
+
* relative to the first (`baseUrl`).
|
|
28
|
+
*
|
|
29
|
+
* Returns `null` if they appear to be on different domains, depend on
|
|
30
|
+
* different schemes or if we don't have enough information to compute the
|
|
31
|
+
* relative URL.
|
|
32
|
+
* @param {string} baseUrl
|
|
33
|
+
* @param {string} newUrl
|
|
34
|
+
* @returns {string}
|
|
35
|
+
*/
|
|
36
|
+
declare function getRelativeUrl(baseUrl: string, newUrl: string): string | null;
|
|
25
37
|
/**
|
|
26
38
|
* Resolves multiple URL segments using the RFC 3986 URL resolution algorithm.
|
|
27
39
|
*
|
|
@@ -33,7 +45,6 @@ declare function getFilenameIndexInUrl(url: string): number;
|
|
|
33
45
|
* @param {...(string|undefined)} args - The URL segments to resolve.
|
|
34
46
|
* @returns {string} The resolved URL as a string.
|
|
35
47
|
*/
|
|
36
|
-
|
|
37
|
-
export { getFilenameIndexInUrl };
|
|
38
|
-
|
|
39
|
-
//# sourceMappingURL=resolve_url.d.ts.map
|
|
48
|
+
declare function resolveURL(...args: Array<string | undefined>): string;
|
|
49
|
+
export { getFilenameIndexInUrl, getRelativeUrl, resolveURL };
|
|
50
|
+
//# sourceMappingURL=url-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-utils.d.ts","sourceRoot":"","sources":["../../../src/utils/url-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAuBH;;;;;;;GAOG;AACH,iBAAS,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAuBlD;AAED;;;;;;;;;;GAUG;AACH,iBAAS,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkEtE;AAsLD;;;;;;;;;;GAUG;AACH,iBAAS,UAAU,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAe9D;AAED,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -40,8 +40,9 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
40
40
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
41
41
|
};
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
exports.resolveURL = resolveURL;
|
|
44
43
|
exports.getFilenameIndexInUrl = getFilenameIndexInUrl;
|
|
44
|
+
exports.getRelativeUrl = getRelativeUrl;
|
|
45
|
+
exports.resolveURL = resolveURL;
|
|
45
46
|
var starts_with_1 = require("./starts_with");
|
|
46
47
|
// Scheme part of an url (e.g. "http://").
|
|
47
48
|
var schemeRe = /^(?:[a-z]+:)?\/\//i;
|
|
@@ -88,6 +89,75 @@ function getFilenameIndexInUrl(url) {
|
|
|
88
89
|
}
|
|
89
90
|
return indexOfLastSlash + 1;
|
|
90
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Take two URLs and try to construct a relative URL for the second (`newUrl`)
|
|
94
|
+
* relative to the first (`baseUrl`).
|
|
95
|
+
*
|
|
96
|
+
* Returns `null` if they appear to be on different domains, depend on
|
|
97
|
+
* different schemes or if we don't have enough information to compute the
|
|
98
|
+
* relative URL.
|
|
99
|
+
* @param {string} baseUrl
|
|
100
|
+
* @param {string} newUrl
|
|
101
|
+
* @returns {string}
|
|
102
|
+
*/
|
|
103
|
+
function getRelativeUrl(baseUrl, newUrl) {
|
|
104
|
+
var baseParts = parseURL(baseUrl);
|
|
105
|
+
var newParts = parseURL(newUrl);
|
|
106
|
+
if (baseParts.scheme !== newParts.scheme ||
|
|
107
|
+
baseParts.authority !== newParts.authority) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
if (
|
|
111
|
+
// if base and new path are mixed between absolute and relative path, return null
|
|
112
|
+
(baseParts.path[0] !== undefined &&
|
|
113
|
+
baseParts.path[0] !== "/" &&
|
|
114
|
+
newParts.path[0] === "/") ||
|
|
115
|
+
(newParts.path[0] !== undefined &&
|
|
116
|
+
newParts.path[0] !== "/" &&
|
|
117
|
+
baseParts.path[0] === "/")) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
var baseNormalizedPath = removeDotSegment(baseParts.path);
|
|
121
|
+
var newNormalizedPath = removeDotSegment(newParts.path);
|
|
122
|
+
var relativePath;
|
|
123
|
+
if (baseNormalizedPath === newNormalizedPath) {
|
|
124
|
+
relativePath = "";
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
var basePathSplitted = baseNormalizedPath.split("/");
|
|
128
|
+
// remove everything after the last trailing /
|
|
129
|
+
basePathSplitted.pop();
|
|
130
|
+
var newPathSplitted = newNormalizedPath.split("/");
|
|
131
|
+
while (basePathSplitted.length > 0 &&
|
|
132
|
+
newPathSplitted.length > 0 &&
|
|
133
|
+
basePathSplitted[0] === newPathSplitted[0]) {
|
|
134
|
+
basePathSplitted.shift();
|
|
135
|
+
newPathSplitted.shift();
|
|
136
|
+
}
|
|
137
|
+
while (basePathSplitted.length > 0) {
|
|
138
|
+
basePathSplitted.shift();
|
|
139
|
+
newPathSplitted.unshift("..");
|
|
140
|
+
}
|
|
141
|
+
var pathJoined = newPathSplitted.join("/");
|
|
142
|
+
if (pathJoined.endsWith("../") || pathJoined.endsWith("./")) {
|
|
143
|
+
pathJoined = pathJoined.slice(0, pathJoined.length - 1);
|
|
144
|
+
}
|
|
145
|
+
relativePath = pathJoined === "" ? "." : pathJoined;
|
|
146
|
+
}
|
|
147
|
+
var result = relativePath;
|
|
148
|
+
if (relativePath === "" && newParts.query === baseParts.query) {
|
|
149
|
+
// path and query is the same, we don't need to rewrite it
|
|
150
|
+
}
|
|
151
|
+
else if (newParts.query) {
|
|
152
|
+
result += "?";
|
|
153
|
+
result += newParts.query;
|
|
154
|
+
}
|
|
155
|
+
if (newParts.fragment) {
|
|
156
|
+
result += "#";
|
|
157
|
+
result += newParts.fragment;
|
|
158
|
+
}
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
91
161
|
/**
|
|
92
162
|
* Resolve the output URL from the baseURL and the relative reference as
|
|
93
163
|
* specified by RFC 3986 section 5.
|
|
@@ -283,4 +353,3 @@ function resolveURL() {
|
|
|
283
353
|
return resolveURL.apply(void 0, __spreadArray([resolvedURL], __read(remainingArgs), false));
|
|
284
354
|
}
|
|
285
355
|
}
|
|
286
|
-
exports.default = resolveURL;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedded_worker.d.ts","sourceRoot":"","sources":["../../../src/__GENERATED_CODE/embedded_worker.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"embedded_worker.d.ts","sourceRoot":"","sources":["../../../src/__GENERATED_CODE/embedded_worker.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,IAAI,MAA89pT,CAAC;AACz+pT,OAAO,EAAE,IAAI,IAAI,eAAe,EAAE,CAAC;AACnC,eAAe,IAAI,CAAC"}
|