hls.js 1.5.8-0.canary.10170 → 1.5.8
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/README.md +3 -4
- package/dist/hls-demo.js +3 -12
- package/dist/hls-demo.js.map +1 -1
- package/dist/hls.js +2366 -3626
- package/dist/hls.js.d.ts +84 -98
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +1643 -2278
- package/dist/hls.light.js.map +1 -1
- package/dist/hls.light.min.js +1 -1
- package/dist/hls.light.min.js.map +1 -1
- package/dist/hls.light.mjs +1258 -1903
- package/dist/hls.light.mjs.map +1 -1
- package/dist/hls.min.js +1 -1
- package/dist/hls.min.js.map +1 -1
- package/dist/hls.mjs +1531 -2794
- package/dist/hls.mjs.map +1 -1
- package/dist/hls.worker.js +1 -1
- package/dist/hls.worker.js.map +1 -1
- package/package.json +30 -30
- package/src/config.ts +2 -3
- package/src/controller/abr-controller.ts +20 -24
- package/src/controller/audio-stream-controller.ts +74 -68
- package/src/controller/audio-track-controller.ts +1 -1
- package/src/controller/base-playlist-controller.ts +10 -27
- package/src/controller/base-stream-controller.ts +38 -160
- package/src/controller/buffer-controller.ts +92 -230
- package/src/controller/buffer-operation-queue.ts +19 -16
- package/src/controller/cap-level-controller.ts +2 -3
- package/src/controller/cmcd-controller.ts +9 -30
- package/src/controller/content-steering-controller.ts +6 -8
- package/src/controller/eme-controller.ts +23 -10
- package/src/controller/error-controller.ts +8 -6
- package/src/controller/fps-controller.ts +3 -8
- package/src/controller/fragment-tracker.ts +11 -15
- package/src/controller/gap-controller.ts +16 -43
- package/src/controller/id3-track-controller.ts +7 -7
- package/src/controller/latency-controller.ts +11 -9
- package/src/controller/level-controller.ts +19 -13
- package/src/controller/stream-controller.ts +32 -37
- package/src/controller/subtitle-stream-controller.ts +40 -28
- package/src/controller/subtitle-track-controller.ts +3 -5
- package/src/controller/timeline-controller.ts +31 -25
- package/src/crypt/aes-crypto.ts +2 -21
- package/src/crypt/decrypter.ts +18 -32
- package/src/crypt/fast-aes-key.ts +5 -24
- package/src/demux/audio/aacdemuxer.ts +2 -2
- package/src/demux/audio/ac3-demuxer.ts +3 -4
- package/src/demux/audio/adts.ts +4 -9
- package/src/demux/audio/base-audio-demuxer.ts +14 -16
- package/src/demux/audio/mp3demuxer.ts +3 -4
- package/src/demux/audio/mpegaudio.ts +1 -1
- package/src/demux/id3.ts +411 -0
- package/src/demux/mp4demuxer.ts +7 -7
- package/src/demux/sample-aes.ts +0 -2
- package/src/demux/transmuxer-interface.ts +12 -4
- package/src/demux/transmuxer-worker.ts +4 -4
- package/src/demux/transmuxer.ts +3 -16
- package/src/demux/tsdemuxer.ts +37 -71
- package/src/demux/video/avc-video-parser.ts +119 -208
- package/src/demux/video/base-video-parser.ts +2 -134
- package/src/demux/video/exp-golomb.ts +208 -0
- package/src/events.ts +1 -8
- package/src/exports-named.ts +1 -1
- package/src/hls.ts +37 -49
- package/src/loader/fragment-loader.ts +3 -10
- package/src/loader/key-loader.ts +1 -3
- package/src/loader/level-key.ts +9 -10
- package/src/loader/playlist-loader.ts +5 -4
- package/src/remux/mp4-generator.ts +1 -196
- package/src/remux/mp4-remuxer.ts +8 -24
- package/src/task-loop.ts +2 -5
- package/src/types/component-api.ts +1 -3
- package/src/types/demuxer.ts +0 -3
- package/src/types/events.ts +0 -4
- package/src/types/remuxer.ts +1 -1
- package/src/utils/buffer-helper.ts +31 -12
- package/src/utils/codecs.ts +5 -34
- package/src/utils/fetch-loader.ts +1 -1
- package/src/utils/imsc1-ttml-parser.ts +1 -1
- package/src/utils/keysystem-util.ts +6 -1
- package/src/utils/logger.ts +23 -58
- package/src/utils/mp4-tools.ts +3 -5
- package/src/utils/webvtt-parser.ts +1 -1
- package/src/crypt/decrypter-aes-mode.ts +0 -4
- package/src/demux/video/hevc-video-parser.ts +0 -749
- package/src/utils/encryption-methods-util.ts +0 -21
- package/src/utils/utf8-utils.ts +0 -18
@@ -1,7 +1,7 @@
|
|
1
1
|
import { findBox } from './mp4-tools';
|
2
2
|
import { parseTimeStamp } from './vttparser';
|
3
3
|
import VTTCue from './vttcue';
|
4
|
-
import { utf8ArrayToStr } from '
|
4
|
+
import { utf8ArrayToStr } from '../demux/id3';
|
5
5
|
import {
|
6
6
|
RationalTimestamp,
|
7
7
|
toTimescaleFromScale,
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import { base64Decode } from './numeric-encoding-utils';
|
2
|
-
import { strToUtf8array } from './utf8-utils';
|
3
2
|
|
4
3
|
function getKeyIdBytes(str: string): Uint8Array {
|
5
4
|
const keyIdbytes = strToUtf8array(str).subarray(0, 16);
|
@@ -41,3 +40,9 @@ export function convertDataUriToArrayBytes(uri: string): Uint8Array | null {
|
|
41
40
|
}
|
42
41
|
return keydata;
|
43
42
|
}
|
43
|
+
|
44
|
+
export function strToUtf8array(str: string): Uint8Array {
|
45
|
+
return Uint8Array.from(unescape(encodeURIComponent(str)), (c) =>
|
46
|
+
c.charCodeAt(0),
|
47
|
+
);
|
48
|
+
}
|
package/src/utils/logger.ts
CHANGED
@@ -11,25 +11,6 @@ export interface ILogger {
|
|
11
11
|
error: ILogFunction;
|
12
12
|
}
|
13
13
|
|
14
|
-
export class Logger implements ILogger {
|
15
|
-
trace: ILogFunction;
|
16
|
-
debug: ILogFunction;
|
17
|
-
log: ILogFunction;
|
18
|
-
warn: ILogFunction;
|
19
|
-
info: ILogFunction;
|
20
|
-
error: ILogFunction;
|
21
|
-
|
22
|
-
constructor(label: string, logger: ILogger) {
|
23
|
-
const lb = `[${label}]:`;
|
24
|
-
this.trace = noop;
|
25
|
-
this.debug = logger.debug.bind(null, lb);
|
26
|
-
this.log = logger.log.bind(null, lb);
|
27
|
-
this.warn = logger.warn.bind(null, lb);
|
28
|
-
this.info = logger.info.bind(null, lb);
|
29
|
-
this.error = logger.error.bind(null, lb);
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
14
|
const noop: ILogFunction = function () {};
|
34
15
|
|
35
16
|
const fakeLogger: ILogger = {
|
@@ -41,9 +22,7 @@ const fakeLogger: ILogger = {
|
|
41
22
|
error: noop,
|
42
23
|
};
|
43
24
|
|
44
|
-
|
45
|
-
return Object.assign({}, fakeLogger);
|
46
|
-
}
|
25
|
+
let exportedLogger: ILogger = fakeLogger;
|
47
26
|
|
48
27
|
// let lastCallTime;
|
49
28
|
// function formatMsgWithTimeInfo(type, msg) {
|
@@ -54,37 +33,33 @@ function createLogger() {
|
|
54
33
|
// return msg;
|
55
34
|
// }
|
56
35
|
|
57
|
-
function consolePrintFn(type: string
|
36
|
+
function consolePrintFn(type: string): ILogFunction {
|
58
37
|
const func: ILogFunction = self.console[type];
|
59
|
-
|
60
|
-
|
61
|
-
|
38
|
+
if (func) {
|
39
|
+
return func.bind(self.console, `[${type}] >`);
|
40
|
+
}
|
41
|
+
return noop;
|
62
42
|
}
|
63
43
|
|
64
|
-
function
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
)
|
69
|
-
|
70
|
-
|
71
|
-
|
44
|
+
function exportLoggerFunctions(
|
45
|
+
debugConfig: boolean | ILogger,
|
46
|
+
...functions: string[]
|
47
|
+
): void {
|
48
|
+
functions.forEach(function (type) {
|
49
|
+
exportedLogger[type] = debugConfig[type]
|
50
|
+
? debugConfig[type].bind(debugConfig)
|
51
|
+
: consolePrintFn(type);
|
52
|
+
});
|
72
53
|
}
|
73
54
|
|
74
|
-
|
75
|
-
|
76
|
-
export function enableLogs(
|
77
|
-
debugConfig: boolean | ILogger,
|
78
|
-
context: string,
|
79
|
-
id?: string | undefined,
|
80
|
-
): ILogger {
|
55
|
+
export function enableLogs(debugConfig: boolean | ILogger, id: string): void {
|
81
56
|
// check that console is available
|
82
|
-
const newLogger = createLogger();
|
83
57
|
if (
|
84
58
|
(typeof console === 'object' && debugConfig === true) ||
|
85
59
|
typeof debugConfig === 'object'
|
86
60
|
) {
|
87
|
-
|
61
|
+
exportLoggerFunctions(
|
62
|
+
debugConfig,
|
88
63
|
// Remove out from list here to hard-disable a log-level
|
89
64
|
// 'trace',
|
90
65
|
'debug',
|
@@ -92,29 +67,19 @@ export function enableLogs(
|
|
92
67
|
'info',
|
93
68
|
'warn',
|
94
69
|
'error',
|
95
|
-
|
96
|
-
keys.forEach((key) => {
|
97
|
-
newLogger[key] = getLoggerFn(key, debugConfig, id);
|
98
|
-
});
|
70
|
+
);
|
99
71
|
// Some browsers don't allow to use bind on console object anyway
|
100
72
|
// fallback to default if needed
|
101
73
|
try {
|
102
|
-
|
103
|
-
`Debug logs enabled for "${
|
74
|
+
exportedLogger.log(
|
75
|
+
`Debug logs enabled for "${id}" in hls.js version ${__VERSION__}`,
|
104
76
|
);
|
105
77
|
} catch (e) {
|
106
|
-
|
107
|
-
return createLogger();
|
78
|
+
exportedLogger = fakeLogger;
|
108
79
|
}
|
109
|
-
// global exported logger uses the same functions as new logger without `id`
|
110
|
-
keys.forEach((key) => {
|
111
|
-
exportedLogger[key] = getLoggerFn(key, debugConfig);
|
112
|
-
});
|
113
80
|
} else {
|
114
|
-
|
115
|
-
Object.assign(exportedLogger, newLogger);
|
81
|
+
exportedLogger = fakeLogger;
|
116
82
|
}
|
117
|
-
return newLogger;
|
118
83
|
}
|
119
84
|
|
120
85
|
export const logger: ILogger = exportedLogger;
|
package/src/utils/mp4-tools.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { ElementaryStreamTypes } from '../loader/fragment';
|
2
2
|
import { sliceUint8 } from './typed-array';
|
3
|
-
import { utf8ArrayToStr } from '
|
3
|
+
import { utf8ArrayToStr } from '../demux/id3';
|
4
4
|
import { logger } from '../utils/logger';
|
5
5
|
import Hex from './hex';
|
6
6
|
import type { PassthroughTrack, UserdataSample } from '../types/demuxer';
|
@@ -327,7 +327,7 @@ function parseStsd(stsd: Uint8Array): { codec: string; encrypted: boolean } {
|
|
327
327
|
case 'mp4a': {
|
328
328
|
const codecBox = findBox(sampleEntries, [fourCC])[0];
|
329
329
|
const esdsBox = findBox(codecBox.subarray(28), ['esds'])[0];
|
330
|
-
if (esdsBox && esdsBox.length >
|
330
|
+
if (esdsBox && esdsBox.length > 12) {
|
331
331
|
let i = 4;
|
332
332
|
// ES Descriptor tag
|
333
333
|
if (esdsBox[i++] !== 0x03) {
|
@@ -478,9 +478,7 @@ function parseStsd(stsd: Uint8Array): { codec: string; encrypted: boolean } {
|
|
478
478
|
|
479
479
|
function skipBERInteger(bytes: Uint8Array, i: number): number {
|
480
480
|
const limit = i + 5;
|
481
|
-
while (bytes[i++] & 0x80 && i < limit) {
|
482
|
-
/* do nothing */
|
483
|
-
}
|
481
|
+
while (bytes[i++] & 0x80 && i < limit) {}
|
484
482
|
return i;
|
485
483
|
}
|
486
484
|
|