shaka-player 3.1.1 → 3.1.5
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/AUTHORS +7 -2
- package/CHANGELOG.md +199 -0
- package/CONTRIBUTORS +9 -3
- package/build/generateExterns.js +1 -1
- package/build/misspellings.txt +1 -0
- package/build/shakaBuildHelpers.py +6 -5
- package/build/subprocessWindowsPatch.py +103 -0
- package/demo/common/assets.js +1 -1
- package/dist/controls.css +2 -2
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +1 -1
- package/dist/demo.compiled.js +1 -1
- package/dist/deps.js +7 -7
- package/dist/locales.js +35 -33
- package/dist/receiver.compiled.debug.js +1 -1
- package/dist/receiver.compiled.js +1 -1
- package/dist/shaka-player.compiled.d.ts +171 -3
- package/dist/shaka-player.compiled.debug.d.ts +171 -3
- package/dist/shaka-player.compiled.debug.externs.js +179 -1
- package/dist/shaka-player.compiled.debug.js +365 -344
- package/dist/shaka-player.compiled.debug.map +3 -3
- package/dist/shaka-player.compiled.externs.js +179 -1
- package/dist/shaka-player.compiled.js +806 -798
- package/dist/shaka-player.compiled.map +3 -3
- package/dist/shaka-player.ui.d.ts +171 -3
- package/dist/shaka-player.ui.debug.d.ts +171 -3
- package/dist/shaka-player.ui.debug.externs.js +181 -3
- package/dist/shaka-player.ui.debug.js +458 -435
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +181 -3
- package/dist/shaka-player.ui.js +927 -918
- package/dist/shaka-player.ui.map +4 -4
- package/docs/tutorials/fairplay.md +1 -1
- package/docs/tutorials/faq.md +14 -0
- package/docs/tutorials/index.json +2 -2
- package/docs/tutorials/upgrade-v3.md +38 -0
- package/docs/tutorials/upgrade.md +3 -3
- package/externs/ima.js +4 -0
- package/externs/shaka/ads.js +2 -0
- package/externs/shaka/player.js +6 -0
- package/externs/shaka/text.js +10 -0
- package/karma.conf.js +1 -0
- package/lib/ads/ad_manager.js +29 -11
- package/lib/ads/client_side_ad_manager.js +76 -86
- package/lib/ads/server_side_ad_manager.js +26 -11
- package/lib/cast/cast_proxy.js +3 -2
- package/lib/cast/cast_receiver.js +2 -1
- package/lib/cast/cast_sender.js +2 -2
- package/lib/cea/sei_processor.js +24 -17
- package/lib/dash/dash_parser.js +100 -5
- package/lib/dash/segment_list.js +1 -1
- package/lib/dash/segment_template.js +7 -4
- package/lib/hls/hls_parser.js +44 -17
- package/lib/media/closed_caption_parser.js +3 -1
- package/lib/media/content_workarounds.js +12 -0
- package/lib/media/drm_engine.js +20 -1
- package/lib/media/gap_jumping_controller.js +8 -4
- package/lib/media/media_source_engine.js +1 -2
- package/lib/media/playhead.js +1 -1
- package/lib/media/presentation_timeline.js +3 -1
- package/lib/media/segment_reference.js +8 -0
- package/lib/media/streaming_engine.js +28 -19
- package/lib/net/networking_engine.js +2 -1
- package/lib/player.js +108 -54
- package/lib/polyfill/encryption_scheme.js +2 -0
- package/lib/polyfill/fullscreen.js +2 -0
- package/lib/polyfill/mathround.js +2 -0
- package/lib/polyfill/media_capabilities.js +76 -22
- package/lib/polyfill/mediasource.js +8 -0
- package/lib/polyfill/orientation.js +3 -1
- package/lib/polyfill/patchedmediakeys_apple.js +6 -4
- package/lib/polyfill/patchedmediakeys_ms.js +6 -4
- package/lib/polyfill/patchedmediakeys_nop.js +2 -0
- package/lib/polyfill/patchedmediakeys_webkit.js +6 -4
- package/lib/polyfill/pip_webkit.js +2 -0
- package/lib/polyfill/storage_estimate.js +2 -0
- package/lib/polyfill/video_play_promise.js +2 -0
- package/lib/polyfill/videoplaybackquality.js +2 -0
- package/lib/polyfill/vttcue.js +2 -0
- package/lib/text/cue.js +17 -0
- package/lib/text/mp4_ttml_parser.js +3 -0
- package/lib/text/text_engine.js +14 -2
- package/lib/text/ttml_text_parser.js +135 -87
- package/lib/text/ui_text_displayer.js +233 -83
- package/lib/text/vtt_text_parser.js +4 -2
- package/lib/util/fake_event.js +53 -7
- package/lib/util/mp4_box_parsers.js +1 -1
- package/lib/util/periods.js +111 -35
- package/lib/util/platform.js +13 -1
- package/lib/util/stream_utils.js +79 -10
- package/lib/util/xml_utils.js +19 -0
- package/package.json +2 -2
- package/test/cast/cast_proxy_unit.js +12 -6
- package/test/cast/cast_receiver_integration.js +1 -1
- package/test/cast/cast_utils_unit.js +1 -1
- package/test/cea/mp4_cea_parser_unit.js +26 -0
- package/test/dash/dash_parser_live_unit.js +1 -0
- package/test/dash/dash_parser_manifest_unit.js +220 -2
- package/test/dash/dash_parser_segment_template_unit.js +3 -3
- package/test/hls/hls_parser_unit.js +5 -1
- package/test/media/closed_caption_parser_unit.js +20 -0
- package/test/media/drm_engine_unit.js +56 -0
- package/test/media/playhead_unit.js +27 -1
- package/test/media/presentation_timeline_unit.js +19 -0
- package/test/media/streaming_engine_integration.js +2 -1
- package/test/media/streaming_engine_unit.js +148 -3
- package/test/player_integration.js +38 -0
- package/test/player_unit.js +101 -0
- package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
- package/test/test/assets/3675/dash_0.mpd +30 -0
- package/test/test/assets/3675/dash_1.mpd +30 -0
- package/test/test/assets/3675/dash_2.mpd +30 -0
- package/test/test/assets/3675/dash_3.mpd +30 -0
- package/test/test/assets/3675/dash_4.mpd +30 -0
- package/test/test/assets/3675/dash_5.mpd +26 -0
- package/test/test/assets/3675/init-stream0.m4s +0 -0
- package/test/test/assets/empty_caption_video_init.mp4 +0 -0
- package/test/test/assets/empty_caption_video_segment.mp4 +0 -0
- package/test/test/util/fake_ad_manager.js +4 -1
- package/test/test/util/simple_fakes.js +5 -3
- package/test/test/util/ttml_utils.js +81 -0
- package/test/text/mp4_ttml_parser_unit.js +11 -18
- package/test/text/ttml_text_parser_unit.js +542 -220
- package/test/text/ui_text_displayer_unit.js +95 -18
- package/test/text/vtt_text_parser_unit.js +17 -1
- package/test/ui/localization_unit.js +15 -14
- package/test/ui/text_displayer_layout_unit.js +52 -1
- package/test/util/mp4_box_parsers_unit.js +28 -0
- package/test/util/periods_unit.js +190 -2
- package/test/util/stream_utils_unit.js +59 -2
- package/ui/airplay_button.js +5 -0
- package/ui/big_play_button.js +10 -0
- package/ui/cast_button.js +2 -3
- package/ui/controls.js +8 -6
- package/ui/less/buttons.less +0 -4
- package/ui/less/containers.less +10 -5
- package/ui/locales/en.json +1 -0
- package/ui/locales/ru.json +6 -6
- package/ui/locales/source.json +4 -0
- package/ui/localization.js +28 -51
- package/ui/pip_button.js +2 -3
- package/ui/play_button.js +10 -10
- package/ui/small_play_button.js +12 -0
- package/ui/text_selection.js +1 -0
- package/docs/tutorials/upgrade-v2-4.md +0 -481
|
@@ -715,6 +715,10 @@ shaka.text.Cue.prototype.id;
|
|
|
715
715
|
* @override
|
|
716
716
|
*/
|
|
717
717
|
shaka.text.Cue.prototype.nestedCues;
|
|
718
|
+
/**
|
|
719
|
+
* @override
|
|
720
|
+
*/
|
|
721
|
+
shaka.text.Cue.prototype.isContainer;
|
|
718
722
|
/**
|
|
719
723
|
* @override
|
|
720
724
|
*/
|
|
@@ -1192,7 +1196,7 @@ shaka.util.AbortableOperation.prototype.promise;
|
|
|
1192
1196
|
shaka.util.FakeEvent = class {
|
|
1193
1197
|
/**
|
|
1194
1198
|
* @param {string} type
|
|
1195
|
-
* @param {Object
|
|
1199
|
+
* @param {Map.<string, Object>=} dict
|
|
1196
1200
|
*/
|
|
1197
1201
|
constructor(type, dict) {}
|
|
1198
1202
|
};
|
|
@@ -2707,6 +2711,7 @@ shaka.ads.ServerSideAd = class {
|
|
|
2707
2711
|
/**
|
|
2708
2712
|
* A class responsible for ad-related interactions.
|
|
2709
2713
|
* @implements {shaka.extern.IAdManager}
|
|
2714
|
+
* @implements {shaka.util.IReleasable}
|
|
2710
2715
|
*/
|
|
2711
2716
|
shaka.ads.AdManager = class extends shaka.util.FakeEventTarget {
|
|
2712
2717
|
/** */
|
|
@@ -2719,6 +2724,10 @@ shaka.ads.AdManager = class extends shaka.util.FakeEventTarget {
|
|
|
2719
2724
|
* @override
|
|
2720
2725
|
*/
|
|
2721
2726
|
initClientSide(adContainer, video) {}
|
|
2727
|
+
/**
|
|
2728
|
+
* @override
|
|
2729
|
+
*/
|
|
2730
|
+
release() {}
|
|
2722
2731
|
/**
|
|
2723
2732
|
* @override
|
|
2724
2733
|
*/
|
|
@@ -3357,6 +3366,175 @@ shaka.polyfill = class {
|
|
|
3357
3366
|
*/
|
|
3358
3367
|
static register(polyfill, priority) {}
|
|
3359
3368
|
};
|
|
3369
|
+
/**
|
|
3370
|
+
* @summary A polyfill to add support for EncryptionScheme queries in EME.
|
|
3371
|
+
* @see https://wicg.github.io/encrypted-media-encryption-scheme/
|
|
3372
|
+
* @see https://github.com/w3c/encrypted-media/pull/457
|
|
3373
|
+
* @see https://github.com/google/eme-encryption-scheme-polyfill
|
|
3374
|
+
*/
|
|
3375
|
+
shaka.polyfill.EncryptionScheme = class {
|
|
3376
|
+
/**
|
|
3377
|
+
* Install the polyfill if needed.
|
|
3378
|
+
* @suppress {missingRequire}
|
|
3379
|
+
*/
|
|
3380
|
+
static install() {}
|
|
3381
|
+
};
|
|
3382
|
+
/**
|
|
3383
|
+
* @summary A polyfill to unify fullscreen APIs across browsers.
|
|
3384
|
+
* Many browsers have prefixed fullscreen methods on Element and document.
|
|
3385
|
+
* See {@link https://mzl.la/2K0xcHo Using fullscreen mode} on MDN for more
|
|
3386
|
+
* information.
|
|
3387
|
+
*/
|
|
3388
|
+
shaka.polyfill.Fullscreen = class {
|
|
3389
|
+
/**
|
|
3390
|
+
* Install the polyfill if needed.
|
|
3391
|
+
*/
|
|
3392
|
+
static install() {}
|
|
3393
|
+
};
|
|
3394
|
+
/**
|
|
3395
|
+
* @summary A polyfill to patch math round bug on some browsers.
|
|
3396
|
+
* @see https://stackoverflow.com/q/12830742
|
|
3397
|
+
*/
|
|
3398
|
+
shaka.polyfill.MathRound = class {
|
|
3399
|
+
/**
|
|
3400
|
+
* Install the polyfill if needed.
|
|
3401
|
+
*/
|
|
3402
|
+
static install() {}
|
|
3403
|
+
};
|
|
3404
|
+
/**
|
|
3405
|
+
* @summary A polyfill to provide navigator.mediaCapabilities on all browsers.
|
|
3406
|
+
* This is necessary for Tizen 3, Xbox One and possibly others we have yet to
|
|
3407
|
+
* discover.
|
|
3408
|
+
*/
|
|
3409
|
+
shaka.polyfill.MediaCapabilities = class {
|
|
3410
|
+
/**
|
|
3411
|
+
* Install the polyfill if needed.
|
|
3412
|
+
* @suppress {const}
|
|
3413
|
+
*/
|
|
3414
|
+
static install() {}
|
|
3415
|
+
};
|
|
3416
|
+
/**
|
|
3417
|
+
* A copy of the MediaCapabilities instance, to prevent Safari from
|
|
3418
|
+
* garbage-collecting the polyfilled method on it. We make it public and export
|
|
3419
|
+
* it to ensure that it is not stripped out by the compiler.
|
|
3420
|
+
* @type {MediaCapabilities}
|
|
3421
|
+
*/
|
|
3422
|
+
shaka.polyfill.MediaCapabilities.originalMcap;
|
|
3423
|
+
/**
|
|
3424
|
+
* @summary A polyfill to patch MSE bugs.
|
|
3425
|
+
*/
|
|
3426
|
+
shaka.polyfill.MediaSource = class {
|
|
3427
|
+
/**
|
|
3428
|
+
* Install the polyfill if needed.
|
|
3429
|
+
*/
|
|
3430
|
+
static install() {}
|
|
3431
|
+
};
|
|
3432
|
+
/**
|
|
3433
|
+
* @summary A polyfill for systems that do not implement screen.orientation.
|
|
3434
|
+
* For now, this only handles systems that implement the deprecated
|
|
3435
|
+
* window.orientation feature... e.g. iPad.
|
|
3436
|
+
*/
|
|
3437
|
+
shaka.polyfill.Orientation = class {
|
|
3438
|
+
/**
|
|
3439
|
+
* Install the polyfill if needed.
|
|
3440
|
+
*/
|
|
3441
|
+
static install() {}
|
|
3442
|
+
};
|
|
3443
|
+
/**
|
|
3444
|
+
* @summary A polyfill to implement modern, standardized EME on top of Apple's
|
|
3445
|
+
* prefixed EME in Safari.
|
|
3446
|
+
*/
|
|
3447
|
+
shaka.polyfill.PatchedMediaKeysApple = class {
|
|
3448
|
+
/**
|
|
3449
|
+
* Installs the polyfill if needed.
|
|
3450
|
+
*/
|
|
3451
|
+
static install() {}
|
|
3452
|
+
};
|
|
3453
|
+
/**
|
|
3454
|
+
* @summary A polyfill to implement
|
|
3455
|
+
* {@link https://bit.ly/EmeMar15 EME draft 12 March 2015}
|
|
3456
|
+
* on top of ms-prefixed
|
|
3457
|
+
* {@link https://www.w3.org/TR/2014/WD-encrypted-media-20140218/ EME v20140218}
|
|
3458
|
+
*/
|
|
3459
|
+
shaka.polyfill.PatchedMediaKeysMs = class {
|
|
3460
|
+
/**
|
|
3461
|
+
* Installs the polyfill if needed.
|
|
3462
|
+
*/
|
|
3463
|
+
static install() {}
|
|
3464
|
+
};
|
|
3465
|
+
/**
|
|
3466
|
+
* @summary A polyfill to stub out
|
|
3467
|
+
* {@link https://bit.ly/EmeMar15 EME draft 12 March 2015} on browsers without
|
|
3468
|
+
* EME.
|
|
3469
|
+
* All methods will fail.
|
|
3470
|
+
*/
|
|
3471
|
+
shaka.polyfill.PatchedMediaKeysNop = class {
|
|
3472
|
+
/**
|
|
3473
|
+
* Installs the polyfill if needed.
|
|
3474
|
+
*/
|
|
3475
|
+
static install() {}
|
|
3476
|
+
};
|
|
3477
|
+
/**
|
|
3478
|
+
* @summary A polyfill to implement
|
|
3479
|
+
* {@link https://bit.ly/EmeMar15 EME draft 12 March 2015} on top of
|
|
3480
|
+
* webkit-prefixed {@link https://bit.ly/Eme01b EME v0.1b}.
|
|
3481
|
+
*/
|
|
3482
|
+
shaka.polyfill.PatchedMediaKeysWebkit = class {
|
|
3483
|
+
/**
|
|
3484
|
+
* Installs the polyfill if needed.
|
|
3485
|
+
*/
|
|
3486
|
+
static install() {}
|
|
3487
|
+
};
|
|
3488
|
+
/**
|
|
3489
|
+
* @summary A polyfill to provide PiP support in Safari.
|
|
3490
|
+
* Note that Safari only supports PiP on video elements, not audio.
|
|
3491
|
+
*/
|
|
3492
|
+
shaka.polyfill.PiPWebkit = class {
|
|
3493
|
+
/**
|
|
3494
|
+
* Install the polyfill if needed.
|
|
3495
|
+
*/
|
|
3496
|
+
static install() {}
|
|
3497
|
+
};
|
|
3498
|
+
/**
|
|
3499
|
+
* @summary A polyfill to provide navigator.storage.estimate in old
|
|
3500
|
+
* webkit browsers.
|
|
3501
|
+
* See: https://developers.google.com/web/updates/2017/08/estimating-available-storage-space#the-present
|
|
3502
|
+
*/
|
|
3503
|
+
shaka.polyfill.StorageEstimate = class {
|
|
3504
|
+
/**
|
|
3505
|
+
* Install the polyfill if needed.
|
|
3506
|
+
*/
|
|
3507
|
+
static install() {}
|
|
3508
|
+
};
|
|
3509
|
+
/**
|
|
3510
|
+
* @summary A polyfill to silence the play() Promise in HTML5 video.
|
|
3511
|
+
*/
|
|
3512
|
+
shaka.polyfill.VideoPlayPromise = class {
|
|
3513
|
+
/**
|
|
3514
|
+
* Install the polyfill if needed.
|
|
3515
|
+
*/
|
|
3516
|
+
static install() {}
|
|
3517
|
+
};
|
|
3518
|
+
/**
|
|
3519
|
+
* @summary A polyfill to provide MSE VideoPlaybackQuality metrics.
|
|
3520
|
+
* Many browsers do not yet provide this API, and Chrome currently provides
|
|
3521
|
+
* similar data through individual prefixed attributes on HTMLVideoElement.
|
|
3522
|
+
*/
|
|
3523
|
+
shaka.polyfill.VideoPlaybackQuality = class {
|
|
3524
|
+
/**
|
|
3525
|
+
* Install the polyfill if needed.
|
|
3526
|
+
*/
|
|
3527
|
+
static install() {}
|
|
3528
|
+
};
|
|
3529
|
+
/**
|
|
3530
|
+
* @summary A polyfill to provide VTTCue.
|
|
3531
|
+
*/
|
|
3532
|
+
shaka.polyfill.VTTCue = class {
|
|
3533
|
+
/**
|
|
3534
|
+
* Install the polyfill if needed.
|
|
3535
|
+
*/
|
|
3536
|
+
static install() {}
|
|
3537
|
+
};
|
|
3360
3538
|
/**
|
|
3361
3539
|
* LRC file format: https://en.wikipedia.org/wiki/LRC_(file_format)
|
|
3362
3540
|
* @implements {shaka.extern.TextParser}
|