shaka-player 4.6.2 → 4.6.4
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 +22 -0
- package/CONTRIBUTORS +1 -0
- package/demo/common/asset.js +0 -1
- package/demo/common/assets.js +0 -1
- package/demo/custom.js +2 -0
- package/dist/demo.compiled.debug.js +3 -3
- package/dist/demo.compiled.debug.map +1 -1
- package/dist/demo.compiled.js +3 -3
- package/dist/demo.compiled.map +1 -1
- package/dist/deps.js +4 -4
- package/dist/locales.js +32 -32
- package/dist/receiver.compiled.debug.map +1 -1
- package/dist/receiver.compiled.map +1 -1
- package/dist/shaka-player.compiled.d.ts +1 -1
- package/dist/shaka-player.compiled.debug.d.ts +1 -1
- package/dist/shaka-player.compiled.debug.externs.js +5 -2
- package/dist/shaka-player.compiled.debug.js +286 -282
- package/dist/shaka-player.compiled.debug.map +3 -3
- package/dist/shaka-player.compiled.externs.js +5 -2
- package/dist/shaka-player.compiled.js +423 -419
- package/dist/shaka-player.compiled.map +3 -3
- package/dist/shaka-player.ui.d.ts +1 -1
- package/dist/shaka-player.ui.debug.d.ts +1 -1
- package/dist/shaka-player.ui.debug.externs.js +5 -2
- package/dist/shaka-player.ui.debug.js +237 -234
- package/dist/shaka-player.ui.debug.map +3 -3
- package/dist/shaka-player.ui.externs.js +5 -2
- package/dist/shaka-player.ui.js +517 -512
- package/dist/shaka-player.ui.map +3 -3
- package/docs/tutorials/ui.md +3 -1
- package/externs/lcevc.js +6 -0
- package/externs/shaka/codecs.js +6 -0
- package/externs/shaka/transmuxer.js +6 -0
- package/lib/ads/client_side_ad_manager.js +4 -0
- package/lib/ads/media_tailor_ad_manager.js +5 -0
- package/lib/ads/server_side_ad_manager.js +4 -0
- package/lib/dash/dash_parser.js +2 -2
- package/lib/hls/hls_parser.js +19 -6
- package/lib/media/drm_engine.js +0 -3
- package/lib/media/media_source_engine.js +11 -5
- package/lib/media/streaming_engine.js +3 -2
- package/lib/media/video_wrapper.js +4 -3
- package/lib/player.js +4 -6
- package/lib/text/simple_text_displayer.js +8 -7
- package/lib/text/text_utils.js +39 -13
- package/lib/text/ui_text_displayer.js +70 -15
- package/lib/text/web_vtt_generator.js +1 -1
- package/lib/util/mp4_box_parsers.js +39 -5
- package/package.json +1 -1
- package/test/media/drm_engine_unit.js +27 -0
- package/test/test/assets/audio-xhe-aac.mp4 +0 -0
- package/test/test/util/layout_tests.js +2 -1
- package/test/text/simple_text_displayer_unit.js +1 -1
- package/test/text/web_vtt_generator_unit.js +3 -3
- package/test/transmuxer/transmuxer_integration.js +3 -3
- package/test/util/mp4_box_parsers_unit.js +36 -0
|
@@ -2390,6 +2390,33 @@ describe('DrmEngine', () => {
|
|
|
2390
2390
|
[drmInfoAudio]);
|
|
2391
2391
|
expect(returned).toEqual([drmInfoDesired]);
|
|
2392
2392
|
});
|
|
2393
|
+
|
|
2394
|
+
it('does not match incompatible drmInfos', () => {
|
|
2395
|
+
// Different key systems do not match.
|
|
2396
|
+
const drmInfo1 = {
|
|
2397
|
+
keySystem: 'drm.abc',
|
|
2398
|
+
licenseServerUri: undefined,
|
|
2399
|
+
distinctiveIdentifierRequired: false,
|
|
2400
|
+
persistentStateRequired: false,
|
|
2401
|
+
serverCertificate: undefined,
|
|
2402
|
+
serverCertificateUri: '',
|
|
2403
|
+
initData: [],
|
|
2404
|
+
keyIds: new Set(),
|
|
2405
|
+
};
|
|
2406
|
+
const drmInfo2 = {
|
|
2407
|
+
keySystem: 'drm.foobar',
|
|
2408
|
+
licenseServerUri: undefined,
|
|
2409
|
+
distinctiveIdentifierRequired: false,
|
|
2410
|
+
persistentStateRequired: false,
|
|
2411
|
+
serverCertificate: undefined,
|
|
2412
|
+
serverCertificateUri: '',
|
|
2413
|
+
initData: [],
|
|
2414
|
+
keyIds: new Set(),
|
|
2415
|
+
};
|
|
2416
|
+
const returned1 = shaka.media.DrmEngine.getCommonDrmInfos(
|
|
2417
|
+
[drmInfo1], [drmInfo2]);
|
|
2418
|
+
expect(returned1).toEqual([]);
|
|
2419
|
+
});
|
|
2393
2420
|
}); // describe('getCommonDrmInfos')
|
|
2394
2421
|
|
|
2395
2422
|
describe('configure', () => {
|
|
Binary file
|
|
@@ -377,7 +377,8 @@ shaka.test.NativeTextLayoutTests = class extends shaka.test.TextLayoutTests {
|
|
|
377
377
|
|
|
378
378
|
/** @override */
|
|
379
379
|
recreateTextDisplayer() {
|
|
380
|
-
this.textDisplayer = new shaka.text.SimpleTextDisplayer(
|
|
380
|
+
this.textDisplayer = new shaka.text.SimpleTextDisplayer(
|
|
381
|
+
this.video, shaka.Player.TextTrackLabel);
|
|
381
382
|
this.textDisplayer.setTextVisibility(true);
|
|
382
383
|
}
|
|
383
384
|
|
|
@@ -18,7 +18,7 @@ describe('SimpleTextDisplayer', () => {
|
|
|
18
18
|
|
|
19
19
|
beforeEach(() => {
|
|
20
20
|
video = new shaka.test.FakeVideo();
|
|
21
|
-
displayer = new SimpleTextDisplayer(video);
|
|
21
|
+
displayer = new SimpleTextDisplayer(video, shaka.Player.TextTrackLabel);
|
|
22
22
|
|
|
23
23
|
expect(video.textTracks.length).toBe(1);
|
|
24
24
|
mockTrack = /** @type {!shaka.test.FakeTextTrack} */ (video.textTracks[0]);
|
|
@@ -18,11 +18,11 @@ describe('WebVttGenerator', () => {
|
|
|
18
18
|
const shakaCue2 = new shaka.text.Cue(40, 50, 'Test2');
|
|
19
19
|
shakaCue2.textAlign = shaka.text.Cue.textAlign.RIGHT;
|
|
20
20
|
shakaCue2.writingMode = shaka.text.Cue.writingMode.VERTICAL_RIGHT_TO_LEFT;
|
|
21
|
-
shakaCue2.color = '#
|
|
22
|
-
shakaCue2.backgroundColor = '
|
|
21
|
+
shakaCue2.color = '#00ff00ff';
|
|
22
|
+
shakaCue2.backgroundColor = 'rgba(0,255,0,1)';
|
|
23
23
|
const shakaCue3 = new shaka.text.Cue(50, 51, 'Test3');
|
|
24
24
|
shakaCue3.textAlign = shaka.text.Cue.textAlign.CENTER;
|
|
25
|
-
shakaCue3.color = '
|
|
25
|
+
shakaCue3.color = 'rgb(255,255,0)';
|
|
26
26
|
shakaCue3.backgroundColor = '#00ffff';
|
|
27
27
|
const shakaCue4 = new shaka.text.Cue(52, 53, 'Test4');
|
|
28
28
|
shakaCue4.textAlign = shaka.text.Cue.textAlign.START;
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
function checkNoBrokenEdge() {
|
|
16
16
|
const chromeVersion = shaka.util.Platform.chromeVersion();
|
|
17
17
|
if (shaka.util.Platform.isWindows() && shaka.util.Platform.isEdge() &&
|
|
18
|
-
chromeVersion && chromeVersion <=
|
|
18
|
+
chromeVersion && chromeVersion <= 122) {
|
|
19
19
|
// When the tests fail, it's due to the manifest parser failing to find a
|
|
20
20
|
// factory. Attempt to find a factory first, to avoid filtering the tests
|
|
21
21
|
// when running in a non-broken Edge environment.
|
|
@@ -66,7 +66,7 @@ filterDescribe('Transmuxer Player', checkNoBrokenEdge, () => {
|
|
|
66
66
|
// https://bugs.chromium.org/p/chromium/issues/detail?id=1450313
|
|
67
67
|
const chromeVersion = shaka.util.Platform.chromeVersion();
|
|
68
68
|
if (shaka.util.Platform.isWindows() && shaka.util.Platform.isEdge() &&
|
|
69
|
-
chromeVersion && chromeVersion <=
|
|
69
|
+
chromeVersion && chromeVersion <= 122) {
|
|
70
70
|
return false;
|
|
71
71
|
}
|
|
72
72
|
return true;
|
|
@@ -87,7 +87,7 @@ filterDescribe('Transmuxer Player', checkNoBrokenEdge, () => {
|
|
|
87
87
|
// https://bugs.chromium.org/p/chromium/issues/detail?id=1450313
|
|
88
88
|
const chromeVersion = shaka.util.Platform.chromeVersion();
|
|
89
89
|
if (shaka.util.Platform.isWindows() && shaka.util.Platform.isEdge() &&
|
|
90
|
-
chromeVersion && chromeVersion <=
|
|
90
|
+
chromeVersion && chromeVersion <= 122) {
|
|
91
91
|
return false;
|
|
92
92
|
}
|
|
93
93
|
return true;
|
|
@@ -8,18 +8,24 @@ describe('Mp4BoxParsers', () => {
|
|
|
8
8
|
const videoInitSegmentUri = '/base/test/test/assets/sintel-video-init.mp4';
|
|
9
9
|
const videoSegmentUri = '/base/test/test/assets/sintel-video-segment.mp4';
|
|
10
10
|
|
|
11
|
+
const audioInitSegmentXheAacUri = '/base/test/test/assets/audio-xhe-aac.mp4';
|
|
12
|
+
|
|
11
13
|
/** @type {!ArrayBuffer} */
|
|
12
14
|
let videoInitSegment;
|
|
13
15
|
/** @type {!ArrayBuffer} */
|
|
14
16
|
let videoSegment;
|
|
17
|
+
/** @type {!ArrayBuffer} */
|
|
18
|
+
let audioInitSegmentXheAac;
|
|
15
19
|
|
|
16
20
|
beforeAll(async () => {
|
|
17
21
|
const responses = await Promise.all([
|
|
18
22
|
shaka.test.Util.fetch(videoInitSegmentUri),
|
|
19
23
|
shaka.test.Util.fetch(videoSegmentUri),
|
|
24
|
+
shaka.test.Util.fetch(audioInitSegmentXheAacUri),
|
|
20
25
|
]);
|
|
21
26
|
videoInitSegment = responses[0];
|
|
22
27
|
videoSegment = responses[1];
|
|
28
|
+
audioInitSegmentXheAac = responses[2];
|
|
23
29
|
});
|
|
24
30
|
|
|
25
31
|
it('parses init segment', () => {
|
|
@@ -157,6 +163,36 @@ describe('Mp4BoxParsers', () => {
|
|
|
157
163
|
expect(baseMediaDecodeTime).toBe(expectedBaseMediaDecodeTime);
|
|
158
164
|
});
|
|
159
165
|
|
|
166
|
+
it('parses ESDS box for xHE-AAC segment', () => {
|
|
167
|
+
let channelCount;
|
|
168
|
+
let sampleRate;
|
|
169
|
+
let codec;
|
|
170
|
+
|
|
171
|
+
const Mp4Parser = shaka.util.Mp4Parser;
|
|
172
|
+
new Mp4Parser()
|
|
173
|
+
.box('moov', Mp4Parser.children)
|
|
174
|
+
.box('trak', Mp4Parser.children)
|
|
175
|
+
.box('mdia', Mp4Parser.children)
|
|
176
|
+
.box('minf', Mp4Parser.children)
|
|
177
|
+
.box('stbl', Mp4Parser.children)
|
|
178
|
+
.fullBox('stsd', Mp4Parser.sampleDescription)
|
|
179
|
+
.box('mp4a', (box) => {
|
|
180
|
+
const parsedMP4ABox = shaka.util.Mp4BoxParsers.parseMP4A(box.reader);
|
|
181
|
+
channelCount = parsedMP4ABox.channelCount;
|
|
182
|
+
sampleRate = parsedMP4ABox.sampleRate;
|
|
183
|
+
if (box.reader.hasMoreData()) {
|
|
184
|
+
Mp4Parser.children(box);
|
|
185
|
+
}
|
|
186
|
+
})
|
|
187
|
+
.box('esds', (box) => {
|
|
188
|
+
const parsedESDSBox = shaka.util.Mp4BoxParsers.parseESDS(box.reader);
|
|
189
|
+
codec = parsedESDSBox.codec;
|
|
190
|
+
}).parse(audioInitSegmentXheAac, /* partialOkay= */ false);
|
|
191
|
+
expect(channelCount).toBe(2);
|
|
192
|
+
expect(sampleRate).toBe(48000);
|
|
193
|
+
expect(codec).toBe('mp4a.40.42');
|
|
194
|
+
});
|
|
195
|
+
|
|
160
196
|
/**
|
|
161
197
|
*
|
|
162
198
|
* Explanation on the Uint8Array:
|